Merge branch 'master' into master-upcoming-2025-04-30
Conflicts: include/battle.h include/constants/expansion.h include/graphics.h src/battle_bg.c src/battle_util.c src/data/graphics/battle_terrain.h src/data/graphics/pokemon.h src/pokeblock_feed.c src/pokemon_sprite_visualizer.c
@ -42,9 +42,10 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using?
|
||||
options:
|
||||
- 1.11.1 (Latest release)
|
||||
- 1.11.2 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.1
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
|
||||
@ -42,9 +42,10 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using?
|
||||
options:
|
||||
- 1.11.1 (Latest release)
|
||||
- 1.11.2 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.1
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
|
||||
3
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
@ -42,9 +42,10 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using?
|
||||
options:
|
||||
- 1.11.1 (Latest release)
|
||||
- 1.11.2 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.11.1
|
||||
- 1.11.0
|
||||
- 1.10.3
|
||||
- 1.10.2
|
||||
|
||||
2
.github/workflows/labels.yml
vendored
@ -2,7 +2,7 @@ name: Labels
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, labeled, unlabeled]
|
||||
types: [opened, synchronize, labeled, unlabeled]
|
||||
|
||||
jobs:
|
||||
label:
|
||||
|
||||
@ -10,7 +10,7 @@ The main advantage of using vanilla pokeemerald as a base is being able to link
|
||||
If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect.
|
||||
You can phrase it as the following:
|
||||
```
|
||||
Based off RHH's pokeemerald-expansion 1.11.1 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
Based off RHH's pokeemerald-expansion 1.11.2 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
```
|
||||
|
||||
#### Important: DO NOT use GitHub's "Download Zip" option. Using this option will not download the commit history required to update your expansion version or merge other feature branches. Instead, please read [this guide](https://github.com/Pawkkie/Team-Aquas-Asset-Repo/wiki/The-Basics-of-GitHub) to learn how to fork the repository and clone locally from there.
|
||||
|
||||
@ -1100,7 +1100,7 @@
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro callterrainattack
|
||||
.macro callenvironmentattack
|
||||
.byte 0xcc
|
||||
.endm
|
||||
|
||||
@ -1254,7 +1254,7 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro settypetoterrain failInstr:req
|
||||
.macro settypetoenvironment failInstr:req
|
||||
.byte 0xeb
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
@ -1878,7 +1878,7 @@ gBattleAnimMove_Avalanche::
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
loadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
monbg ANIM_DEF_PARTNER
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
createsprite gAvalancheSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 2
|
||||
@ -12878,7 +12878,7 @@ gBattleAnimMove_GlitzyGlow::
|
||||
createsprite gSynchronoiseYellowRingTemplate, ANIM_ATTACKER, 0, 25, 0, 0, 0, 0, 0, 1
|
||||
delay 36
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 1, 0, 6, 1
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 12, 0, 0 @Darken
|
||||
waitforvisualfinish
|
||||
@ -13691,7 +13691,7 @@ OverdriveRings:
|
||||
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 0x2, 0x1, 0x0, 0x6, 0x1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 0x2, 0x1, 0x0, 0x6, 0x1
|
||||
createvisualtask SoundTask_WaitForCry, 0x5
|
||||
return
|
||||
|
||||
@ -14327,7 +14327,7 @@ gBattleAnimMove_RisingVoltage::
|
||||
loadspritegfx ANIM_TAG_LIGHTNING
|
||||
monbg ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_GetBattleTerrain, 0x5,
|
||||
createvisualtask AnimTask_GetBattleEnvironment, 0x5,
|
||||
jumpargeq 0x0, BG_ELECTRIC_TERRAIN, ANIM_RISING_VOLTAGE_STRONGER
|
||||
ANIM_RISING_VOLTAGE_NORMAL:
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0x2, F_PAL_BG, 0x1, 0x0, 0x4, 0x0 @;To black
|
||||
@ -15296,7 +15296,7 @@ gBattleAnimMove_AstralBarrage::
|
||||
setalpha 12, 8
|
||||
fadetobg BG_GHOST
|
||||
waitbgfadein
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1
|
||||
createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 20, 0, 5
|
||||
createsprite gSuperpowerRockSpriteTemplate, ANIM_ATTACKER, 41, 200, 96, 1, 120
|
||||
delay 8
|
||||
@ -16508,7 +16508,7 @@ gBattleAnimMove_AlluringVoice::
|
||||
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 1, 0, 6, 1
|
||||
createvisualtask SoundTask_WaitForCry, 5
|
||||
delay 0xA
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 26, 1
|
||||
@ -17118,7 +17118,7 @@ TorchSongEffect:
|
||||
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0
|
||||
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 1, 0, 6, 1
|
||||
createvisualtask SoundTask_WaitForCry, 5
|
||||
return
|
||||
|
||||
@ -17599,7 +17599,7 @@ gBattleAnimMove_MakeItRain::
|
||||
jumprettrue MakingItRainOnPlayer
|
||||
MakingItRainContinue:
|
||||
waitbgfadeout
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
loopsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET, 8, 15
|
||||
createsprite gMakingItRainTemplate, ANIM_TARGET, 2, -5, 0, -5, 1
|
||||
delay 2
|
||||
@ -19965,7 +19965,7 @@ gBattleAnimMove_MeanLook::
|
||||
|
||||
gBattleAnimMove_RockThrow::
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1
|
||||
createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 0
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 6
|
||||
@ -19987,7 +19987,7 @@ gBattleAnimMove_RockThrow::
|
||||
gBattleAnimMove_RockSlide::
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
monbg ANIM_DEF_PARTNER
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1
|
||||
createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1
|
||||
playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET
|
||||
delay 2
|
||||
@ -20781,7 +20781,7 @@ gBattleAnimMove_Barrage::
|
||||
createvisualtask AnimTask_BarrageBall, 3
|
||||
playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER
|
||||
delay 24
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1
|
||||
createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 4, 20, 1
|
||||
createvisualtask AnimTask_ShakeMon, 3, ANIM_DEF_PARTNER, 0, 4, 20, 1
|
||||
loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 2
|
||||
@ -21528,7 +21528,7 @@ gBattleAnimMove_Superpower::
|
||||
createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER
|
||||
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
|
||||
delay 20
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1
|
||||
createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_EARTHQUAKE, 0
|
||||
delay 40
|
||||
createsprite gSuperpowerRockSpriteTemplate, ANIM_ATTACKER, 41, 200, 96, 1, 120
|
||||
@ -22879,7 +22879,7 @@ SnoreEffect:
|
||||
playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER
|
||||
createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_ATTACKER, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0
|
||||
createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0
|
||||
createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0
|
||||
createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0
|
||||
@ -24727,7 +24727,7 @@ gBattleAnimMove_AncientPower::
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
setalpha 12, 8
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 10, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 10, 1
|
||||
createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 20, 32, -48, 50, 2
|
||||
createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, -38, 25, 5
|
||||
createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 32, 32, -28, 40, 3
|
||||
@ -25152,14 +25152,14 @@ gBattleAnimMove_MetalClaw::
|
||||
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
delay 8
|
||||
createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4
|
||||
delay 2
|
||||
playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
@ -26375,7 +26375,7 @@ HyperVoiceEffect:
|
||||
createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 1, 0, 6, 1
|
||||
createvisualtask SoundTask_WaitForCry, 5
|
||||
return
|
||||
|
||||
@ -26497,7 +26497,7 @@ gBattleAnimMove_DragonClaw::
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER
|
||||
delay 2
|
||||
createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER
|
||||
@ -26510,7 +26510,7 @@ gBattleAnimMove_DragonClaw::
|
||||
createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1
|
||||
createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1
|
||||
createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
createsprite gShakeMonOrPlatformSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1
|
||||
createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER
|
||||
delay 2
|
||||
createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER
|
||||
@ -26971,7 +26971,7 @@ gBattleAnimMove_BlastBurn::
|
||||
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0
|
||||
createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, ANIM_TARGET, 0
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 12, 0, 20, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 2, 0, 10, 1
|
||||
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0
|
||||
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0
|
||||
createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 48, 24, 0, 0, 0
|
||||
@ -26985,32 +26985,32 @@ gBattleAnimMove_BlastBurn::
|
||||
gBattleAnimMove_RockTomb::
|
||||
loadspritegfx ANIM_TAG_X_SIGN
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 2, 0, 10, 1
|
||||
waitforvisualfinish
|
||||
createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, 20, 12, 64, 114, 0
|
||||
delay 8
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1
|
||||
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
|
||||
delay 8
|
||||
createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -20, 12, 64, 98, 0
|
||||
delay 8
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1
|
||||
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
|
||||
delay 8
|
||||
createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 66, 3, 6, 64, 82, 0
|
||||
delay 8
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1
|
||||
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
|
||||
delay 8
|
||||
createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -3, 13, 64, 66, 0
|
||||
delay 8
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 0, 2, 3, 1
|
||||
playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET
|
||||
delay 24
|
||||
playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET
|
||||
createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, ANIM_TARGET, 50
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 20, 1
|
||||
createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1
|
||||
createvisualtask AnimTask_ShakeBattlePlatforms, 2, 2, 0, 10, 1
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
@ -27508,42 +27508,42 @@ gBattleAnimMove_SecretPower::
|
||||
jumpargeq 0, STATUS_FIELD_GRASSY_TERRAIN, gBattleAnimMove_NeedleArm
|
||||
jumpargeq 0, STATUS_FIELD_ELECTRIC_TERRAIN, gBattleAnimMove_ThunderShock
|
||||
jumpargeq 0, STATUS_FIELD_PSYCHIC_TERRAIN, gBattleAnimMove_Confusion
|
||||
createvisualtask AnimTask_GetBattleTerrain, 5
|
||||
jumpargeq 0, BATTLE_TERRAIN_GRASS, gBattleAnimMove_NeedleArm
|
||||
jumpargeq 0, BATTLE_TERRAIN_LONG_GRASS, gBattleAnimMove_MagicalLeaf
|
||||
jumpargeq 0, BATTLE_TERRAIN_SAND, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_TERRAIN_UNDERWATER, gBattleAnimMove_Waterfall
|
||||
jumpargeq 0, BATTLE_TERRAIN_WATER, gBattleAnimMove_Surf
|
||||
jumpargeq 0, BATTLE_TERRAIN_POND, gBattleAnimMove_BubbleBeam
|
||||
jumpargeq 0, BATTLE_TERRAIN_MOUNTAIN, gBattleAnimMove_RockThrow
|
||||
jumpargeq 0, BATTLE_TERRAIN_CAVE, gBattleAnimMove_Bite
|
||||
jumpargeq 0, BATTLE_TERRAIN_BUILDING, gBattleAnimMove_Strength
|
||||
jumpargeq 0, BATTLE_TERRAIN_SOARING, gBattleAnimMove_Gust
|
||||
jumpargeq 0, BATTLE_TERRAIN_SKY_PILLAR, gBattleAnimMove_Gust
|
||||
jumpargeq 0, BATTLE_TERRAIN_BURIAL_GROUND, gBattleAnimMove_ShadowSneak
|
||||
jumpargeq 0, BATTLE_TERRAIN_PUDDLE, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_TERRAIN_MARSH, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_TERRAIN_SWAMP, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_TERRAIN_ICE, gBattleAnimMove_IceShard
|
||||
jumpargeq 0, BATTLE_TERRAIN_VOLCANO, gBattleAnimMove_Incinerate
|
||||
jumpargeq 0, BATTLE_TERRAIN_DISTORTION_WORLD, gBattleAnimMove_Pound
|
||||
jumpargeq 0, BATTLE_TERRAIN_SPACE, gBattleAnimMove_Swift
|
||||
jumpargeq 0, BATTLE_TERRAIN_ULTRA_SPACE, gBattleAnimMove_Psywave
|
||||
createvisualtask AnimTask_GetBattleEnvironment, 5
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_GRASS, gBattleAnimMove_NeedleArm
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_LONG_GRASS, gBattleAnimMove_MagicalLeaf
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SAND, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_UNDERWATER, gBattleAnimMove_Waterfall
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_WATER, gBattleAnimMove_Surf
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_POND, gBattleAnimMove_BubbleBeam
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_MOUNTAIN, gBattleAnimMove_RockThrow
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_CAVE, gBattleAnimMove_Bite
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_Strength
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SOARING, gBattleAnimMove_Gust
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SKY_PILLAR, gBattleAnimMove_Gust
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_BURIAL_GROUND, gBattleAnimMove_ShadowSneak
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_PUDDLE, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_MARSH, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SWAMP, gBattleAnimMove_MudShot
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_ICE, gBattleAnimMove_IceShard
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_VOLCANO, gBattleAnimMove_Incinerate
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_DISTORTION_WORLD, gBattleAnimMove_Pound
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SPACE, gBattleAnimMove_Swift
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_ULTRA_SPACE, gBattleAnimMove_Psywave
|
||||
.if B_SECRET_POWER_ANIMATION >= GEN_7
|
||||
jumpargeq 0, BATTLE_TERRAIN_SNOW, gBattleAnimMove_IceShard
|
||||
jumpargeq 0, BATTLE_TERRAIN_BUILDING, gBattleAnimMove_SpitUp
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_IceShard
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_SpitUp
|
||||
goto gBattleAnimMove_SpitUp
|
||||
.elseif B_SECRET_POWER_ANIMATION >= GEN_6
|
||||
jumpargeq 0, BATTLE_TERRAIN_SNOW, gBattleAnimMove_Avalanche
|
||||
jumpargeq 0, BATTLE_TERRAIN_BUILDING, gBattleAnimMove_BodySlam
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_Avalanche
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_BodySlam
|
||||
goto gBattleAnimMove_BodySlam
|
||||
.elseif B_SECRET_POWER_ANIMATION >= GEN_4
|
||||
jumpargeq 0, BATTLE_TERRAIN_SNOW, gBattleAnimMove_Avalanche
|
||||
jumpargeq 0, BATTLE_TERRAIN_BUILDING, gBattleAnimMove_BodySlam
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_Avalanche
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_BodySlam
|
||||
goto gBattleAnimMove_MudSlap
|
||||
.else
|
||||
jumpargeq 0, BATTLE_TERRAIN_SNOW, gBattleAnimMove_Avalanche
|
||||
jumpargeq 0, BATTLE_TERRAIN_BUILDING, gBattleAnimMove_Strength
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_SNOW, gBattleAnimMove_Avalanche
|
||||
jumpargeq 0, BATTLE_ENVIRONMENT_BUILDING, gBattleAnimMove_Strength
|
||||
goto gBattleAnimMove_Slam
|
||||
.endif
|
||||
|
||||
|
||||
@ -4898,7 +4898,7 @@ BattleScript_EffectNaturePower::
|
||||
attackcanceler
|
||||
attackstring
|
||||
pause B_WAIT_TIME_SHORT
|
||||
callterrainattack
|
||||
callenvironmentattack
|
||||
printstring STRINGID_NATUREPOWERTURNEDINTO
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
@ -5347,7 +5347,7 @@ BattleScript_EffectCamouflage::
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
settypetoterrain BattleScript_ButItFailed
|
||||
settypetoenvironment BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNCHANGEDTYPE
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
- [Day/Night System FAQ](tutorials/dns.md)
|
||||
- [Changelog](./CHANGELOG.md)
|
||||
- [1.11.x]()
|
||||
- [Version 1.11.2](changelogs/1.11.x/1.11.2.md)
|
||||
- [Version 1.11.1](changelogs/1.11.x/1.11.1.md)
|
||||
- [Version 1.11.0](changelogs/1.11.x/1.11.0.md)
|
||||
- [1.10.x]()
|
||||
|
||||
143
docs/changelogs/1.11.x/1.11.2.md
Normal file
@ -0,0 +1,143 @@
|
||||
```md
|
||||
## How to update
|
||||
- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/1.11.2
|
||||
`.
|
||||
```
|
||||
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Changed
|
||||
* 1.11.1 Release by @hedara90 in [#6503](https://github.com/rh-hideout/pokeemerald-expansion/pull/6503)
|
||||
* Add General Merge to label check by @hedara90 in [#6512](https://github.com/rh-hideout/pokeemerald-expansion/pull/6512)
|
||||
* Added AI switch display to the battle debug by @hedara90 in [#6529](https://github.com/rh-hideout/pokeemerald-expansion/pull/6529)
|
||||
* Consolidated "How to add Pokémon" tutorials by @AsparagusEduardo in [#6541](https://github.com/rh-hideout/pokeemerald-expansion/pull/6541)
|
||||
* Fixed Behemoth Blade/Bash handler not using form change tables by @AsparagusEduardo in [#6558](https://github.com/rh-hideout/pokeemerald-expansion/pull/6558)
|
||||
* Documentation by @hedara90 in [#6576](https://github.com/rh-hideout/pokeemerald-expansion/pull/6576)
|
||||
* Corrected Dexnav config related comment by @LOuroboros in [#6610](https://github.com/rh-hideout/pokeemerald-expansion/pull/6610)
|
||||
* Make generated files match the current formatting by @hedara90 in [#6636](https://github.com/rh-hideout/pokeemerald-expansion/pull/6636)
|
||||
|
||||
### Fixed
|
||||
* Mark RTC/Flash save hint string as used by @aronson in [#6507](https://github.com/rh-hideout/pokeemerald-expansion/pull/6507)
|
||||
* Fix move names in learnset helper by @malad1211 in [#6510](https://github.com/rh-hideout/pokeemerald-expansion/pull/6510)
|
||||
* Fix no eligible mons when only the partner wins in multi battle by @Bivurnum in [#6626](https://github.com/rh-hideout/pokeemerald-expansion/pull/6626)
|
||||
* Fixed broken palette load for shiny followers in the sprite visualizer by @hedara90 in [#6683](https://github.com/rh-hideout/pokeemerald-expansion/pull/6683)
|
||||
* Fix `FORM_CHANGE_ITEM_HOLD` bug manifested during `givemon` by @AsparagusEduardo in [#6702](https://github.com/rh-hideout/pokeemerald-expansion/pull/6702)
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Fixed
|
||||
* Added call to ItemId_GetDescription by @pkmnsnfrn in [#6582](https://github.com/rh-hideout/pokeemerald-expansion/pull/6582)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Changed
|
||||
* Add clarification for EVO_SCRIPT_TRIGGER_DMG by @Bassoonian in [#6579](https://github.com/rh-hideout/pokeemerald-expansion/pull/6579)
|
||||
|
||||
### Fixed
|
||||
* Capped Exp from Daycare to level cap by @hedara90 in [#6622](https://github.com/rh-hideout/pokeemerald-expansion/pull/6622)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Changed
|
||||
* Fixes Thermal Exchange not curing existing burn by @PhallenTree in [#6545](https://github.com/rh-hideout/pokeemerald-expansion/pull/6545)
|
||||
* Add clarification for underlying math in EV caps by @Bassoonian and @i0brendan0 in [#6580](https://github.com/rh-hideout/pokeemerald-expansion/pull/6580)
|
||||
* Added missing `gMovesInfo` encapsulation by @AsparagusEduardo in [#6656](https://github.com/rh-hideout/pokeemerald-expansion/pull/6656)
|
||||
* Remove misleading comment by @AlexOn1ine in [#6684](https://github.com/rh-hideout/pokeemerald-expansion/pull/6684)
|
||||
|
||||
### Fixed
|
||||
* Fixes Tera Type not being carried over to during form change / evolution by @AlexOn1ine in [#6502](https://github.com/rh-hideout/pokeemerald-expansion/pull/6502)
|
||||
* Fixes Hone Claws checking the wrong stats for its stat change animation and Stockpile drops being stopped by stat reduction prevention effects by @PhallenTree in [#6522](https://github.com/rh-hideout/pokeemerald-expansion/pull/6522)
|
||||
* Fixes Red Card against Dynamaxed mons by @AlexOn1ine in [#6526](https://github.com/rh-hideout/pokeemerald-expansion/pull/6526)
|
||||
* Fixes transformed mon being able to use tera on Terapagos by @AlexOn1ine in [#6528](https://github.com/rh-hideout/pokeemerald-expansion/pull/6528)
|
||||
* Fixes Will-O-Wisp not being blocked by Thermal Exchange by @AlexOn1ine in [#6534](https://github.com/rh-hideout/pokeemerald-expansion/pull/6534)
|
||||
* Add hold effects for PLA Origin Trio items by @Bassoonian in [#6578](https://github.com/rh-hideout/pokeemerald-expansion/pull/6578)
|
||||
* Ability imposter by @wiz1989 and @AlexOn1ine in [#6552](https://github.com/rh-hideout/pokeemerald-expansion/pull/6552)
|
||||
* Fixes Dynamax reversion animation when fainting by @PhallenTree in [#6597](https://github.com/rh-hideout/pokeemerald-expansion/pull/6597)
|
||||
* Fix potential compile error caused by sTeraIndicatorDataPtrs by @AlexOn1ine in [#6599](https://github.com/rh-hideout/pokeemerald-expansion/pull/6599)
|
||||
* Revert wrongly done Embody Aspect fix by @AlexOn1ine in [#6607](https://github.com/rh-hideout/pokeemerald-expansion/pull/6607)
|
||||
* Fixes wrong battler's Illusion wearing off when the Attacker faints and fixes Illusion tests by @PhallenTree in [#6596](https://github.com/rh-hideout/pokeemerald-expansion/pull/6596)
|
||||
* Fixes Gulp Missile freezing the game if when attacker fainted by @AlexOn1ine in [#6639](https://github.com/rh-hideout/pokeemerald-expansion/pull/6639)
|
||||
* Fixes Big Root Leech Seed heal amount by @AlexOn1ine in [#6638](https://github.com/rh-hideout/pokeemerald-expansion/pull/6638)
|
||||
* Fix Mirror Armor and Obstruct interaction by @AlexOn1ine in [#6630](https://github.com/rh-hideout/pokeemerald-expansion/pull/6630)
|
||||
* Fixes some restore issues by @AlexOn1ine in [#6629](https://github.com/rh-hideout/pokeemerald-expansion/pull/6629)
|
||||
* Fixes Ally Switch cancelling partner's moves targeting that side of the field by @PhallenTree and @hedara90 made the Ally Switch test in #6646 in [#6647](https://github.com/rh-hideout/pokeemerald-expansion/pull/6647)
|
||||
* Fixes commander activation on a fainted mon by @AlexOn1ine in [#6632](https://github.com/rh-hideout/pokeemerald-expansion/pull/6632)
|
||||
* Fix captivate-oblivious interaction and related test by @cawtds in [#6653](https://github.com/rh-hideout/pokeemerald-expansion/pull/6653)
|
||||
* Fix gBattlerTarget OOB for Gravity and Perish Song by @AlexOn1ine in [#6662](https://github.com/rh-hideout/pokeemerald-expansion/pull/6662)
|
||||
* Fixes Intimidate / Eject Pack interaction by @AlexOn1ine in [#6645](https://github.com/rh-hideout/pokeemerald-expansion/pull/6645)
|
||||
* Fixes Neutralizing Gas activating again after switch-in by @PhallenTree in [#6667](https://github.com/rh-hideout/pokeemerald-expansion/pull/6667)
|
||||
* Fixes Bug Bite eaten berry not ignoring Unnerve by @AlexOn1ine in [#6666](https://github.com/rh-hideout/pokeemerald-expansion/pull/6666)
|
||||
* Fixes Mirror Armor stat drops not being stopped by Substitute by @PhallenTree in [#6675](https://github.com/rh-hideout/pokeemerald-expansion/pull/6675)
|
||||
* Fixes Magician Life Orb interaction by @AlexOn1ine in [#6676](https://github.com/rh-hideout/pokeemerald-expansion/pull/6676)
|
||||
* Fixes Unburden doubling speed when affected by Neutralizing Gas by @PhallenTree in [#6691](https://github.com/rh-hideout/pokeemerald-expansion/pull/6691)
|
||||
* Fix various Toxic Spikes interactions by @hedara90 in [#6690](https://github.com/rh-hideout/pokeemerald-expansion/pull/6690)
|
||||
* Fixes Z and Max moves dmg reduction against side protection by @AlexOn1ine in [#6697](https://github.com/rh-hideout/pokeemerald-expansion/pull/6697)
|
||||
* Fixes Stomping Tantrum not doubling power if asleep or frozen by @AlexOn1ine in [#6719](https://github.com/rh-hideout/pokeemerald-expansion/pull/6719)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Fixed
|
||||
* Gimmick Indicator refactor by @hedara90 in [#6553](https://github.com/rh-hideout/pokeemerald-expansion/pull/6553)
|
||||
- This frees up a lot of VRAM in battles.
|
||||
* Animation fixes from lucky adapted to expansion by @hedara90 and @/luckytyphlosion in [#6452](https://github.com/rh-hideout/pokeemerald-expansion/pull/6452)
|
||||
* Fix Magma Storm getting stuck by @hedara90 in [#6605](https://github.com/rh-hideout/pokeemerald-expansion/pull/6605)
|
||||
* Fix VRAM load for Black Hole Eclipse by @hedara90 in [#6635](https://github.com/rh-hideout/pokeemerald-expansion/pull/6635)
|
||||
* Fixes some moves trying to load too much VRAM by @hedara90 in [#6633](https://github.com/rh-hideout/pokeemerald-expansion/pull/6633)
|
||||
|
||||
## 🧶 Items 🧶
|
||||
### Fixed
|
||||
* Fix using items to heal partner in battle by @hedara90 in [#6517](https://github.com/rh-hideout/pokeemerald-expansion/pull/6517)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Changed
|
||||
* Add AI thinking cycle count display to frame count by @aronson in [#6509](https://github.com/rh-hideout/pokeemerald-expansion/pull/6509)
|
||||
* Remove redundant AI defines by @Bassoonian in [#6590](https://github.com/rh-hideout/pokeemerald-expansion/pull/6590)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Added call to ItemId_GetDescription by @pkmnsnfrn in [#6582](https://github.com/rh-hideout/pokeemerald-expansion/pull/6582)
|
||||
* Remove redundant AI defines by @Bassoonian in [#6590](https://github.com/rh-hideout/pokeemerald-expansion/pull/6590)
|
||||
* Corrected Dexnav config related comment by @LOuroboros in [#6610](https://github.com/rh-hideout/pokeemerald-expansion/pull/6610)
|
||||
* Added missing `gMovesInfo` encapsulation by @AsparagusEduardo in [#6656](https://github.com/rh-hideout/pokeemerald-expansion/pull/6656)
|
||||
* Remove HitmarkerSwapAttackerTarget by @AlexOn1ine in [#6627](https://github.com/rh-hideout/pokeemerald-expansion/pull/6627)
|
||||
* Remove misleading comment by @AlexOn1ine in [#6684](https://github.com/rh-hideout/pokeemerald-expansion/pull/6684)
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Changed
|
||||
* Support make check on macOS by @aronson in [#6513](https://github.com/rh-hideout/pokeemerald-expansion/pull/6513)
|
||||
- The new test runner binary will not support macOS versions older than 10.7 or 11 (for Intel and Apple Silicon respectively).
|
||||
- macOS users running `make check` may need to confirm with an OS dialog they're willing to open `mgba-rom-test-mac` when run for the first time.
|
||||
- macOS users running `make check` must have `stdbuf` installed through `brew`'s `coreutils` package.
|
||||
* Thermal exchange tests by @hedara90 in [#6536](https://github.com/rh-hideout/pokeemerald-expansion/pull/6536)
|
||||
* Air Balloon AI tests by @Pawkkie in [#6604](https://github.com/rh-hideout/pokeemerald-expansion/pull/6604)
|
||||
* Big Root tests by @Bassoonian in [#6601](https://github.com/rh-hideout/pokeemerald-expansion/pull/6601)
|
||||
* Test for Freeze vs Scald thaw by @AlexOn1ine in [#6658](https://github.com/rh-hideout/pokeemerald-expansion/pull/6658)
|
||||
* Adds a whole bunch of new tests by @Bassoonian in [#6685](https://github.com/rh-hideout/pokeemerald-expansion/pull/6685)
|
||||
|
||||
### Fixed
|
||||
* Fixed Color Change test referring to the wrong mon by @hedara90 in [#6644](https://github.com/rh-hideout/pokeemerald-expansion/pull/6644)
|
||||
* Fixed LGPE move test fail with `B_UPDATED_MOVE_DATA` to `GEN_7` by @AsparagusEduardo in [#6657](https://github.com/rh-hideout/pokeemerald-expansion/pull/6657)
|
||||
* Use correct define for moves in test runner by @AsparagusEduardo in [#6711](https://github.com/rh-hideout/pokeemerald-expansion/pull/6711)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* Consolidated "How to add Pokémon" tutorials by @AsparagusEduardo in [#6541](https://github.com/rh-hideout/pokeemerald-expansion/pull/6541)
|
||||
* Documentation by @hedara90 in [#6576](https://github.com/rh-hideout/pokeemerald-expansion/pull/6576)
|
||||
* Add clarification for underlying math in EV caps by @Bassoonian and @i0brendan0 in [#6580](https://github.com/rh-hideout/pokeemerald-expansion/pull/6580)
|
||||
* Add clarification for EVO_SCRIPT_TRIGGER_DMG by @Bassoonian in [#6579](https://github.com/rh-hideout/pokeemerald-expansion/pull/6579)
|
||||
|
||||
## 📦 Branch Synchronisation 📦
|
||||
### pret
|
||||
* 11 of April in [#6575](https://github.com/rh-hideout/pokeemerald-expansion/pull/6575)
|
||||
* Align gMPlayTrack_BGM by @DizzyEggg in [pret#2115](https://github.com/pret/pokeemerald/pull/2115)
|
||||
* GENDER_COUNT in sPlayer/RivalAvatarGfxIds by @AsparagusEduardo in [pret#2117](https://github.com/pret/pokeemerald/pull/2117)
|
||||
* Fixed init call when using AGBPrint as log handler by @pokemonmasteraaron in [pret#2119](https://github.com/pret/pokeemerald/pull/2119)
|
||||
* Make linkDirection more robust to member reordering by @cawtds in [pret#2118](https://github.com/pret/pokeemerald/pull/2118)
|
||||
* 29th of April 2025 in [#6722](https://github.com/rh-hideout/pokeemerald-expansion/pull/6722)
|
||||
* Rename battle terrain to environment by @Bassoonian in [pret#2014](https://github.com/pret/pokeemerald/pull/2014)
|
||||
* Fixes for Mirage Tower graphics by @GriffinRichards in [pret#2120](https://github.com/pret/pokeemerald/pull/2120)
|
||||
* Missing constant in Birch speech dialogue by @estellarc in [pret#2123](https://github.com/pret/pokeemerald/pull/2123)
|
||||
|
||||
## New Contributors
|
||||
* @malad1211 made their first contribution in [#6510](https://github.com/rh-hideout/pokeemerald-expansion/pull/6510)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.11.1...expansion/1.11.2
|
||||
|
||||
|
||||
<!--Last PR: 6719-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
|
Before Width: | Height: | Size: 308 B After Width: | Height: | Size: 308 B |
|
Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 709 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 864 B After Width: | Height: | Size: 864 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 900 B After Width: | Height: | Size: 900 B |
|
Before Width: | Height: | Size: 592 B After Width: | Height: | Size: 592 B |
|
Before Width: | Height: | Size: 732 B After Width: | Height: | Size: 732 B |
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 760 B |
|
Before Width: | Height: | Size: 725 B After Width: | Height: | Size: 725 B |
|
Before Width: | Height: | Size: 644 B After Width: | Height: | Size: 644 B |
|
Before Width: | Height: | Size: 805 B After Width: | Height: | Size: 805 B |
|
Before Width: | Height: | Size: 961 B After Width: | Height: | Size: 961 B |
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 820 B |
|
Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 712 B |
|
Before Width: | Height: | Size: 793 B After Width: | Height: | Size: 793 B |
|
Before Width: | Height: | Size: 739 B After Width: | Height: | Size: 739 B |
|
Before Width: | Height: | Size: 506 B After Width: | Height: | Size: 506 B |
|
Before Width: | Height: | Size: 773 B After Width: | Height: | Size: 773 B |
|
Before Width: | Height: | Size: 887 B After Width: | Height: | Size: 887 B |
|
Before Width: | Height: | Size: 766 B After Width: | Height: | Size: 766 B |
|
Before Width: | Height: | Size: 904 B After Width: | Height: | Size: 935 B |
BIN
graphics/pokemon/lurantis/anim_front.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 790 B |
@ -290,6 +290,9 @@ graphics/pokenav/region_map/map.8bpp: %.8bpp: %.png
|
||||
$(MISCGFXDIR)/japanese_hof.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -num_tiles 29 -Wnum_tiles
|
||||
|
||||
$(MISCGFXDIR)/mirage_tower.4bpp: %.4bpp: %.png
|
||||
$(GFX) $< $@ -num_tiles 73 -Wnum_tiles
|
||||
|
||||
$(BATINTGFXDIR)/textbox.gbapal: $(BATINTGFXDIR)/textbox_0.gbapal \
|
||||
$(BATINTGFXDIR)/textbox_1.gbapal
|
||||
@cat $^ >$@
|
||||
|
||||
@ -144,25 +144,18 @@ struct ProtectStruct
|
||||
u32 helpingHand:1;
|
||||
u32 bounceMove:1;
|
||||
u32 stealMove:1;
|
||||
u32 prlzImmobility:1;
|
||||
u32 nonVolatileStatusImmobility:1;
|
||||
u32 confusionSelfDmg:1;
|
||||
u32 touchedProtectLike:1;
|
||||
u32 chargingTurn:1;
|
||||
u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY
|
||||
u32 usedImprisonedMove:1;
|
||||
u32 loveImmobility:1;
|
||||
u32 usedDisabledMove:1;
|
||||
u32 usedTauntedMove:1;
|
||||
u32 flag2Unknown:1; // Only set to 0 once. Checked in 'WasUnableToUseMove' function.
|
||||
u32 flinchImmobility:1;
|
||||
u32 unableToUseMove:1; // Not to be confused with HITMARKER_UNABLE_TO_USE_MOVE (It is questionable though if there is a difference. Needs further research)
|
||||
u32 notFirstStrike:1;
|
||||
u32 palaceUnableToUseMove:1;
|
||||
u32 usedHealBlockedMove:1;
|
||||
u32 usedGravityPreventedMove:1;
|
||||
u32 powderSelfDmg:1;
|
||||
u32 usedThroatChopPreventedMove:1;
|
||||
u32 statRaised:1;
|
||||
u32 usedCustapBerry:1; // also quick claw
|
||||
u32 touchedProtectLike:1;
|
||||
u32 unused:8;
|
||||
// End of 32-bit bitfield
|
||||
u16 disableEjectPack:1;
|
||||
u16 statFell:1;
|
||||
@ -1068,7 +1061,7 @@ extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13]; //to handle stupidly large z move names
|
||||
extern u32 gBattleTypeFlags;
|
||||
extern u8 gBattleTerrain;
|
||||
extern u8 gBattleEnvironment;
|
||||
extern u8 *gBattleAnimBgTileBuffer;
|
||||
extern u8 *gBattleAnimBgTilemapBuffer;
|
||||
extern u32 gBattleControllerExecFlags;
|
||||
|
||||
@ -82,7 +82,7 @@ void LoadMoveBg(u16 bgId);
|
||||
// battle_intro.c
|
||||
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
|
||||
void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset);
|
||||
void HandleIntroSlide(u8 terrainId);
|
||||
void HandleIntroSlide(u8 environmentId);
|
||||
int GetAnimBgAttribute(u8 bgId, u8 attributeId);
|
||||
|
||||
// battle_anim_mons.c
|
||||
|
||||
@ -60,7 +60,7 @@ void BattleSetup_StartLatiBattle(void);
|
||||
void BattleSetup_StartLegendaryBattle(void);
|
||||
void StartGroudonKyogreBattle(void);
|
||||
void StartRegiBattle(void);
|
||||
u8 BattleSetup_GetTerrainId(void);
|
||||
u8 BattleSetup_GetEnvironmentId(void);
|
||||
u8 GetWildBattleTransition(void);
|
||||
u8 GetTrainerBattleTransition(void);
|
||||
u8 GetSpecialBattleTransition(s32 id);
|
||||
|
||||
@ -466,32 +466,32 @@ enum MoveEffects
|
||||
#define MOVE_EFFECT_CERTAIN 0x4000
|
||||
#define MOVE_EFFECT_CONTINUE 0x8000
|
||||
|
||||
// Battle terrain defines for gBattleTerrain.
|
||||
#define BATTLE_TERRAIN_GRASS 0
|
||||
#define BATTLE_TERRAIN_LONG_GRASS 1
|
||||
#define BATTLE_TERRAIN_SAND 2
|
||||
#define BATTLE_TERRAIN_UNDERWATER 3
|
||||
#define BATTLE_TERRAIN_WATER 4
|
||||
#define BATTLE_TERRAIN_POND 5
|
||||
#define BATTLE_TERRAIN_MOUNTAIN 6
|
||||
#define BATTLE_TERRAIN_CAVE 7
|
||||
#define BATTLE_TERRAIN_BUILDING 8
|
||||
#define BATTLE_TERRAIN_PLAIN 9
|
||||
// New battle terrains are used for Secret Power but not fully implemented.
|
||||
#define BATTLE_TERRAIN_SOARING 10
|
||||
#define BATTLE_TERRAIN_SKY_PILLAR 11
|
||||
#define BATTLE_TERRAIN_BURIAL_GROUND 12
|
||||
#define BATTLE_TERRAIN_PUDDLE 13
|
||||
#define BATTLE_TERRAIN_MARSH 14
|
||||
#define BATTLE_TERRAIN_SWAMP 15
|
||||
#define BATTLE_TERRAIN_SNOW 16
|
||||
#define BATTLE_TERRAIN_ICE 17
|
||||
#define BATTLE_TERRAIN_VOLCANO 18
|
||||
#define BATTLE_TERRAIN_DISTORTION_WORLD 19
|
||||
#define BATTLE_TERRAIN_SPACE 20
|
||||
#define BATTLE_TERRAIN_ULTRA_SPACE 21
|
||||
// Battle environment defines for gBattleEnvironment.
|
||||
#define BATTLE_ENVIRONMENT_GRASS 0
|
||||
#define BATTLE_ENVIRONMENT_LONG_GRASS 1
|
||||
#define BATTLE_ENVIRONMENT_SAND 2
|
||||
#define BATTLE_ENVIRONMENT_UNDERWATER 3
|
||||
#define BATTLE_ENVIRONMENT_WATER 4
|
||||
#define BATTLE_ENVIRONMENT_POND 5
|
||||
#define BATTLE_ENVIRONMENT_MOUNTAIN 6
|
||||
#define BATTLE_ENVIRONMENT_CAVE 7
|
||||
#define BATTLE_ENVIRONMENT_BUILDING 8
|
||||
#define BATTLE_ENVIRONMENT_PLAIN 9
|
||||
// New battle environments are used for Secret Power but not fully implemented.
|
||||
#define BATTLE_ENVIRONMENT_SOARING 10
|
||||
#define BATTLE_ENVIRONMENT_SKY_PILLAR 11
|
||||
#define BATTLE_ENVIRONMENT_BURIAL_GROUND 12
|
||||
#define BATTLE_ENVIRONMENT_PUDDLE 13
|
||||
#define BATTLE_ENVIRONMENT_MARSH 14
|
||||
#define BATTLE_ENVIRONMENT_SWAMP 15
|
||||
#define BATTLE_ENVIRONMENT_SNOW 16
|
||||
#define BATTLE_ENVIRONMENT_ICE 17
|
||||
#define BATTLE_ENVIRONMENT_VOLCANO 18
|
||||
#define BATTLE_ENVIRONMENT_DISTORTION_WORLD 19
|
||||
#define BATTLE_ENVIRONMENT_SPACE 20
|
||||
#define BATTLE_ENVIRONMENT_ULTRA_SPACE 21
|
||||
|
||||
#define BATTLE_TERRAIN_COUNT 22
|
||||
#define BATTLE_ENVIRONMENT_COUNT 22
|
||||
|
||||
#define B_WAIT_TIME_LONG (B_WAIT_TIME_MULTIPLIER * 4)
|
||||
#define B_WAIT_TIME_MED (B_WAIT_TIME_MULTIPLIER * 3)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_CONSTANTS_EXPANSION_H
|
||||
#define GUARD_CONSTANTS_EXPANSION_H
|
||||
|
||||
// Last version: 1.11.1
|
||||
// Last version: 1.11.2
|
||||
#define EXPANSION_VERSION_MAJOR 1
|
||||
#define EXPANSION_VERSION_MINOR 12
|
||||
#define EXPANSION_VERSION_PATCH 0
|
||||
|
||||
@ -214,72 +214,72 @@ extern const u32 gBattleVSFrame_Tilemap[];
|
||||
extern const u32 gMultiBattleIntroBg_Opponent_Tilemap[];
|
||||
extern const u32 gMultiBattleIntroBg_Player_Tilemap[];
|
||||
|
||||
// battle terrains
|
||||
extern const u32 gBattleTerrainTiles_TallGrass[];
|
||||
extern const u32 gBattleTerrainTilemap_TallGrass[];
|
||||
extern const u32 gBattleTerrainAnimTiles_TallGrass[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_TallGrass[];
|
||||
extern const u16 gBattleTerrainPalette_TallGrass[];
|
||||
extern const u32 gBattleTerrainTiles_LongGrass[];
|
||||
extern const u32 gBattleTerrainTilemap_LongGrass[];
|
||||
extern const u32 gBattleTerrainAnimTiles_LongGrass[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_LongGrass[];
|
||||
extern const u16 gBattleTerrainPalette_LongGrass[];
|
||||
extern const u32 gBattleTerrainTiles_Sand[];
|
||||
extern const u32 gBattleTerrainTilemap_Sand[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Sand[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Sand[];
|
||||
extern const u16 gBattleTerrainPalette_Sand[];
|
||||
extern const u32 gBattleTerrainTiles_Underwater[];
|
||||
extern const u32 gBattleTerrainTilemap_Underwater[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Underwater[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Underwater[];
|
||||
extern const u16 gBattleTerrainPalette_Underwater[];
|
||||
extern const u32 gBattleTerrainTiles_Water[];
|
||||
extern const u32 gBattleTerrainTilemap_Water[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Water[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Water[];
|
||||
extern const u16 gBattleTerrainPalette_Water[];
|
||||
extern const u32 gBattleTerrainTiles_PondWater[];
|
||||
extern const u32 gBattleTerrainTilemap_PondWater[];
|
||||
extern const u32 gBattleTerrainAnimTiles_PondWater[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_PondWater[];
|
||||
extern const u16 gBattleTerrainPalette_PondWater[];
|
||||
extern const u32 gBattleTerrainTiles_Rock[];
|
||||
extern const u32 gBattleTerrainTilemap_Rock[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Rock[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Rock[];
|
||||
extern const u16 gBattleTerrainPalette_Rock[];
|
||||
extern const u32 gBattleTerrainTiles_Cave[];
|
||||
extern const u32 gBattleTerrainTilemap_Cave[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Cave[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Cave[];
|
||||
extern const u16 gBattleTerrainPalette_Cave[];
|
||||
extern const u32 gBattleTerrainTiles_Building[];
|
||||
extern const u32 gBattleTerrainTilemap_Building[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Building[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Building[];
|
||||
extern const u16 gBattleTerrainPalette_Building[];
|
||||
extern const u16 gBattleTerrainPalette_Plain[];
|
||||
extern const u16 gBattleTerrainPalette_Frontier[];
|
||||
extern const u32 gBattleTerrainTiles_Stadium[];
|
||||
extern const u32 gBattleTerrainTilemap_Stadium[];
|
||||
extern const u32 gBattleTerrainTiles_Rayquaza[];
|
||||
extern const u32 gBattleTerrainTilemap_Rayquaza[];
|
||||
extern const u32 gBattleTerrainAnimTiles_Rayquaza[];
|
||||
extern const u32 gBattleTerrainAnimTilemap_Rayquaza[];
|
||||
extern const u16 gBattleTerrainPalette_Rayquaza[];
|
||||
extern const u16 gBattleTerrainPalette_Kyogre[];
|
||||
extern const u16 gBattleTerrainPalette_Groudon[];
|
||||
extern const u16 gBattleTerrainPalette_BuildingGym[];
|
||||
extern const u16 gBattleTerrainPalette_BuildingLeader[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumAqua[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumMagma[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumSidney[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumPhoebe[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumGlacia[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumDrake[];
|
||||
extern const u16 gBattleTerrainPalette_StadiumWallace[];
|
||||
// battle environments
|
||||
extern const u32 gBattleEnvironmentTiles_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentTilemap_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_TallGrass[];
|
||||
extern const u16 gBattleEnvironmentPalette_TallGrass[];
|
||||
extern const u32 gBattleEnvironmentTiles_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentTilemap_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_LongGrass[];
|
||||
extern const u16 gBattleEnvironmentPalette_LongGrass[];
|
||||
extern const u32 gBattleEnvironmentTiles_Sand[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Sand[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Sand[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Sand[];
|
||||
extern const u16 gBattleEnvironmentPalette_Sand[];
|
||||
extern const u32 gBattleEnvironmentTiles_Underwater[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Underwater[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Underwater[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Underwater[];
|
||||
extern const u16 gBattleEnvironmentPalette_Underwater[];
|
||||
extern const u32 gBattleEnvironmentTiles_Water[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Water[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Water[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Water[];
|
||||
extern const u16 gBattleEnvironmentPalette_Water[];
|
||||
extern const u32 gBattleEnvironmentTiles_PondWater[];
|
||||
extern const u32 gBattleEnvironmentTilemap_PondWater[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_PondWater[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_PondWater[];
|
||||
extern const u16 gBattleEnvironmentPalette_PondWater[];
|
||||
extern const u32 gBattleEnvironmentTiles_Rock[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Rock[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Rock[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Rock[];
|
||||
extern const u16 gBattleEnvironmentPalette_Rock[];
|
||||
extern const u32 gBattleEnvironmentTiles_Cave[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Cave[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Cave[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Cave[];
|
||||
extern const u16 gBattleEnvironmentPalette_Cave[];
|
||||
extern const u32 gBattleEnvironmentTiles_Building[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Building[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Building[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Building[];
|
||||
extern const u16 gBattleEnvironmentPalette_Building[];
|
||||
extern const u16 gBattleEnvironmentPalette_Plain[];
|
||||
extern const u16 gBattleEnvironmentPalette_Frontier[];
|
||||
extern const u32 gBattleEnvironmentTiles_Stadium[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Stadium[];
|
||||
extern const u32 gBattleEnvironmentTiles_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentTilemap_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentAnimTiles_Rayquaza[];
|
||||
extern const u32 gBattleEnvironmentAnimTilemap_Rayquaza[];
|
||||
extern const u16 gBattleEnvironmentPalette_Rayquaza[];
|
||||
extern const u16 gBattleEnvironmentPalette_Kyogre[];
|
||||
extern const u16 gBattleEnvironmentPalette_Groudon[];
|
||||
extern const u16 gBattleEnvironmentPalette_BuildingGym[];
|
||||
extern const u16 gBattleEnvironmentPalette_BuildingLeader[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumAqua[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumMagma[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumSidney[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumPhoebe[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumGlacia[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumDrake[];
|
||||
extern const u16 gBattleEnvironmentPalette_StadiumWallace[];
|
||||
|
||||
// Pokédex
|
||||
extern const u32 gPokedexInterface_Gfx[];
|
||||
|
||||
@ -18,7 +18,7 @@ static void AnimTask_DigEndBounceMovementSetInvisible(u8);
|
||||
static void AnimTask_DigSetVisibleUnderground(u8);
|
||||
static void AnimTask_DigRiseUpFromHole(u8);
|
||||
static void SetDigScanlineEffect(u8, s16, s16);
|
||||
static void AnimTask_ShakeTerrain(u8);
|
||||
static void AnimTask_ShakePlatforms(u8);
|
||||
static void AnimTask_ShakeBattlers(u8);
|
||||
static void SetBattlersXOffsetForShake(struct Task *);
|
||||
static void WaitForFissureCompletion(u8);
|
||||
@ -581,12 +581,12 @@ static void AnimDigDirtMound(struct Sprite *sprite)
|
||||
#define tMaxTime data[3]
|
||||
#define tbattlerSpriteIds(i) data[9 + (i)]
|
||||
#define tNumBattlers data[13] // AnimTask_ShakeBattlers
|
||||
#define tInitialX data[13] // AnimTask_ShakeTerrain
|
||||
#define tInitialX data[13] // AnimTask_ShakePlatforms
|
||||
#define tHorizOffset data[14]
|
||||
#define tInitHorizOffset data[15]
|
||||
|
||||
// Shakes battler(s) or the battle terrain back and forth horizontally. Used by e.g. Earthquake, Eruption
|
||||
// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the terrain
|
||||
// Shakes battler(s) or the battle platforms back and forth horizontally. Used by e.g. Earthquake, Eruption
|
||||
// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the platforms
|
||||
// arg1: Shake intensity, used to calculate horizontal pixel offset (if 0, use move power instead)
|
||||
// arg2: Length of time to shake for
|
||||
void AnimTask_HorizontalShake(u8 taskId)
|
||||
@ -602,9 +602,9 @@ void AnimTask_HorizontalShake(u8 taskId)
|
||||
task->tMaxTime = gBattleAnimArgs[2];
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case MAX_BATTLERS_COUNT + 1: // Shake terrain
|
||||
case MAX_BATTLERS_COUNT + 1: // Shake platforms
|
||||
task->tInitialX = gBattle_BG3_X;
|
||||
task->func = AnimTask_ShakeTerrain;
|
||||
task->func = AnimTask_ShakePlatforms;
|
||||
break;
|
||||
case MAX_BATTLERS_COUNT: // Shake all battlers
|
||||
task->tNumBattlers = 0;
|
||||
@ -633,7 +633,7 @@ void AnimTask_HorizontalShake(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimTask_ShakeTerrain(u8 taskId)
|
||||
static void AnimTask_ShakePlatforms(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
|
||||
@ -13,9 +13,9 @@ static void AnimComplexPaletteBlend(struct Sprite *);
|
||||
static void AnimComplexPaletteBlend_Step1(struct Sprite *);
|
||||
static void AnimComplexPaletteBlend_Step2(struct Sprite *);
|
||||
static void AnimCirclingSparkle(struct Sprite *);
|
||||
static void AnimShakeMonOrBattleTerrain(struct Sprite *);
|
||||
static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *);
|
||||
static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void);
|
||||
static void AnimShakeMonOrBattlePlatforms(struct Sprite *);
|
||||
static void AnimShakeMonOrBattlePlatforms_Step(struct Sprite *);
|
||||
static void AnimShakeMonOrBattlePlatforms_UpdateCoordOffsetEnabled(void);
|
||||
static void AnimHitSplatPersistent(struct Sprite *);
|
||||
static void AnimHitSplatHandleInvert(struct Sprite *);
|
||||
static void AnimConfusionDuck_Step(struct Sprite *);
|
||||
@ -27,7 +27,7 @@ static void BlendColorCycleByTag(u8, u8, u8);
|
||||
static void AnimTask_BlendColorCycleByTagLoop(u8);
|
||||
static void AnimTask_FlashAnimTagWithColor_Step1(u8);
|
||||
static void AnimTask_FlashAnimTagWithColor_Step2(u8);
|
||||
static void AnimTask_ShakeBattleTerrain_Step(u8);
|
||||
static void AnimTask_ShakeBattlePlatforms_Step(u8);
|
||||
static void AnimMovePowerSwapGuardSwap(struct Sprite *);
|
||||
|
||||
static const union AnimCmd sAnim_ConfusionDuck_0[] =
|
||||
@ -171,7 +171,7 @@ static const struct SpriteTemplate sCirclingSparkleSpriteTemplate =
|
||||
.callback = AnimCirclingSparkle,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate =
|
||||
const struct SpriteTemplate gShakeMonOrPlatformSpriteTemplate =
|
||||
{
|
||||
.tileTag = 0,
|
||||
.paletteTag = 0,
|
||||
@ -179,7 +179,7 @@ const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate =
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimShakeMonOrBattleTerrain,
|
||||
.callback = AnimShakeMonOrBattlePlatforms,
|
||||
};
|
||||
|
||||
static const union AffineAnimCmd sAffineAnim_HitSplat_0[] =
|
||||
@ -899,7 +899,7 @@ void AnimTask_TintPalettes(u8 taskId)
|
||||
#undef tColorG
|
||||
#undef tColorB
|
||||
|
||||
static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite)
|
||||
static void AnimShakeMonOrBattlePlatforms(struct Sprite *sprite)
|
||||
{
|
||||
u16 var0;
|
||||
|
||||
@ -929,12 +929,12 @@ static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite)
|
||||
sprite->data[5] = gBattleAnimArgs[3];
|
||||
var0 = sprite->data[5] - 2;
|
||||
if (var0 < 2)
|
||||
AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled();
|
||||
AnimShakeMonOrBattlePlatforms_UpdateCoordOffsetEnabled();
|
||||
|
||||
sprite->callback = AnimShakeMonOrBattleTerrain_Step;
|
||||
sprite->callback = AnimShakeMonOrBattlePlatforms_Step;
|
||||
}
|
||||
|
||||
static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite)
|
||||
static void AnimShakeMonOrBattlePlatforms_Step(struct Sprite *sprite)
|
||||
{
|
||||
u8 i;
|
||||
u16 var0;
|
||||
@ -967,7 +967,7 @@ static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void)
|
||||
static void AnimShakeMonOrBattlePlatforms_UpdateCoordOffsetEnabled(void)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE;
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE;
|
||||
@ -986,19 +986,19 @@ static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void)
|
||||
}
|
||||
}
|
||||
|
||||
// Task data for AnimTask_ShakeBattleTerrain
|
||||
// Task data for AnimTask_ShakeBattlePlatforms
|
||||
#define tXOffset data[0]
|
||||
#define tYOffset data[1]
|
||||
#define tNumShakes data[2]
|
||||
#define tTimer data[3]
|
||||
#define tShakeDelay data[8]
|
||||
|
||||
// Can shake battle terrain back and forth on the X or down and back to original pos on Y (cant shake up from orig pos)
|
||||
// Can shake battle platforms back and forth on the X or down and back to original pos on Y (cant shake up from orig pos)
|
||||
// arg0: x offset of shake
|
||||
// arg1: y offset of shake
|
||||
// arg2: number of shakes
|
||||
// arg3: time between shakes
|
||||
void AnimTask_ShakeBattleTerrain(u8 taskId)
|
||||
void AnimTask_ShakeBattlePlatforms(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].tXOffset = gBattleAnimArgs[0];
|
||||
gTasks[taskId].tYOffset = gBattleAnimArgs[1];
|
||||
@ -1007,11 +1007,11 @@ void AnimTask_ShakeBattleTerrain(u8 taskId)
|
||||
gTasks[taskId].tShakeDelay = gBattleAnimArgs[3];
|
||||
gBattle_BG3_X = gBattleAnimArgs[0];
|
||||
gBattle_BG3_Y = gBattleAnimArgs[1];
|
||||
gTasks[taskId].func = AnimTask_ShakeBattleTerrain_Step;
|
||||
gTasks[taskId].func = AnimTask_ShakeBattlePlatforms_Step;
|
||||
gTasks[taskId].func(taskId);
|
||||
}
|
||||
|
||||
static void AnimTask_ShakeBattleTerrain_Step(u8 taskId)
|
||||
static void AnimTask_ShakeBattlePlatforms_Step(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].tTimer == 0)
|
||||
{
|
||||
|
||||
@ -104,36 +104,36 @@ void AnimTask_BlendBattleAnimPalExclude(u8 taskId)
|
||||
void AnimTask_SetCamouflageBlend(u8 taskId)
|
||||
{
|
||||
u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]);
|
||||
switch (gBattleTerrain)
|
||||
switch (gBattleEnvironment)
|
||||
{
|
||||
case BATTLE_TERRAIN_GRASS:
|
||||
case BATTLE_ENVIRONMENT_GRASS:
|
||||
gBattleAnimArgs[4] = RGB(12, 24, 2);
|
||||
break;
|
||||
case BATTLE_TERRAIN_LONG_GRASS:
|
||||
case BATTLE_ENVIRONMENT_LONG_GRASS:
|
||||
gBattleAnimArgs[4] = RGB(0, 15, 2);
|
||||
break;
|
||||
case BATTLE_TERRAIN_SAND:
|
||||
case BATTLE_ENVIRONMENT_SAND:
|
||||
gBattleAnimArgs[4] = RGB(30, 24, 11);
|
||||
break;
|
||||
case BATTLE_TERRAIN_UNDERWATER:
|
||||
case BATTLE_ENVIRONMENT_UNDERWATER:
|
||||
gBattleAnimArgs[4] = RGB(0, 0, 18);
|
||||
break;
|
||||
case BATTLE_TERRAIN_WATER:
|
||||
case BATTLE_ENVIRONMENT_WATER:
|
||||
gBattleAnimArgs[4] = RGB(11, 22, 31);
|
||||
break;
|
||||
case BATTLE_TERRAIN_POND:
|
||||
case BATTLE_ENVIRONMENT_POND:
|
||||
gBattleAnimArgs[4] = RGB(11, 22, 31);
|
||||
break;
|
||||
case BATTLE_TERRAIN_MOUNTAIN:
|
||||
case BATTLE_ENVIRONMENT_MOUNTAIN:
|
||||
gBattleAnimArgs[4] = RGB(22, 16, 10);
|
||||
break;
|
||||
case BATTLE_TERRAIN_CAVE:
|
||||
case BATTLE_ENVIRONMENT_CAVE:
|
||||
gBattleAnimArgs[4] = RGB(14, 9, 3);
|
||||
break;
|
||||
case BATTLE_TERRAIN_BUILDING:
|
||||
case BATTLE_ENVIRONMENT_BUILDING:
|
||||
gBattleAnimArgs[4] = RGB_WHITE;
|
||||
break;
|
||||
case BATTLE_TERRAIN_PLAIN:
|
||||
case BATTLE_ENVIRONMENT_PLAIN:
|
||||
default:
|
||||
gBattleAnimArgs[4] = RGB_WHITE;
|
||||
break;
|
||||
@ -916,9 +916,9 @@ static void UpdateMonScrollingBgMask(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void AnimTask_GetBattleTerrain(u8 taskId)
|
||||
void AnimTask_GetBattleEnvironment(u8 taskId)
|
||||
{
|
||||
gBattleAnimArgs[0] = gBattleTerrain;
|
||||
gBattleAnimArgs[0] = gBattleEnvironment;
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
|
||||
338
src/battle_bg.c
@ -610,96 +610,96 @@ const struct WindowTemplate * const gBattleWindowTemplates[] =
|
||||
[B_WIN_TYPE_ARENA] = sBattleArenaWindowTemplates,
|
||||
};
|
||||
|
||||
const struct BattleBackground sBattleTerrainTable[] =
|
||||
const struct BattleBackground sBattleEnvironmentTable[] =
|
||||
{
|
||||
[BATTLE_TERRAIN_GRASS] =
|
||||
[BATTLE_ENVIRONMENT_GRASS] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_TallGrass,
|
||||
.tilemap = gBattleTerrainTilemap_TallGrass,
|
||||
.entryTileset = gBattleTerrainAnimTiles_TallGrass,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_TallGrass,
|
||||
.palette = gBattleTerrainPalette_TallGrass,
|
||||
.tileset = gBattleEnvironmentTiles_TallGrass,
|
||||
.tilemap = gBattleEnvironmentTilemap_TallGrass,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_TallGrass,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_TallGrass,
|
||||
.palette = gBattleEnvironmentPalette_TallGrass,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_LONG_GRASS] =
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_LongGrass,
|
||||
.tilemap = gBattleTerrainTilemap_LongGrass,
|
||||
.entryTileset = gBattleTerrainAnimTiles_LongGrass,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_LongGrass,
|
||||
.palette = gBattleTerrainPalette_LongGrass,
|
||||
.tileset = gBattleEnvironmentTiles_LongGrass,
|
||||
.tilemap = gBattleEnvironmentTilemap_LongGrass,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_LongGrass,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_LongGrass,
|
||||
.palette = gBattleEnvironmentPalette_LongGrass,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_SAND] =
|
||||
[BATTLE_ENVIRONMENT_SAND] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Sand,
|
||||
.tilemap = gBattleTerrainTilemap_Sand,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Sand,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Sand,
|
||||
.palette = gBattleTerrainPalette_Sand,
|
||||
.tileset = gBattleEnvironmentTiles_Sand,
|
||||
.tilemap = gBattleEnvironmentTilemap_Sand,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Sand,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Sand,
|
||||
.palette = gBattleEnvironmentPalette_Sand,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_UNDERWATER] =
|
||||
[BATTLE_ENVIRONMENT_UNDERWATER] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Underwater,
|
||||
.tilemap = gBattleTerrainTilemap_Underwater,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Underwater,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Underwater,
|
||||
.palette = gBattleTerrainPalette_Underwater,
|
||||
.tileset = gBattleEnvironmentTiles_Underwater,
|
||||
.tilemap = gBattleEnvironmentTilemap_Underwater,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Underwater,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Underwater,
|
||||
.palette = gBattleEnvironmentPalette_Underwater,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_WATER] =
|
||||
[BATTLE_ENVIRONMENT_WATER] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Water,
|
||||
.tilemap = gBattleTerrainTilemap_Water,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Water,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Water,
|
||||
.palette = gBattleTerrainPalette_Water,
|
||||
.tileset = gBattleEnvironmentTiles_Water,
|
||||
.tilemap = gBattleEnvironmentTilemap_Water,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Water,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Water,
|
||||
.palette = gBattleEnvironmentPalette_Water,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_POND] =
|
||||
[BATTLE_ENVIRONMENT_POND] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_PondWater,
|
||||
.tilemap = gBattleTerrainTilemap_PondWater,
|
||||
.entryTileset = gBattleTerrainAnimTiles_PondWater,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_PondWater,
|
||||
.palette = gBattleTerrainPalette_PondWater,
|
||||
.tileset = gBattleEnvironmentTiles_PondWater,
|
||||
.tilemap = gBattleEnvironmentTilemap_PondWater,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_PondWater,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_PondWater,
|
||||
.palette = gBattleEnvironmentPalette_PondWater,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_MOUNTAIN] =
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Rock,
|
||||
.tilemap = gBattleTerrainTilemap_Rock,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Rock,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Rock,
|
||||
.palette = gBattleTerrainPalette_Rock,
|
||||
.tileset = gBattleEnvironmentTiles_Rock,
|
||||
.tilemap = gBattleEnvironmentTilemap_Rock,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Rock,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Rock,
|
||||
.palette = gBattleEnvironmentPalette_Rock,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_CAVE] =
|
||||
[BATTLE_ENVIRONMENT_CAVE] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Cave,
|
||||
.tilemap = gBattleTerrainTilemap_Cave,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Cave,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Cave,
|
||||
.palette = gBattleTerrainPalette_Cave,
|
||||
.tileset = gBattleEnvironmentTiles_Cave,
|
||||
.tilemap = gBattleEnvironmentTilemap_Cave,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Cave,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Cave,
|
||||
.palette = gBattleEnvironmentPalette_Cave,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_BUILDING] =
|
||||
[BATTLE_ENVIRONMENT_BUILDING] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Building,
|
||||
.tilemap = gBattleTerrainTilemap_Building,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Building,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Building,
|
||||
.palette = gBattleTerrainPalette_Building,
|
||||
.tileset = gBattleEnvironmentTiles_Building,
|
||||
.tilemap = gBattleEnvironmentTilemap_Building,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Building,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Building,
|
||||
.palette = gBattleEnvironmentPalette_Building,
|
||||
},
|
||||
|
||||
[BATTLE_TERRAIN_PLAIN] =
|
||||
[BATTLE_ENVIRONMENT_PLAIN] =
|
||||
{
|
||||
.tileset = gBattleTerrainTiles_Building,
|
||||
.tilemap = gBattleTerrainTilemap_Building,
|
||||
.entryTileset = gBattleTerrainAnimTiles_Building,
|
||||
.entryTilemap = gBattleTerrainAnimTilemap_Building,
|
||||
.palette = gBattleTerrainPalette_Plain,
|
||||
.tileset = gBattleEnvironmentTiles_Building,
|
||||
.tilemap = gBattleEnvironmentTilemap_Building,
|
||||
.entryTileset = gBattleEnvironmentAnimTiles_Building,
|
||||
.entryTilemap = gBattleEnvironmentAnimTilemap_Building,
|
||||
.palette = gBattleEnvironmentPalette_Plain,
|
||||
},
|
||||
};
|
||||
|
||||
@ -754,33 +754,33 @@ void DrawMainBattleBackground(void)
|
||||
{
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK))
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
{
|
||||
switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL))
|
||||
{
|
||||
case SPECIES_GROUDON:
|
||||
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case SPECIES_KYOGRE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Water, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Water, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Water, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case SPECIES_RAYQUAZA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Rayquaza, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_Rayquaza, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
default:
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -791,16 +791,16 @@ void DrawMainBattleBackground(void)
|
||||
u32 trainerClass = GetTrainerClassFromId(TRAINER_BATTLE_PARAM.opponentA);
|
||||
if (trainerClass == TRAINER_CLASS_LEADER)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
return;
|
||||
}
|
||||
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -809,49 +809,49 @@ void DrawMainBattleBackground(void)
|
||||
{
|
||||
default:
|
||||
case MAP_BATTLE_SCENE_NORMAL:
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GYM:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_MAGMA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_AQUA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_SIDNEY:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_PHOEBE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GLACIA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_DRAKE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_FRONTIER:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1148,8 +1148,8 @@ void DrawBattleEntryBackground(void)
|
||||
{
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) || gPartnerTrainerId > TRAINER_PARTNER(PARTNER_NONE))
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1168,20 +1168,20 @@ void DrawBattleEntryBackground(void)
|
||||
switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL))
|
||||
{
|
||||
case SPECIES_GROUDON:
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Cave, (void*)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Cave, (void*)(BG_SCREEN_ADDR(28)));
|
||||
break;
|
||||
case SPECIES_KYOGRE:
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Underwater, (void*)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Underwater, (void*)(BG_SCREEN_ADDR(28)));
|
||||
break;
|
||||
case SPECIES_RAYQUAZA:
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Rayquaza, (void*)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Rayquaza, (void*)(BG_SCREEN_ADDR(28)));
|
||||
break;
|
||||
default:
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].entryTileset, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].entryTilemap, (void *)(BG_SCREEN_ADDR(28)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1192,27 +1192,27 @@ void DrawBattleEntryBackground(void)
|
||||
u32 trainerClass = GetTrainerClassFromId(TRAINER_BATTLE_PARAM.opponentA);
|
||||
if (trainerClass == TRAINER_CLASS_LEADER)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
return;
|
||||
}
|
||||
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (GetCurrentMapBattleScene() == MAP_BATTLE_SCENE_NORMAL)
|
||||
{
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTileset, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].entryTilemap, (void *)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].entryTileset, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].entryTilemap, (void *)(BG_SCREEN_ADDR(28)));
|
||||
}
|
||||
else
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleTerrainAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTiles_Building, (void *)(BG_CHAR_ADDR(1)));
|
||||
LZDecompressVram(gBattleEnvironmentAnimTilemap_Building, (void *)(BG_SCREEN_ADDR(28)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1236,17 +1236,17 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
case 3:
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
{
|
||||
switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL))
|
||||
{
|
||||
case SPECIES_GROUDON:
|
||||
LZDecompressVram(gBattleTerrainTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Cave, (void*)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case SPECIES_KYOGRE:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void*)(BG_SCREEN_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Water, (void*)(BG_SCREEN_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1257,12 +1257,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
u32 trainerClass = GetTrainerClassFromId(TRAINER_BATTLE_PARAM.opponentA);
|
||||
if (trainerClass == TRAINER_CLASS_LEADER)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1271,31 +1271,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
{
|
||||
default:
|
||||
case MAP_BATTLE_SCENE_NORMAL:
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tileset, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GYM:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_MAGMA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_AQUA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_SIDNEY:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_PHOEBE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GLACIA:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_DRAKE:
|
||||
LZDecompressVram(gBattleTerrainTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Stadium, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_FRONTIER:
|
||||
LZDecompressVram(gBattleTerrainTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
LZDecompressVram(gBattleEnvironmentTiles_Building, (void *)(BG_CHAR_ADDR(2)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1303,14 +1303,14 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
case 4:
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
{
|
||||
if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON)
|
||||
LZDecompressVram(gBattleTerrainTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Cave, (void*)(BG_SCREEN_ADDR(26)));
|
||||
else
|
||||
LZDecompressVram(gBattleTerrainTilemap_Water, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Water, (void *)(BG_SCREEN_ADDR(26)));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1319,12 +1319,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
u32 trainerClass = GetTrainerClassFromId(TRAINER_BATTLE_PARAM.opponentA);
|
||||
if (trainerClass == TRAINER_CLASS_LEADER)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
||||
{
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1333,31 +1333,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
{
|
||||
default:
|
||||
case MAP_BATTLE_SCENE_NORMAL:
|
||||
LZDecompressVram(sBattleTerrainTable[gBattleTerrain].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(sBattleEnvironmentTable[gBattleEnvironment].tilemap, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GYM:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_MAGMA:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_AQUA:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_SIDNEY:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_PHOEBE:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GLACIA:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_DRAKE:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Stadium, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_FRONTIER:
|
||||
LZDecompressVram(gBattleTerrainTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
LZDecompressVram(gBattleEnvironmentTilemap_Building, (void *)(BG_SCREEN_ADDR(26)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1365,14 +1365,14 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
case 5:
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_EREADER_TRAINER))
|
||||
{
|
||||
LoadPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
{
|
||||
if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_GROUDON)
|
||||
LoadPalette(gBattleTerrainPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_Groudon, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
else
|
||||
LoadPalette(gBattleTerrainPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_Kyogre, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1381,12 +1381,12 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
u32 trainerClass = GetTrainerClassFromId(TRAINER_BATTLE_PARAM.opponentA);
|
||||
if (trainerClass == TRAINER_CLASS_LEADER)
|
||||
{
|
||||
LoadPalette(gBattleTerrainPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_BuildingLeader, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
}
|
||||
else if (trainerClass == TRAINER_CLASS_CHAMPION)
|
||||
{
|
||||
LoadPalette(gBattleTerrainPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumWallace, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1395,31 +1395,31 @@ bool8 LoadChosenBattleElement(u8 caseId)
|
||||
{
|
||||
default:
|
||||
case MAP_BATTLE_SCENE_NORMAL:
|
||||
LoadPalette(sBattleTerrainTable[gBattleTerrain].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(sBattleEnvironmentTable[gBattleEnvironment].palette, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GYM:
|
||||
LoadPalette(gBattleTerrainPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_BuildingGym, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_MAGMA:
|
||||
LoadPalette(gBattleTerrainPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumMagma, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_AQUA:
|
||||
LoadPalette(gBattleTerrainPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumAqua, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_SIDNEY:
|
||||
LoadPalette(gBattleTerrainPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumSidney, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_PHOEBE:
|
||||
LoadPalette(gBattleTerrainPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumPhoebe, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_GLACIA:
|
||||
LoadPalette(gBattleTerrainPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumGlacia, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_DRAKE:
|
||||
LoadPalette(gBattleTerrainPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_StadiumDrake, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
case MAP_BATTLE_SCENE_FRONTIER:
|
||||
LoadPalette(gBattleTerrainPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
LoadPalette(gBattleEnvironmentPalette_Frontier, BG_PLTT_ID(2), 3 * PLTT_SIZE_4BPP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1419,10 +1419,10 @@ void BtlController_EmitFaintingCry(u32 battler, u32 bufferId)
|
||||
PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitIntroSlide(u32 battler, u32 bufferId, u8 terrainId)
|
||||
void BtlController_EmitIntroSlide(u32 battler, u32 bufferId, u8 environmentId)
|
||||
{
|
||||
gBattleResources->transferBuffer[0] = CONTROLLER_INTROSLIDE;
|
||||
gBattleResources->transferBuffer[1] = terrainId;
|
||||
gBattleResources->transferBuffer[1] = environmentId;
|
||||
PrepareBufferDataTransfer(battler, bufferId, gBattleResources->transferBuffer, 2);
|
||||
}
|
||||
|
||||
|
||||
@ -24,16 +24,16 @@ static const u8 sBattleAnimBgCnts[] = {REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG
|
||||
|
||||
static const TaskFunc sBattleIntroSlideFuncs[] =
|
||||
{
|
||||
[BATTLE_TERRAIN_GRASS] = BattleIntroSlide1,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = BattleIntroSlide1,
|
||||
[BATTLE_TERRAIN_SAND] = BattleIntroSlide2,
|
||||
[BATTLE_TERRAIN_UNDERWATER] = BattleIntroSlide2,
|
||||
[BATTLE_TERRAIN_WATER] = BattleIntroSlide2,
|
||||
[BATTLE_TERRAIN_POND] = BattleIntroSlide1,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = BattleIntroSlide1,
|
||||
[BATTLE_TERRAIN_CAVE] = BattleIntroSlide1,
|
||||
[BATTLE_TERRAIN_BUILDING] = BattleIntroSlide3,
|
||||
[BATTLE_TERRAIN_PLAIN] = BattleIntroSlide3,
|
||||
[BATTLE_ENVIRONMENT_GRASS] = BattleIntroSlide1,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = BattleIntroSlide1,
|
||||
[BATTLE_ENVIRONMENT_SAND] = BattleIntroSlide2,
|
||||
[BATTLE_ENVIRONMENT_UNDERWATER] = BattleIntroSlide2,
|
||||
[BATTLE_ENVIRONMENT_WATER] = BattleIntroSlide2,
|
||||
[BATTLE_ENVIRONMENT_POND] = BattleIntroSlide1,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = BattleIntroSlide1,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = BattleIntroSlide1,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = BattleIntroSlide3,
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = BattleIntroSlide3,
|
||||
};
|
||||
|
||||
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
|
||||
@ -100,9 +100,9 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId)
|
||||
}
|
||||
|
||||
#define tState data[0]
|
||||
#define tTerrain data[1]
|
||||
#define tEnvironment data[1]
|
||||
|
||||
void HandleIntroSlide(u8 terrain)
|
||||
void HandleIntroSlide(u8 environment)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
@ -120,16 +120,16 @@ void HandleIntroSlide(u8 terrain)
|
||||
}
|
||||
else if (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL) == SPECIES_KYOGRE)
|
||||
{
|
||||
terrain = BATTLE_TERRAIN_UNDERWATER;
|
||||
environment = BATTLE_ENVIRONMENT_UNDERWATER;
|
||||
taskId = CreateTask(BattleIntroSlide2, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0);
|
||||
taskId = CreateTask(sBattleIntroSlideFuncs[environment], 0);
|
||||
}
|
||||
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].tTerrain = terrain;
|
||||
gTasks[taskId].tEnvironment = environment;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[4] = 0;
|
||||
@ -244,7 +244,7 @@ static void BattleIntroSlide1(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_LONG_GRASS)
|
||||
if (gTasks[taskId].tEnvironment == BATTLE_ENVIRONMENT_LONG_GRASS)
|
||||
{
|
||||
if (gBattle_BG1_Y != (u16)(-80))
|
||||
gBattle_BG1_Y -= 2;
|
||||
@ -292,18 +292,18 @@ static void BattleIntroSlide2(u8 taskId)
|
||||
if (B_FAST_INTRO_NO_SLIDE || gTestRunnerHeadless)
|
||||
return BattleIntroNoSlide(taskId);
|
||||
|
||||
switch (gTasks[taskId].tTerrain)
|
||||
switch (gTasks[taskId].tEnvironment)
|
||||
{
|
||||
case BATTLE_TERRAIN_SAND:
|
||||
case BATTLE_TERRAIN_WATER:
|
||||
case BATTLE_ENVIRONMENT_SAND:
|
||||
case BATTLE_ENVIRONMENT_WATER:
|
||||
gBattle_BG1_X += 8;
|
||||
break;
|
||||
case BATTLE_TERRAIN_UNDERWATER:
|
||||
case BATTLE_ENVIRONMENT_UNDERWATER:
|
||||
gBattle_BG1_X += 6;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_WATER)
|
||||
if (gTasks[taskId].tEnvironment == BATTLE_ENVIRONMENT_WATER)
|
||||
{
|
||||
gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8;
|
||||
if (gTasks[taskId].data[6] < 180)
|
||||
|
||||
@ -145,7 +145,7 @@ EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
|
||||
EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
|
||||
EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT + 13] = {0}; // expanded for stupidly long z move names
|
||||
EWRAM_DATA u32 gBattleTypeFlags = 0;
|
||||
EWRAM_DATA u8 gBattleTerrain = 0;
|
||||
EWRAM_DATA u8 gBattleEnvironment = 0;
|
||||
EWRAM_DATA struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static struct MultiPartnerMenuPokemon* sMultiPartnerPartyBuffer = NULL;
|
||||
EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL;
|
||||
@ -516,10 +516,10 @@ static void CB2_InitBattleInternal(void)
|
||||
|
||||
if (!DEBUG_OVERWORLD_MENU || (DEBUG_OVERWORLD_MENU && !gIsDebugBattle))
|
||||
{
|
||||
gBattleTerrain = BattleSetup_GetTerrainId();
|
||||
gBattleEnvironment = BattleSetup_GetEnvironmentId();
|
||||
}
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||||
gBattleTerrain = BATTLE_TERRAIN_BUILDING;
|
||||
gBattleEnvironment = BATTLE_ENVIRONMENT_BUILDING;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER
|
||||
| BATTLE_TYPE_EREADER_TRAINER
|
||||
@ -3292,20 +3292,12 @@ const u8* FaintClearSetData(u32 battler)
|
||||
gProtectStructs[battler].helpingHand = FALSE;
|
||||
gProtectStructs[battler].bounceMove = FALSE;
|
||||
gProtectStructs[battler].stealMove = FALSE;
|
||||
gProtectStructs[battler].prlzImmobility = FALSE;
|
||||
gProtectStructs[battler].nonVolatileStatusImmobility = FALSE;
|
||||
gProtectStructs[battler].unableToUseMove = FALSE;
|
||||
gProtectStructs[battler].confusionSelfDmg = FALSE;
|
||||
gProtectStructs[battler].chargingTurn = FALSE;
|
||||
gProtectStructs[battler].fleeType = 0;
|
||||
gProtectStructs[battler].usedImprisonedMove = FALSE;
|
||||
gProtectStructs[battler].loveImmobility = FALSE;
|
||||
gProtectStructs[battler].usedDisabledMove = FALSE;
|
||||
gProtectStructs[battler].usedTauntedMove = FALSE;
|
||||
gProtectStructs[battler].flag2Unknown = FALSE;
|
||||
gProtectStructs[battler].flinchImmobility = FALSE;
|
||||
gProtectStructs[battler].notFirstStrike = FALSE;
|
||||
gProtectStructs[battler].usedHealBlockedMove = FALSE;
|
||||
gProtectStructs[battler].usedGravityPreventedMove = FALSE;
|
||||
gProtectStructs[battler].usedThroatChopPreventedMove = FALSE;
|
||||
gProtectStructs[battler].statRaised = FALSE;
|
||||
gProtectStructs[battler].statFell = FALSE;
|
||||
gProtectStructs[battler].pranksterElevated = FALSE;
|
||||
@ -3431,7 +3423,7 @@ static void DoBattleIntro(void)
|
||||
if (!gBattleControllerExecFlags)
|
||||
{
|
||||
battler = GetBattlerAtPosition(0);
|
||||
BtlController_EmitIntroSlide(battler, BUFFER_A, gBattleTerrain);
|
||||
BtlController_EmitIntroSlide(battler, BUFFER_A, gBattleEnvironment);
|
||||
MarkBattlerForControllerExec(battler);
|
||||
gBattleCommunication[0] = 0;
|
||||
gBattleCommunication[1] = 0;
|
||||
|
||||
@ -550,7 +550,7 @@ static void Cmd_unused_c8(void);
|
||||
static void Cmd_trymemento(void);
|
||||
static void Cmd_setforcedtarget(void);
|
||||
static void Cmd_setcharge(void);
|
||||
static void Cmd_callterrainattack(void);
|
||||
static void Cmd_callenvironmentattack(void);
|
||||
static void Cmd_curestatuswithmove(void);
|
||||
static void Cmd_settorment(void);
|
||||
static void Cmd_jumpifnodamage(void);
|
||||
@ -581,7 +581,7 @@ static void Cmd_unused_0xE7(void);
|
||||
static void Cmd_settypebasedhalvers(void);
|
||||
static void Cmd_jumpifsubstituteblocks(void);
|
||||
static void Cmd_tryrecycleitem(void);
|
||||
static void Cmd_settypetoterrain(void);
|
||||
static void Cmd_settypetoenvironment(void);
|
||||
static void Cmd_pursuitdoubles(void);
|
||||
static void Cmd_snatchsetbattlers(void);
|
||||
static void Cmd_removescreens(void);
|
||||
@ -809,7 +809,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
Cmd_trymemento, //0xC9
|
||||
Cmd_setforcedtarget, //0xCA
|
||||
Cmd_setcharge, //0xCB
|
||||
Cmd_callterrainattack, //0xCC
|
||||
Cmd_callenvironmentattack, //0xCC
|
||||
Cmd_curestatuswithmove, //0xCD
|
||||
Cmd_settorment, //0xCE
|
||||
Cmd_jumpifnodamage, //0xCF
|
||||
@ -840,7 +840,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
Cmd_settypebasedhalvers, //0xE8
|
||||
Cmd_jumpifsubstituteblocks, //0xE9
|
||||
Cmd_tryrecycleitem, //0xEA
|
||||
Cmd_settypetoterrain, //0xEB
|
||||
Cmd_settypetoenvironment, //0xEB
|
||||
Cmd_pursuitdoubles, //0xEC
|
||||
Cmd_snatchsetbattlers, //0xED
|
||||
Cmd_removescreens, //0xEE
|
||||
@ -971,76 +971,76 @@ static const u16 sFinalStrikeOnlyEffects[] =
|
||||
MOVE_EFFECT_WRAP,
|
||||
};
|
||||
|
||||
static const u16 sNaturePowerMoves[BATTLE_TERRAIN_COUNT] =
|
||||
static const u16 sNaturePowerMoves[BATTLE_ENVIRONMENT_COUNT] =
|
||||
{
|
||||
#if B_NATURE_POWER_MOVES >= GEN_7
|
||||
[BATTLE_TERRAIN_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_TERRAIN_SAND] = MOVE_EARTH_POWER,
|
||||
[BATTLE_TERRAIN_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = MOVE_EARTH_POWER,
|
||||
[BATTLE_TERRAIN_CAVE] = MOVE_EARTH_POWER,
|
||||
[BATTLE_TERRAIN_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_PLAIN] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_SNOW] = MOVE_ICE_BEAM,
|
||||
[BATTLE_ENVIRONMENT_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_ENVIRONMENT_SAND] = MOVE_EARTH_POWER,
|
||||
[BATTLE_ENVIRONMENT_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = MOVE_EARTH_POWER,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = MOVE_EARTH_POWER,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_SNOW] = MOVE_ICE_BEAM,
|
||||
#elif B_NATURE_POWER_MOVES == GEN_6
|
||||
[BATTLE_TERRAIN_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_TERRAIN_SAND] = MOVE_EARTH_POWER,
|
||||
[BATTLE_TERRAIN_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = MOVE_EARTH_POWER,
|
||||
[BATTLE_TERRAIN_CAVE] = MOVE_EARTH_POWER,
|
||||
[BATTLE_TERRAIN_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_PLAIN] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_SNOW] = MOVE_FROST_BREATH,
|
||||
[BATTLE_ENVIRONMENT_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = MOVE_ENERGY_BALL,
|
||||
[BATTLE_ENVIRONMENT_SAND] = MOVE_EARTH_POWER,
|
||||
[BATTLE_ENVIRONMENT_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = MOVE_EARTH_POWER,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = MOVE_EARTH_POWER,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_SNOW] = MOVE_FROST_BREATH,
|
||||
#elif B_NATURE_POWER_MOVES == GEN_5
|
||||
[BATTLE_TERRAIN_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_TERRAIN_SAND] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_CAVE] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_PLAIN] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_SNOW] = MOVE_BLIZZARD,
|
||||
[BATTLE_ENVIRONMENT_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_ENVIRONMENT_SAND] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_SNOW] = MOVE_BLIZZARD,
|
||||
#elif B_NATURE_POWER_MOVES == GEN_4
|
||||
[BATTLE_TERRAIN_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_TERRAIN_SAND] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = MOVE_ROCK_SLIDE,
|
||||
[BATTLE_TERRAIN_CAVE] = MOVE_ROCK_SLIDE,
|
||||
[BATTLE_TERRAIN_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_PLAIN] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_SNOW] = MOVE_BLIZZARD,
|
||||
[BATTLE_ENVIRONMENT_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = MOVE_SEED_BOMB,
|
||||
[BATTLE_ENVIRONMENT_SAND] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_WATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_POND] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = MOVE_ROCK_SLIDE,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = MOVE_ROCK_SLIDE,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_SNOW] = MOVE_BLIZZARD,
|
||||
#else // Gen 1-3
|
||||
[BATTLE_TERRAIN_GRASS] = MOVE_STUN_SPORE,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = MOVE_RAZOR_LEAF,
|
||||
[BATTLE_TERRAIN_SAND] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_TERRAIN_WATER] = MOVE_SURF,
|
||||
[BATTLE_TERRAIN_POND] = MOVE_BUBBLE_BEAM,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = MOVE_ROCK_SLIDE,
|
||||
[BATTLE_TERRAIN_CAVE] = MOVE_SHADOW_BALL,
|
||||
[BATTLE_TERRAIN_BUILDING] = MOVE_SWIFT,
|
||||
[BATTLE_TERRAIN_PLAIN] = MOVE_SWIFT,
|
||||
[BATTLE_TERRAIN_SNOW] = MOVE_BLIZZARD,
|
||||
[BATTLE_ENVIRONMENT_GRASS] = MOVE_STUN_SPORE,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = MOVE_RAZOR_LEAF,
|
||||
[BATTLE_ENVIRONMENT_SAND] = MOVE_EARTHQUAKE,
|
||||
[BATTLE_ENVIRONMENT_WATER] = MOVE_SURF,
|
||||
[BATTLE_ENVIRONMENT_POND] = MOVE_BUBBLE_BEAM,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = MOVE_ROCK_SLIDE,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = MOVE_SHADOW_BALL,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = MOVE_SWIFT,
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = MOVE_SWIFT,
|
||||
[BATTLE_ENVIRONMENT_SNOW] = MOVE_BLIZZARD,
|
||||
#endif
|
||||
[BATTLE_TERRAIN_UNDERWATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_TERRAIN_SOARING] = MOVE_AIR_SLASH,
|
||||
[BATTLE_TERRAIN_SKY_PILLAR] = MOVE_AIR_SLASH,
|
||||
[BATTLE_TERRAIN_BURIAL_GROUND] = MOVE_SHADOW_BALL,
|
||||
[BATTLE_TERRAIN_PUDDLE] = MOVE_MUD_BOMB,
|
||||
[BATTLE_TERRAIN_MARSH] = MOVE_MUD_BOMB,
|
||||
[BATTLE_TERRAIN_SWAMP] = MOVE_MUD_BOMB,
|
||||
[BATTLE_TERRAIN_ICE] = MOVE_ICE_BEAM,
|
||||
[BATTLE_TERRAIN_VOLCANO] = MOVE_LAVA_PLUME,
|
||||
[BATTLE_TERRAIN_DISTORTION_WORLD] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_TERRAIN_SPACE] = MOVE_DRACO_METEOR,
|
||||
[BATTLE_TERRAIN_ULTRA_SPACE] = MOVE_PSYSHOCK,
|
||||
[BATTLE_ENVIRONMENT_UNDERWATER] = MOVE_HYDRO_PUMP,
|
||||
[BATTLE_ENVIRONMENT_SOARING] = MOVE_AIR_SLASH,
|
||||
[BATTLE_ENVIRONMENT_SKY_PILLAR] = MOVE_AIR_SLASH,
|
||||
[BATTLE_ENVIRONMENT_BURIAL_GROUND] = MOVE_SHADOW_BALL,
|
||||
[BATTLE_ENVIRONMENT_PUDDLE] = MOVE_MUD_BOMB,
|
||||
[BATTLE_ENVIRONMENT_MARSH] = MOVE_MUD_BOMB,
|
||||
[BATTLE_ENVIRONMENT_SWAMP] = MOVE_MUD_BOMB,
|
||||
[BATTLE_ENVIRONMENT_ICE] = MOVE_ICE_BEAM,
|
||||
[BATTLE_ENVIRONMENT_VOLCANO] = MOVE_LAVA_PLUME,
|
||||
[BATTLE_ENVIRONMENT_DISTORTION_WORLD] = MOVE_TRI_ATTACK,
|
||||
[BATTLE_ENVIRONMENT_SPACE] = MOVE_DRACO_METEOR,
|
||||
[BATTLE_ENVIRONMENT_ULTRA_SPACE] = MOVE_PSYSHOCK,
|
||||
};
|
||||
|
||||
#define _ 0
|
||||
@ -1081,30 +1081,30 @@ static const struct PickupItem sPickupTable[] =
|
||||
|
||||
#undef _
|
||||
|
||||
static const u8 sTerrainToType[BATTLE_TERRAIN_COUNT] =
|
||||
static const u8 sEnvironmentToType[BATTLE_ENVIRONMENT_COUNT] =
|
||||
{
|
||||
[BATTLE_TERRAIN_GRASS] = TYPE_GRASS,
|
||||
[BATTLE_TERRAIN_LONG_GRASS] = TYPE_GRASS,
|
||||
[BATTLE_TERRAIN_SAND] = TYPE_GROUND,
|
||||
[BATTLE_TERRAIN_UNDERWATER] = TYPE_WATER,
|
||||
[BATTLE_TERRAIN_WATER] = TYPE_WATER,
|
||||
[BATTLE_TERRAIN_POND] = TYPE_WATER,
|
||||
[BATTLE_TERRAIN_CAVE] = TYPE_ROCK,
|
||||
[BATTLE_TERRAIN_BUILDING] = TYPE_NORMAL,
|
||||
[BATTLE_TERRAIN_SOARING] = TYPE_FLYING,
|
||||
[BATTLE_TERRAIN_SKY_PILLAR] = TYPE_FLYING,
|
||||
[BATTLE_TERRAIN_BURIAL_GROUND] = TYPE_GHOST,
|
||||
[BATTLE_TERRAIN_PUDDLE] = TYPE_GROUND,
|
||||
[BATTLE_TERRAIN_MARSH] = TYPE_GROUND,
|
||||
[BATTLE_TERRAIN_SWAMP] = TYPE_GROUND,
|
||||
[BATTLE_TERRAIN_SNOW] = TYPE_ICE,
|
||||
[BATTLE_TERRAIN_ICE] = TYPE_ICE,
|
||||
[BATTLE_TERRAIN_VOLCANO] = TYPE_FIRE,
|
||||
[BATTLE_TERRAIN_DISTORTION_WORLD] = TYPE_NORMAL,
|
||||
[BATTLE_TERRAIN_SPACE] = TYPE_DRAGON,
|
||||
[BATTLE_TERRAIN_ULTRA_SPACE] = TYPE_PSYCHIC,
|
||||
[BATTLE_TERRAIN_MOUNTAIN] = (B_CAMOUFLAGE_TYPES >= GEN_5 ? TYPE_GROUND : TYPE_ROCK),
|
||||
[BATTLE_TERRAIN_PLAIN] = (B_CAMOUFLAGE_TYPES >= GEN_4 ? TYPE_GROUND : TYPE_NORMAL),
|
||||
[BATTLE_ENVIRONMENT_GRASS] = TYPE_GRASS,
|
||||
[BATTLE_ENVIRONMENT_LONG_GRASS] = TYPE_GRASS,
|
||||
[BATTLE_ENVIRONMENT_SAND] = TYPE_GROUND,
|
||||
[BATTLE_ENVIRONMENT_UNDERWATER] = TYPE_WATER,
|
||||
[BATTLE_ENVIRONMENT_WATER] = TYPE_WATER,
|
||||
[BATTLE_ENVIRONMENT_POND] = TYPE_WATER,
|
||||
[BATTLE_ENVIRONMENT_CAVE] = TYPE_ROCK,
|
||||
[BATTLE_ENVIRONMENT_BUILDING] = TYPE_NORMAL,
|
||||
[BATTLE_ENVIRONMENT_SOARING] = TYPE_FLYING,
|
||||
[BATTLE_ENVIRONMENT_SKY_PILLAR] = TYPE_FLYING,
|
||||
[BATTLE_ENVIRONMENT_BURIAL_GROUND] = TYPE_GHOST,
|
||||
[BATTLE_ENVIRONMENT_PUDDLE] = TYPE_GROUND,
|
||||
[BATTLE_ENVIRONMENT_MARSH] = TYPE_GROUND,
|
||||
[BATTLE_ENVIRONMENT_SWAMP] = TYPE_GROUND,
|
||||
[BATTLE_ENVIRONMENT_SNOW] = TYPE_ICE,
|
||||
[BATTLE_ENVIRONMENT_ICE] = TYPE_ICE,
|
||||
[BATTLE_ENVIRONMENT_VOLCANO] = TYPE_FIRE,
|
||||
[BATTLE_ENVIRONMENT_DISTORTION_WORLD] = TYPE_NORMAL,
|
||||
[BATTLE_ENVIRONMENT_SPACE] = TYPE_DRAGON,
|
||||
[BATTLE_ENVIRONMENT_ULTRA_SPACE] = TYPE_PSYCHIC,
|
||||
[BATTLE_ENVIRONMENT_MOUNTAIN] = (B_CAMOUFLAGE_TYPES >= GEN_5 ? TYPE_GROUND : TYPE_ROCK),
|
||||
[BATTLE_ENVIRONMENT_PLAIN] = (B_CAMOUFLAGE_TYPES >= GEN_4 ? TYPE_GROUND : TYPE_NORMAL),
|
||||
};
|
||||
|
||||
static bool32 NoTargetPresent(u8 battler, u32 move)
|
||||
@ -4128,18 +4128,18 @@ void SetMoveEffect(bool32 primary, bool32 certain)
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (gBattleTerrain)
|
||||
switch (gBattleEnvironment)
|
||||
{
|
||||
case BATTLE_TERRAIN_GRASS:
|
||||
case BATTLE_ENVIRONMENT_GRASS:
|
||||
gBattleScripting.moveEffect = (B_SECRET_POWER_EFFECT >= GEN_4 ? MOVE_EFFECT_SLEEP : MOVE_EFFECT_POISON);
|
||||
break;
|
||||
case BATTLE_TERRAIN_UNDERWATER:
|
||||
case BATTLE_ENVIRONMENT_UNDERWATER:
|
||||
gBattleScripting.moveEffect = (B_SECRET_POWER_EFFECT >= GEN_6 ? MOVE_EFFECT_ATK_MINUS_1 : MOVE_EFFECT_DEF_MINUS_1);
|
||||
break;
|
||||
case BATTLE_TERRAIN_POND:
|
||||
case BATTLE_ENVIRONMENT_POND:
|
||||
gBattleScripting.moveEffect = (B_SECRET_POWER_EFFECT >= GEN_4 ? MOVE_EFFECT_ATK_MINUS_1 : MOVE_EFFECT_SPD_MINUS_1);
|
||||
break;
|
||||
case BATTLE_TERRAIN_MOUNTAIN:
|
||||
case BATTLE_ENVIRONMENT_MOUNTAIN:
|
||||
if (B_SECRET_POWER_EFFECT >= GEN_5)
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_ACC_MINUS_1;
|
||||
else if (B_SECRET_POWER_EFFECT >= GEN_4)
|
||||
@ -4147,37 +4147,37 @@ void SetMoveEffect(bool32 primary, bool32 certain)
|
||||
else
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_CONFUSION;
|
||||
break;
|
||||
case BATTLE_TERRAIN_PUDDLE:
|
||||
case BATTLE_ENVIRONMENT_PUDDLE:
|
||||
gBattleScripting.moveEffect = (B_SECRET_POWER_EFFECT >= GEN_5 ? MOVE_EFFECT_SPD_MINUS_1 : MOVE_EFFECT_ACC_MINUS_1);
|
||||
break;
|
||||
case BATTLE_TERRAIN_LONG_GRASS:
|
||||
case BATTLE_ENVIRONMENT_LONG_GRASS:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_SLEEP;
|
||||
break;
|
||||
case BATTLE_TERRAIN_SAND:
|
||||
case BATTLE_ENVIRONMENT_SAND:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_ACC_MINUS_1;
|
||||
break;
|
||||
case BATTLE_TERRAIN_WATER:
|
||||
case BATTLE_ENVIRONMENT_WATER:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_ATK_MINUS_1;
|
||||
break;
|
||||
case BATTLE_TERRAIN_CAVE:
|
||||
case BATTLE_TERRAIN_BURIAL_GROUND:
|
||||
case BATTLE_TERRAIN_SPACE:
|
||||
case BATTLE_ENVIRONMENT_CAVE:
|
||||
case BATTLE_ENVIRONMENT_BURIAL_GROUND:
|
||||
case BATTLE_ENVIRONMENT_SPACE:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_FLINCH;
|
||||
break;
|
||||
case BATTLE_TERRAIN_SOARING:
|
||||
case BATTLE_TERRAIN_SKY_PILLAR:
|
||||
case BATTLE_TERRAIN_MARSH:
|
||||
case BATTLE_TERRAIN_SWAMP:
|
||||
case BATTLE_ENVIRONMENT_SOARING:
|
||||
case BATTLE_ENVIRONMENT_SKY_PILLAR:
|
||||
case BATTLE_ENVIRONMENT_MARSH:
|
||||
case BATTLE_ENVIRONMENT_SWAMP:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_SPD_MINUS_1;
|
||||
break;
|
||||
case BATTLE_TERRAIN_SNOW:
|
||||
case BATTLE_TERRAIN_ICE:
|
||||
case BATTLE_ENVIRONMENT_SNOW:
|
||||
case BATTLE_ENVIRONMENT_ICE:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_FREEZE_OR_FROSTBITE;
|
||||
break;
|
||||
case BATTLE_TERRAIN_VOLCANO:
|
||||
case BATTLE_ENVIRONMENT_VOLCANO:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_BURN;
|
||||
break;
|
||||
case BATTLE_TERRAIN_ULTRA_SPACE:
|
||||
case BATTLE_ENVIRONMENT_ULTRA_SPACE:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_DEF_MINUS_1;
|
||||
break;
|
||||
default:
|
||||
@ -7054,7 +7054,7 @@ static void Cmd_moveend(void)
|
||||
case MOVEEND_UPDATE_LAST_MOVES:
|
||||
if ((gBattleStruct->moveResultFlags[gBattlerTarget] & (MOVE_RESULT_FAILED | MOVE_RESULT_DOESNT_AFFECT_FOE))
|
||||
|| (gBattleMons[gBattlerAttacker].status2 & (STATUS2_FLINCHED))
|
||||
|| gProtectStructs[gBattlerAttacker].prlzImmobility)
|
||||
|| gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility)
|
||||
gBattleStruct->battlerState[gBattlerAttacker].lastMoveFailed = TRUE;
|
||||
else
|
||||
gBattleStruct->battlerState[gBattlerAttacker].lastMoveFailed = FALSE;
|
||||
@ -14920,7 +14920,7 @@ static void Cmd_setcharge(void)
|
||||
}
|
||||
|
||||
// Nature Power
|
||||
static void Cmd_callterrainattack(void)
|
||||
static void Cmd_callenvironmentattack(void)
|
||||
{
|
||||
CMD_ARGS();
|
||||
|
||||
@ -14933,7 +14933,7 @@ static void Cmd_callterrainattack(void)
|
||||
|
||||
u32 GetNaturePowerMove(u32 battler)
|
||||
{
|
||||
u32 move = sNaturePowerMoves[gBattleTerrain];
|
||||
u32 move = sNaturePowerMoves[gBattleEnvironment];
|
||||
if (gFieldStatuses & STATUS_FIELD_MISTY_TERRAIN)
|
||||
move = MOVE_MOONBLAST;
|
||||
else if (gFieldStatuses & STATUS_FIELD_ELECTRIC_TERRAIN)
|
||||
@ -14942,7 +14942,7 @@ u32 GetNaturePowerMove(u32 battler)
|
||||
move = MOVE_ENERGY_BALL;
|
||||
else if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN)
|
||||
move = MOVE_PSYCHIC;
|
||||
else if (sNaturePowerMoves[gBattleTerrain] == MOVE_NONE)
|
||||
else if (sNaturePowerMoves[gBattleEnvironment] == MOVE_NONE)
|
||||
move = MOVE_TRI_ATTACK;
|
||||
|
||||
if (GetActiveGimmick(battler) == GIMMICK_Z_MOVE)
|
||||
@ -15806,39 +15806,39 @@ static void Cmd_tryrecycleitem(void)
|
||||
|
||||
bool32 CanCamouflage(u8 battler)
|
||||
{
|
||||
if (IS_BATTLER_OF_TYPE(battler, sTerrainToType[gBattleTerrain]))
|
||||
if (IS_BATTLER_OF_TYPE(battler, sEnvironmentToType[gBattleEnvironment]))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void Cmd_settypetoterrain(void)
|
||||
static void Cmd_settypetoenvironment(void)
|
||||
{
|
||||
CMD_ARGS(const u8 *failInstr);
|
||||
|
||||
u8 terrainType;
|
||||
u8 environmentType;
|
||||
switch(gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
|
||||
{
|
||||
case STATUS_FIELD_ELECTRIC_TERRAIN:
|
||||
terrainType = TYPE_ELECTRIC;
|
||||
environmentType = TYPE_ELECTRIC;
|
||||
break;
|
||||
case STATUS_FIELD_GRASSY_TERRAIN:
|
||||
terrainType = TYPE_GRASS;
|
||||
environmentType = TYPE_GRASS;
|
||||
break;
|
||||
case STATUS_FIELD_MISTY_TERRAIN:
|
||||
terrainType = TYPE_FAIRY;
|
||||
environmentType = TYPE_FAIRY;
|
||||
break;
|
||||
case STATUS_FIELD_PSYCHIC_TERRAIN:
|
||||
terrainType = TYPE_PSYCHIC;
|
||||
environmentType = TYPE_PSYCHIC;
|
||||
break;
|
||||
default:
|
||||
terrainType = sTerrainToType[gBattleTerrain];
|
||||
environmentType = sEnvironmentToType[gBattleEnvironment];
|
||||
break;
|
||||
}
|
||||
|
||||
if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, terrainType) && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA)
|
||||
if (!IS_BATTLER_OF_TYPE(gBattlerAttacker, environmentType) && GetActiveGimmick(gBattlerAttacker) != GIMMICK_TERA)
|
||||
{
|
||||
SET_BATTLER_TYPE(gBattlerAttacker, terrainType);
|
||||
PREPARE_TYPE_BUFFER(gBattleTextBuff1, terrainType);
|
||||
SET_BATTLER_TYPE(gBattlerAttacker, environmentType);
|
||||
PREPARE_TYPE_BUFFER(gBattleTextBuff1, environmentType);
|
||||
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
|
||||
@ -621,7 +621,7 @@ static void CB2_EndScriptedWildBattle(void)
|
||||
}
|
||||
}
|
||||
|
||||
u8 BattleSetup_GetTerrainId(void)
|
||||
u8 BattleSetup_GetEnvironmentId(void)
|
||||
{
|
||||
u16 tileBehavior;
|
||||
s16 x, y;
|
||||
@ -634,11 +634,11 @@ u8 BattleSetup_GetTerrainId(void)
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
|
||||
if (MetatileBehavior_IsTallGrass(tileBehavior))
|
||||
return BATTLE_TERRAIN_GRASS;
|
||||
return BATTLE_ENVIRONMENT_GRASS;
|
||||
if (MetatileBehavior_IsLongGrass(tileBehavior))
|
||||
return BATTLE_TERRAIN_LONG_GRASS;
|
||||
return BATTLE_ENVIRONMENT_LONG_GRASS;
|
||||
if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
|
||||
return BATTLE_TERRAIN_SAND;
|
||||
return BATTLE_ENVIRONMENT_SAND;
|
||||
|
||||
switch (gMapHeader.mapType)
|
||||
{
|
||||
@ -648,41 +648,41 @@ u8 BattleSetup_GetTerrainId(void)
|
||||
break;
|
||||
case MAP_TYPE_UNDERGROUND:
|
||||
if (MetatileBehavior_IsIndoorEncounter(tileBehavior))
|
||||
return BATTLE_TERRAIN_BUILDING;
|
||||
return BATTLE_ENVIRONMENT_BUILDING;
|
||||
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
|
||||
return BATTLE_TERRAIN_POND;
|
||||
return BATTLE_TERRAIN_CAVE;
|
||||
return BATTLE_ENVIRONMENT_POND;
|
||||
return BATTLE_ENVIRONMENT_CAVE;
|
||||
case MAP_TYPE_INDOOR:
|
||||
case MAP_TYPE_SECRET_BASE:
|
||||
return BATTLE_TERRAIN_BUILDING;
|
||||
return BATTLE_ENVIRONMENT_BUILDING;
|
||||
case MAP_TYPE_UNDERWATER:
|
||||
return BATTLE_TERRAIN_UNDERWATER;
|
||||
return BATTLE_ENVIRONMENT_UNDERWATER;
|
||||
case MAP_TYPE_OCEAN_ROUTE:
|
||||
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
|
||||
return BATTLE_TERRAIN_WATER;
|
||||
return BATTLE_TERRAIN_PLAIN;
|
||||
return BATTLE_ENVIRONMENT_WATER;
|
||||
return BATTLE_ENVIRONMENT_PLAIN;
|
||||
}
|
||||
if (MetatileBehavior_IsDeepOrOceanWater(tileBehavior))
|
||||
return BATTLE_TERRAIN_WATER;
|
||||
return BATTLE_ENVIRONMENT_WATER;
|
||||
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
|
||||
return BATTLE_TERRAIN_POND;
|
||||
return BATTLE_ENVIRONMENT_POND;
|
||||
if (MetatileBehavior_IsMountain(tileBehavior))
|
||||
return BATTLE_TERRAIN_MOUNTAIN;
|
||||
return BATTLE_ENVIRONMENT_MOUNTAIN;
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
|
||||
{
|
||||
// Is BRIDGE_TYPE_POND_*?
|
||||
if (MetatileBehavior_GetBridgeType(tileBehavior) != BRIDGE_TYPE_OCEAN)
|
||||
return BATTLE_TERRAIN_POND;
|
||||
return BATTLE_ENVIRONMENT_POND;
|
||||
|
||||
if (MetatileBehavior_IsBridgeOverWater(tileBehavior) == TRUE)
|
||||
return BATTLE_TERRAIN_WATER;
|
||||
return BATTLE_ENVIRONMENT_WATER;
|
||||
}
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE113))
|
||||
return BATTLE_TERRAIN_SAND;
|
||||
return BATTLE_ENVIRONMENT_SAND;
|
||||
if (GetSavedWeather() == WEATHER_SANDSTORM)
|
||||
return BATTLE_TERRAIN_SAND;
|
||||
return BATTLE_ENVIRONMENT_SAND;
|
||||
|
||||
return BATTLE_TERRAIN_PLAIN;
|
||||
return BATTLE_ENVIRONMENT_PLAIN;
|
||||
}
|
||||
|
||||
static u8 GetBattleTransitionTypeByMap(void)
|
||||
|
||||
@ -1124,21 +1124,12 @@ const u8 *CancelMultiTurnMoves(u32 battler, enum SkyDropState skyDropState)
|
||||
|
||||
bool32 WasUnableToUseMove(u32 battler)
|
||||
{
|
||||
if (gProtectStructs[battler].prlzImmobility
|
||||
|| gProtectStructs[battler].usedImprisonedMove
|
||||
|| gProtectStructs[battler].loveImmobility
|
||||
|| gProtectStructs[battler].usedDisabledMove
|
||||
|| gProtectStructs[battler].usedTauntedMove
|
||||
|| gProtectStructs[battler].usedGravityPreventedMove
|
||||
|| gProtectStructs[battler].usedHealBlockedMove
|
||||
|| gProtectStructs[battler].flag2Unknown
|
||||
|| gProtectStructs[battler].flinchImmobility
|
||||
|| gProtectStructs[battler].confusionSelfDmg
|
||||
|| gProtectStructs[battler].powderSelfDmg
|
||||
|| gProtectStructs[battler].usedThroatChopPreventedMove)
|
||||
if (gProtectStructs[battler].nonVolatileStatusImmobility
|
||||
|| gProtectStructs[battler].unableToUseMove
|
||||
|| gProtectStructs[battler].powderSelfDmg
|
||||
|| gProtectStructs[battler].confusionSelfDmg)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void PrepareStringBattle(enum StringID stringId, u32 battler)
|
||||
@ -1918,6 +1909,7 @@ static void CancellerAsleep(u32 *effect)
|
||||
enum BattleMoveEffects moveEffect = GetMoveEffect(gChosenMove);
|
||||
if (moveEffect != EFFECT_SNORE && moveEffect != EFFECT_SLEEP_TALK)
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE;
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep;
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
*effect = 2;
|
||||
@ -1942,6 +1934,7 @@ static void CancellerFrozen(u32 *effect)
|
||||
{
|
||||
if (!RandomPercentage(RNG_FROZEN, 20))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE;
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen;
|
||||
gHitMarker |= (HITMARKER_NO_ATTACKSTRING | HITMARKER_UNABLE_TO_USE_MOVE);
|
||||
}
|
||||
@ -2030,7 +2023,7 @@ static void CancellerFlinch(u32 *effect)
|
||||
{
|
||||
if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED)
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].flinchImmobility = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched;
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
@ -2051,7 +2044,7 @@ static void CancellerInLove(u32 *effect)
|
||||
{
|
||||
BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack);
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
gProtectStructs[gBattlerAttacker].loveImmobility = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
}
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove;
|
||||
@ -2063,7 +2056,7 @@ static void CancellerDisabled(u32 *effect)
|
||||
{
|
||||
if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != MOVE_NONE)
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].usedDisabledMove = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled;
|
||||
@ -2076,7 +2069,7 @@ static void CancellerHealBlocked(u32 *effect)
|
||||
{
|
||||
if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gStatuses3[gBattlerAttacker] & STATUS3_HEAL_BLOCK && IsHealBlockPreventingMove(gBattlerAttacker, gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].usedHealBlockedMove = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedHealBlockPrevents;
|
||||
@ -2089,7 +2082,7 @@ static void CancellerGravity(u32 *effect)
|
||||
{
|
||||
if (gFieldStatuses & STATUS_FIELD_GRAVITY && IsGravityPreventingMove(gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].usedGravityPreventedMove = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedGravityPrevents;
|
||||
@ -2102,7 +2095,7 @@ static void CancellerThroatChop(u32 *effect)
|
||||
{
|
||||
if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].throatChopTimer > gBattleTurnCounter && IsSoundMove(gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].usedThroatChopPreventedMove = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsThroatChopPrevented;
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
@ -2114,7 +2107,7 @@ static void CancellerTaunted(u32 *effect)
|
||||
{
|
||||
if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && gDisableStructs[gBattlerAttacker].tauntTimer && IsBattleMoveStatus(gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].usedTauntedMove = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted;
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
@ -2126,7 +2119,7 @@ static void CancellerImprisoned(u32 *effect)
|
||||
{
|
||||
if (GetActiveGimmick(gBattlerAttacker) != GIMMICK_Z_MOVE && GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].usedImprisonedMove = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].unableToUseMove = TRUE;
|
||||
CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned;
|
||||
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
|
||||
@ -2184,7 +2177,7 @@ static void CancellerParalysed(u32 *effect)
|
||||
&& !(B_MAGIC_GUARD == GEN_4 && GetBattlerAbility(gBattlerAttacker) == ABILITY_MAGIC_GUARD)
|
||||
&& !RandomPercentage(RNG_PARALYSIS, 75))
|
||||
{
|
||||
gProtectStructs[gBattlerAttacker].prlzImmobility = TRUE;
|
||||
gProtectStructs[gBattlerAttacker].nonVolatileStatusImmobility = TRUE;
|
||||
// This is removed in FRLG and Emerald for some reason
|
||||
//CancelMultiTurnMoves(gBattlerAttacker, SKY_DROP_ATTACKCANCELLER_CHECK);
|
||||
gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed;
|
||||
|
||||
88
src/data/graphics/battle_environment.h
Normal file
@ -0,0 +1,88 @@
|
||||
const u32 gBattleEnvironmentTiles_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_TallGrass[] = INCBIN_U16("graphics/battle_environment/tall_grass/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_LongGrass[] = INCBIN_U16("graphics/battle_environment/long_grass/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Sand[] = INCBIN_U32("graphics/battle_environment/sand/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_Sand[] = INCBIN_U16("graphics/battle_environment/sand/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_Sand[] = INCBIN_U32("graphics/battle_environment/sand/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_Underwater[] = INCBIN_U16("graphics/battle_environment/underwater/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Water[] = INCBIN_U32("graphics/battle_environment/water/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_Water[] = INCBIN_U16("graphics/battle_environment/water/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_Water[] = INCBIN_U32("graphics/battle_environment/water/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_PondWater[] = INCBIN_U16("graphics/battle_environment/pond_water/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Rock[] = INCBIN_U32("graphics/battle_environment/rock/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_Rock[] = INCBIN_U16("graphics/battle_environment/rock/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_Rock[] = INCBIN_U32("graphics/battle_environment/rock/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Cave[] = INCBIN_U32("graphics/battle_environment/cave/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_Cave[] = INCBIN_U16("graphics/battle_environment/cave/palette.gbapal");
|
||||
const u32 gBattleEnvironmentTilemap_Cave[] = INCBIN_U32("graphics/battle_environment/cave/map.bin.lz");
|
||||
|
||||
const u16 gBattleEnvironmentPalette_Plain[] = INCBIN_U16("graphics/battle_environment/plain/palette.gbapal");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Building[] = INCBIN_U32("graphics/battle_environment/building/tiles.4bpp.lz");
|
||||
const u16 gBattleEnvironmentPalette_Frontier[] = INCBIN_U16("graphics/battle_environment/stadium/battle_frontier.gbapal"); // this is also used for link battles
|
||||
const u32 gBattleEnvironmentTilemap_Building[] = INCBIN_U32("graphics/battle_environment/building/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Stadium[] = INCBIN_U32("graphics/battle_environment/stadium/tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentTilemap_Stadium[] = INCBIN_U32("graphics/battle_environment/stadium/map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentTiles_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/map.bin.lz");
|
||||
|
||||
const u16 gBattleEnvironmentPalette_Building[] = INCBIN_U16("graphics/battle_environment/building/palette.gbapal");
|
||||
|
||||
const u16 gBattleEnvironmentPalette_Kyogre[] = INCBIN_U16("graphics/battle_environment/water/kyogre.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_Groudon[] = INCBIN_U16("graphics/battle_environment/cave/groudon.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_BuildingGym[] = INCBIN_U16("graphics/battle_environment/building/palette2.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_BuildingLeader[] = INCBIN_U16("graphics/battle_environment/building/palette3.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumAqua[] = INCBIN_U16("graphics/battle_environment/stadium/palette1.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumMagma[] = INCBIN_U16("graphics/battle_environment/stadium/palette2.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumSidney[] = INCBIN_U16("graphics/battle_environment/stadium/palette3.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumPhoebe[] = INCBIN_U16("graphics/battle_environment/stadium/palette4.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumGlacia[] = INCBIN_U16("graphics/battle_environment/stadium/palette5.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumDrake[] = INCBIN_U16("graphics/battle_environment/stadium/palette6.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_StadiumWallace[] = INCBIN_U16("graphics/battle_environment/stadium/palette7.gbapal");
|
||||
const u16 gBattleEnvironmentPalette_Rayquaza[] = INCBIN_U16("graphics/battle_environment/sky/palette.gbapal");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_TallGrass[] = INCBIN_U32("graphics/battle_environment/tall_grass/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_environment/long_grass/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Sand[] = INCBIN_U32("graphics/battle_environment/sand/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_environment/sand/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_environment/underwater/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Water[] = INCBIN_U32("graphics/battle_environment/water/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Water[] = INCBIN_U32("graphics/battle_environment/water/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_PondWater[] = INCBIN_U32("graphics/battle_environment/pond_water/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Rock[] = INCBIN_U32("graphics/battle_environment/rock/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Rock[] = INCBIN_U32("graphics/battle_environment/rock/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Cave[] = INCBIN_U32("graphics/battle_environment/cave/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_environment/cave/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Building[] = INCBIN_U32("graphics/battle_environment/building/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Building[] = INCBIN_U32("graphics/battle_environment/building/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleEnvironmentAnimTiles_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleEnvironmentAnimTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_environment/sky/anim_map.bin.lz");
|
||||
@ -1,88 +0,0 @@
|
||||
const u32 gBattleTerrainTiles_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_TallGrass[] = INCBIN_U16("graphics/battle_terrain/tall_grass/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_LongGrass[] = INCBIN_U16("graphics/battle_terrain/long_grass/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_Sand[] = INCBIN_U16("graphics/battle_terrain/sand/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_Underwater[] = INCBIN_U16("graphics/battle_terrain/underwater/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_Water[] = INCBIN_U16("graphics/battle_terrain/water/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_PondWater[] = INCBIN_U16("graphics/battle_terrain/pond_water/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_Rock[] = INCBIN_U16("graphics/battle_terrain/rock/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_Cave[] = INCBIN_U16("graphics/battle_terrain/cave/palette.gbapal");
|
||||
const u32 gBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/map.bin.lz");
|
||||
|
||||
const u16 gBattleTerrainPalette_Plain[] = INCBIN_U16("graphics/battle_terrain/plain/palette.gbapal");
|
||||
|
||||
const u32 gBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/tiles.4bpp.lz");
|
||||
const u16 gBattleTerrainPalette_Frontier[] = INCBIN_U16("graphics/battle_terrain/stadium/battle_frontier.gbapal"); // this is also used for link battles
|
||||
const u32 gBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Stadium[] = INCBIN_U32("graphics/battle_terrain/stadium/tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainTilemap_Stadium[] = INCBIN_U32("graphics/battle_terrain/stadium/map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainTiles_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/map.bin.lz");
|
||||
|
||||
const u16 gBattleTerrainPalette_Building[] = INCBIN_U16("graphics/battle_terrain/building/palette.gbapal");
|
||||
|
||||
const u16 gBattleTerrainPalette_Kyogre[] = INCBIN_U16("graphics/battle_terrain/water/kyogre.gbapal");
|
||||
const u16 gBattleTerrainPalette_Groudon[] = INCBIN_U16("graphics/battle_terrain/cave/groudon.gbapal");
|
||||
const u16 gBattleTerrainPalette_BuildingGym[] = INCBIN_U16("graphics/battle_terrain/building/palette2.gbapal");
|
||||
const u16 gBattleTerrainPalette_BuildingLeader[] = INCBIN_U16("graphics/battle_terrain/building/palette3.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumAqua[] = INCBIN_U16("graphics/battle_terrain/stadium/palette1.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumMagma[] = INCBIN_U16("graphics/battle_terrain/stadium/palette2.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumSidney[] = INCBIN_U16("graphics/battle_terrain/stadium/palette3.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumPhoebe[] = INCBIN_U16("graphics/battle_terrain/stadium/palette4.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumGlacia[] = INCBIN_U16("graphics/battle_terrain/stadium/palette5.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumDrake[] = INCBIN_U16("graphics/battle_terrain/stadium/palette6.gbapal");
|
||||
const u16 gBattleTerrainPalette_StadiumWallace[] = INCBIN_U16("graphics/battle_terrain/stadium/palette7.gbapal");
|
||||
const u16 gBattleTerrainPalette_Rayquaza[] = INCBIN_U16("graphics/battle_terrain/sky/palette.gbapal");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_TallGrass[] = INCBIN_U32("graphics/battle_terrain/tall_grass/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/long_grass/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_PondWater[] = INCBIN_U32("graphics/battle_terrain/pond_water/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Rock[] = INCBIN_U32("graphics/battle_terrain/rock/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim_map.bin.lz");
|
||||
|
||||
const u32 gBattleTerrainAnimTiles_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/anim_tiles.4bpp.lz");
|
||||
const u32 gBattleTerrainAnimTilemap_Rayquaza[] = INCBIN_U32("graphics/battle_terrain/sky/anim_map.bin.lz");
|
||||
@ -21436,7 +21436,7 @@ const u32 gObjectEventPic_Substitute[] = INCBIN_COMP("graphics/pokemon/question_
|
||||
#endif //OW_PKMN_OBJECTS_SHARE_PALETTES
|
||||
#endif //OW_POKEMON_OBJECT_EVENTS
|
||||
|
||||
const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/front.4bpp.lz");
|
||||
const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/anim_front.4bpp.lz");
|
||||
const u16 gMonPalette_Lurantis[] = INCBIN_U16("graphics/pokemon/lurantis/normal.gbapal");
|
||||
const u32 gMonBackPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/back.4bpp.lz");
|
||||
const u16 gMonShinyPalette_Lurantis[] = INCBIN_U16("graphics/pokemon/lurantis/shiny.gbapal");
|
||||
|
||||
@ -528,14 +528,14 @@ static const struct FormChange sDeoxysSpeedFormChangeTable[] = {
|
||||
|
||||
#if P_FAMILY_BURMY
|
||||
static const struct FormChange sBurmyFormChangeTable[] = {
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_GRASS},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_LONG_GRASS},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_POND},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_MOUNTAIN},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_TERRAIN_PLAIN},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY, BATTLE_TERRAIN_CAVE},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY, BATTLE_TERRAIN_SAND},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH, BATTLE_TERRAIN_BUILDING},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_ENVIRONMENT_GRASS},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_ENVIRONMENT_LONG_GRASS},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_ENVIRONMENT_POND},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_ENVIRONMENT_MOUNTAIN},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_PLANT, BATTLE_ENVIRONMENT_PLAIN},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY, BATTLE_ENVIRONMENT_CAVE},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_SANDY, BATTLE_ENVIRONMENT_SAND},
|
||||
{FORM_CHANGE_END_BATTLE_TERRAIN, SPECIES_BURMY_TRASH, BATTLE_ENVIRONMENT_BUILDING},
|
||||
{FORM_CHANGE_TERMINATOR},
|
||||
};
|
||||
#endif //P_FAMILY_BURMY
|
||||
|
||||
@ -2987,7 +2987,11 @@ const struct SpeciesInfo gSpeciesInfoGen7[] =
|
||||
.frontPic = gMonFrontPic_Lurantis,
|
||||
.frontPicSize = MON_COORDS_SIZE(48, 64),
|
||||
.frontPicYOffset = 2,
|
||||
.frontAnimFrames = sAnims_SingleFramePlaceHolder,
|
||||
.frontAnimFrames = ANIM_FRAMES(
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_FRAME(1, 35),
|
||||
ANIMCMD_FRAME(0, 1),
|
||||
),
|
||||
.frontAnimId = ANIM_GROW_VIBRATE,
|
||||
.backPic = gMonBackPic_Lurantis,
|
||||
.backPicSize = MON_COORDS_SIZE(56, 64),
|
||||
|
||||