diff --git a/.gitignore b/.gitignore index cac4a07e61..082430d794 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,8 @@ build/ .DS_Store *.ddump .idea/ -porymap.project.cfg +porymap.*.cfg +prefabs.json .vscode/ *.a .fuse_hidden* diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 25222740fc..146fea5cc4 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1980,6 +1980,14 @@ various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES .endm + .macro canteleport battler:req + various \battler, VARIOUS_CAN_TELEPORT + .endm + + .macro getbattlerside battler:req + various \battler, VARIOUS_GET_BATTLER_SIDE + .endm + @ helpful macros .macro setstatchanger stat:req, stages:req, down:req setbyte sSTATCHANGER, \stat | \stages << 3 | \down << 7 @@ -2132,3 +2140,8 @@ .macro skydropyawn various 0, VARIOUS_SKY_DROP_YAWN .endm + + @ Used by effects that may proc Symbiosis but do not call removeitem. + .macro trysymbiosis + various BS_ATTACKER, VARIOUS_TRY_SYMBIOSIS + .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index c9dbfd2eec..e5f32e09ac 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -30451,11 +30451,11 @@ LightThatBurnsTheSkyGreenSparks: launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x0 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x40 0x28 0x1 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x30 0x2c 0x0 0x28 0x2 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x0 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x40 0x28 0x1 0x3 launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x80 0x28 0x0 0x3 - launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c SOUND_PAN_ATTACKER 0x28 0x2 0x3 + launchtemplate gLightThatBurnsTheSkyGreenSparkSpriteTemplate 0x83 0x8 0x0 0x0 0x15 0x2c 0x0 0x28 0x2 0x3 delay 0x10 return diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 3c4b0ef2b7..c3bf65edb7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -706,6 +706,7 @@ BattleScript_EffectFlingConsumeBerry: restorebattleritem BS_TARGET BattleScript_FlingEnd: tryfaintmon BS_TARGET + trysymbiosis goto BattleScript_MoveEnd BattleScript_FlingFlameOrb: @@ -1392,6 +1393,7 @@ BattleScript_MoveEffectBugBite:: consumeberry BS_ATTACKER, TRUE @ consume the berry, then restore the item from changedItems bicword gHitMarker, HITMARKER_NO_ANIMATIONS setbyte sBERRY_OVERRIDE, FALSE + trysymbiosis return BattleScript_EffectCoreEnforcer: @@ -1763,6 +1765,7 @@ BattleScript_EffectBestow: waitanimation printstring STRINGID_BESTOWITEMGIVING waitmessage B_WAIT_TIME_LONG + trysymbiosis goto BattleScript_MoveEnd BattleScript_EffectAfterYou: @@ -5173,7 +5176,14 @@ BattleScript_EffectTeleport: attackcanceler attackstring ppreduce +.if B_TELEPORT_BEHAVIOR >= GEN_7 + canteleport BS_ATTACKER + jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_EffectTeleportNew + goto BattleScript_ButItFailed +.else jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed +.endif +BattleScript_EffectTeleportTryToRunAway: getifcantrunfrombattle BS_ATTACKER jumpifbyte CMP_EQUAL, gBattleCommunication, BATTLE_RUN_FORBIDDEN, BattleScript_ButItFailed jumpifbyte CMP_EQUAL, gBattleCommunication, BATTLE_RUN_FAILURE, BattleScript_PrintAbilityMadeIneffective @@ -5184,6 +5194,29 @@ BattleScript_EffectTeleport: setoutcomeonteleport BS_ATTACKER goto BattleScript_MoveEnd +BattleScript_EffectTeleportNew: + getbattlerside BS_ATTACKER + jumpifbyte CMP_EQUAL, gBattleCommunication, B_SIDE_OPPONENT, BattleScript_EffectTeleportTryToRunAway + attackanimation + waitanimation + openpartyscreen BS_ATTACKER, BattleScript_EffectTeleportNewEnd + switchoutabilities BS_ATTACKER + waitstate + switchhandleorder BS_ATTACKER, 2 + returntoball BS_ATTACKER + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + trytoclearprimalweather + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + printstring STRINGID_SWITCHINMON + switchinanim BS_ATTACKER, TRUE + waitstate + switchineffects BS_ATTACKER +BattleScript_EffectTeleportNewEnd: + goto BattleScript_MoveEnd + BattleScript_EffectBeatUp:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE @@ -9841,3 +9874,9 @@ BattleScript_MagicianActivates:: call BattleScript_AbilityPopUp call BattleScript_ItemSteal return + +BattleScript_SymbiosisActivates:: + call BattleScript_AbilityPopUp + printstring STRINGID_SYMBIOSISITEMPASS + waitmessage B_WAIT_TIME_LONG + return diff --git a/gflib/malloc.h b/gflib/malloc.h index 8d49e0be7d..851db83a62 100644 --- a/gflib/malloc.h +++ b/gflib/malloc.h @@ -2,13 +2,10 @@ #define GUARD_ALLOC_H #define HEAP_SIZE 0x1C000 -#define malloc Alloc -#define calloc(ct, sz) AllocZeroed((ct) * (sz)) -#define free Free #define FREE_AND_SET_NULL(ptr) \ { \ - free(ptr); \ + Free(ptr); \ ptr = NULL; \ } diff --git a/graphics/trainers/back_pics/brendan_back_pic.png b/graphics/trainers/back_pics/brendan.png similarity index 100% rename from graphics/trainers/back_pics/brendan_back_pic.png rename to graphics/trainers/back_pics/brendan.png diff --git a/graphics/trainers/back_pics/ruby_sapphire_brendan_back_pic.png b/graphics/trainers/back_pics/brendan_rs.png similarity index 100% rename from graphics/trainers/back_pics/ruby_sapphire_brendan_back_pic.png rename to graphics/trainers/back_pics/brendan_rs.png diff --git a/graphics/trainers/back_pics/leaf_back_pic.png b/graphics/trainers/back_pics/leaf.png similarity index 100% rename from graphics/trainers/back_pics/leaf_back_pic.png rename to graphics/trainers/back_pics/leaf.png diff --git a/graphics/trainers/back_pics/may_back_pic.png b/graphics/trainers/back_pics/may.png similarity index 100% rename from graphics/trainers/back_pics/may_back_pic.png rename to graphics/trainers/back_pics/may.png diff --git a/graphics/trainers/back_pics/ruby_sapphire_may_back_pic.png b/graphics/trainers/back_pics/may_rs.png similarity index 100% rename from graphics/trainers/back_pics/ruby_sapphire_may_back_pic.png rename to graphics/trainers/back_pics/may_rs.png diff --git a/graphics/trainers/back_pics/red_back_pic.png b/graphics/trainers/back_pics/red.png similarity index 100% rename from graphics/trainers/back_pics/red_back_pic.png rename to graphics/trainers/back_pics/red.png diff --git a/graphics/trainers/back_pics/steven_back_pic.png b/graphics/trainers/back_pics/steven.png similarity index 100% rename from graphics/trainers/back_pics/steven_back_pic.png rename to graphics/trainers/back_pics/steven.png diff --git a/graphics/trainers/back_pics/wally_back_pic.png b/graphics/trainers/back_pics/wally.png similarity index 100% rename from graphics/trainers/back_pics/wally_back_pic.png rename to graphics/trainers/back_pics/wally.png diff --git a/graphics/trainers/front_pics/aqua_admin_f_front_pic.png b/graphics/trainers/front_pics/aqua_admin_f.png similarity index 100% rename from graphics/trainers/front_pics/aqua_admin_f_front_pic.png rename to graphics/trainers/front_pics/aqua_admin_f.png diff --git a/graphics/trainers/front_pics/aqua_admin_m_front_pic.png b/graphics/trainers/front_pics/aqua_admin_m.png similarity index 100% rename from graphics/trainers/front_pics/aqua_admin_m_front_pic.png rename to graphics/trainers/front_pics/aqua_admin_m.png diff --git a/graphics/trainers/front_pics/aqua_grunt_f_front_pic.png b/graphics/trainers/front_pics/aqua_grunt_f.png similarity index 100% rename from graphics/trainers/front_pics/aqua_grunt_f_front_pic.png rename to graphics/trainers/front_pics/aqua_grunt_f.png diff --git a/graphics/trainers/front_pics/aqua_grunt_m_front_pic.png b/graphics/trainers/front_pics/aqua_grunt_m.png similarity index 100% rename from graphics/trainers/front_pics/aqua_grunt_m_front_pic.png rename to graphics/trainers/front_pics/aqua_grunt_m.png diff --git a/graphics/trainers/front_pics/aqua_leader_archie_front_pic.png b/graphics/trainers/front_pics/aqua_leader_archie.png similarity index 100% rename from graphics/trainers/front_pics/aqua_leader_archie_front_pic.png rename to graphics/trainers/front_pics/aqua_leader_archie.png diff --git a/graphics/trainers/front_pics/arena_tycoon_greta_front_pic.png b/graphics/trainers/front_pics/arena_tycoon_greta.png similarity index 100% rename from graphics/trainers/front_pics/arena_tycoon_greta_front_pic.png rename to graphics/trainers/front_pics/arena_tycoon_greta.png diff --git a/graphics/trainers/front_pics/aroma_lady_front_pic.png b/graphics/trainers/front_pics/aroma_lady.png similarity index 100% rename from graphics/trainers/front_pics/aroma_lady_front_pic.png rename to graphics/trainers/front_pics/aroma_lady.png diff --git a/graphics/trainers/front_pics/battle_girl_front_pic.png b/graphics/trainers/front_pics/battle_girl.png similarity index 100% rename from graphics/trainers/front_pics/battle_girl_front_pic.png rename to graphics/trainers/front_pics/battle_girl.png diff --git a/graphics/trainers/front_pics/beauty_front_pic.png b/graphics/trainers/front_pics/beauty.png similarity index 100% rename from graphics/trainers/front_pics/beauty_front_pic.png rename to graphics/trainers/front_pics/beauty.png diff --git a/graphics/trainers/front_pics/bird_keeper_front_pic.png b/graphics/trainers/front_pics/bird_keeper.png similarity index 100% rename from graphics/trainers/front_pics/bird_keeper_front_pic.png rename to graphics/trainers/front_pics/bird_keeper.png diff --git a/graphics/trainers/front_pics/black_belt_front_pic.png b/graphics/trainers/front_pics/black_belt.png similarity index 100% rename from graphics/trainers/front_pics/black_belt_front_pic.png rename to graphics/trainers/front_pics/black_belt.png diff --git a/graphics/trainers/front_pics/brendan_front_pic.png b/graphics/trainers/front_pics/brendan.png similarity index 100% rename from graphics/trainers/front_pics/brendan_front_pic.png rename to graphics/trainers/front_pics/brendan.png diff --git a/graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.png b/graphics/trainers/front_pics/brendan_rs.png similarity index 100% rename from graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.png rename to graphics/trainers/front_pics/brendan_rs.png diff --git a/graphics/trainers/front_pics/bug_catcher_front_pic.png b/graphics/trainers/front_pics/bug_catcher.png similarity index 100% rename from graphics/trainers/front_pics/bug_catcher_front_pic.png rename to graphics/trainers/front_pics/bug_catcher.png diff --git a/graphics/trainers/front_pics/bug_maniac_front_pic.png b/graphics/trainers/front_pics/bug_maniac.png similarity index 100% rename from graphics/trainers/front_pics/bug_maniac_front_pic.png rename to graphics/trainers/front_pics/bug_maniac.png diff --git a/graphics/trainers/front_pics/camper_front_pic.png b/graphics/trainers/front_pics/camper.png similarity index 100% rename from graphics/trainers/front_pics/camper_front_pic.png rename to graphics/trainers/front_pics/camper.png diff --git a/graphics/trainers/front_pics/champion_wallace_front_pic.png b/graphics/trainers/front_pics/champion_wallace.png similarity index 100% rename from graphics/trainers/front_pics/champion_wallace_front_pic.png rename to graphics/trainers/front_pics/champion_wallace.png diff --git a/graphics/trainers/front_pics/collector_front_pic.png b/graphics/trainers/front_pics/collector.png similarity index 100% rename from graphics/trainers/front_pics/collector_front_pic.png rename to graphics/trainers/front_pics/collector.png diff --git a/graphics/trainers/front_pics/cooltrainer_f_front_pic.png b/graphics/trainers/front_pics/cooltrainer_f.png similarity index 100% rename from graphics/trainers/front_pics/cooltrainer_f_front_pic.png rename to graphics/trainers/front_pics/cooltrainer_f.png diff --git a/graphics/trainers/front_pics/cooltrainer_m_front_pic.png b/graphics/trainers/front_pics/cooltrainer_m.png similarity index 100% rename from graphics/trainers/front_pics/cooltrainer_m_front_pic.png rename to graphics/trainers/front_pics/cooltrainer_m.png diff --git a/graphics/trainers/front_pics/cycling_triathlete_f_front_pic.png b/graphics/trainers/front_pics/cycling_triathlete_f.png similarity index 100% rename from graphics/trainers/front_pics/cycling_triathlete_f_front_pic.png rename to graphics/trainers/front_pics/cycling_triathlete_f.png diff --git a/graphics/trainers/front_pics/cycling_triathlete_m_front_pic.png b/graphics/trainers/front_pics/cycling_triathlete_m.png similarity index 100% rename from graphics/trainers/front_pics/cycling_triathlete_m_front_pic.png rename to graphics/trainers/front_pics/cycling_triathlete_m.png diff --git a/graphics/trainers/front_pics/dome_ace_tucker_front_pic.png b/graphics/trainers/front_pics/dome_ace_tucker.png similarity index 100% rename from graphics/trainers/front_pics/dome_ace_tucker_front_pic.png rename to graphics/trainers/front_pics/dome_ace_tucker.png diff --git a/graphics/trainers/front_pics/dragon_tamer_front_pic.png b/graphics/trainers/front_pics/dragon_tamer.png similarity index 100% rename from graphics/trainers/front_pics/dragon_tamer_front_pic.png rename to graphics/trainers/front_pics/dragon_tamer.png diff --git a/graphics/trainers/front_pics/elite_four_drake_front_pic.png b/graphics/trainers/front_pics/elite_four_drake.png similarity index 100% rename from graphics/trainers/front_pics/elite_four_drake_front_pic.png rename to graphics/trainers/front_pics/elite_four_drake.png diff --git a/graphics/trainers/front_pics/elite_four_glacia_front_pic.png b/graphics/trainers/front_pics/elite_four_glacia.png similarity index 100% rename from graphics/trainers/front_pics/elite_four_glacia_front_pic.png rename to graphics/trainers/front_pics/elite_four_glacia.png diff --git a/graphics/trainers/front_pics/elite_four_phoebe_front_pic.png b/graphics/trainers/front_pics/elite_four_phoebe.png similarity index 100% rename from graphics/trainers/front_pics/elite_four_phoebe_front_pic.png rename to graphics/trainers/front_pics/elite_four_phoebe.png diff --git a/graphics/trainers/front_pics/elite_four_sidney_front_pic.png b/graphics/trainers/front_pics/elite_four_sidney.png similarity index 100% rename from graphics/trainers/front_pics/elite_four_sidney_front_pic.png rename to graphics/trainers/front_pics/elite_four_sidney.png diff --git a/graphics/trainers/front_pics/expert_f_front_pic.png b/graphics/trainers/front_pics/expert_f.png similarity index 100% rename from graphics/trainers/front_pics/expert_f_front_pic.png rename to graphics/trainers/front_pics/expert_f.png diff --git a/graphics/trainers/front_pics/expert_m_front_pic.png b/graphics/trainers/front_pics/expert_m.png similarity index 100% rename from graphics/trainers/front_pics/expert_m_front_pic.png rename to graphics/trainers/front_pics/expert_m.png diff --git a/graphics/trainers/front_pics/factory_head_noland_front_pic.png b/graphics/trainers/front_pics/factory_head_noland.png similarity index 100% rename from graphics/trainers/front_pics/factory_head_noland_front_pic.png rename to graphics/trainers/front_pics/factory_head_noland.png diff --git a/graphics/trainers/front_pics/fisherman_front_pic.png b/graphics/trainers/front_pics/fisherman.png similarity index 100% rename from graphics/trainers/front_pics/fisherman_front_pic.png rename to graphics/trainers/front_pics/fisherman.png diff --git a/graphics/trainers/front_pics/gentleman_front_pic.png b/graphics/trainers/front_pics/gentleman.png similarity index 100% rename from graphics/trainers/front_pics/gentleman_front_pic.png rename to graphics/trainers/front_pics/gentleman.png diff --git a/graphics/trainers/front_pics/guitarist_front_pic.png b/graphics/trainers/front_pics/guitarist.png similarity index 100% rename from graphics/trainers/front_pics/guitarist_front_pic.png rename to graphics/trainers/front_pics/guitarist.png diff --git a/graphics/trainers/front_pics/hex_maniac_front_pic.png b/graphics/trainers/front_pics/hex_maniac.png similarity index 100% rename from graphics/trainers/front_pics/hex_maniac_front_pic.png rename to graphics/trainers/front_pics/hex_maniac.png diff --git a/graphics/trainers/front_pics/hiker_front_pic.png b/graphics/trainers/front_pics/hiker.png similarity index 100% rename from graphics/trainers/front_pics/hiker_front_pic.png rename to graphics/trainers/front_pics/hiker.png diff --git a/graphics/trainers/front_pics/interviewer_front_pic.png b/graphics/trainers/front_pics/interviewer.png similarity index 100% rename from graphics/trainers/front_pics/interviewer_front_pic.png rename to graphics/trainers/front_pics/interviewer.png diff --git a/graphics/trainers/front_pics/kindler_front_pic.png b/graphics/trainers/front_pics/kindler.png similarity index 100% rename from graphics/trainers/front_pics/kindler_front_pic.png rename to graphics/trainers/front_pics/kindler.png diff --git a/graphics/trainers/front_pics/lady_front_pic.png b/graphics/trainers/front_pics/lady.png similarity index 100% rename from graphics/trainers/front_pics/lady_front_pic.png rename to graphics/trainers/front_pics/lady.png diff --git a/graphics/trainers/front_pics/lass_front_pic.png b/graphics/trainers/front_pics/lass.png similarity index 100% rename from graphics/trainers/front_pics/lass_front_pic.png rename to graphics/trainers/front_pics/lass.png diff --git a/graphics/trainers/front_pics/leader_brawly_front_pic.png b/graphics/trainers/front_pics/leader_brawly.png similarity index 100% rename from graphics/trainers/front_pics/leader_brawly_front_pic.png rename to graphics/trainers/front_pics/leader_brawly.png diff --git a/graphics/trainers/front_pics/leader_flannery_front_pic.png b/graphics/trainers/front_pics/leader_flannery.png similarity index 100% rename from graphics/trainers/front_pics/leader_flannery_front_pic.png rename to graphics/trainers/front_pics/leader_flannery.png diff --git a/graphics/trainers/front_pics/leader_juan_front_pic.png b/graphics/trainers/front_pics/leader_juan.png similarity index 100% rename from graphics/trainers/front_pics/leader_juan_front_pic.png rename to graphics/trainers/front_pics/leader_juan.png diff --git a/graphics/trainers/front_pics/leader_norman_front_pic.png b/graphics/trainers/front_pics/leader_norman.png similarity index 100% rename from graphics/trainers/front_pics/leader_norman_front_pic.png rename to graphics/trainers/front_pics/leader_norman.png diff --git a/graphics/trainers/front_pics/leader_roxanne_front_pic.png b/graphics/trainers/front_pics/leader_roxanne.png similarity index 100% rename from graphics/trainers/front_pics/leader_roxanne_front_pic.png rename to graphics/trainers/front_pics/leader_roxanne.png diff --git a/graphics/trainers/front_pics/leader_tate_and_liza_front_pic.png b/graphics/trainers/front_pics/leader_tate_and_liza.png similarity index 100% rename from graphics/trainers/front_pics/leader_tate_and_liza_front_pic.png rename to graphics/trainers/front_pics/leader_tate_and_liza.png diff --git a/graphics/trainers/front_pics/leader_wattson_front_pic.png b/graphics/trainers/front_pics/leader_wattson.png similarity index 100% rename from graphics/trainers/front_pics/leader_wattson_front_pic.png rename to graphics/trainers/front_pics/leader_wattson.png diff --git a/graphics/trainers/front_pics/leader_winona_front_pic.png b/graphics/trainers/front_pics/leader_winona.png similarity index 100% rename from graphics/trainers/front_pics/leader_winona_front_pic.png rename to graphics/trainers/front_pics/leader_winona.png diff --git a/graphics/trainers/front_pics/leaf_front_pic.png b/graphics/trainers/front_pics/leaf.png similarity index 100% rename from graphics/trainers/front_pics/leaf_front_pic.png rename to graphics/trainers/front_pics/leaf.png diff --git a/graphics/trainers/front_pics/magma_admin_front_pic.png b/graphics/trainers/front_pics/magma_admin.png similarity index 100% rename from graphics/trainers/front_pics/magma_admin_front_pic.png rename to graphics/trainers/front_pics/magma_admin.png diff --git a/graphics/trainers/front_pics/magma_grunt_f_front_pic.png b/graphics/trainers/front_pics/magma_grunt_f.png similarity index 100% rename from graphics/trainers/front_pics/magma_grunt_f_front_pic.png rename to graphics/trainers/front_pics/magma_grunt_f.png diff --git a/graphics/trainers/front_pics/magma_grunt_m_front_pic.png b/graphics/trainers/front_pics/magma_grunt_m.png similarity index 100% rename from graphics/trainers/front_pics/magma_grunt_m_front_pic.png rename to graphics/trainers/front_pics/magma_grunt_m.png diff --git a/graphics/trainers/front_pics/magma_leader_maxie_front_pic.png b/graphics/trainers/front_pics/magma_leader_maxie.png similarity index 100% rename from graphics/trainers/front_pics/magma_leader_maxie_front_pic.png rename to graphics/trainers/front_pics/magma_leader_maxie.png diff --git a/graphics/trainers/front_pics/may_front_pic.png b/graphics/trainers/front_pics/may.png similarity index 100% rename from graphics/trainers/front_pics/may_front_pic.png rename to graphics/trainers/front_pics/may.png diff --git a/graphics/trainers/front_pics/ruby_sapphire_may_front_pic.png b/graphics/trainers/front_pics/may_rs.png similarity index 100% rename from graphics/trainers/front_pics/ruby_sapphire_may_front_pic.png rename to graphics/trainers/front_pics/may_rs.png diff --git a/graphics/trainers/front_pics/ninja_boy_front_pic.png b/graphics/trainers/front_pics/ninja_boy.png similarity index 100% rename from graphics/trainers/front_pics/ninja_boy_front_pic.png rename to graphics/trainers/front_pics/ninja_boy.png diff --git a/graphics/trainers/front_pics/old_couple_front_pic.png b/graphics/trainers/front_pics/old_couple.png similarity index 100% rename from graphics/trainers/front_pics/old_couple_front_pic.png rename to graphics/trainers/front_pics/old_couple.png diff --git a/graphics/trainers/front_pics/palace_maven_spenser_front_pic.png b/graphics/trainers/front_pics/palace_maven_spenser.png similarity index 100% rename from graphics/trainers/front_pics/palace_maven_spenser_front_pic.png rename to graphics/trainers/front_pics/palace_maven_spenser.png diff --git a/graphics/trainers/front_pics/parasol_lady_front_pic.png b/graphics/trainers/front_pics/parasol_lady.png similarity index 100% rename from graphics/trainers/front_pics/parasol_lady_front_pic.png rename to graphics/trainers/front_pics/parasol_lady.png diff --git a/graphics/trainers/front_pics/picnicker_front_pic.png b/graphics/trainers/front_pics/picnicker.png similarity index 100% rename from graphics/trainers/front_pics/picnicker_front_pic.png rename to graphics/trainers/front_pics/picnicker.png diff --git a/graphics/trainers/front_pics/pike_queen_lucy_front_pic.png b/graphics/trainers/front_pics/pike_queen_lucy.png similarity index 100% rename from graphics/trainers/front_pics/pike_queen_lucy_front_pic.png rename to graphics/trainers/front_pics/pike_queen_lucy.png diff --git a/graphics/trainers/front_pics/pokefan_f_front_pic.png b/graphics/trainers/front_pics/pokefan_f.png similarity index 100% rename from graphics/trainers/front_pics/pokefan_f_front_pic.png rename to graphics/trainers/front_pics/pokefan_f.png diff --git a/graphics/trainers/front_pics/pokefan_m_front_pic.png b/graphics/trainers/front_pics/pokefan_m.png similarity index 100% rename from graphics/trainers/front_pics/pokefan_m_front_pic.png rename to graphics/trainers/front_pics/pokefan_m.png diff --git a/graphics/trainers/front_pics/pokemaniac_front_pic.png b/graphics/trainers/front_pics/pokemaniac.png similarity index 100% rename from graphics/trainers/front_pics/pokemaniac_front_pic.png rename to graphics/trainers/front_pics/pokemaniac.png diff --git a/graphics/trainers/front_pics/pokemon_breeder_f_front_pic.png b/graphics/trainers/front_pics/pokemon_breeder_f.png similarity index 100% rename from graphics/trainers/front_pics/pokemon_breeder_f_front_pic.png rename to graphics/trainers/front_pics/pokemon_breeder_f.png diff --git a/graphics/trainers/front_pics/pokemon_breeder_m_front_pic.png b/graphics/trainers/front_pics/pokemon_breeder_m.png similarity index 100% rename from graphics/trainers/front_pics/pokemon_breeder_m_front_pic.png rename to graphics/trainers/front_pics/pokemon_breeder_m.png diff --git a/graphics/trainers/front_pics/pokemon_ranger_f_front_pic.png b/graphics/trainers/front_pics/pokemon_ranger_f.png similarity index 100% rename from graphics/trainers/front_pics/pokemon_ranger_f_front_pic.png rename to graphics/trainers/front_pics/pokemon_ranger_f.png diff --git a/graphics/trainers/front_pics/pokemon_ranger_m_front_pic.png b/graphics/trainers/front_pics/pokemon_ranger_m.png similarity index 100% rename from graphics/trainers/front_pics/pokemon_ranger_m_front_pic.png rename to graphics/trainers/front_pics/pokemon_ranger_m.png diff --git a/graphics/trainers/front_pics/psychic_f_front_pic.png b/graphics/trainers/front_pics/psychic_f.png similarity index 100% rename from graphics/trainers/front_pics/psychic_f_front_pic.png rename to graphics/trainers/front_pics/psychic_f.png diff --git a/graphics/trainers/front_pics/psychic_m_front_pic.png b/graphics/trainers/front_pics/psychic_m.png similarity index 100% rename from graphics/trainers/front_pics/psychic_m_front_pic.png rename to graphics/trainers/front_pics/psychic_m.png diff --git a/graphics/trainers/front_pics/pyramid_king_brandon_front_pic.png b/graphics/trainers/front_pics/pyramid_king_brandon.png similarity index 100% rename from graphics/trainers/front_pics/pyramid_king_brandon_front_pic.png rename to graphics/trainers/front_pics/pyramid_king_brandon.png diff --git a/graphics/trainers/front_pics/red_front_pic.png b/graphics/trainers/front_pics/red.png similarity index 100% rename from graphics/trainers/front_pics/red_front_pic.png rename to graphics/trainers/front_pics/red.png diff --git a/graphics/trainers/front_pics/rich_boy_front_pic.png b/graphics/trainers/front_pics/rich_boy.png similarity index 100% rename from graphics/trainers/front_pics/rich_boy_front_pic.png rename to graphics/trainers/front_pics/rich_boy.png diff --git a/graphics/trainers/front_pics/ruin_maniac_front_pic.png b/graphics/trainers/front_pics/ruin_maniac.png similarity index 100% rename from graphics/trainers/front_pics/ruin_maniac_front_pic.png rename to graphics/trainers/front_pics/ruin_maniac.png diff --git a/graphics/trainers/front_pics/running_triathlete_f_front_pic.png b/graphics/trainers/front_pics/running_triathlete_f.png similarity index 100% rename from graphics/trainers/front_pics/running_triathlete_f_front_pic.png rename to graphics/trainers/front_pics/running_triathlete_f.png diff --git a/graphics/trainers/front_pics/running_triathlete_m_front_pic.png b/graphics/trainers/front_pics/running_triathlete_m.png similarity index 100% rename from graphics/trainers/front_pics/running_triathlete_m_front_pic.png rename to graphics/trainers/front_pics/running_triathlete_m.png diff --git a/graphics/trainers/front_pics/sailor_front_pic.png b/graphics/trainers/front_pics/sailor.png similarity index 100% rename from graphics/trainers/front_pics/sailor_front_pic.png rename to graphics/trainers/front_pics/sailor.png diff --git a/graphics/trainers/front_pics/salon_maiden_anabel_front_pic.png b/graphics/trainers/front_pics/salon_maiden_anabel.png similarity index 100% rename from graphics/trainers/front_pics/salon_maiden_anabel_front_pic.png rename to graphics/trainers/front_pics/salon_maiden_anabel.png diff --git a/graphics/trainers/front_pics/school_kid_f_front_pic.png b/graphics/trainers/front_pics/school_kid_f.png similarity index 100% rename from graphics/trainers/front_pics/school_kid_f_front_pic.png rename to graphics/trainers/front_pics/school_kid_f.png diff --git a/graphics/trainers/front_pics/school_kid_m_front_pic.png b/graphics/trainers/front_pics/school_kid_m.png similarity index 100% rename from graphics/trainers/front_pics/school_kid_m_front_pic.png rename to graphics/trainers/front_pics/school_kid_m.png diff --git a/graphics/trainers/front_pics/sis_and_bro_front_pic.png b/graphics/trainers/front_pics/sis_and_bro.png similarity index 100% rename from graphics/trainers/front_pics/sis_and_bro_front_pic.png rename to graphics/trainers/front_pics/sis_and_bro.png diff --git a/graphics/trainers/front_pics/sr_and_jr_front_pic.png b/graphics/trainers/front_pics/sr_and_jr.png similarity index 100% rename from graphics/trainers/front_pics/sr_and_jr_front_pic.png rename to graphics/trainers/front_pics/sr_and_jr.png diff --git a/graphics/trainers/front_pics/steven_front_pic.png b/graphics/trainers/front_pics/steven.png similarity index 100% rename from graphics/trainers/front_pics/steven_front_pic.png rename to graphics/trainers/front_pics/steven.png diff --git a/graphics/trainers/front_pics/swimmer_f_front_pic.png b/graphics/trainers/front_pics/swimmer_f.png similarity index 100% rename from graphics/trainers/front_pics/swimmer_f_front_pic.png rename to graphics/trainers/front_pics/swimmer_f.png diff --git a/graphics/trainers/front_pics/swimmer_m_front_pic.png b/graphics/trainers/front_pics/swimmer_m.png similarity index 100% rename from graphics/trainers/front_pics/swimmer_m_front_pic.png rename to graphics/trainers/front_pics/swimmer_m.png diff --git a/graphics/trainers/front_pics/swimming_triathlete_f_front_pic.png b/graphics/trainers/front_pics/swimming_triathlete_f.png similarity index 100% rename from graphics/trainers/front_pics/swimming_triathlete_f_front_pic.png rename to graphics/trainers/front_pics/swimming_triathlete_f.png diff --git a/graphics/trainers/front_pics/swimming_triathlete_m_front_pic.png b/graphics/trainers/front_pics/swimming_triathlete_m.png similarity index 100% rename from graphics/trainers/front_pics/swimming_triathlete_m_front_pic.png rename to graphics/trainers/front_pics/swimming_triathlete_m.png diff --git a/graphics/trainers/front_pics/tuber_f_front_pic.png b/graphics/trainers/front_pics/tuber_f.png similarity index 100% rename from graphics/trainers/front_pics/tuber_f_front_pic.png rename to graphics/trainers/front_pics/tuber_f.png diff --git a/graphics/trainers/front_pics/tuber_m_front_pic.png b/graphics/trainers/front_pics/tuber_m.png similarity index 100% rename from graphics/trainers/front_pics/tuber_m_front_pic.png rename to graphics/trainers/front_pics/tuber_m.png diff --git a/graphics/trainers/front_pics/twins_front_pic.png b/graphics/trainers/front_pics/twins.png similarity index 100% rename from graphics/trainers/front_pics/twins_front_pic.png rename to graphics/trainers/front_pics/twins.png diff --git a/graphics/trainers/front_pics/wally_front_pic.png b/graphics/trainers/front_pics/wally.png similarity index 100% rename from graphics/trainers/front_pics/wally_front_pic.png rename to graphics/trainers/front_pics/wally.png diff --git a/graphics/trainers/front_pics/young_couple_front_pic.png b/graphics/trainers/front_pics/young_couple.png similarity index 100% rename from graphics/trainers/front_pics/young_couple_front_pic.png rename to graphics/trainers/front_pics/young_couple.png diff --git a/graphics/trainers/front_pics/youngster_front_pic.png b/graphics/trainers/front_pics/youngster.png similarity index 100% rename from graphics/trainers/front_pics/youngster_front_pic.png rename to graphics/trainers/front_pics/youngster.png diff --git a/graphics/trainers/palettes/aqua_admin_f.pal b/graphics/trainers/palettes/aqua_admin_f.pal deleted file mode 100644 index 4bad687705..0000000000 --- a/graphics/trainers/palettes/aqua_admin_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 131 41 -189 156 90 -238 98 41 -180 65 41 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/aqua_admin_m.pal b/graphics/trainers/palettes/aqua_admin_m.pal deleted file mode 100644 index 2a7a46d462..0000000000 --- a/graphics/trainers/palettes/aqua_admin_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 131 41 -189 156 90 -222 82 24 -164 49 24 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/aqua_grunt_f.pal b/graphics/trainers/palettes/aqua_grunt_f.pal deleted file mode 100644 index 4563eba48e..0000000000 --- a/graphics/trainers/palettes/aqua_grunt_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -164 74 65 -189 156 90 -255 106 98 -205 82 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/aqua_grunt_m.pal b/graphics/trainers/palettes/aqua_grunt_m.pal deleted file mode 100644 index c2b28ead91..0000000000 --- a/graphics/trainers/palettes/aqua_grunt_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 164 197 -189 156 90 -255 115 148 -213 82 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/aqua_leader_archie.pal b/graphics/trainers/palettes/aqua_leader_archie.pal deleted file mode 100644 index a778ea6bb6..0000000000 --- a/graphics/trainers/palettes/aqua_leader_archie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -131 156 180 -106 123 148 -82 90 115 -57 65 98 -213 213 222 -82 90 156 -24 32 49 -148 156 222 -106 115 213 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/arena_tycoon_greta.pal b/graphics/trainers/palettes/arena_tycoon_greta.pal deleted file mode 100644 index 60c45e8e99..0000000000 --- a/graphics/trainers/palettes/arena_tycoon_greta.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -255 230 106 -213 189 90 -213 222 230 -65 82 123 -189 156 90 -255 115 148 -213 82 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/aroma_lady.pal b/graphics/trainers/palettes/aroma_lady.pal deleted file mode 100644 index eb9f3dfd43..0000000000 --- a/graphics/trainers/palettes/aroma_lady.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 213 172 -238 197 148 -205 156 115 -115 82 65 -238 230 255 -205 197 213 -156 164 205 -106 98 148 -74 222 148 -172 115 41 -115 65 24 -238 90 131 -189 65 90 -106 255 156 -0 0 0 diff --git a/graphics/trainers/palettes/battle_girl.pal b/graphics/trainers/palettes/battle_girl.pal deleted file mode 100644 index 7f172b169a..0000000000 --- a/graphics/trainers/palettes/battle_girl.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -255 164 82 -230 106 0 -197 65 65 -156 106 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/beauty.pal b/graphics/trainers/palettes/beauty.pal deleted file mode 100644 index ab549df20e..0000000000 --- a/graphics/trainers/palettes/beauty.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 172 131 -205 131 115 -123 82 74 -148 131 139 -255 205 106 -213 172 74 -164 123 82 -115 90 115 -74 49 74 -255 82 57 -180 82 74 -131 74 65 -255 255 255 -0 0 24 diff --git a/graphics/trainers/palettes/bird_keeper.pal b/graphics/trainers/palettes/bird_keeper.pal deleted file mode 100644 index 87194c84a1..0000000000 --- a/graphics/trainers/palettes/bird_keeper.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 180 197 -131 139 156 -90 98 115 -57 65 82 -213 213 222 -131 16 41 -24 32 49 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/black_belt.pal b/graphics/trainers/palettes/black_belt.pal deleted file mode 100644 index 869e5d8df4..0000000000 --- a/graphics/trainers/palettes/black_belt.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 189 -222 172 148 -172 131 106 -90 65 49 -148 131 123 -106 90 82 -82 90 115 -49 57 82 -205 189 189 -189 164 164 -156 139 139 -255 98 90 -197 65 65 -246 230 230 -0 0 0 diff --git a/graphics/trainers/palettes/ruby_sapphire_brendan.pal b/graphics/trainers/palettes/brendan_rs.pal similarity index 100% rename from graphics/trainers/palettes/ruby_sapphire_brendan.pal rename to graphics/trainers/palettes/brendan_rs.pal diff --git a/graphics/trainers/palettes/bug_catcher.pal b/graphics/trainers/palettes/bug_catcher.pal deleted file mode 100644 index c68f566902..0000000000 --- a/graphics/trainers/palettes/bug_catcher.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -222 222 164 -197 197 139 -156 139 74 -41 57 98 -197 197 238 -246 238 213 -189 49 57 -98 164 222 -49 123 156 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/bug_maniac.pal b/graphics/trainers/palettes/bug_maniac.pal deleted file mode 100644 index 2aa3291792..0000000000 --- a/graphics/trainers/palettes/bug_maniac.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -49 123 156 -49 65 131 -65 74 74 -222 222 164 -197 197 139 -205 213 213 -156 139 74 -98 164 222 -106 115 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/camper.pal b/graphics/trainers/palettes/camper.pal deleted file mode 100644 index e5c224fd27..0000000000 --- a/graphics/trainers/palettes/camper.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -230 189 156 -205 156 115 -115 82 65 -131 213 205 -82 164 148 -180 189 222 -57 90 74 -24 49 90 -98 115 230 -57 82 131 -255 98 41 -189 74 41 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/champion_wallace.pal b/graphics/trainers/palettes/champion_wallace.pal deleted file mode 100644 index eaaed070f6..0000000000 --- a/graphics/trainers/palettes/champion_wallace.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 180 148 -189 139 106 -98 57 65 -189 131 255 -148 106 172 -115 131 255 -82 106 180 -197 197 213 -57 74 115 -139 139 164 -57 41 57 -98 57 98 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/collector.pal b/graphics/trainers/palettes/collector.pal deleted file mode 100644 index d4d9221e2a..0000000000 --- a/graphics/trainers/palettes/collector.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -197 139 115 -123 90 82 -106 139 189 -65 98 148 -32 74 123 -255 98 90 -197 65 65 -213 222 230 -131 74 65 -115 123 131 -164 172 180 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/cooltrainer_f.pal b/graphics/trainers/palettes/cooltrainer_f.pal deleted file mode 100644 index 292d0fc781..0000000000 --- a/graphics/trainers/palettes/cooltrainer_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -238 197 156 -205 156 115 -115 82 65 -238 156 115 -205 90 74 -0 189 222 -123 41 24 -180 230 139 -139 180 57 -74 90 32 -255 246 189 -213 205 131 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/cooltrainer_m.pal b/graphics/trainers/palettes/cooltrainer_m.pal deleted file mode 100644 index 52a32e925d..0000000000 --- a/graphics/trainers/palettes/cooltrainer_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -238 156 115 -230 98 82 -180 90 74 -131 49 32 -57 90 41 -164 180 106 -98 123 57 -255 246 189 -213 205 131 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/cycling_triathlete_f.pal b/graphics/trainers/palettes/cycling_triathlete_f.pal deleted file mode 100644 index b72bb3011f..0000000000 --- a/graphics/trainers/palettes/cycling_triathlete_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -57 41 57 -57 74 106 -131 131 156 -139 156 238 -115 131 205 -98 106 172 -205 197 255 -230 90 65 -189 74 41 -139 74 82 -255 255 255 -0 0 24 diff --git a/graphics/trainers/palettes/cycling_triathlete_m.pal b/graphics/trainers/palettes/cycling_triathlete_m.pal deleted file mode 100644 index 9255a4a94a..0000000000 --- a/graphics/trainers/palettes/cycling_triathlete_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -238 189 139 -189 148 115 -139 106 82 -57 41 57 -115 90 106 -156 131 156 -156 213 255 -106 164 222 -82 131 197 -205 197 255 -230 90 65 -189 74 41 -139 74 82 -255 255 255 -0 0 24 diff --git a/graphics/trainers/palettes/dome_ace_tucker.pal b/graphics/trainers/palettes/dome_ace_tucker.pal deleted file mode 100644 index 33bb1aa68c..0000000000 --- a/graphics/trainers/palettes/dome_ace_tucker.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -246 148 230 -230 115 213 -189 90 172 -139 74 115 -213 205 246 -230 213 106 -156 148 197 -238 238 139 -213 180 98 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/dragon_tamer.pal b/graphics/trainers/palettes/dragon_tamer.pal deleted file mode 100644 index 545c55b74b..0000000000 --- a/graphics/trainers/palettes/dragon_tamer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -74 57 49 -164 57 246 -123 49 172 -131 139 148 -255 98 90 -197 65 65 -213 222 230 -74 74 65 -255 205 106 -213 172 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/elite_four_drake.pal b/graphics/trainers/palettes/elite_four_drake.pal deleted file mode 100644 index 6ab0bae739..0000000000 --- a/graphics/trainers/palettes/elite_four_drake.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 172 148 -164 131 106 -98 57 65 -139 131 164 -106 98 123 -41 49 57 -57 65 82 -197 197 213 -255 222 106 -189 156 90 -106 131 238 -65 106 172 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/elite_four_glacia.pal b/graphics/trainers/palettes/elite_four_glacia.pal deleted file mode 100644 index 75b5eb1084..0000000000 --- a/graphics/trainers/palettes/elite_four_glacia.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 82 65 -148 148 164 -148 90 164 -115 65 123 -82 41 82 -255 255 164 -213 197 90 -156 148 90 -222 230 238 -189 197 205 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/elite_four_phoebe.pal b/graphics/trainers/palettes/elite_four_phoebe.pal deleted file mode 100644 index 8c07c0d5bf..0000000000 --- a/graphics/trainers/palettes/elite_four_phoebe.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 82 65 -57 131 255 -32 106 230 -16 82 205 -41 49 123 -164 205 255 -115 98 106 -74 57 65 -255 82 156 -197 65 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/elite_four_sidney.pal b/graphics/trainers/palettes/elite_four_sidney.pal deleted file mode 100644 index d778e0ed6d..0000000000 --- a/graphics/trainers/palettes/elite_four_sidney.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 180 148 -189 139 106 -98 57 65 -131 106 74 -106 98 123 -41 49 57 -57 65 82 -197 197 213 -238 213 139 -197 164 106 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/expert_f.pal b/graphics/trainers/palettes/expert_f.pal deleted file mode 100644 index 2fa5f52020..0000000000 --- a/graphics/trainers/palettes/expert_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/expert_m.pal b/graphics/trainers/palettes/expert_m.pal deleted file mode 100644 index 2fa5f52020..0000000000 --- a/graphics/trainers/palettes/expert_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/factory_head_noland.pal b/graphics/trainers/palettes/factory_head_noland.pal deleted file mode 100644 index 03bce8c770..0000000000 --- a/graphics/trainers/palettes/factory_head_noland.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -172 172 189 -131 131 164 -98 98 123 -65 65 90 -222 213 246 -238 213 106 -246 131 123 -213 90 90 -180 57 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/fisherman.pal b/graphics/trainers/palettes/fisherman.pal deleted file mode 100644 index 3c18e8f1f1..0000000000 --- a/graphics/trainers/palettes/fisherman.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 213 189 -222 172 148 -180 131 115 -82 57 57 -123 98 106 -82 82 123 -213 172 82 -180 139 82 -205 205 222 -123 82 49 -49 49 74 -246 123 49 -189 106 49 -238 238 255 -0 0 24 diff --git a/graphics/trainers/palettes/gentleman.pal b/graphics/trainers/palettes/gentleman.pal deleted file mode 100644 index ef021d0268..0000000000 --- a/graphics/trainers/palettes/gentleman.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -180 148 115 -148 115 82 -123 90 57 -65 49 41 -255 238 156 -213 213 205 -180 180 172 -90 106 172 -57 74 123 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/guitarist.pal b/graphics/trainers/palettes/guitarist.pal deleted file mode 100644 index 74e59e8199..0000000000 --- a/graphics/trainers/palettes/guitarist.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -172 172 164 -139 131 131 -106 98 98 -65 57 57 -255 238 156 -255 197 90 -205 180 148 -255 98 90 -189 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/hex_maniac.pal b/graphics/trainers/palettes/hex_maniac.pal deleted file mode 100644 index 549d7fac93..0000000000 --- a/graphics/trainers/palettes/hex_maniac.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 123 156 -139 90 131 -106 65 106 -74 41 74 -213 222 230 -189 205 213 -205 57 82 -115 41 65 -180 49 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/hiker.pal b/graphics/trainers/palettes/hiker.pal deleted file mode 100644 index cb8fce7f61..0000000000 --- a/graphics/trainers/palettes/hiker.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 164 148 -205 131 115 -74 65 57 -123 189 90 -115 148 90 -213 180 98 -172 148 98 -205 205 222 -148 148 148 -123 115 74 -230 98 90 -164 74 74 -255 255 255 -0 0 24 diff --git a/graphics/trainers/palettes/interviewer.pal b/graphics/trainers/palettes/interviewer.pal deleted file mode 100644 index 61ace1935d..0000000000 --- a/graphics/trainers/palettes/interviewer.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -148 148 172 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -98 197 255 -90 156 189 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/kindler.pal b/graphics/trainers/palettes/kindler.pal deleted file mode 100644 index af6adf7e87..0000000000 --- a/graphics/trainers/palettes/kindler.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 82 65 -246 246 230 -222 222 189 -180 180 139 -123 115 74 -172 213 246 -115 180 205 -57 123 139 -255 82 57 -255 156 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/lady.pal b/graphics/trainers/palettes/lady.pal deleted file mode 100644 index b708731111..0000000000 --- a/graphics/trainers/palettes/lady.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 222 -238 180 180 -156 123 106 -172 106 74 -82 82 32 -213 222 230 -255 230 106 -213 172 90 -222 98 123 -148 164 180 -180 238 106 -148 213 82 -123 189 65 -255 255 255 -0 0 24 diff --git a/graphics/trainers/palettes/lass.pal b/graphics/trainers/palettes/lass.pal deleted file mode 100644 index 89e78d683f..0000000000 --- a/graphics/trainers/palettes/lass.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -222 148 115 -123 90 82 -164 172 197 -90 98 148 -49 57 82 -41 57 98 -222 230 238 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_brawly.pal b/graphics/trainers/palettes/leader_brawly.pal deleted file mode 100644 index 5a5a482f23..0000000000 --- a/graphics/trainers/palettes/leader_brawly.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -49 49 74 -213 213 222 -255 164 197 -115 115 115 -255 139 65 -213 98 24 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_flannery.pal b/graphics/trainers/palettes/leader_flannery.pal deleted file mode 100644 index 20f2f85799..0000000000 --- a/graphics/trainers/palettes/leader_flannery.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 197 230 -90 156 213 -65 115 164 -49 49 74 -213 213 222 -131 74 16 -115 115 115 -255 139 65 -197 98 32 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_juan.pal b/graphics/trainers/palettes/leader_juan.pal deleted file mode 100644 index 96467bdc37..0000000000 --- a/graphics/trainers/palettes/leader_juan.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -222 180 148 -180 131 98 -123 90 82 -213 115 222 -148 65 180 -106 148 255 -82 106 189 -74 74 148 -164 180 189 -98 115 123 -98 49 90 -213 213 222 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_norman.pal b/graphics/trainers/palettes/leader_norman.pal deleted file mode 100644 index e53c168379..0000000000 --- a/graphics/trainers/palettes/leader_norman.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 197 230 -139 156 172 -74 98 123 -49 65 82 -213 213 222 -131 16 41 -115 115 115 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_roxanne.pal b/graphics/trainers/palettes/leader_roxanne.pal deleted file mode 100644 index c2b28ead91..0000000000 --- a/graphics/trainers/palettes/leader_roxanne.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 164 197 -189 156 90 -255 115 148 -213 82 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_tate_and_liza.pal b/graphics/trainers/palettes/leader_tate_and_liza.pal deleted file mode 100644 index ab64e9bea1..0000000000 --- a/graphics/trainers/palettes/leader_tate_and_liza.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 172 65 -255 222 205 -238 180 148 -180 131 106 -106 74 74 -189 189 197 -123 123 131 -74 82 98 -41 49 65 -255 98 90 -164 49 57 -255 197 90 -106 189 255 -90 139 197 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_wattson.pal b/graphics/trainers/palettes/leader_wattson.pal deleted file mode 100644 index c8a4e14208..0000000000 --- a/graphics/trainers/palettes/leader_wattson.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -123 90 82 -164 139 90 -131 106 74 -139 131 106 -82 65 74 -213 213 222 -255 197 90 -189 156 90 -57 41 49 -222 115 131 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leader_winona.pal b/graphics/trainers/palettes/leader_winona.pal deleted file mode 100644 index 62783523b2..0000000000 --- a/graphics/trainers/palettes/leader_winona.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -172 189 213 -139 156 205 -74 98 148 -49 65 82 -205 213 222 -115 57 123 -255 197 90 -189 123 222 -148 90 172 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leaf.pal b/graphics/trainers/palettes/leaf.pal deleted file mode 100644 index 30e2cdde05..0000000000 --- a/graphics/trainers/palettes/leaf.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 180 -230 189 156 -205 148 115 -123 90 82 -123 189 222 -82 139 180 -49 106 139 -24 41 82 -213 213 222 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/leaf_back_pic.pal b/graphics/trainers/palettes/leaf_back_pic.pal deleted file mode 100644 index 27436be920..0000000000 --- a/graphics/trainers/palettes/leaf_back_pic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -172 123 65 -255 197 148 -222 148 115 -123 65 65 -65 65 213 -57 57 123 -115 164 197 -106 41 41 -238 238 255 -180 180 213 -255 106 74 -197 57 57 -255 222 90 -189 156 57 -0 0 0 diff --git a/graphics/trainers/palettes/magma_admin.pal b/graphics/trainers/palettes/magma_admin.pal deleted file mode 100644 index a987cdbc14..0000000000 --- a/graphics/trainers/palettes/magma_admin.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/magma_grunt_f.pal b/graphics/trainers/palettes/magma_grunt_f.pal deleted file mode 100644 index a987cdbc14..0000000000 --- a/graphics/trainers/palettes/magma_grunt_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/magma_grunt_m.pal b/graphics/trainers/palettes/magma_grunt_m.pal deleted file mode 100644 index a987cdbc14..0000000000 --- a/graphics/trainers/palettes/magma_grunt_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -123 123 123 -90 90 90 -82 98 148 -57 57 65 -65 74 115 -139 49 65 -189 189 180 -222 82 98 -189 57 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/magma_leader_maxie.pal b/graphics/trainers/palettes/magma_leader_maxie.pal deleted file mode 100644 index 151bf6d5b6..0000000000 --- a/graphics/trainers/palettes/magma_leader_maxie.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 180 197 -115 123 139 -74 82 98 -49 57 82 -213 213 222 -131 16 41 -24 32 49 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/ruby_sapphire_may.pal b/graphics/trainers/palettes/may_rs.pal similarity index 100% rename from graphics/trainers/palettes/ruby_sapphire_may.pal rename to graphics/trainers/palettes/may_rs.pal diff --git a/graphics/trainers/palettes/ninja_boy.pal b/graphics/trainers/palettes/ninja_boy.pal deleted file mode 100644 index 524d3f4ba9..0000000000 --- a/graphics/trainers/palettes/ninja_boy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -164 180 197 -131 139 156 -82 98 115 -49 57 82 -213 213 222 -131 16 41 -255 172 32 -213 82 90 -180 41 57 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/old_couple.pal b/graphics/trainers/palettes/old_couple.pal deleted file mode 100644 index 2fa5f52020..0000000000 --- a/graphics/trainers/palettes/old_couple.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/palace_maven_spenser.pal b/graphics/trainers/palettes/palace_maven_spenser.pal deleted file mode 100644 index 40a6349740..0000000000 --- a/graphics/trainers/palettes/palace_maven_spenser.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -230 205 156 -189 164 115 -164 131 82 -106 74 74 -172 172 213 -123 131 189 -90 98 148 -57 65 90 -222 213 246 -238 213 106 -246 230 180 -230 115 74 -222 180 98 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/parasol_lady.pal b/graphics/trainers/palettes/parasol_lady.pal deleted file mode 100644 index dc5c6f67fd..0000000000 --- a/graphics/trainers/palettes/parasol_lady.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -123 82 65 -90 131 189 -65 90 139 -41 65 98 -255 98 90 -197 65 65 -255 156 106 -131 74 65 -255 205 106 -213 172 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/picnicker.pal b/graphics/trainers/palettes/picnicker.pal deleted file mode 100644 index acd90e9436..0000000000 --- a/graphics/trainers/palettes/picnicker.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -131 213 205 -82 164 148 -180 189 222 -57 90 74 -24 49 90 -98 115 230 -57 82 131 -255 98 41 -189 74 41 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pike_queen_lucy.pal b/graphics/trainers/palettes/pike_queen_lucy.pal deleted file mode 100644 index fd3b46b8b3..0000000000 --- a/graphics/trainers/palettes/pike_queen_lucy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -205 123 213 -148 90 148 -115 57 106 -57 57 57 -213 222 230 -172 65 65 -255 197 90 -115 106 123 -213 82 115 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokefan_f.pal b/graphics/trainers/palettes/pokefan_f.pal deleted file mode 100644 index 09728f0052..0000000000 --- a/graphics/trainers/palettes/pokefan_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 172 189 -65 123 180 -255 0 255 -32 57 82 -197 205 213 -180 139 90 -131 90 41 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokefan_m.pal b/graphics/trainers/palettes/pokefan_m.pal deleted file mode 100644 index 1d1f488750..0000000000 --- a/graphics/trainers/palettes/pokefan_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -222 189 148 -197 156 115 -156 123 82 -49 57 49 -230 90 41 -131 172 222 -172 49 32 -82 123 172 -255 238 74 -213 189 41 -205 205 213 -98 98 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokemaniac.pal b/graphics/trainers/palettes/pokemaniac.pal deleted file mode 100644 index 3ede03b140..0000000000 --- a/graphics/trainers/palettes/pokemaniac.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -246 189 115 -213 123 74 -180 82 74 -139 57 41 -74 74 49 -255 230 57 -98 123 106 -230 82 24 -213 205 230 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokemon_breeder_f.pal b/graphics/trainers/palettes/pokemon_breeder_f.pal deleted file mode 100644 index b15f5db8ab..0000000000 --- a/graphics/trainers/palettes/pokemon_breeder_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -255 98 90 -164 49 65 -255 148 131 -49 49 74 -213 222 230 -205 74 74 -115 148 197 -49 74 123 -57 115 164 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokemon_breeder_m.pal b/graphics/trainers/palettes/pokemon_breeder_m.pal deleted file mode 100644 index 6551f84822..0000000000 --- a/graphics/trainers/palettes/pokemon_breeder_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -131 90 74 -255 98 90 -156 65 74 -255 148 131 -49 49 74 -213 222 230 -205 74 74 -115 148 197 -49 74 123 -57 115 164 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokemon_ranger_f.pal b/graphics/trainers/palettes/pokemon_ranger_f.pal deleted file mode 100644 index 93220f5cbf..0000000000 --- a/graphics/trainers/palettes/pokemon_ranger_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -131 90 65 -82 49 49 -131 139 156 -82 90 115 -49 57 82 -213 213 222 -255 205 65 -255 131 74 -205 98 74 -156 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pokemon_ranger_m.pal b/graphics/trainers/palettes/pokemon_ranger_m.pal deleted file mode 100644 index 2f16ca0cb9..0000000000 --- a/graphics/trainers/palettes/pokemon_ranger_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -139 106 82 -82 49 49 -131 139 156 -90 98 115 -49 57 82 -213 213 222 -255 205 65 -238 139 82 -197 82 74 -115 57 49 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/psychic_f.pal b/graphics/trainers/palettes/psychic_f.pal deleted file mode 100644 index 232cfd7550..0000000000 --- a/graphics/trainers/palettes/psychic_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -246 205 156 -205 156 115 -115 82 65 -98 123 180 -32 98 131 -255 0 246 -41 57 90 -213 131 255 -156 115 180 -115 82 148 -246 139 90 -197 90 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/psychic_m.pal b/graphics/trainers/palettes/psychic_m.pal deleted file mode 100644 index 0ddd2894bf..0000000000 --- a/graphics/trainers/palettes/psychic_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -230 189 148 -205 156 115 -115 82 65 -98 123 180 -32 98 131 -0 255 0 -41 57 90 -213 131 255 -131 106 172 -90 74 131 -246 139 90 -197 90 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/pyramid_king_brandon.pal b/graphics/trainers/palettes/pyramid_king_brandon.pal deleted file mode 100644 index 77b5483b88..0000000000 --- a/graphics/trainers/palettes/pyramid_king_brandon.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -164 213 90 -123 172 65 -82 115 41 -57 82 41 -213 205 213 -172 123 90 -139 139 123 -131 98 65 -213 106 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/red.pal b/graphics/trainers/palettes/red.pal deleted file mode 100644 index 30e2cdde05..0000000000 --- a/graphics/trainers/palettes/red.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 180 -230 189 156 -205 148 115 -123 90 82 -123 189 222 -82 139 180 -49 106 139 -24 41 82 -213 213 222 -255 197 90 -189 156 90 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/red_back_pic.pal b/graphics/trainers/palettes/red_back_pic.pal deleted file mode 100644 index 3097a6556d..0000000000 --- a/graphics/trainers/palettes/red_back_pic.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -131 123 164 -172 123 65 -255 197 148 -222 148 115 -123 65 65 -65 65 213 -57 57 123 -115 164 197 -106 41 41 -238 238 255 -180 180 213 -255 106 74 -197 57 57 -255 222 90 -189 156 57 -0 0 0 diff --git a/graphics/trainers/palettes/rich_boy.pal b/graphics/trainers/palettes/rich_boy.pal deleted file mode 100644 index 1ebb772044..0000000000 --- a/graphics/trainers/palettes/rich_boy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -213 222 230 -255 230 98 -222 180 90 -156 123 115 -115 82 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/ruin_maniac.pal b/graphics/trainers/palettes/ruin_maniac.pal deleted file mode 100644 index bbc342a06a..0000000000 --- a/graphics/trainers/palettes/ruin_maniac.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -255 238 106 -246 246 230 -222 222 189 -180 180 139 -115 106 65 -222 213 246 -115 131 205 -222 189 8 -213 115 139 -172 74 90 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/running_triathlete_f.pal b/graphics/trainers/palettes/running_triathlete_f.pal deleted file mode 100644 index 671c1593f0..0000000000 --- a/graphics/trainers/palettes/running_triathlete_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/running_triathlete_m.pal b/graphics/trainers/palettes/running_triathlete_m.pal deleted file mode 100644 index 13a56a5566..0000000000 --- a/graphics/trainers/palettes/running_triathlete_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 180 -230 180 148 -180 139 106 -115 82 65 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/sailor.pal b/graphics/trainers/palettes/sailor.pal deleted file mode 100644 index 3b62485765..0000000000 --- a/graphics/trainers/palettes/sailor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -180 180 172 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -139 139 131 -131 180 230 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/salon_maiden_anabel.pal b/graphics/trainers/palettes/salon_maiden_anabel.pal deleted file mode 100644 index 91776562fb..0000000000 --- a/graphics/trainers/palettes/salon_maiden_anabel.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -230 139 255 -189 115 213 -148 90 172 -123 74 139 -213 205 246 -255 197 90 -156 148 197 -255 222 115 -213 106 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/school_kid_f.pal b/graphics/trainers/palettes/school_kid_f.pal deleted file mode 100644 index ce758377ac..0000000000 --- a/graphics/trainers/palettes/school_kid_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -238 189 156 -205 148 115 -106 74 57 -255 139 164 -213 82 131 -131 139 255 -98 115 180 -57 74 131 -246 189 123 -197 131 65 -230 82 41 -139 90 32 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/school_kid_m.pal b/graphics/trainers/palettes/school_kid_m.pal deleted file mode 100644 index dc4298ea0e..0000000000 --- a/graphics/trainers/palettes/school_kid_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -172 164 115 -65 90 148 -49 57 82 -131 123 82 -197 197 238 -255 222 65 -205 189 123 -98 164 222 -49 123 156 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/sis_and_bro.pal b/graphics/trainers/palettes/sis_and_bro.pal deleted file mode 100644 index 823ef66efc..0000000000 --- a/graphics/trainers/palettes/sis_and_bro.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 189 -222 164 148 -164 123 98 -74 57 49 -255 139 90 -230 82 74 -180 65 65 -90 65 82 -197 65 65 -213 222 230 -255 230 205 -139 172 213 -90 131 189 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/sr_and_jr.pal b/graphics/trainers/palettes/sr_and_jr.pal deleted file mode 100644 index 72238881fc..0000000000 --- a/graphics/trainers/palettes/sr_and_jr.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -131 90 41 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/swimmer_f.pal b/graphics/trainers/palettes/swimmer_f.pal deleted file mode 100644 index 823ef66efc..0000000000 --- a/graphics/trainers/palettes/swimmer_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -246 205 189 -222 164 148 -164 123 98 -74 57 49 -255 139 90 -230 82 74 -180 65 65 -90 65 82 -197 65 65 -213 222 230 -255 230 205 -139 172 213 -90 131 189 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/swimmer_m.pal b/graphics/trainers/palettes/swimmer_m.pal deleted file mode 100644 index 259a53b9a1..0000000000 --- a/graphics/trainers/palettes/swimmer_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -230 197 172 -213 172 148 -172 123 106 -115 82 65 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -172 172 180 -139 65 65 -222 238 238 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/swimming_triathlete_f.pal b/graphics/trainers/palettes/swimming_triathlete_f.pal deleted file mode 100644 index 671c1593f0..0000000000 --- a/graphics/trainers/palettes/swimming_triathlete_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/swimming_triathlete_m.pal b/graphics/trainers/palettes/swimming_triathlete_m.pal deleted file mode 100644 index 671c1593f0..0000000000 --- a/graphics/trainers/palettes/swimming_triathlete_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -90 131 189 -65 90 139 -41 65 98 -49 41 65 -205 213 222 -180 139 90 -139 65 65 -255 98 90 -197 65 65 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/tuber_f.pal b/graphics/trainers/palettes/tuber_f.pal deleted file mode 100644 index b5cb0047aa..0000000000 --- a/graphics/trainers/palettes/tuber_f.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 230 74 -205 57 82 -238 180 57 -189 131 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/tuber_m.pal b/graphics/trainers/palettes/tuber_m.pal deleted file mode 100644 index b5cb0047aa..0000000000 --- a/graphics/trainers/palettes/tuber_m.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 230 74 -205 57 82 -238 180 57 -189 131 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/twins.pal b/graphics/trainers/palettes/twins.pal deleted file mode 100644 index 3b162de251..0000000000 --- a/graphics/trainers/palettes/twins.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 172 213 -90 131 189 -65 90 139 -57 57 57 -213 222 230 -255 230 74 -180 82 98 -238 180 57 -189 131 74 -255 255 255 -0 0 0 diff --git a/graphics/trainers/palettes/young_couple.pal b/graphics/trainers/palettes/young_couple.pal deleted file mode 100644 index bba95c19a4..0000000000 --- a/graphics/trainers/palettes/young_couple.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -98 65 57 -148 164 172 -82 123 164 -57 82 106 -32 49 74 -205 213 222 -123 197 156 -90 164 131 -255 98 90 -197 65 65 -106 106 139 -0 0 0 diff --git a/graphics/trainers/palettes/youngster.pal b/graphics/trainers/palettes/youngster.pal deleted file mode 100644 index f91520d9b0..0000000000 --- a/graphics/trainers/palettes/youngster.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -230 180 148 -213 148 115 -123 90 82 -139 197 222 -65 90 148 -49 57 82 -41 57 98 -197 197 238 -255 222 65 -222 172 90 -98 164 222 -49 123 156 -255 255 255 -0 0 0 diff --git a/include/battle.h b/include/battle.h index 71b731da66..b328b46bb2 100644 --- a/include/battle.h +++ b/include/battle.h @@ -246,6 +246,27 @@ struct AI_SavedBattleMon u16 species; }; +struct AiPartyMon +{ + u16 species; + u16 item; + u16 heldEffect; + u16 ability; + u16 gender; + u16 level; + u16 moves[MAX_MON_MOVES]; + u32 status; + bool8 isFainted; + bool8 wasSentInBattle; + u8 switchInCount; // Counts how many times this Pokemon has been sent out or switched into in a battle. +}; + +struct AIPartyData // Opposing battlers - party mons. +{ + struct AiPartyMon mons[2][PARTY_SIZE]; // 2 parties(player, opponent). Used to save information on opposing party. + u8 count[2]; +}; + struct AiLogicData { u16 abilities[MAX_BATTLERS_COUNT]; @@ -314,6 +335,7 @@ struct BattleResources struct StatsArray* beforeLvlUp; struct AI_ThinkingStruct *ai; struct AiLogicData *aiData; + struct AIPartyData *aiParty; struct BattleHistory *battleHistory; u8 bufferA[MAX_BATTLERS_COUNT][0x200]; u8 bufferB[MAX_BATTLERS_COUNT][0x200]; @@ -321,6 +343,7 @@ struct BattleResources #define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gBattleResources->ai)) #define AI_DATA ((struct AiLogicData *)(gBattleResources->aiData)) +#define AI_PARTY ((struct AIPartyData *)(gBattleResources->aiParty)) #define BATTLE_HISTORY ((struct BattleHistory *)(gBattleResources->battleHistory)) struct BattleResults @@ -623,6 +646,7 @@ struct BattleStruct // When using a move which hits multiple opponents which is then bounced by a target, we need to make sure, the move hits both opponents, the one with bounce, and the one without. u8 attackerBeforeBounce:2; u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit. + u16 overwrittenAbilities[MAX_BATTLERS_COUNT]; // abilities overwritten during battle (keep separate from battle history in case of switching) }; #define F_DYNAMIC_TYPE_1 (1 << 6) diff --git a/include/battle_ai_main.h b/include/battle_ai_main.h index fcb31a9b2b..1d53a3f398 100644 --- a/include/battle_ai_main.h +++ b/include/battle_ai_main.h @@ -24,6 +24,9 @@ void BattleAI_SetupItems(void); void BattleAI_SetupFlags(void); void BattleAI_SetupAIData(u8 defaultScoreMoves); u8 BattleAI_ChooseMoveOrAction(void); +void Ai_InitPartyStruct(void); +void Ai_UpdateSwitchInData(u32 battler); +void Ai_UpdateFaintData(u32 battler); void GetAiLogicData(void); extern u8 sBattler_AI; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 00a0747bdb..2d6364fb96 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -428,6 +428,7 @@ extern const u8 BattleScript_BeakBlastBurn[]; extern const u8 BattleScript_DefDownSpeedUp[]; extern const u8 BattleScript_AffectionBasedStatusHeal[]; extern const u8 BattleScript_AffectionBasedEndurance[]; +extern const u8 BattleScript_SymbiosisActivates[]; // zmoves extern const u8 BattleScript_ZMoveActivateDamaging[]; diff --git a/include/config.h b/include/config.h index d6c60a2fa8..ad8b3268fc 100644 --- a/include/config.h +++ b/include/config.h @@ -8,12 +8,31 @@ // Ruby's actual debug build does not use the AGBPrint features. #define NDEBUG -// To enable print debugging, comment out "#define NDEBUG". This allows +// To enable printf debugging, comment out "#define NDEBUG". This allows // the various AGBPrint functions to be used. (See include/gba/isagbprint.h). -// Some emulators support a debug console window: uncomment NoCashGBAPrint() -// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary -// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you -// would normally use AGBPrint() and AGBPrintf(). +// See below for enabling different pretty printing versions. + +#ifndef NDEBUG + +#define PRETTY_PRINT_MINI_PRINTF (0) +#define PRETTY_PRINT_LIBC (1) + +#define LOG_HANDLER_AGB_PRINT (0) +#define LOG_HANDLER_NOCASH_PRINT (1) +#define LOG_HANDLER_MGBA_PRINT (2) + +// Use this switch to choose a handler for pretty printing. +// NOTE: mini_printf supports a custom pretty printing formatter to display preproc encoded strings. (%S) +// some libc distributions (especially dkp arm-libc) will fail to link pretty printing. +#define PRETTY_PRINT_HANDLER (PRETTY_PRINT_MINI_PRINTF) + +// Use this switch to choose a handler for printf output. +// NOTE: These will only work on the respective emulators and should not be used in a productive environment. +// Some emulators or real hardware might (and is allowed to) crash if they are used. +// AGB_PRINT is supported on respective debug units. + +#define LOG_HANDLER (LOG_HANDLER_MGBA_PRINT) +#endif #define ENGLISH diff --git a/include/constants/battle_config.h b/include/constants/battle_config.h index 4b6c0cc1ec..0a7ba2303f 100644 --- a/include/constants/battle_config.h +++ b/include/constants/battle_config.h @@ -51,7 +51,8 @@ #define B_FAINT_SWITCH_IN GEN_LATEST // In Gen4+, sending out a new Pokémon after the previous one fainted happens at the end of the turn. Before, it would happen after each action. // Move data settings -#define B_UPDATED_MOVE_DATA GEN_LATEST // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets, chances of secondary effects, etc. +#define B_UPDATED_MOVE_DATA GEN_LATEST // Updates move data in gBattleMoves, including Power, Accuracy, PP, stat changes, targets and chances of secondary effects. +#define B_UPDATED_MOVE_TYPES GEN_LATEST // Updates move types. #define B_PHYSICAL_SPECIAL_SPLIT GEN_LATEST // In Gen3, the move's type determines if it will do physical or special damage. The split icon in the summary will reflect this. #define B_RECOIL_IF_MISS_DMG GEN_LATEST // In Gen5+, Jump Kick and High Jump Kick will always do half of the user's max HP when missing. #define B_KLUTZ_FLING_INTERACTION GEN_LATEST // In Gen5+, Pokémon with the Klutz ability can't use Fling. @@ -87,6 +88,7 @@ // Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves. #define B_ROOTED_GROUNDING GEN_LATEST // In Gen4+, Ingrain causes the affected Pokémon to become grounded. #define B_METRONOME_MOVES GEN_LATEST // This config will determine up to which generation will Metronome pull moves from. +#define B_TELEPORT_BEHAVIOR GEN_LATEST // In Gen7+, starting with Pokémon LGPE, Teleport allows the user to swap out with another party member. // Ability settings #define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters. @@ -103,6 +105,7 @@ #define B_STURDY GEN_LATEST // In Gen5+, Sturdy causes the Pokémon to have 1 HP remaining if another Pokémon's attack or confusion damage would have brought it from full health to 0 HP. #define B_PLUS_MINUS_INTERACTION GEN_LATEST // In Gen5+, Plus and Minus can be activated with themselves and the opposite ability. Before, only the opposing ability could activate it. #define B_WEATHER_FORMS GEN_LATEST // In Gen5+, Castform and Cherrim revert to their base form upon losing their respective ability. Cherrim needs Flower Gift to swap forms. +#define B_SYMBIOSIS_GEMS GEN_LATEST // In Gen7+, Symbiosis passes an item after a gem-boosted attack. Previously, items are passed before the gem-boosted attack hits, making the item effect apply. // Item settings #define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn. diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 47b0dbe79f..b11e7eb653 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -242,6 +242,9 @@ #define VARIOUS_SET_BEAK_BLAST 151 #define VARIOUS_SWAP_SIDE_STATUSES 152 #define VARIOUS_SET_Z_EFFECT 153 +#define VARIOUS_TRY_SYMBIOSIS 154 +#define VARIOUS_CAN_TELEPORT 155 +#define VARIOUS_GET_BATTLER_SIDE 156 // Cmd_manipulatedamage #define DMG_CHANGE_SIGN 0 @@ -312,8 +315,9 @@ #define MOVEEND_DANCER 28 #define MOVEEND_EMERGENCY_EXIT 29 #define MOVEEND_WEATHER_FORM 30 -#define MOVEEND_CLEAR_BITS 31 -#define MOVEEND_COUNT 32 +#define MOVEEND_SYMBIOSIS 31 +#define MOVEEND_CLEAR_BITS 32 +#define MOVEEND_COUNT 33 // switch cases #define B_SWITCH_NORMAL 0 diff --git a/include/constants/global.h b/include/constants/global.h index 07ed190208..5870cf4163 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -39,7 +39,9 @@ #define FRONTIER_PARTY_SIZE 3 #define FRONTIER_DOUBLES_PARTY_SIZE 4 #define FRONTIER_MULTI_PARTY_SIZE 2 -#define MAX_FRONTIER_PARTY_SIZE FRONTIER_DOUBLES_PARTY_SIZE +#define MAX_FRONTIER_PARTY_SIZE (max(FRONTIER_PARTY_SIZE, \ + max(FRONTIER_DOUBLES_PARTY_SIZE,\ + FRONTIER_MULTI_PARTY_SIZE))) #define UNION_ROOM_PARTY_SIZE 2 // capacities of various saveblock objects diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 1890070453..5167f5f55f 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -340,13 +340,17 @@ #define NUM_HIDDEN_ABILITY_SLOTS 1 // Species Flags -#define FLAG_LEGENDARY (1 << 0) -#define FLAG_MYTHICAL (1 << 1) -#define FLAG_ULTRA_BEAST (1 << 2) -#define FLAG_ALOLAN_FORM (1 << 3) -#define FLAG_GALARIAN_FORM (1 << 4) -#define FLAG_HISUIAN_FORM (1 << 5) -#define FLAG_GENDER_DIFFERENCE (1 << 6) +#define SPECIES_FLAG_LEGENDARY (1 << 0) +#define SPECIES_FLAG_MYTHICAL (1 << 1) +#define SPECIES_FLAG_MEGA_EVOLUTION (1 << 2) +#define SPECIES_FLAG_ULTRA_BEAST (1 << 3) +#define SPECIES_FLAG_ALOLAN_FORM (1 << 4) +#define SPECIES_FLAG_GALARIAN_FORM (1 << 5) +#define SPECIES_FLAG_HISUIAN_FORM (1 << 6) +#define SPECIES_FLAG_GENDER_DIFFERENCE (1 << 7) +#define SPECIES_FLAG_ALL_PERFECT_IVS (1 << 8) +#define SPECIES_FLAG_SHINY_LOCKED (1 << 9) +#define SPECIES_FLAG_CANNOT_BE_TRADED (1 << 10) #define LEGENDARY_PERFECT_IV_COUNT 3 diff --git a/include/constants/trade.h b/include/constants/trade.h index fa42e6b43f..e8afc2a77f 100644 --- a/include/constants/trade.h +++ b/include/constants/trade.h @@ -99,8 +99,8 @@ #define UR_TRADE_MSG_NONE 0 #define UR_TRADE_MSG_NOT_MON_PARTNER_WANTS 1 #define UR_TRADE_MSG_NOT_EGG 2 -#define UR_TRADE_MSG_MON_CANT_BE_TRADED_1 3 -#define UR_TRADE_MSG_MON_CANT_BE_TRADED_2 4 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED_NOW 3 +#define UR_TRADE_MSG_MON_CANT_BE_TRADED 4 #define UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED 5 #define UR_TRADE_MSG_EGG_CANT_BE_TRADED 6 #define UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON 7 @@ -108,9 +108,10 @@ #define UR_TRADE_MSG_CANT_TRADE_WITH_PARTNER_2 9 // Return values for CanRegisterMonForTradingBoard -#define CAN_REGISTER_MON 0 -#define CANT_REGISTER_MON 1 -#define CANT_REGISTER_EGG 2 +#define CAN_REGISTER_MON 0 +#define CANT_REGISTER_MON_NOW 1 +#define CANT_REGISTER_MON 2 +#define CANT_REGISTER_EGG 3 #endif //GUARD_CONSTANTS_TRADE_H diff --git a/include/gba/isagbprint.h b/include/gba/isagbprint.h index 13687825ef..91aa9f214e 100644 --- a/include/gba/isagbprint.h +++ b/include/gba/isagbprint.h @@ -1,50 +1,64 @@ #ifndef GUARD_GBA_ISAGBPRINT_H #define GUARD_GBA_ISAGBPRINT_H +#include "gba/types.h" + +#define MGBA_LOG_FATAL (0) +#define MGBA_LOG_ERROR (1) +#define MGBA_LOG_WARN (2) +#define MGBA_LOG_INFO (3) +#define MGBA_LOG_DEBUG (4) + #ifdef NDEBUG +#define DebugPrintf(pBuf, ...) +#define MgbaOpen() +#define MgbaClose() #define AGBPrintInit() -#define AGBPutc(cChr) -#define AGBPrint(pBuf) -#define AGBPrintf(pBuf, ...) -#define AGBPrintFlush1Block() -#define AGBPrintFlush() -#define AGBAssert(pFile, nLine, pExpression, nStopProgram) +#define DebugAssert(pFile, nLine, pExpression, nStopProgram) #else -void AGBPrintInit(void); -void AGBPutc(const char cChr); -void AGBPrint(const char *pBuf); + +bool32 MgbaOpen(void); +void MgbaClose(void); +void MgbaPrintf(s32 level, const char *pBuf, ...); +void MgbaAssert(const char *pFile, s32 nLine, const char *pExpression, bool32 nStopProgram); +void NoCashGBAPrintf(const char *pBuf, ...); +void NoCashGBAAssert(const char *pFile, s32 nLine, const char *pExpression, bool32 nStopProgram); void AGBPrintf(const char *pBuf, ...); -void AGBPrintFlush1Block(void); -void AGBPrintFlush(void); void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram); +void AGBPrintInit(void); + +#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT) + +#define DebugPrintf(pBuf, ...) MgbaPrintf(MGBA_LOG_INFO, pBuf, __VA_ARGS__) +#define DebugAssert(pFile, nLine, pExpression, nStopProgram) MgbaAssert(pFile, nLine, pExpression, nStopProgram) + +#elif (LOG_HANDLER == LOG_HANDLER_NOCASH_PRINT) + +#define DebugPrintf(pBuf, ...) NoCashGBAPrintf(pBuf, __VA_ARGS__) +#define DebugAssert(pFile, nLine, pExpression, nStopProgram) NoCashGBAAssert(pFile, nLine, pExpression, nStopProgram) + +#else // Default to AGBPrint + +#define DebugPrintf(pBuf, ...) AGBPrintf(const char *pBuf, ...) +#define DebugAssert(pFile, nLine, pExpression, nStopProgram) AGBAssert(pFile, nLine, pExpression, nStopProgram) + +#endif #endif -#undef AGB_ASSERT #ifdef NDEBUG + #define AGB_ASSERT(exp) -#else -#define AGB_ASSERT(exp) (exp) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #exp, 1); -#endif - -#undef AGB_WARNING -#ifdef NDEBUG #define AGB_WARNING(exp) -#else -#define AGB_WARNING(exp) (exp) ? ((void *)0) : AGBAssert(__FILE__, __LINE__, #exp, 0); -#endif +#define AGB_ASSERT_EX(exp, file, line) +#define AGB_WARNING_EX(exp, file, line) -// for matching purposes - -#ifdef NDEBUG -#define AGB_ASSERT_EX(exp, file, line) #else -#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void *)0) : AGBAssert(file, line, #exp, 1); -#endif -#ifdef NDEBUG -#define AGB_WARNING_EX(exp, file, line) -#else -#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void *)0) : AGBAssert(file, line, #exp, 0); +#define AGB_ASSERT(exp) (exp) ? ((void*)0) : DebugAssert(__FILE__, __LINE__, #exp, TRUE) +#define AGB_WARNING(exp) (exp) ? ((void*)0) : DebugAssert(__FILE__, __LINE__, #exp, FALSE) + +#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void *)0) : DebugAssert(file, line, #exp, FALSE); +#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void *)0) : DebugAssert(file, line, #exp, TRUE); #endif #endif // GUARD_GBA_ISAGBPRINT_H diff --git a/include/mini_printf.h b/include/mini_printf.h new file mode 100644 index 0000000000..a891327cc4 --- /dev/null +++ b/include/mini_printf.h @@ -0,0 +1,52 @@ +/* + * The Minimal snprintf() implementation + * + * Copyright (c) 2013 Michal Ludvig + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the auhor nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Courtey of https://github.com/mludvig/mini-printf + * stripped to reduce file size for agb needs + */ + +#ifndef __MINI_PRINTF__ +#define __MINI_PRINTF__ + +#include +#include "gba/types.h" + +#ifdef NDEBUG + +#define mini_vsnprintf(buffer, buffer_len, fmt, va) +#define mini_vpprintf(buf, fmt, va) + +#else + +s32 mini_vsnprintf(char* buffer, u32 buffer_len, const char *fmt, va_list va); +s32 mini_vpprintf(void* buf, const char *fmt, va_list va); + +#endif +#endif diff --git a/include/party_menu.h b/include/party_menu.h index b00fd73240..afb320e18c 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -28,6 +28,7 @@ extern u8 gSelectedOrderFromParty[MAX_FRONTIER_PARTY_SIZE]; extern u8 gBattlePartyCurrentOrder[PARTY_SIZE / 2]; extern void (*gItemUseCB)(u8, TaskFunc); +extern const struct SpriteTemplate gSpriteTemplate_StatusIcons; void AnimatePartySlot(u8 slot, u8 animNum); bool8 IsMultiBattle(void); @@ -45,6 +46,7 @@ bool8 FieldCallback_PrepareFadeInFromMenu(void); void CB2_ReturnToPartyMenuFromFlyMap(void); void LoadHeldItemIcons(void); void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); +void LoadPartyMenuAilmentGfx(void); void CB2_ShowPartyMenuForItemUse(void); void ItemUseCB_Medicine(u8 taskId, TaskFunc task); void ItemUseCB_AbilityCapsule(u8 taskId, TaskFunc task); @@ -55,7 +57,7 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc task); u16 ItemIdToBattleMoveId(u16 item); bool8 IsMoveHm(u16 move); bool8 MonKnowsMove(struct Pokemon *mon, u16 move); -bool8 BoxMonKnowsMove(struct BoxPokemon *mon, u16 move); +bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move); void ItemUseCB_TMHM(u8 taskId, TaskFunc task); void ItemUseCB_RareCandy(u8 taskId, TaskFunc task); void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); diff --git a/include/pokemon.h b/include/pokemon.h index ee28985700..2f29911399 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -324,7 +324,7 @@ struct BaseStats u8 safariZoneFleeRate; u8 bodyColor : 7; u8 noFlip : 1; - u8 flags; + u16 flags; }; #include "constants/battle_config.h" diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index fba6a6740a..6e27689f91 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -23,6 +23,7 @@ void FreeAndDestroyMonIconSprite(struct Sprite *sprite); u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality); u8 UpdateMonIconFrame(struct Sprite *sprite); void LoadMonIconPalette(u16 species); +void LoadMonIconPalettePersonality(u16 species, u32 personality); void SpriteCB_MonIcon(struct Sprite *sprite); void SetPartyHPBarSprite(struct Sprite *sprite, u8 animNum); u8 GetMonIconPaletteIndexFromSpecies(u16 species); diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 4e9e62284d..d1d7c59839 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -11,7 +11,7 @@ extern const u8 *const gNatureNamePointers[]; void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove); -void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); +void ShowPokemonSummaryScreenHandleDeoxys(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)); u8 GetMoveSlotToReplace(void); void SummaryScreen_SetAnimDelayTaskId(u8 taskId); diff --git a/include/strings.h b/include/strings.h index 4c9f130f7b..3736adf9b0 100644 --- a/include/strings.h +++ b/include/strings.h @@ -464,6 +464,7 @@ extern const u8 gText_MailMessageWillBeLost[]; extern const u8 gText_MailTakenFromPkmn[]; extern const u8 gText_NoMoreThanVar1Pkmn[]; extern const u8 gText_PkmnCantBeTradedNow[]; +extern const u8 gText_PkmnCantBeTraded[]; extern const u8 gText_EggCantBeTradedNow[]; extern const u8 gText_OnlyPkmnForBattle[]; extern const u8 gJPText_AreYouSureYouWantToSpinTradeMon[]; diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 312ff853ca..b1154e7934 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -239,6 +239,87 @@ u8 ComputeBattleAiScores(u8 battler) return BattleAI_ChooseMoveOrAction(); } +static void CopyBattlerDataToAIParty(u32 bPosition, u32 side) +{ + u32 battler = GetBattlerAtPosition(bPosition); + struct AiPartyMon *aiMon = &AI_PARTY->mons[side][gBattlerPartyIndexes[battler]]; + struct BattlePokemon *bMon = &gBattleMons[battler]; + + aiMon->species = bMon->species; + aiMon->level = bMon->level; + aiMon->status = bMon->status1; + aiMon->gender = GetGenderFromSpeciesAndPersonality(bMon->species, bMon->personality); + aiMon->isFainted = FALSE; + aiMon->wasSentInBattle = TRUE; + aiMon->switchInCount++; +} + +void Ai_InitPartyStruct(void) +{ + u32 i; + + AI_PARTY->count[B_SIDE_PLAYER] = gPlayerPartyCount; + AI_PARTY->count[B_SIDE_OPPONENT] = gEnemyPartyCount; + + // Save first 2 or 4(in doubles) mons + CopyBattlerDataToAIParty(B_POSITION_PLAYER_LEFT, B_SIDE_PLAYER); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + CopyBattlerDataToAIParty(B_POSITION_PLAYER_RIGHT, B_SIDE_PLAYER); + + // If player's partner is AI, save opponent mons + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + CopyBattlerDataToAIParty(B_POSITION_OPPONENT_LEFT, B_SIDE_OPPONENT); + CopyBattlerDataToAIParty(B_POSITION_OPPONENT_RIGHT, B_SIDE_OPPONENT); + } + + // Find fainted mons + for (i = 0; i < AI_PARTY->count[B_SIDE_PLAYER]; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + AI_PARTY->mons[B_SIDE_PLAYER][i].isFainted = TRUE; + } +} + +void Ai_UpdateSwitchInData(u32 battler) +{ + u32 i; + u32 side = GetBattlerSide(battler); + struct AiPartyMon *aiMon = &AI_PARTY->mons[side][gBattlerPartyIndexes[battler]]; + + // See if the switched-in mon has been already in battle + if (aiMon->wasSentInBattle) + { + if (aiMon->ability) + BATTLE_HISTORY->abilities[battler] = aiMon->ability; + if (aiMon->heldEffect) + BATTLE_HISTORY->itemEffects[battler] = aiMon->heldEffect; + for (i = 0; i < MAX_MON_MOVES; i++) + { + if (aiMon->moves[i]) + BATTLE_HISTORY->usedMoves[battler][i] = aiMon->moves[i]; + } + aiMon->switchInCount++; + aiMon->status = gBattleMons[battler].status1; // Copy status, because it could've been changed in battle. + } + else // If not, copy the newly switched-in mon in battle and clear battle history. + { + ClearBattlerMoveHistory(battler); + ClearBattlerAbilityHistory(battler); + ClearBattlerItemEffectHistory(battler); + CopyBattlerDataToAIParty(GetBattlerPosition(battler), side); + } +} + +void Ai_UpdateFaintData(u32 battler) +{ + struct AiPartyMon *aiMon = &AI_PARTY->mons[GET_BATTLER_SIDE(battler)][gBattlerPartyIndexes[battler]]; + ClearBattlerMoveHistory(battler); + ClearBattlerAbilityHistory(battler); + ClearBattlerItemEffectHistory(battler); + aiMon->isFainted = TRUE; +} + static void SetBattlerAiData(u8 battlerId) { AI_DATA->abilities[battlerId] = AI_GetAbility(battlerId); @@ -258,8 +339,7 @@ void GetAiLogicData(void) memset(AI_DATA, 0, sizeof(struct AiLogicData)); - if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER)) - && !IsWildMonSmart()) + if (!(gBattleTypeFlags & BATTLE_TYPE_HAS_AI) && !IsWildMonSmart()) return; // get/assume all battler data diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 6f5de84c40..5876e8b474 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -312,7 +312,9 @@ static bool8 ShouldSwitchIfGameStatePrompt(void) switchMon = FALSE; //Checks to see if active Pokemon can do something against sleep - if (monAbility == (ABILITY_NATURAL_CURE | ABILITY_SHED_SKIN | ABILITY_EARLY_BIRD) + if ((monAbility == ABILITY_NATURAL_CURE + || monAbility == ABILITY_SHED_SKIN + || monAbility == ABILITY_EARLY_BIRD) || holdEffect == (HOLD_EFFECT_CURE_SLP | HOLD_EFFECT_CURE_STATUS) || HasMove(gActiveBattler, MOVE_SLEEP_TALK) || (HasMoveEffect(gActiveBattler, MOVE_SNORE) && AI_GetTypeEffectiveness(MOVE_SNORE, gActiveBattler, opposingBattler) >= UQ_4_12(1.0)) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index e1654eb30c..344dd16577 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -499,6 +499,7 @@ void RecordKnownMove(u8 battlerId, u32 move) if (BATTLE_HISTORY->usedMoves[battlerId][i] == MOVE_NONE) { BATTLE_HISTORY->usedMoves[battlerId][i] = move; + AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].moves[i] = move; break; } } @@ -507,6 +508,7 @@ void RecordKnownMove(u8 battlerId, u32 move) void RecordAbilityBattle(u8 battlerId, u16 abilityId) { BATTLE_HISTORY->abilities[battlerId] = abilityId; + AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability = abilityId; } void ClearBattlerAbilityHistory(u8 battlerId) @@ -517,6 +519,7 @@ void ClearBattlerAbilityHistory(u8 battlerId) void RecordItemEffectBattle(u8 battlerId, u8 itemEffect) { BATTLE_HISTORY->itemEffects[battlerId] = itemEffect; + AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect = itemEffect; } void ClearBattlerItemEffectHistory(u8 battlerId) @@ -1160,6 +1163,10 @@ s32 AI_GetAbility(u32 battlerId) { u32 knownAbility = GetBattlerAbility(battlerId); + // We've had ability overwritten by e.g. Worry Seed. It is not part of AI_PARTY in case of switching + if (gBattleStruct->overwrittenAbilities[battlerId]) + return gBattleStruct->overwrittenAbilities[battlerId]; + // The AI knows its own ability. if (IsBattlerAIControlled(battlerId)) return knownAbility; diff --git a/src/battle_arena.c b/src/battle_arena.c index 82f6a47d05..7fb8b6e599 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -21,6 +21,7 @@ #include "util.h" #include "constants/songs.h" #include "constants/battle_arena.h" +#include "constants/battle_move_effects.h" #include "constants/battle_string_ids.h" #include "constants/battle_frontier.h" #include "constants/frontier_util.h" @@ -49,232 +50,6 @@ enum { ANIM_ICON_LINE, // Line segment for separating the score total at the bottom }; -// This table holds the number of points to add to the 'mind' score for each move. -// All moves with power != 0 give 1 point, with the following exceptions: -// - Counter, Mirror Coat, and Bide give 0 points -// - Fake Out subtracts 1 point -// All moves with power == 0 give 0 points, with the following exceptions: -// - Protect, Detect, and Endure subtract 1 point -static const s8 sMindRatings[MOVES_COUNT] = -{ - [MOVE_POUND] = 1, - [MOVE_KARATE_CHOP] = 1, - [MOVE_DOUBLE_SLAP] = 1, - [MOVE_COMET_PUNCH] = 1, - [MOVE_MEGA_PUNCH] = 1, - [MOVE_PAY_DAY] = 1, - [MOVE_FIRE_PUNCH] = 1, - [MOVE_ICE_PUNCH] = 1, - [MOVE_THUNDER_PUNCH] = 1, - [MOVE_SCRATCH] = 1, - [MOVE_VISE_GRIP] = 1, - [MOVE_GUILLOTINE] = 1, - [MOVE_RAZOR_WIND] = 1, - [MOVE_CUT] = 1, - [MOVE_GUST] = 1, - [MOVE_WING_ATTACK] = 1, - [MOVE_FLY] = 1, - [MOVE_BIND] = 1, - [MOVE_SLAM] = 1, - [MOVE_VINE_WHIP] = 1, - [MOVE_STOMP] = 1, - [MOVE_DOUBLE_KICK] = 1, - [MOVE_MEGA_KICK] = 1, - [MOVE_JUMP_KICK] = 1, - [MOVE_ROLLING_KICK] = 1, - [MOVE_HEADBUTT] = 1, - [MOVE_HORN_ATTACK] = 1, - [MOVE_FURY_ATTACK] = 1, - [MOVE_HORN_DRILL] = 1, - [MOVE_TACKLE] = 1, - [MOVE_BODY_SLAM] = 1, - [MOVE_WRAP] = 1, - [MOVE_TAKE_DOWN] = 1, - [MOVE_THRASH] = 1, - [MOVE_DOUBLE_EDGE] = 1, - [MOVE_POISON_STING] = 1, - [MOVE_TWINEEDLE] = 1, - [MOVE_PIN_MISSILE] = 1, - [MOVE_BITE] = 1, - [MOVE_SONIC_BOOM] = 1, - [MOVE_ACID] = 1, - [MOVE_EMBER] = 1, - [MOVE_FLAMETHROWER] = 1, - [MOVE_WATER_GUN] = 1, - [MOVE_HYDRO_PUMP] = 1, - [MOVE_SURF] = 1, - [MOVE_ICE_BEAM] = 1, - [MOVE_BLIZZARD] = 1, - [MOVE_PSYBEAM] = 1, - [MOVE_BUBBLE_BEAM] = 1, - [MOVE_AURORA_BEAM] = 1, - [MOVE_HYPER_BEAM] = 1, - [MOVE_PECK] = 1, - [MOVE_DRILL_PECK] = 1, - [MOVE_SUBMISSION] = 1, - [MOVE_LOW_KICK] = 1, - [MOVE_SEISMIC_TOSS] = 1, - [MOVE_STRENGTH] = 1, - [MOVE_ABSORB] = 1, - [MOVE_MEGA_DRAIN] = 1, - [MOVE_RAZOR_LEAF] = 1, - [MOVE_SOLAR_BEAM] = 1, - [MOVE_PETAL_DANCE] = 1, - [MOVE_DRAGON_RAGE] = 1, - [MOVE_FIRE_SPIN] = 1, - [MOVE_THUNDER_SHOCK] = 1, - [MOVE_THUNDERBOLT] = 1, - [MOVE_THUNDER] = 1, - [MOVE_ROCK_THROW] = 1, - [MOVE_EARTHQUAKE] = 1, - [MOVE_FISSURE] = 1, - [MOVE_DIG] = 1, - [MOVE_CONFUSION] = 1, - [MOVE_PSYCHIC] = 1, - [MOVE_QUICK_ATTACK] = 1, - [MOVE_RAGE] = 1, - [MOVE_NIGHT_SHADE] = 1, - [MOVE_SELF_DESTRUCT] = 1, - [MOVE_EGG_BOMB] = 1, - [MOVE_LICK] = 1, - [MOVE_SMOG] = 1, - [MOVE_SLUDGE] = 1, - [MOVE_BONE_CLUB] = 1, - [MOVE_FIRE_BLAST] = 1, - [MOVE_WATERFALL] = 1, - [MOVE_CLAMP] = 1, - [MOVE_SWIFT] = 1, - [MOVE_SKULL_BASH] = 1, - [MOVE_SPIKE_CANNON] = 1, - [MOVE_CONSTRICT] = 1, - [MOVE_HIGH_JUMP_KICK] = 1, - [MOVE_DREAM_EATER] = 1, - [MOVE_BARRAGE] = 1, - [MOVE_LEECH_LIFE] = 1, - [MOVE_SKY_ATTACK] = 1, - [MOVE_BUBBLE] = 1, - [MOVE_DIZZY_PUNCH] = 1, - [MOVE_PSYWAVE] = 1, - [MOVE_CRABHAMMER] = 1, - [MOVE_EXPLOSION] = 1, - [MOVE_FURY_SWIPES] = 1, - [MOVE_BONEMERANG] = 1, - [MOVE_ROCK_SLIDE] = 1, - [MOVE_HYPER_FANG] = 1, - [MOVE_TRI_ATTACK] = 1, - [MOVE_SUPER_FANG] = 1, - [MOVE_SLASH] = 1, - [MOVE_STRUGGLE] = 1, - [MOVE_TRIPLE_KICK] = 1, - [MOVE_THIEF] = 1, - [MOVE_FLAME_WHEEL] = 1, - [MOVE_SNORE] = 1, - [MOVE_FLAIL] = 1, - [MOVE_AEROBLAST] = 1, - [MOVE_REVERSAL] = 1, - [MOVE_POWDER_SNOW] = 1, - [MOVE_PROTECT] = -1, - [MOVE_MACH_PUNCH] = 1, - [MOVE_FEINT_ATTACK] = 1, - [MOVE_SLUDGE_BOMB] = 1, - [MOVE_MUD_SLAP] = 1, - [MOVE_OCTAZOOKA] = 1, - [MOVE_ZAP_CANNON] = 1, - [MOVE_ICY_WIND] = 1, - [MOVE_DETECT] = -1, - [MOVE_BONE_RUSH] = 1, - [MOVE_OUTRAGE] = 1, - [MOVE_GIGA_DRAIN] = 1, - [MOVE_ENDURE] = -1, - [MOVE_ROLLOUT] = 1, - [MOVE_FALSE_SWIPE] = 1, - [MOVE_SPARK] = 1, - [MOVE_FURY_CUTTER] = 1, - [MOVE_STEEL_WING] = 1, - [MOVE_RETURN] = 1, - [MOVE_PRESENT] = 1, - [MOVE_FRUSTRATION] = 1, - [MOVE_SACRED_FIRE] = 1, - [MOVE_MAGNITUDE] = 1, - [MOVE_DYNAMIC_PUNCH] = 1, - [MOVE_MEGAHORN] = 1, - [MOVE_DRAGON_BREATH] = 1, - [MOVE_PURSUIT] = 1, - [MOVE_RAPID_SPIN] = 1, - [MOVE_IRON_TAIL] = 1, - [MOVE_METAL_CLAW] = 1, - [MOVE_VITAL_THROW] = 1, - [MOVE_HIDDEN_POWER] = 1, - [MOVE_CROSS_CHOP] = 1, - [MOVE_TWISTER] = 1, - [MOVE_CRUNCH] = 1, - [MOVE_EXTREME_SPEED] = 1, - [MOVE_ANCIENT_POWER] = 1, - [MOVE_SHADOW_BALL] = 1, - [MOVE_FUTURE_SIGHT] = 1, - [MOVE_ROCK_SMASH] = 1, - [MOVE_WHIRLPOOL] = 1, - [MOVE_BEAT_UP] = 1, - [MOVE_FAKE_OUT] = -1, - [MOVE_UPROAR] = 1, - [MOVE_SPIT_UP] = 1, - [MOVE_HEAT_WAVE] = 1, - [MOVE_FACADE] = 1, - [MOVE_FOCUS_PUNCH] = 1, - [MOVE_SMELLING_SALTS] = 1, - [MOVE_SUPERPOWER] = 1, - [MOVE_REVENGE] = 1, - [MOVE_BRICK_BREAK] = 1, - [MOVE_KNOCK_OFF] = 1, - [MOVE_ENDEAVOR] = 1, - [MOVE_ERUPTION] = 1, - [MOVE_SECRET_POWER] = 1, - [MOVE_DIVE] = 1, - [MOVE_ARM_THRUST] = 1, - [MOVE_LUSTER_PURGE] = 1, - [MOVE_MIST_BALL] = 1, - [MOVE_BLAZE_KICK] = 1, - [MOVE_ICE_BALL] = 1, - [MOVE_NEEDLE_ARM] = 1, - [MOVE_HYPER_VOICE] = 1, - [MOVE_POISON_FANG] = 1, - [MOVE_CRUSH_CLAW] = 1, - [MOVE_BLAST_BURN] = 1, - [MOVE_HYDRO_CANNON] = 1, - [MOVE_METEOR_MASH] = 1, - [MOVE_ASTONISH] = 1, - [MOVE_WEATHER_BALL] = 1, - [MOVE_AIR_CUTTER] = 1, - [MOVE_OVERHEAT] = 1, - [MOVE_ROCK_TOMB] = 1, - [MOVE_SILVER_WIND] = 1, - [MOVE_WATER_SPOUT] = 1, - [MOVE_SIGNAL_BEAM] = 1, - [MOVE_SHADOW_PUNCH] = 1, - [MOVE_EXTRASENSORY] = 1, - [MOVE_SKY_UPPERCUT] = 1, - [MOVE_SAND_TOMB] = 1, - [MOVE_SHEER_COLD] = 1, - [MOVE_MUDDY_WATER] = 1, - [MOVE_BULLET_SEED] = 1, - [MOVE_AERIAL_ACE] = 1, - [MOVE_ICICLE_SPEAR] = 1, - [MOVE_DRAGON_CLAW] = 1, - [MOVE_FRENZY_PLANT] = 1, - [MOVE_BOUNCE] = 1, - [MOVE_MUD_SHOT] = 1, - [MOVE_POISON_TAIL] = 1, - [MOVE_COVET] = 1, - [MOVE_VOLT_TACKLE] = 1, - [MOVE_MAGICAL_LEAF] = 1, - [MOVE_LEAF_BLADE] = 1, - [MOVE_ROCK_BLAST] = 1, - [MOVE_SHOCK_WAVE] = 1, - [MOVE_WATER_PULSE] = 1, - [MOVE_DOOM_DESIRE] = 1, - [MOVE_PSYCHO_BOOST] = 1, -}; - static const struct OamData sOam_JudgmentIcon = { .y = 0, @@ -582,7 +357,26 @@ void BattleArena_InitPoints(void) void BattleArena_AddMindPoints(u8 battler) { - gBattleStruct->arenaMindPoints[battler] += sMindRatings[gCurrentMove]; +// All moves with power != 0 give 1 point, with the following exceptions: +// - Counter, Mirror Coat, and Bide give 0 points +// - Fake Out subtracts 1 point +// All moves with power == 0 give 0 points, with the following exceptions: +// - Protect, Detect, and Endure subtract 1 point + + if (gBattleMoves[gCurrentMove].effect == EFFECT_FAKE_OUT + || gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT + || gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) + { + gBattleStruct->arenaMindPoints[battler]--; + } + else if (gBattleMoves[gCurrentMove].power != 0 + && gBattleMoves[gCurrentMove].effect != EFFECT_COUNTER + && gBattleMoves[gCurrentMove].effect != EFFECT_MIRROR_COAT + && gBattleMoves[gCurrentMove].effect != EFFECT_METAL_BURST + && gBattleMoves[gCurrentMove].effect != EFFECT_BIDE) + { + gBattleStruct->arenaMindPoints[battler]++; + } } void BattleArena_AddSkillPoints(u8 battler) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 6e9cdcc25a..4be3426402 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -331,7 +331,7 @@ static void HandleInputChooseAction(void) SwapHpBarsWithHpText(); } #if B_ENABLE_DEBUG == TRUE - else if (gMain.newKeys & SELECT_BUTTON) + else if (JOY_NEW(SELECT_BUTTON)) { BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_DEBUG, 0); PlayerBufferExecCompleted(); @@ -543,7 +543,7 @@ static void HandleInputShowEntireFieldTargets(void) HideMegaTriggerSprite(); PlayerBufferExecCompleted(); } - else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59) + else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) { PlaySE(SE_SELECT); HideAllTargets(); @@ -572,7 +572,7 @@ static void HandleInputShowTargets(void) TryHideLastUsedBall(); PlayerBufferExecCompleted(); } - else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59) + else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) { PlaySE(SE_SELECT); HideShownTargets(); @@ -597,12 +597,12 @@ static void HandleInputChooseMove(void) u32 canSelectTarget = 0; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]); - if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A) + if (JOY_HELD(DPAD_ANY) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A) gPlayerDpadHoldFrames++; else gPlayerDpadHoldFrames = 0; - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if (moveInfo->moves[gMoveSelectionCursor[gActiveBattler]] == MOVE_CURSE) diff --git a/src/battle_debug.c b/src/battle_debug.c index 8e869df9cb..4450fe0cba 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -7,6 +7,7 @@ #include "menu_helpers.h" #include "scanline_effect.h" #include "palette.h" +#include "party_menu.h" #include "pokemon_icon.h" #include "sprite.h" #include "item.h" @@ -30,6 +31,7 @@ #include "reset_rtc_screen.h" #include "reshow_battle_screen.h" #include "constants/abilities.h" +#include "constants/party_menu.h" #include "constants/moves.h" #include "constants/items.h" #include "constants/rgb.h" @@ -43,8 +45,8 @@ struct BattleDebugModifyArrows u16 minValue; u16 maxValue; int currValue; - u8 currentDigit; - u8 maxDigits; + u8 currentDigit:4; + u8 maxDigits:4; u8 charDigits[MAX_MODIFY_DIGITS]; void *modifiedValPtr; u8 typeOfVal; @@ -52,7 +54,9 @@ struct BattleDebugModifyArrows struct BattleDebugMenu { - u8 battlerId; + u8 battlerId:2; + u8 aiBattlerId:2; + u8 battlerWindowId; u8 mainListWindowId; @@ -72,11 +76,16 @@ struct BattleDebugMenu const struct BitfieldInfo *bitfield; bool8 battlerWasChanged[MAX_BATTLERS_COUNT]; - u8 aiBattlerId; u8 aiViewState; - u8 aiIconSpriteIds[MAX_BATTLERS_COUNT]; + u8 aiMonSpriteId; u8 aiMovesWindowId; + + union + { + u8 aiIconSpriteIds[MAX_BATTLERS_COUNT]; + u8 aiPartyIcons[PARTY_SIZE]; + } spriteIds; }; struct __attribute__((__packed__)) BitfieldInfo @@ -102,6 +111,7 @@ enum LIST_ITEM_AI, LIST_ITEM_AI_MOVES_PTS, LIST_ITEM_AI_INFO, + LIST_ITEM_AI_PARTY, LIST_ITEM_VARIOUS, LIST_ITEM_COUNT }; @@ -234,6 +244,7 @@ static const u8 sText_Unknown[] = _("Unknown"); static const u8 sText_InLove[] = _("In Love"); static const u8 sText_AIMovePts[] = _("AI Pts/Dmg"); static const u8 sText_AiKnowledge[] = _("AI Info"); +static const u8 sText_AiParty[] = _("AI Party"); static const u8 sText_EffectOverride[] = _("Effect Override"); static const u8 sText_EmptyString[] = _(""); @@ -340,6 +351,7 @@ static const struct ListMenuItem sMainListItems[] = {sText_AI, LIST_ITEM_AI}, {sText_AIMovePts, LIST_ITEM_AI_MOVES_PTS}, {sText_AiKnowledge, LIST_ITEM_AI_INFO}, + {sText_AiParty, LIST_ITEM_AI_PARTY}, {sText_Various, LIST_ITEM_VARIOUS}, }; @@ -610,6 +622,7 @@ static void UpdateMonData(struct BattleDebugMenu *data); static u8 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus, bool32 statusTrue); static bool32 TryMoveDigit(struct BattleDebugModifyArrows *modArrows, bool32 moveUp); static void SwitchToDebugView(u8 taskId); +static void SwitchToDebugViewFromAiParty(u8 taskId); // code static struct BattleDebugMenu *GetStructPtr(u8 taskId) @@ -715,7 +728,7 @@ void CB2_BattleDebugMenu(void) static void PutMovesPointsText(struct BattleDebugMenu *data) { u32 i, j, count, battlerDef; - u8 *text = malloc(0x50); + u8 *text = Alloc(0x50); FillWindowPixelBuffer(data->aiMovesWindowId, 0x11); for (i = 0; i < MAX_MON_MOVES; i++) @@ -725,9 +738,9 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) AddTextPrinterParameterized(data->aiMovesWindowId, 1, text, 0, i * 15, 0, NULL); for (count = 0, j = 0; j < MAX_BATTLERS_COUNT; j++) { - if (data->aiIconSpriteIds[j] == 0xFF) + if (data->spriteIds.aiIconSpriteIds[j] == 0xFF) continue; - battlerDef = gSprites[data->aiIconSpriteIds[j]].data[0]; + battlerDef = gSprites[data->spriteIds.aiIconSpriteIds[j]].data[0]; ConvertIntToDecimalStringN(text, gBattleStruct->aiFinalScore[data->aiBattlerId][battlerDef][i], STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -743,7 +756,7 @@ static void PutMovesPointsText(struct BattleDebugMenu *data) } CopyWindowToVram(data->aiMovesWindowId, 3); - free(text); + Free(text); } static void Task_ShowAiPoints(u8 taskId) @@ -771,15 +784,15 @@ static void Task_ShowAiPoints(u8 taskId) { if (i != data->aiBattlerId && IsBattlerAlive(i)) { - data->aiIconSpriteIds[i] = CreateMonIcon(gBattleMons[i].species, + data->spriteIds.aiIconSpriteIds[i] = CreateMonIcon(gBattleMons[i].species, SpriteCallbackDummy, 95 + (count * 60), 17, 0, 0); - gSprites[data->aiIconSpriteIds[i]].data[0] = i; // battler id + gSprites[data->spriteIds.aiIconSpriteIds[i]].data[0] = i; // battler id count++; } else { - data->aiIconSpriteIds[i] = 0xFF; + data->spriteIds.aiIconSpriteIds[i] = 0xFF; } } data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species, @@ -800,7 +813,7 @@ static void Task_ShowAiPoints(u8 taskId) break; // Input case 2: - if (gMain.newKeys & (SELECT_BUTTON | B_BUTTON)) + if (JOY_NEW(SELECT_BUTTON | B_BUTTON)) { SwitchToDebugView(taskId); HideBg(1); @@ -823,10 +836,11 @@ static const u8 *const sAiInfoItemNames[] = sText_HeldItem, sText_HoldEffect, }; + static void PutAiInfoText(struct BattleDebugMenu *data) { u32 i, j, count; - u8 *text = malloc(0x50); + u8 *text = Alloc(0x50); FillWindowPixelBuffer(data->aiMovesWindowId, 0x11); @@ -852,7 +866,54 @@ static void PutAiInfoText(struct BattleDebugMenu *data) } CopyWindowToVram(data->aiMovesWindowId, 3); - free(text); + Free(text); +} + +static void PutAiPartyText(struct BattleDebugMenu *data) +{ + u32 i, j, count; + u8 *text = Alloc(0x50), *txtPtr; + struct AiPartyMon *aiMons = AI_PARTY->mons[GET_BATTLER_SIDE(data->aiBattlerId)]; + + FillWindowPixelBuffer(data->aiMovesWindowId, 0x11); + count = AI_PARTY->count[GET_BATTLER_SIDE(data->aiBattlerId)]; + for (i = 0; i < count; i++) + { + if (aiMons[i].wasSentInBattle) + { + text[0] = CHAR_LV; + txtPtr = ConvertIntToDecimalStringN(text + 1, aiMons[i].level, STR_CONV_MODE_LEFT_ALIGN, 3); + *txtPtr++ = CHAR_SPACE; + if (aiMons[i].gender == MON_MALE) + *txtPtr++ = CHAR_MALE; + else if (aiMons[i].gender == MON_FEMALE) + *txtPtr++ = CHAR_FEMALE; + *txtPtr = EOS; + AddTextPrinterParameterized5(data->aiMovesWindowId, FONT_SMALL_NARROW, text, i * 41, 0, 0, NULL, 0, 0); + } + + txtPtr = StringCopyN(text, gAbilityNames[aiMons[i].ability], 7); // The screen is too small to fit the whole string, so we need to drop the last letters. + *txtPtr = EOS; + AddTextPrinterParameterized5(data->aiMovesWindowId, FONT_SMALL_NARROW, text, i * 41, 15, 0, NULL, 0, 0); + + for (j = 0; j < MAX_MON_MOVES; j++) + { + txtPtr = StringCopyN(text, gMoveNames[aiMons[i].moves[j]], 8); + *txtPtr = EOS; + AddTextPrinterParameterized5(data->aiMovesWindowId, FONT_SMALL_NARROW, text, i * 41, 35 + j * 15, 0, NULL, 0, 0); + } + + txtPtr = StringCopyN(text, GetHoldEffectName(aiMons[i].heldEffect), 7); + *txtPtr = EOS; + AddTextPrinterParameterized5(data->aiMovesWindowId, FONT_SMALL_NARROW, text, i * 41, 35 + j * 15, 0, NULL, 0, 0); + + txtPtr = ConvertIntToDecimalStringN(text, aiMons[i].switchInCount, STR_CONV_MODE_LEFT_ALIGN, 2); + *txtPtr = EOS; + AddTextPrinterParameterized5(data->aiMovesWindowId, FONT_SMALL_NARROW, text, i * 41, 35 + (j + 1) * 15, 0, NULL, 0, 0); + } + + CopyWindowToVram(data->aiMovesWindowId, 3); + Free(text); } static void Task_ShowAiKnowledge(u8 taskId) @@ -880,15 +941,15 @@ static void Task_ShowAiKnowledge(u8 taskId) { if (GET_BATTLER_SIDE(i) == B_SIDE_PLAYER && IsBattlerAlive(i)) { - data->aiIconSpriteIds[i] = CreateMonIcon(gBattleMons[i].species, + data->spriteIds.aiIconSpriteIds[i] = CreateMonIcon(gBattleMons[i].species, SpriteCallbackDummy, 95 + (count * 80), 17, 0, 0); - gSprites[data->aiIconSpriteIds[i]].data[0] = i; // battler id + gSprites[data->spriteIds.aiIconSpriteIds[i]].data[0] = i; // battler id count++; } else { - data->aiIconSpriteIds[i] = 0xFF; + data->spriteIds.aiIconSpriteIds[i] = 0xFF; } } data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species, @@ -908,7 +969,7 @@ static void Task_ShowAiKnowledge(u8 taskId) break; // Input case 2: - if (gMain.newKeys & (SELECT_BUTTON | B_BUTTON)) + if (JOY_NEW(SELECT_BUTTON | B_BUTTON)) { SwitchToDebugView(taskId); HideBg(1); @@ -919,12 +980,102 @@ static void Task_ShowAiKnowledge(u8 taskId) } } +#define sConditionSpriteId data[1] + +static void Task_ShowAiParty(u8 taskId) +{ + u32 i, ailment; + struct WindowTemplate winTemplate; + struct AiPartyMon *aiMons; + struct BattleDebugMenu *data = GetStructPtr(taskId); + + switch (data->aiViewState) + { + case 0: + HideBg(0); + ShowBg(1); + + LoadMonIconPalettes(); + LoadPartyMenuAilmentGfx(); + data->aiBattlerId = data->battlerId; + aiMons = AI_PARTY->mons[GET_BATTLER_SIDE(data->aiBattlerId)]; + for (i = 0; i < AI_PARTY->count[GET_BATTLER_SIDE(data->aiBattlerId)]; i++) + { + u16 species = SPECIES_NONE; // Question mark + if (aiMons[i].wasSentInBattle && aiMons[i].species) + species = aiMons[i].species; + data->spriteIds.aiPartyIcons[i] = CreateMonIcon(species, SpriteCallbackDummy, (i * 41) + 15, 7, 1, 0); + gSprites[data->spriteIds.aiPartyIcons[i]].oam.priority = 0; + + gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId = CreateSprite(&gSpriteTemplate_StatusIcons, (i * 41) + 15, 7, 0); + gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId].oam.priority = 0; + if (aiMons[i].isFainted) + ailment = AILMENT_FNT; + else if (aiMons[i].status) + ailment = GetAilmentFromStatus(aiMons[i].status); + else + ailment = AILMENT_FNT + 1; // blank + StartSpriteAnim(&gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId], ailment - 1); + } + for (; i < PARTY_SIZE; i++) + data->spriteIds.aiPartyIcons[i] = 0xFF; + data->aiViewState++; + break; + // Put text + case 1: + winTemplate = CreateWindowTemplate(1, 0, 3, 29, 16, 15, 0x150); + data->aiMovesWindowId = AddWindow(&winTemplate); + PutWindowTilemap(data->aiMovesWindowId); + PutAiPartyText(data); + data->aiViewState++; + break; + // Input + case 2: + if (JOY_NEW(SELECT_BUTTON | B_BUTTON)) + { + SwitchToDebugViewFromAiParty(taskId); + HideBg(1); + ShowBg(0); + return; + } + break; + } +} + static void SwitchToAiInfoView(u8 taskId) { gTasks[taskId].func = Task_ShowAiKnowledge; GetStructPtr(taskId)->aiViewState = 0; } +static void SwitchToAiPartyView(u8 taskId) +{ + gTasks[taskId].func = Task_ShowAiParty; + GetStructPtr(taskId)->aiViewState = 0; +} + +static void SwitchToDebugViewFromAiParty(u8 taskId) +{ + u32 i; + struct BattleDebugMenu *data = GetStructPtr(taskId); + + FreeMonIconPalettes(); + for (i = 0; i < PARTY_SIZE; i++) + { + if (data->spriteIds.aiPartyIcons[i] != 0xFF) + { + DestroySpriteAndFreeResources(&gSprites[gSprites[data->spriteIds.aiPartyIcons[i]].sConditionSpriteId]); + FreeAndDestroyMonIconSprite(&gSprites[data->spriteIds.aiPartyIcons[i]]); + } + } + ClearWindowTilemap(data->aiMovesWindowId); + RemoveWindow(data->aiMovesWindowId); + + gTasks[taskId].func = Task_DebugMenuProcessInput; +} + +#undef sConditionSpriteId + static void SwitchToDebugView(u8 taskId) { u32 i; @@ -933,10 +1084,11 @@ static void SwitchToDebugView(u8 taskId) FreeMonIconPalettes(); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { - if (data->aiIconSpriteIds[i] != 0xFF) - FreeAndDestroyMonIconSprite(&gSprites[data->aiIconSpriteIds[i]]); + if (data->spriteIds.aiIconSpriteIds[i] != 0xFF) + FreeAndDestroyMonIconSprite(&gSprites[data->spriteIds.aiIconSpriteIds[i]]); } FreeAndDestroyMonPicSprite(data->aiMonSpriteId); + ClearWindowTilemap(data->aiMovesWindowId); RemoveWindow(data->aiMovesWindowId); gTasks[taskId].func = Task_DebugMenuProcessInput; @@ -954,7 +1106,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) struct BattleDebugMenu *data = GetStructPtr(taskId); // Exit the menu. - if (gMain.newKeys & SELECT_BUTTON) + if (JOY_NEW(SELECT_BUTTON)) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_DebugMenuFadeOut; @@ -962,13 +1114,13 @@ static void Task_DebugMenuProcessInput(u8 taskId) } // Try changing active battler. - if (gMain.newKeys & R_BUTTON) + if (JOY_NEW(R_BUTTON)) { if (data->battlerId++ == gBattlersCount - 1) data->battlerId = 0; UpdateWindowsOnChangedBattler(data); } - else if (gMain.newKeys & L_BUTTON) + else if (JOY_NEW(L_BUTTON)) { if (data->battlerId-- == 0) data->battlerId = gBattlersCount - 1; @@ -981,16 +1133,21 @@ static void Task_DebugMenuProcessInput(u8 taskId) listItemId = ListMenu_ProcessInput(data->mainListTaskId); if (listItemId != LIST_CANCEL && listItemId != LIST_NOTHING_CHOSEN && listItemId < LIST_ITEM_COUNT) { - if (listItemId == LIST_ITEM_AI_MOVES_PTS && gMain.newKeys & A_BUTTON) + if (listItemId == LIST_ITEM_AI_MOVES_PTS && JOY_NEW(A_BUTTON)) { SwitchToAiPointsView(taskId); return; } - else if (listItemId == LIST_ITEM_AI_INFO && gMain.newKeys & A_BUTTON) + else if (listItemId == LIST_ITEM_AI_INFO && JOY_NEW(A_BUTTON)) { SwitchToAiInfoView(taskId); return; } + else if (listItemId == LIST_ITEM_AI_PARTY && JOY_NEW(A_BUTTON)) + { + SwitchToAiPartyView(taskId); + return; + } data->currentMainListItemId = listItemId; // Create the secondary menu list. @@ -1025,14 +1182,14 @@ static void Task_DebugMenuProcessInput(u8 taskId) // Handle value modifying. else if (data->activeWindow == ACTIVE_WIN_MODIFY) { - if (gMain.newKeys & (B_BUTTON | A_BUTTON)) + if (JOY_NEW(B_BUTTON | A_BUTTON)) { ClearStdWindowAndFrameToTransparent(data->modifyWindowId, TRUE); RemoveWindow(data->modifyWindowId); DestroyModifyArrows(data); data->activeWindow = ACTIVE_WIN_SECONDARY; } - else if (gMain.newKeys & DPAD_RIGHT) + else if (JOY_NEW(DPAD_RIGHT)) { if (data->modifyArrows.currentDigit != (data->modifyArrows.maxDigits - 1)) { @@ -1041,7 +1198,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) gSprites[data->modifyArrows.arrowSpriteId[1]].x2 += 6; } } - else if (gMain.newKeys & DPAD_LEFT) + else if (JOY_NEW(DPAD_LEFT)) { if (data->modifyArrows.currentDigit != 0) { @@ -1050,7 +1207,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) gSprites[data->modifyArrows.arrowSpriteId[1]].x2 -= 6; } } - else if (gMain.newKeys & DPAD_UP) + else if (JOY_NEW(DPAD_UP)) { if (TryMoveDigit(&data->modifyArrows, TRUE)) { @@ -1059,7 +1216,7 @@ static void Task_DebugMenuProcessInput(u8 taskId) PrintSecondaryEntries(data); } } - else if (gMain.newKeys & DPAD_DOWN) + else if (JOY_NEW(DPAD_DOWN)) { if (TryMoveDigit(&data->modifyArrows, FALSE)) { diff --git a/src/battle_interface.c b/src/battle_interface.c index ebd7a3ab37..6c3daf8e9d 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -767,7 +767,9 @@ static void InitLastUsedBallAssets(void) // This function is here to cover a specific case - one player's mon in a 2 vs 1 double battle. In this scenario - display singles layout. u32 WhichBattleCoords(u32 battlerId) // 0 - singles, 1 - doubles { - if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT && gPlayerPartyCount == 1) + if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT + && gPlayerPartyCount == 1 + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) return 0; else return IsDoubleBattle(); diff --git a/src/battle_main.c b/src/battle_main.c index 97e1fe459e..e798796627 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -545,7 +545,7 @@ static void CB2_InitBattleInternal(void) ResetTasks(); DrawBattleEntryBackground(); FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 4; + gReservedSpritePaletteCount = MAX_BATTLERS_COUNT; SetVBlankCallback(VBlankCB_Battle); SetUpBattleVarsAndBirchZigzagoon(); @@ -2113,7 +2113,7 @@ void CB2_InitEndLinkBattle(void) DrawBattleEntryBackground(); SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 4; + gReservedSpritePaletteCount = MAX_BATTLERS_COUNT; SetVBlankCallback(VBlankCB_Battle); // Show end Vs screen with battle results @@ -2317,7 +2317,7 @@ static void CB2_InitAskRecordBattle(void) ResetSpriteData(); ResetTasks(); FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 4; + gReservedSpritePaletteCount = MAX_BATTLERS_COUNT; SetVBlankCallback(VBlankCB_Battle); SetMainCallback2(CB2_AskRecordBattle); BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); @@ -2940,6 +2940,7 @@ static void BattleStartClearSetData(void) gBattleStruct->lastTakenMoveFrom[i][3] = MOVE_NONE; gBattleStruct->AI_monToSwitchIntoId[i] = PARTY_SIZE; gBattleStruct->skyDropTargets[i] = 0xFF; + gBattleStruct->overwrittenAbilities[i] = ABILITY_NONE; } gLastUsedMove = 0; @@ -3126,10 +3127,10 @@ void SwitchInClearSetData(void) // Reset damage to prevent things like red card activating if the switched-in mon is holding it gSpecialStatuses[gActiveBattler].physicalDmg = 0; gSpecialStatuses[gActiveBattler].specialDmg = 0; + + gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; - ClearBattlerMoveHistory(gActiveBattler); - ClearBattlerAbilityHistory(gActiveBattler); - ClearBattlerItemEffectHistory(gActiveBattler); + Ai_UpdateSwitchInData(gActiveBattler); } void FaintClearSetData(void) @@ -3225,13 +3226,13 @@ void FaintClearSetData(void) gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; - ClearBattlerMoveHistory(gActiveBattler); - ClearBattlerAbilityHistory(gActiveBattler); - ClearBattlerItemEffectHistory(gActiveBattler); + Ai_UpdateFaintData(gActiveBattler); UndoFormChange(gBattlerPartyIndexes[gActiveBattler], GET_BATTLER_SIDE(gActiveBattler), FALSE); if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) UndoMegaEvolution(gBattlerPartyIndexes[gActiveBattler]); + gBattleStruct->overwrittenAbilities[gActiveBattler] = ABILITY_NONE; + // If the fainted mon was involved in a Sky Drop if (gBattleStruct->skyDropTargets[gActiveBattler] != 0xFF) { @@ -3590,7 +3591,8 @@ static void DoBattleIntro(void) gBattleStruct->switchInAbilitiesCounter = 0; gBattleStruct->switchInItemsCounter = 0; gBattleStruct->overworldWeatherDone = FALSE; - + GetAiLogicData(); // get assumed abilities, hold effects, etc of all battlers + Ai_InitPartyStruct(); // Save mons party counts, and first 2/4 mons on the battlefield. gBattleMainFunc = TryDoEventsBeforeFirstTurn; } break; diff --git a/src/battle_message.c b/src/battle_message.c index e56269eb5f..568aac774d 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -607,7 +607,7 @@ static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nit static const u8 sText_LastAbilityRaisedBuff1[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\nraised its {B_BUFF1}!"); static const u8 sText_MagicBounceActivates[] = _("The {B_DEF_NAME_WITH_PREFIX} bounced the\n{B_ATK_NAME_WITH_PREFIX} back!"); static const u8 sText_ProteanTypeChange[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed\nit into the {B_BUFF1} type!"); -static const u8 sText_SymbiosisItemPass[] = _("{B_ATK_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_SCR_ACTIVE_NAME_WITH_PREFIX} through {B_ATK_ABILITY}!"); +static const u8 sText_SymbiosisItemPass[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_ATK_NAME_WITH_PREFIX} through {B_LAST_ABILITY}!"); static const u8 sText_StealthRockDmg[] = _("Pointed stones dug into\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}!"); static const u8 sText_ToxicSpikesAbsorbed[] = _("The poison spikes disappeared\nfrom around the opposing team's feet!"); static const u8 sText_ToxicSpikesPoisoned[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was poisoned!"); diff --git a/src/battle_pike.c b/src/battle_pike.c index 3519bb2ce2..f863282427 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -1091,7 +1091,7 @@ static u8 GetNextRoomType(void) } nextRoomType = roomCandidates[Random() % numRoomCandidates]; - free(roomCandidates); + Free(roomCandidates); if (nextRoomType == PIKE_ROOM_STATUS) TryInflictRandomStatus(); @@ -1370,7 +1370,7 @@ static void SetHintedRoom(void) } gSaveBlock2Ptr->frontier.pikeHintedRoomType = roomCandidates[Random() % count]; - free(roomCandidates); + Free(roomCandidates); if (gSaveBlock2Ptr->frontier.pikeHintedRoomType == PIKE_ROOM_STATUS && !AtLeastOneHealthyMon()) gSaveBlock2Ptr->frontier.pikeHintedRoomType = PIKE_ROOM_NPC; if (gSaveBlock2Ptr->frontier.pikeHintedRoomType == PIKE_ROOM_DOUBLE_BATTLE && !AtLeastTwoAliveMons()) diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index d1f418ccbe..2c1e20d0d4 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1568,7 +1568,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio } } RunOnLoadMapScript(); - free(floorLayoutOffsets); + Free(floorLayoutOffsets); } void LoadBattlePyramidObjectEventTemplates(void) @@ -1697,7 +1697,7 @@ static void SetPyramidObjectPositionsUniformly(u8 objType) } while (!(bits & 4) && TrySetPyramidObjectEventPositionInSquare(objType, floorLayoutOffsets, squareId, objectStartIndex + i)); bits &= 1; } - free(floorLayoutOffsets); + Free(floorLayoutOffsets); } static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId) @@ -1760,7 +1760,7 @@ static bool8 SetPyramidObjectPositionsInAndNearSquare(u8 objType, u8 squareId) r7 &= 1; } #ifdef BUGFIX - free(floorLayoutOffsets); + Free(floorLayoutOffsets); #endif return (numObjects / 2) > numPlacedObjects; @@ -1814,7 +1814,7 @@ static bool8 SetPyramidObjectPositionsNearSquare(u8 objType, u8 squareId) break; } #ifdef BUGFIX - free(floorLayoutOffsets); + Free(floorLayoutOffsets); #endif return (numObjects / 2) > numPlacedObjects; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index f5884d206d..8057ea067f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -317,6 +317,7 @@ static void PutMonIconOnLvlUpBanner(void); static void DrawLevelUpBannerText(void); static void SpriteCB_MonIconOnLvlUpBanner(struct Sprite *sprite); static bool32 CriticalCapture(u32 odds); +static void BestowItem(u32 battlerAtk, u32 battlerDef); static void Cmd_attackcanceler(void); static void Cmd_accuracycheck(void); @@ -5084,6 +5085,15 @@ static bool32 TryKnockOffBattleScript(u32 battlerDef) return FALSE; } +#define SYMBIOSIS_CHECK(battler, ally) \ + GetBattlerAbility(ally) == ABILITY_SYMBIOSIS \ + && gBattleMons[battler].item == ITEM_NONE \ + && gBattleMons[ally].item != ITEM_NONE \ + && CanBattlerGetOrLoseItem(battler, gBattleMons[ally].item) \ + && CanBattlerGetOrLoseItem(ally, gBattleMons[ally].item) \ + && gBattleMons[battler].hp != 0 \ + && gBattleMons[ally].hp != 0 + static u32 GetNextTarget(u32 moveTarget) { u32 i; @@ -5748,13 +5758,11 @@ static void Cmd_moveend(void) switch (gBattleMons[i].species) { case SPECIES_CASTFORM: - case SPECIES_CHERRIM: -#ifdef POKEMON_EXPANSION case SPECIES_CASTFORM_RAINY: case SPECIES_CASTFORM_SNOWY: case SPECIES_CASTFORM_SUNNY: + case SPECIES_CHERRIM: case SPECIES_CHERRIM_SUNSHINE: -#endif effect = TryWeatherFormChange(i); if (effect) { @@ -5766,6 +5774,26 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; + case MOVEEND_SYMBIOSIS: + for (i = 0; i < gBattlersCount; i++) + { + if ((gSpecialStatuses[i].berryReduced + #if B_SYMBIOSIS_GEMS >= GEN_7 + || gSpecialStatuses[i].gemBoost + #endif + ) && SYMBIOSIS_CHECK(i, BATTLE_PARTNER(i))) + { + BestowItem(BATTLE_PARTNER(i), i); + gLastUsedAbility = gBattleMons[BATTLE_PARTNER(i)].ability; + gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(i); + gBattlerAttacker = i; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; + effect = TRUE; + } + } + gBattleScripting.moveendState++; + break; case MOVEEND_CLEAR_BITS: // Clear/Set bits for things like using a move for all targets and all hits. if (gSpecialStatuses[gBattlerAttacker].instructedChosenTarget) *(gBattleStruct->moveTarget + gBattlerAttacker) = gSpecialStatuses[gBattlerAttacker].instructedChosenTarget & 0x3; @@ -7244,6 +7272,49 @@ static bool32 TryCheekPouch(u32 battlerId, u32 itemId) return FALSE; } +// Used by Bestow and Symbiosis to take an item from one battler and give to another. +static void BestowItem(u32 battlerAtk, u32 battlerDef) +{ + gLastUsedItem = gBattleMons[battlerAtk].item; + + gActiveBattler = battlerAtk; + gBattleMons[battlerAtk].item = ITEM_NONE; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerAtk].item), &gBattleMons[battlerAtk].item); + MarkBattlerForControllerExec(battlerAtk); + CheckSetUnburden(battlerAtk); + + gActiveBattler = battlerDef; + gBattleMons[battlerDef].item = gLastUsedItem; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[battlerDef].item), &gBattleMons[battlerDef].item); + MarkBattlerForControllerExec(battlerDef); + gBattleResources->flags->flags[battlerDef] &= ~RESOURCE_FLAG_UNBURDEN; +} + +// Called by Cmd_removeitem. itemId represents the item that was removed, not being given. +static bool32 TrySymbiosis(u32 battler, u32 itemId) +{ + if (!gBattleStruct->itemStolen[gBattlerPartyIndexes[battler]].stolen + && gBattleStruct->changedItems[battler] == ITEM_NONE + && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_EJECT_BUTTON + && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_EJECT_PACK + #if B_SYMBIOSIS_GEMS >= GEN_7 + && !(gSpecialStatuses[battler].gemBoost) + #endif + && gCurrentMove != MOVE_FLING //Fling and damage-reducing berries are handled separately. + && !gSpecialStatuses[battler].berryReduced + && SYMBIOSIS_CHECK(battler, BATTLE_PARTNER(battler))) + { + BestowItem(BATTLE_PARTNER(battler), battler); + gLastUsedAbility = gBattleMons[BATTLE_PARTNER(battler)].ability; + gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(battler); + gBattlerAttacker = battler; + BattleScriptPush(gBattlescriptCurrInstr + 2); + gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; + return TRUE; + } + return FALSE; +} + static void Cmd_removeitem(void) { u16 itemId = 0; @@ -7262,7 +7333,7 @@ static void Cmd_removeitem(void) MarkBattlerForControllerExec(gActiveBattler); ClearBattlerItemEffectHistory(gActiveBattler); - if (!TryCheekPouch(gActiveBattler, itemId)) + if (!TryCheekPouch(gActiveBattler, itemId) && !TrySymbiosis(gActiveBattler, itemId)) gBattlescriptCurrInstr += 2; } @@ -7950,6 +8021,38 @@ static bool32 CourtChangeSwapSideStatuses(void) SWAP(sideTimerPlayer->stickyWebBattlerSide, sideTimerOpp->stickyWebBattlerSide, temp); } +static bool32 CanTeleport(u8 battlerId) +{ + struct Pokemon* party = NULL; + u32 species, count, i; + + if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + for (i = 0; i < PARTY_SIZE; i++) + { + species = GetMonData(&party[i], MON_DATA_SPECIES2); + if (species != SPECIES_NONE && species != SPECIES_EGG && GetMonData(&party[i], MON_DATA_HP) != 0) + count++; + } + + switch (GetBattlerSide(battlerId)) + { + case B_SIDE_OPPONENT: + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + return FALSE; + break; + case B_SIDE_PLAYER: + if (count == 1 || (count <= 2 && gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return FALSE; + break; + } + + return TRUE; +} + static void Cmd_various(void) { struct Pokemon *mon; @@ -8081,8 +8184,7 @@ static void Cmd_various(void) gBattlescriptCurrInstr += 8; return; case VARIOUS_TRACE_ABILITY: - gBattleMons[gActiveBattler].ability = gBattleStruct->tracedAbility[gActiveBattler]; - RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability); + gBattleMons[gActiveBattler].ability = gBattleStruct->overwrittenAbilities[gActiveBattler] = gBattleStruct->tracedAbility[gActiveBattler]; break; case VARIOUS_TRY_ILLUSION_OFF: if (GetIllusionMonPtr(gActiveBattler) != NULL) @@ -8557,7 +8659,7 @@ static void Cmd_various(void) if (gBattleMons[gBattlerTarget].ability == ABILITY_NEUTRALIZING_GAS) gSpecialStatuses[gBattlerTarget].neutralizingGasRemoved = TRUE; - gBattleMons[gBattlerTarget].ability = ABILITY_SIMPLE; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = ABILITY_SIMPLE; gBattlescriptCurrInstr += 7; } return; @@ -8575,7 +8677,7 @@ static void Cmd_various(void) } else { - gBattleMons[gBattlerTarget].ability = gBattleMons[gBattlerAttacker].ability; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gBattleMons[gBattlerAttacker].ability; gBattlescriptCurrInstr += 7; } return; @@ -9045,20 +9147,7 @@ static void Cmd_various(void) } else { - gLastUsedItem = gBattleMons[gBattlerAttacker].item; - - gActiveBattler = gBattlerAttacker; - gBattleMons[gActiveBattler].item = ITEM_NONE; - BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].item), &gBattleMons[gActiveBattler].item); - MarkBattlerForControllerExec(gActiveBattler); - CheckSetUnburden(gBattlerAttacker); - - gActiveBattler = gBattlerTarget; - gBattleMons[gActiveBattler].item = gLastUsedItem; - BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].item), &gBattleMons[gActiveBattler].item); - MarkBattlerForControllerExec(gActiveBattler); - gBattleResources->flags->flags[gBattlerTarget] &= ~RESOURCE_FLAG_UNBURDEN; - + BestowItem(gBattlerAttacker, gBattlerTarget); gBattlescriptCurrInstr += 7; } return; @@ -9788,6 +9877,27 @@ static void Cmd_various(void) case VARIOUS_SWAP_SIDE_STATUSES: CourtChangeSwapSideStatuses(); break; + case VARIOUS_TRY_SYMBIOSIS: //called by Bestow, Fling, and Bug Bite, which don't work with Cmd_removeitem. + if (SYMBIOSIS_CHECK(gActiveBattler, BATTLE_PARTNER(gActiveBattler))) + { + BestowItem(BATTLE_PARTNER(gActiveBattler), gActiveBattler); + gLastUsedAbility = gBattleMons[BATTLE_PARTNER(gActiveBattler)].ability; + gBattleScripting.battler = gBattlerAbility = BATTLE_PARTNER(gActiveBattler); + gBattlerAttacker = gActiveBattler; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SymbiosisActivates; + return; + } + break; + case VARIOUS_CAN_TELEPORT: + gBattleCommunication[0] = CanTeleport(gActiveBattler); + break; + case VARIOUS_GET_BATTLER_SIDE: + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + gBattleCommunication[0] = B_SIDE_PLAYER; + else + gBattleCommunication[0] = B_SIDE_OPPONENT; + break; } // End of switch (gBattlescriptCurrInstr[2]) gBattlescriptCurrInstr += 3; @@ -11388,7 +11498,8 @@ static void Cmd_transformdataexecution(void) for (i = 0; i < offsetof(struct BattlePokemon, pp); i++) battleMonAttacker[i] = battleMonTarget[i]; - + + gBattleStruct->overwrittenAbilities[gBattlerAttacker] = GetBattlerAbility(gBattlerTarget); for (i = 0; i < MAX_MON_MOVES; i++) { if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].pp < 5) @@ -12912,7 +13023,7 @@ static void Cmd_trycopyability(void) else { gBattleScripting.abilityPopupOverwrite = gBattleMons[gBattlerAttacker].ability; - gBattleMons[gBattlerAttacker].ability = defAbility; + gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = defAbility; gLastUsedAbility = defAbility; gBattlescriptCurrInstr += 5; } @@ -13078,8 +13189,8 @@ static void Cmd_tryswapabilities(void) else { u16 abilityAtk = gBattleMons[gBattlerAttacker].ability; - gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability; - gBattleMons[gBattlerTarget].ability = abilityAtk; + gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = abilityAtk; gBattlescriptCurrInstr += 5; } @@ -13769,7 +13880,7 @@ u8 GetCatchingBattler(void) static void Cmd_handleballthrow(void) { - u8 ballMultiplier = 10; + u16 ballMultiplier = 100; s8 ballAddition = 0; if (gBattleControllerExecFlags) @@ -13801,33 +13912,33 @@ static void Cmd_handleballthrow(void) else catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate; - if (gBaseStats[gBattleMons[gBattlerTarget].species].flags & FLAG_ULTRA_BEAST) + if (gBaseStats[gBattleMons[gBattlerTarget].species].flags & SPECIES_FLAG_ULTRA_BEAST) { if (gLastUsedItem == ITEM_BEAST_BALL) - ballMultiplier = 50; + ballMultiplier = 500; else - ballMultiplier = 1; + ballMultiplier = 10; } else { switch (gLastUsedItem) { case ITEM_ULTRA_BALL: - ballMultiplier = 20; + ballMultiplier = 200; break; #if B_SPORT_BALL_MODIFIER <= GEN_7 case ITEM_SPORT_BALL: #endif case ITEM_GREAT_BALL: case ITEM_SAFARI_BALL: - ballMultiplier = 15; + ballMultiplier = 150; break; case ITEM_NET_BALL: if (IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_WATER) || IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_BUG)) #if B_NET_BALL_MODIFIER >= GEN_7 - ballMultiplier = 35; + ballMultiplier = 350; #else - ballMultiplier = 30; + ballMultiplier = 300; #endif break; case ITEM_DIVE_BALL: @@ -13836,75 +13947,75 @@ static void Cmd_handleballthrow(void) || gIsFishingEncounter || gIsSurfingEncounter #endif ) - ballMultiplier = 35; + ballMultiplier = 350; break; case ITEM_NEST_BALL: #if B_NEST_BALL_MODIFIER >= GEN_6 //((41 - Pokémon's level) ÷ 10)× if Pokémon's level is between 1 and 29, 1× otherwise. if (gBattleMons[gBattlerTarget].level < 30) - ballMultiplier = 41 - gBattleMons[gBattlerTarget].level; + ballMultiplier = 410 - (gBattleMons[gBattlerTarget].level * 10); #elif B_NEST_BALL_MODIFIER == GEN_5 //((41 - Pokémon's level) ÷ 10)×, minimum 1× if (gBattleMons[gBattlerTarget].level < 31) - ballMultiplier = 41 - gBattleMons[gBattlerTarget].level; + ballMultiplier = 410 - (gBattleMons[gBattlerTarget].level * 10); #else //((40 - Pokémon's level) ÷ 10)×, minimum 1× if (gBattleMons[gBattlerTarget].level < 40) { - ballMultiplier = 40 - gBattleMons[gBattlerTarget].level; - if (ballMultiplier <= 9) - ballMultiplier = 10; + ballMultiplier = 400 - (gBattleMons[gBattlerTarget].level * 10); + if (ballMultiplier <= 90) + ballMultiplier = 100; } #endif break; case ITEM_REPEAT_BALL: if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT)) #if B_REPEAT_BALL_MODIFIER >= GEN_7 - ballMultiplier = 35; + ballMultiplier = 350; #else - ballMultiplier = 30; + ballMultiplier = 300; #endif break; case ITEM_TIMER_BALL: #if B_TIMER_BALL_MODIFIER >= GEN_5 - ballMultiplier = (gBattleResults.battleTurnCounter * 3) + 10; + ballMultiplier = (gBattleResults.battleTurnCounter * 30) + 100; #else - ballMultiplier = gBattleResults.battleTurnCounter + 10; + ballMultiplier = (gBattleResults.battleTurnCounter * 10) + 100; #endif - if (ballMultiplier > 40) - ballMultiplier = 40; + if (ballMultiplier > 400) + ballMultiplier = 400; break; case ITEM_DUSK_BALL: RtcCalcLocalTime(); if ((gLocalTime.hours >= 20 && gLocalTime.hours <= 3) || gMapHeader.cave || gMapHeader.mapType == MAP_TYPE_UNDERGROUND) #if B_DUSK_BALL_MODIFIER >= GEN_7 - ballMultiplier = 30; + ballMultiplier = 300; #else - ballMultiplier = 35; + ballMultiplier = 350; #endif break; case ITEM_QUICK_BALL: if (gBattleResults.battleTurnCounter == 0) #if B_QUICK_BALL_MODIFIER >= GEN_5 - ballMultiplier = 50; + ballMultiplier = 500; #else - ballMultiplier = 40; + ballMultiplier = 400; #endif break; case ITEM_LEVEL_BALL: if (gBattleMons[gBattlerAttacker].level >= 4 * gBattleMons[gBattlerTarget].level) - ballMultiplier = 80; + ballMultiplier = 800; else if (gBattleMons[gBattlerAttacker].level > 2 * gBattleMons[gBattlerTarget].level) - ballMultiplier = 40; + ballMultiplier = 400; else if (gBattleMons[gBattlerAttacker].level > gBattleMons[gBattlerTarget].level) - ballMultiplier = 20; + ballMultiplier = 200; break; case ITEM_LURE_BALL: if (gIsFishingEncounter) #if B_LURE_BALL_MODIFIER >= GEN_7 - ballMultiplier = 50; + ballMultiplier = 500; #else - ballMultiplier = 30; + ballMultiplier = 300; #endif break; case ITEM_MOON_BALL: @@ -13912,7 +14023,7 @@ static void Cmd_handleballthrow(void) { if (gEvolutionTable[gBattleMons[gBattlerTarget].species][i].method == EVO_ITEM && gEvolutionTable[gBattleMons[gBattlerTarget].species][i].param == ITEM_MOON_STONE) - ballMultiplier = 40; + ballMultiplier = 400; } break; case ITEM_LOVE_BALL: @@ -13922,12 +14033,12 @@ static void Cmd_handleballthrow(void) u8 gender2 = GetMonGender(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]); if (gender1 != gender2 && gender1 != MON_GENDERLESS && gender2 != MON_GENDERLESS) - ballMultiplier = 80; + ballMultiplier = 800; } break; case ITEM_FAST_BALL: if (gBaseStats[gBattleMons[gBattlerTarget].species].baseSpeed >= 100) - ballMultiplier = 40; + ballMultiplier = 400; break; case ITEM_HEAVY_BALL: i = GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), 1); @@ -13965,13 +14076,13 @@ static void Cmd_handleballthrow(void) case ITEM_DREAM_BALL: #if B_DREAM_BALL_MODIFIER >= GEN_8 if (gBattleMons[gBattlerTarget].status1 & STATUS1_SLEEP || GetBattlerAbility(gBattlerTarget) == ABILITY_COMATOSE) - ballMultiplier = 40; + ballMultiplier = 400; #else - ballMultiplier = 10; + ballMultiplier = 100; #endif break; case ITEM_BEAST_BALL: - ballMultiplier = 1; + ballMultiplier = 10; break; } } @@ -13982,7 +14093,7 @@ static void Cmd_handleballthrow(void) else catchRate = catchRate + ballAddition; - odds = (catchRate * ballMultiplier / 10) + odds = (catchRate * ballMultiplier / 100) * (gBattleMons[gBattlerTarget].maxHP * 3 - gBattleMons[gBattlerTarget].hp * 2) / (3 * gBattleMons[gBattlerTarget].maxHP); @@ -14457,7 +14568,7 @@ static void Cmd_tryworryseed(void) } else { - gBattleMons[gBattlerTarget].ability = ABILITY_INSOMNIA; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = ABILITY_INSOMNIA; gBattlescriptCurrInstr += 5; } } diff --git a/src/battle_util.c b/src/battle_util.c index 64c2e75570..fe71189be5 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4224,7 +4224,7 @@ static u8 ForewarnChooseMove(u32 battler) u16 moveId; }; u32 i, j, bestId, count; - struct Forewarn *data = malloc(sizeof(struct Forewarn) * MAX_BATTLERS_COUNT * MAX_MON_MOVES); + struct Forewarn *data = Alloc(sizeof(struct Forewarn) * MAX_BATTLERS_COUNT * MAX_MON_MOVES); // Put all moves for (count = 0, i = 0; i < MAX_BATTLERS_COUNT; i++) @@ -4271,7 +4271,7 @@ static u8 ForewarnChooseMove(u32 battler) PREPARE_MOVE_BUFFER(gBattleTextBuff1, data[bestId].moveId) RecordKnownMove(gBattlerTarget, data[bestId].moveId); - free(data); + Free(data); } u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 moveArg) @@ -5209,7 +5209,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move && TARGET_TURN_DAMAGED && IsBattlerAlive(battler) // Had more than half of hp before, now has less - && gBattleStruct->hpBefore[battler] > gBattleMons[battler].maxHP / 2 + && gBattleStruct->hpBefore[battler] >= gBattleMons[battler].maxHP / 2 && gBattleMons[battler].hp < gBattleMons[battler].maxHP / 2 && (gMultiHitCounter == 0 || gMultiHitCounter == 1) && !(TestSheerForceFlag(gBattlerAttacker, gCurrentMove)) @@ -5294,7 +5294,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move case ABILITY_STANCE_CHANGE: break; default: - gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = ABILITY_MUMMY; + gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = ABILITY_MUMMY; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MummyActivates; effect++; @@ -5326,10 +5326,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move break; default: gLastUsedAbility = gBattleMons[gBattlerAttacker].ability; - gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability; - gBattleMons[gBattlerTarget].ability = gLastUsedAbility; - RecordAbilityBattle(gBattlerAttacker, gBattleMons[gBattlerAttacker].ability); - RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); + gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gLastUsedAbility; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_WanderingSpiritActivates; effect++; @@ -5941,6 +5939,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 move } gBattleResources->flags->flags[i] &= ~RESOURCE_FLAG_TRACED; gBattleStruct->tracedAbility[i] = gLastUsedAbility = gBattleMons[gActiveBattler].ability; + RecordAbilityBattle(gActiveBattler, gLastUsedAbility); // Record the opposing battler has this ability battler = gBattlerAbility = gBattleScripting.battler = i; PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]) diff --git a/src/battle_util2.c b/src/battle_util2.c index 7bc1459d89..0f04a6eb4e 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -27,6 +27,7 @@ void AllocateBattleResources(void) gBattleResources->beforeLvlUp = AllocZeroed(sizeof(*gBattleResources->beforeLvlUp)); gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai)); gBattleResources->aiData = AllocZeroed(sizeof(*gBattleResources->aiData)); + gBattleResources->aiParty = AllocZeroed(sizeof(*gBattleResources->aiParty)); gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory)); gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); @@ -59,6 +60,7 @@ void FreeBattleResources(void) FREE_AND_SET_NULL(gBattleResources->beforeLvlUp); FREE_AND_SET_NULL(gBattleResources->ai); FREE_AND_SET_NULL(gBattleResources->aiData); + FREE_AND_SET_NULL(gBattleResources->aiParty); FREE_AND_SET_NULL(gBattleResources->battleHistory); FREE_AND_SET_NULL(gBattleResources); diff --git a/src/battle_z_move.c b/src/battle_z_move.c index c257df5990..f0d62f7fe1 100644 --- a/src/battle_z_move.c +++ b/src/battle_z_move.c @@ -54,6 +54,7 @@ static void ZMoveSelectionDisplayPower(u16 move, u16 zMove); static void ShowZMoveTriggerSprite(void); static bool32 AreStatsMaxed(u8 battlerId, u8 n); static u8 GetZMoveScore(u8 battlerAtk, u8 battlerDef, u16 baseMove, u16 zMove); +static void ZMoveSelectionDisplayMoveType(u16 zMove); // Const Data static const struct SignatureZMove sSignatureZMoves[] = @@ -174,10 +175,8 @@ bool32 IsViableZMove(u8 battlerId, u16 move) if (gBattleTypeFlags & (BATTLE_TYPE_SAFARI | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FRONTIER)) return FALSE; - #ifdef ITEM_Z_RING - if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_RING, 1)) + if ((GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT || (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)) && !CheckBagHasItem(ITEM_Z_POWER_RING, 1)) return FALSE; - #endif if (mega->alreadyEvolved[battlerPosition]) return FALSE; // Trainer has mega evolved @@ -522,6 +521,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_NAME_1); ZMoveSelectionDisplayPpNumber(); + ZMoveSelectionDisplayMoveType(zmove); MoveSelectionCreateCursorAt(0, 0); return TRUE; } @@ -561,6 +561,23 @@ static void ZMoveSelectionDisplayPpNumber(void) BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP_REMAINING); } +static void ZMoveSelectionDisplayMoveType(u16 zMove) +{ + u8 *txtPtr; + struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[gActiveBattler][4]); + u8 zMoveType; + + GET_MOVE_TYPE(zMove, zMoveType); + + txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType); + *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; + *(txtPtr)++ = EXT_CTRL_CODE_FONT; + *(txtPtr)++ = FONT_NORMAL; + + StringCopy(txtPtr, gTypeNames[zMoveType]); + BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); +} + const u8 *GetZMoveName(u16 move) { if (IsZMove(move)) diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 89e1a042c6..2a0f884d46 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -3122,7 +3122,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_CURSE] = { - #if B_UPDATED_MOVE_DATA >= GEN_5 + #if B_UPDATED_MOVE_TYPES >= GEN_5 .type = TYPE_GHOST, #else .type = TYPE_MYSTERY, @@ -3342,7 +3342,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_SWEET_KISS] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 + #if B_UPDATED_MOVE_TYPES >= GEN_6 .type = TYPE_FAIRY, #else .type = TYPE_NORMAL, @@ -3687,7 +3687,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_CHARM] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 + #if B_UPDATED_MOVE_TYPES >= GEN_6 .type = TYPE_FAIRY, #else .type = TYPE_NORMAL, @@ -4233,7 +4233,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_Z] = [MOVE_MOONLIGHT] = { - #if B_UPDATED_MOVE_DATA >= GEN_6 + #if B_UPDATED_MOVE_TYPES >= GEN_6 .type = TYPE_FAIRY, #else .type = TYPE_NORMAL, diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h index 206d73a881..fbdea74729 100644 --- a/src/data/graphics/trainers.h +++ b/src/data/graphics/trainers.h @@ -1,290 +1,290 @@ -const u32 gTrainerFrontPic_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Hiker[] = INCBIN_U32("graphics/trainers/palettes/hiker.gbapal.lz"); +const u32 gTrainerFrontPic_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker.4bpp.lz"); +const u32 gTrainerPalette_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker.gbapal.lz"); -const u32 gTrainerFrontPic_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/palettes/aqua_grunt_m.gbapal.lz"); +const u32 gTrainerFrontPic_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m.4bpp.lz"); +const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m.gbapal.lz"); -const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz"); +const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f.4bpp.lz"); +const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f.gbapal.lz"); -const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_m.gbapal.lz"); +const u32 gTrainerFrontPic_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m.4bpp.lz"); +const u32 gTrainerPalette_CoolTrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_m.gbapal.lz"); -const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz"); -const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/bird_keeper.gbapal.lz"); +const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper.4bpp.lz"); +const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper.gbapal.lz"); -const u32 gTrainerFrontPic_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Collector[] = INCBIN_U32("graphics/trainers/palettes/collector.gbapal.lz"); +const u32 gTrainerFrontPic_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector.4bpp.lz"); +const u32 gTrainerPalette_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector.gbapal.lz"); -const u32 gTrainerFrontPic_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_AquaGruntF[] = INCBIN_U32("graphics/trainers/palettes/aqua_grunt_f.gbapal.lz"); +const u32 gTrainerFrontPic_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f.4bpp.lz"); +const u32 gTrainerPalette_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f.gbapal.lz"); -const u32 gTrainerFrontPic_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SwimmerM[] = INCBIN_U32("graphics/trainers/palettes/swimmer_m.gbapal.lz"); +const u32 gTrainerFrontPic_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m.4bpp.lz"); +const u32 gTrainerPalette_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m.gbapal.lz"); -const u32 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_MagmaGruntM[] = INCBIN_U32("graphics/trainers/palettes/magma_grunt_m.gbapal.lz"); +const u32 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m.4bpp.lz"); +const u32 gTrainerPalette_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m.gbapal.lz"); -const u32 gTrainerFrontPic_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_ExpertM[] = INCBIN_U32("graphics/trainers/palettes/expert_m.gbapal.lz"); +const u32 gTrainerFrontPic_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m.4bpp.lz"); +const u32 gTrainerPalette_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m.gbapal.lz"); -const u32 gTrainerFrontPic_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_AquaAdminM[] = INCBIN_U32("graphics/trainers/palettes/aqua_admin_m.gbapal.lz"); +const u32 gTrainerFrontPic_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m.4bpp.lz"); +const u32 gTrainerPalette_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m.gbapal.lz"); -const u32 gTrainerFrontPic_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt_front_pic.4bpp.lz"); -const u32 gTrainerPalette_BlackBelt[] = INCBIN_U32("graphics/trainers/palettes/black_belt.gbapal.lz"); +const u32 gTrainerFrontPic_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt.4bpp.lz"); +const u32 gTrainerPalette_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt.gbapal.lz"); -const u32 gTrainerFrontPic_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_AquaAdminF[] = INCBIN_U32("graphics/trainers/palettes/aqua_admin_f.gbapal.lz"); +const u32 gTrainerFrontPic_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f.4bpp.lz"); +const u32 gTrainerPalette_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f.gbapal.lz"); -const u32 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie_front_pic.4bpp.lz"); -const u32 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/palettes/aqua_leader_archie.gbapal.lz"); +const u32 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie.4bpp.lz"); +const u32 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie.gbapal.lz"); -const u32 gTrainerFrontPic_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac_front_pic.4bpp.lz"); -const u32 gTrainerPalette_HexManiac[] = INCBIN_U32("graphics/trainers/palettes/hex_maniac.gbapal.lz"); +const u32 gTrainerFrontPic_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac.4bpp.lz"); +const u32 gTrainerPalette_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac.gbapal.lz"); -const u32 gTrainerFrontPic_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady_front_pic.4bpp.lz"); -const u32 gTrainerPalette_AromaLady[] = INCBIN_U32("graphics/trainers/palettes/aroma_lady.gbapal.lz"); +const u32 gTrainerFrontPic_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady.4bpp.lz"); +const u32 gTrainerPalette_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady.gbapal.lz"); -const u32 gTrainerFrontPic_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac_front_pic.4bpp.lz"); -const u32 gTrainerPalette_RuinManiac[] = INCBIN_U32("graphics/trainers/palettes/ruin_maniac.gbapal.lz"); +const u32 gTrainerFrontPic_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac.4bpp.lz"); +const u32 gTrainerPalette_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac.gbapal.lz"); -const u32 gTrainerFrontPic_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Interviewer[] = INCBIN_U32("graphics/trainers/palettes/interviewer.gbapal.lz"); +const u32 gTrainerFrontPic_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer.4bpp.lz"); +const u32 gTrainerPalette_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer.gbapal.lz"); -const u32 gTrainerFrontPic_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/palettes/tuber_f.gbapal.lz"); +const u32 gTrainerFrontPic_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f.4bpp.lz"); +const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f.gbapal.lz"); -const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/palettes/tuber_m.gbapal.lz"); +const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m.4bpp.lz"); +const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m.gbapal.lz"); -const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/palettes/cooltrainer_f.gbapal.lz"); +const u32 gTrainerFrontPic_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f.4bpp.lz"); +const u32 gTrainerPalette_CoolTrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cooltrainer_f.gbapal.lz"); -const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/palettes/lady.gbapal.lz"); +const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady.4bpp.lz"); +const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady.gbapal.lz"); -const u32 gTrainerFrontPic_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Beauty[] = INCBIN_U32("graphics/trainers/palettes/beauty.gbapal.lz"); +const u32 gTrainerFrontPic_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty.4bpp.lz"); +const u32 gTrainerPalette_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty.gbapal.lz"); -const u32 gTrainerFrontPic_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy_front_pic.4bpp.lz"); -const u32 gTrainerPalette_RichBoy[] = INCBIN_U32("graphics/trainers/palettes/rich_boy.gbapal.lz"); +const u32 gTrainerFrontPic_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy.4bpp.lz"); +const u32 gTrainerPalette_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy.gbapal.lz"); -const u32 gTrainerFrontPic_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_ExpertF[] = INCBIN_U32("graphics/trainers/palettes/expert_f.gbapal.lz"); +const u32 gTrainerFrontPic_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f.4bpp.lz"); +const u32 gTrainerPalette_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f.gbapal.lz"); -const u32 gTrainerFrontPic_Pokemaniac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Pokemaniac[] = INCBIN_U32("graphics/trainers/palettes/pokemaniac.gbapal.lz"); +const u32 gTrainerFrontPic_Pokemaniac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac.4bpp.lz"); +const u32 gTrainerPalette_Pokemaniac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac.gbapal.lz"); -const u32 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_MagmaGruntF[] = INCBIN_U32("graphics/trainers/palettes/magma_grunt_f.gbapal.lz"); +const u32 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f.4bpp.lz"); +const u32 gTrainerPalette_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f.gbapal.lz"); -const u32 gTrainerFrontPic_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Guitarist[] = INCBIN_U32("graphics/trainers/palettes/guitarist.gbapal.lz"); +const u32 gTrainerFrontPic_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist.4bpp.lz"); +const u32 gTrainerPalette_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist.gbapal.lz"); -const u32 gTrainerFrontPic_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Kindler[] = INCBIN_U32("graphics/trainers/palettes/kindler.gbapal.lz"); +const u32 gTrainerFrontPic_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler.4bpp.lz"); +const u32 gTrainerPalette_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler.gbapal.lz"); -const u32 gTrainerFrontPic_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Camper[] = INCBIN_U32("graphics/trainers/palettes/camper.gbapal.lz"); +const u32 gTrainerFrontPic_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper.4bpp.lz"); +const u32 gTrainerPalette_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper.gbapal.lz"); -const u32 gTrainerFrontPic_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Picnicker[] = INCBIN_U32("graphics/trainers/palettes/picnicker.gbapal.lz"); +const u32 gTrainerFrontPic_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker.4bpp.lz"); +const u32 gTrainerPalette_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker.gbapal.lz"); -const u32 gTrainerFrontPic_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac_front_pic.4bpp.lz"); -const u32 gTrainerPalette_BugManiac[] = INCBIN_U32("graphics/trainers/palettes/bug_maniac.gbapal.lz"); +const u32 gTrainerFrontPic_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac.4bpp.lz"); +const u32 gTrainerPalette_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac.gbapal.lz"); -const u32 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PokemonBreederM[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_m.gbapal.lz"); +const u32 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m.4bpp.lz"); +const u32 gTrainerPalette_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m.gbapal.lz"); -const u32 gTrainerFrontPic_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PsychicM[] = INCBIN_U32("graphics/trainers/palettes/psychic_m.gbapal.lz"); +const u32 gTrainerFrontPic_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m.4bpp.lz"); +const u32 gTrainerPalette_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m.gbapal.lz"); -const u32 gTrainerFrontPic_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PsychicF[] = INCBIN_U32("graphics/trainers/palettes/psychic_f.gbapal.lz"); +const u32 gTrainerFrontPic_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f.4bpp.lz"); +const u32 gTrainerPalette_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f.gbapal.lz"); -const u32 gTrainerFrontPic_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Gentleman[] = INCBIN_U32("graphics/trainers/palettes/gentleman.gbapal.lz"); +const u32 gTrainerFrontPic_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman.4bpp.lz"); +const u32 gTrainerPalette_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman.gbapal.lz"); -const u32 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney_front_pic.4bpp.lz"); -const u32 gTrainerPalette_EliteFourSidney[] = INCBIN_U32("graphics/trainers/palettes/elite_four_sidney.gbapal.lz"); +const u32 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney.4bpp.lz"); +const u32 gTrainerPalette_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney.gbapal.lz"); -const u32 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe_front_pic.4bpp.lz"); -const u32 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/palettes/elite_four_phoebe.gbapal.lz"); +const u32 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe.4bpp.lz"); +const u32 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe.gbapal.lz"); -const u32 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia_front_pic.4bpp.lz"); -const u32 gTrainerPalette_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/palettes/elite_four_glacia.gbapal.lz"); +const u32 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia.4bpp.lz"); +const u32 gTrainerPalette_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia.gbapal.lz"); -const u32 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake_front_pic.4bpp.lz"); -const u32 gTrainerPalette_EliteFourDrake[] = INCBIN_U32("graphics/trainers/palettes/elite_four_drake.gbapal.lz"); +const u32 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake.4bpp.lz"); +const u32 gTrainerPalette_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/palettes/leader_roxanne.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne.4bpp.lz"); +const u32 gTrainerPalette_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderBrawly[] = INCBIN_U32("graphics/trainers/palettes/leader_brawly.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly.4bpp.lz"); +const u32 gTrainerPalette_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderWattson[] = INCBIN_U32("graphics/trainers/palettes/leader_wattson.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson.4bpp.lz"); +const u32 gTrainerPalette_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderFlannery[] = INCBIN_U32("graphics/trainers/palettes/leader_flannery.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery.4bpp.lz"); +const u32 gTrainerPalette_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderNorman[] = INCBIN_U32("graphics/trainers/palettes/leader_norman.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman.4bpp.lz"); +const u32 gTrainerPalette_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderWinona[] = INCBIN_U32("graphics/trainers/palettes/leader_winona.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona.4bpp.lz"); +const u32 gTrainerPalette_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/palettes/leader_tate_and_liza.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza.4bpp.lz"); +const u32 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza.gbapal.lz"); -const u32 gTrainerFrontPic_LeaderJuan[] = INCBIN_U32("graphics/trainers/front_pics/leader_juan_front_pic.4bpp.lz"); -const u32 gTrainerPalette_LeaderJuan[] = INCBIN_U32("graphics/trainers/palettes/leader_juan.gbapal.lz"); +const u32 gTrainerFrontPic_LeaderJuan[] = INCBIN_U32("graphics/trainers/front_pics/leader_juan.4bpp.lz"); +const u32 gTrainerPalette_LeaderJuan[] = INCBIN_U32("graphics/trainers/front_pics/leader_juan.gbapal.lz"); -const u32 gTrainerFrontPic_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SchoolKidM[] = INCBIN_U32("graphics/trainers/palettes/school_kid_m.gbapal.lz"); +const u32 gTrainerFrontPic_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m.4bpp.lz"); +const u32 gTrainerPalette_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m.gbapal.lz"); -const u32 gTrainerFrontPic_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SchoolKidF[] = INCBIN_U32("graphics/trainers/palettes/school_kid_f.gbapal.lz"); +const u32 gTrainerFrontPic_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f.4bpp.lz"); +const u32 gTrainerPalette_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f.gbapal.lz"); -const u32 gTrainerFrontPic_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SrAndJr[] = INCBIN_U32("graphics/trainers/palettes/sr_and_jr.gbapal.lz"); +const u32 gTrainerFrontPic_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr.4bpp.lz"); +const u32 gTrainerPalette_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr.gbapal.lz"); -const u32 gTrainerFrontPic_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PokefanM[] = INCBIN_U32("graphics/trainers/palettes/pokefan_m.gbapal.lz"); +const u32 gTrainerFrontPic_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m.4bpp.lz"); +const u32 gTrainerPalette_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m.gbapal.lz"); -const u32 gTrainerFrontPic_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PokefanF[] = INCBIN_U32("graphics/trainers/palettes/pokefan_f.gbapal.lz"); +const u32 gTrainerFrontPic_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f.4bpp.lz"); +const u32 gTrainerPalette_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f.gbapal.lz"); -const u32 gTrainerFrontPic_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Youngster[] = INCBIN_U32("graphics/trainers/palettes/youngster.gbapal.lz"); +const u32 gTrainerFrontPic_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster.4bpp.lz"); +const u32 gTrainerPalette_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster.gbapal.lz"); -const u32 gTrainerFrontPic_ChampionWallace[] = INCBIN_U32("graphics/trainers/front_pics/champion_wallace_front_pic.4bpp.lz"); -const u32 gTrainerPalette_ChampionWallace[] = INCBIN_U32("graphics/trainers/palettes/champion_wallace.gbapal.lz"); +const u32 gTrainerFrontPic_ChampionWallace[] = INCBIN_U32("graphics/trainers/front_pics/champion_wallace.4bpp.lz"); +const u32 gTrainerPalette_ChampionWallace[] = INCBIN_U32("graphics/trainers/front_pics/champion_wallace.gbapal.lz"); -const u32 gTrainerFrontPic_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Fisherman[] = INCBIN_U32("graphics/trainers/palettes/fisherman.gbapal.lz"); +const u32 gTrainerFrontPic_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman.4bpp.lz"); +const u32 gTrainerPalette_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman.gbapal.lz"); -const u32 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/cycling_triathlete_m.gbapal.lz"); +const u32 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m.4bpp.lz"); +const u32 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m.gbapal.lz"); -const u32 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/cycling_triathlete_f.gbapal.lz"); +const u32 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f.4bpp.lz"); +const u32 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f.gbapal.lz"); -const u32 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/running_triathlete_m.gbapal.lz"); +const u32 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m.4bpp.lz"); +const u32 gTrainerPalette_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m.gbapal.lz"); -const u32 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/running_triathlete_f.gbapal.lz"); +const u32 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f.4bpp.lz"); +const u32 gTrainerPalette_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f.gbapal.lz"); -const u32 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/swimming_triathlete_m.gbapal.lz"); +const u32 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m.4bpp.lz"); +const u32 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m.gbapal.lz"); -const u32 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/swimming_triathlete_f.gbapal.lz"); +const u32 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f.4bpp.lz"); +const u32 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f.gbapal.lz"); -const u32 gTrainerFrontPic_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer_front_pic.4bpp.lz"); -const u32 gTrainerPalette_DragonTamer[] = INCBIN_U32("graphics/trainers/palettes/dragon_tamer.gbapal.lz"); +const u32 gTrainerFrontPic_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer.4bpp.lz"); +const u32 gTrainerPalette_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer.gbapal.lz"); -const u32 gTrainerFrontPic_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy_front_pic.4bpp.lz"); -const u32 gTrainerPalette_NinjaBoy[] = INCBIN_U32("graphics/trainers/palettes/ninja_boy.gbapal.lz"); +const u32 gTrainerFrontPic_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy.4bpp.lz"); +const u32 gTrainerPalette_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy.gbapal.lz"); -const u32 gTrainerFrontPic_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl_front_pic.4bpp.lz"); -const u32 gTrainerPalette_BattleGirl[] = INCBIN_U32("graphics/trainers/palettes/battle_girl.gbapal.lz"); +const u32 gTrainerFrontPic_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl.4bpp.lz"); +const u32 gTrainerPalette_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl.gbapal.lz"); -const u32 gTrainerFrontPic_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady_front_pic.4bpp.lz"); -const u32 gTrainerPalette_ParasolLady[] = INCBIN_U32("graphics/trainers/palettes/parasol_lady.gbapal.lz"); +const u32 gTrainerFrontPic_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady.4bpp.lz"); +const u32 gTrainerPalette_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady.gbapal.lz"); -const u32 gTrainerFrontPic_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SwimmerF[] = INCBIN_U32("graphics/trainers/palettes/swimmer_f.gbapal.lz"); +const u32 gTrainerFrontPic_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f.4bpp.lz"); +const u32 gTrainerPalette_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f.gbapal.lz"); -const u32 gTrainerFrontPic_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Twins[] = INCBIN_U32("graphics/trainers/palettes/twins.gbapal.lz"); +const u32 gTrainerFrontPic_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins.4bpp.lz"); +const u32 gTrainerPalette_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins.gbapal.lz"); -const u32 gTrainerFrontPic_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Sailor[] = INCBIN_U32("graphics/trainers/palettes/sailor.gbapal.lz"); +const u32 gTrainerFrontPic_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor.4bpp.lz"); +const u32 gTrainerPalette_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor.gbapal.lz"); -const u32 gTrainerFrontPic_MagmaAdmin[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin_front_pic.4bpp.lz"); -const u32 gTrainerPalette_MagmaAdmin[] = INCBIN_U32("graphics/trainers/palettes/magma_admin.gbapal.lz"); +const u32 gTrainerFrontPic_MagmaAdmin[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin.4bpp.lz"); +const u32 gTrainerPalette_MagmaAdmin[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin.gbapal.lz"); -const u32 gTrainerFrontPic_Wally[] = INCBIN_U32("graphics/trainers/front_pics/wally_front_pic.4bpp.lz"); +const u32 gTrainerFrontPic_Wally[] = INCBIN_U32("graphics/trainers/front_pics/wally.4bpp.lz"); const u32 gTrainerPalette_Wally[] = INCBIN_U32("graphics/trainers/palettes/wally.gbapal.lz"); -const u32 gTrainerFrontPic_Brendan[] = INCBIN_U32("graphics/trainers/front_pics/brendan_front_pic.4bpp.lz"); +const u32 gTrainerFrontPic_Brendan[] = INCBIN_U32("graphics/trainers/front_pics/brendan.4bpp.lz"); const u32 gTrainerPalette_Brendan[] = INCBIN_U32("graphics/trainers/palettes/brendan.gbapal.lz"); -const u32 gTrainerFrontPic_May[] = INCBIN_U32("graphics/trainers/front_pics/may_front_pic.4bpp.lz"); +const u32 gTrainerFrontPic_May[] = INCBIN_U32("graphics/trainers/front_pics/may.4bpp.lz"); const u32 gTrainerPalette_May[] = INCBIN_U32("graphics/trainers/palettes/may.gbapal.lz"); -const u32 gTrainerFrontPic_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher_front_pic.4bpp.lz"); -const u32 gTrainerPalette_BugCatcher[] = INCBIN_U32("graphics/trainers/palettes/bug_catcher.gbapal.lz"); +const u32 gTrainerFrontPic_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher.4bpp.lz"); +const u32 gTrainerPalette_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher.gbapal.lz"); -const u32 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PokemonRangerM[] = INCBIN_U32("graphics/trainers/palettes/pokemon_ranger_m.gbapal.lz"); +const u32 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m.4bpp.lz"); +const u32 gTrainerPalette_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m.gbapal.lz"); -const u32 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PokemonRangerF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_ranger_f.gbapal.lz"); +const u32 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f.4bpp.lz"); +const u32 gTrainerPalette_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f.gbapal.lz"); -const u32 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie_front_pic.4bpp.lz"); -const u32 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/palettes/magma_leader_maxie.gbapal.lz"); +const u32 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie.4bpp.lz"); +const u32 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie.gbapal.lz"); -const u32 gTrainerFrontPic_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Lass[] = INCBIN_U32("graphics/trainers/palettes/lass.gbapal.lz"); +const u32 gTrainerFrontPic_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass.4bpp.lz"); +const u32 gTrainerPalette_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass.gbapal.lz"); -const u32 gTrainerFrontPic_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple_front_pic.4bpp.lz"); -const u32 gTrainerPalette_YoungCouple[] = INCBIN_U32("graphics/trainers/palettes/young_couple.gbapal.lz"); +const u32 gTrainerFrontPic_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple.4bpp.lz"); +const u32 gTrainerPalette_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple.gbapal.lz"); -const u32 gTrainerFrontPic_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple_front_pic.4bpp.lz"); -const u32 gTrainerPalette_OldCouple[] = INCBIN_U32("graphics/trainers/palettes/old_couple.gbapal.lz"); +const u32 gTrainerFrontPic_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple.4bpp.lz"); +const u32 gTrainerPalette_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple.gbapal.lz"); -const u32 gTrainerFrontPic_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SisAndBro[] = INCBIN_U32("graphics/trainers/palettes/sis_and_bro.gbapal.lz"); +const u32 gTrainerFrontPic_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro.4bpp.lz"); +const u32 gTrainerPalette_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro.gbapal.lz"); -const u32 gTrainerFrontPic_Steven[] = INCBIN_U32("graphics/trainers/front_pics/steven_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Steven[] = INCBIN_U32("graphics/trainers/palettes/steven.gbapal.lz"); +const u32 gTrainerFrontPic_Steven[] = INCBIN_U32("graphics/trainers/front_pics/steven.4bpp.lz"); +const u32 gTrainerPalette_Steven[] = INCBIN_U32("graphics/trainers/front_pics/steven.gbapal.lz"); -const u32 gTrainerFrontPic_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/front_pics/salon_maiden_anabel_front_pic.4bpp.lz"); -const u32 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/palettes/salon_maiden_anabel.gbapal.lz"); +const u32 gTrainerFrontPic_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/front_pics/salon_maiden_anabel.4bpp.lz"); +const u32 gTrainerPalette_SalonMaidenAnabel[] = INCBIN_U32("graphics/trainers/front_pics/salon_maiden_anabel.gbapal.lz"); -const u32 gTrainerFrontPic_DomeAceTucker[] = INCBIN_U32("graphics/trainers/front_pics/dome_ace_tucker_front_pic.4bpp.lz"); -const u32 gTrainerPalette_DomeAceTucker[] = INCBIN_U32("graphics/trainers/palettes/dome_ace_tucker.gbapal.lz"); +const u32 gTrainerFrontPic_DomeAceTucker[] = INCBIN_U32("graphics/trainers/front_pics/dome_ace_tucker.4bpp.lz"); +const u32 gTrainerPalette_DomeAceTucker[] = INCBIN_U32("graphics/trainers/front_pics/dome_ace_tucker.gbapal.lz"); -const u32 gTrainerFrontPic_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/front_pics/palace_maven_spenser_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/palettes/palace_maven_spenser.gbapal.lz"); +const u32 gTrainerFrontPic_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/front_pics/palace_maven_spenser.4bpp.lz"); +const u32 gTrainerPalette_PalaceMavenSpenser[] = INCBIN_U32("graphics/trainers/front_pics/palace_maven_spenser.gbapal.lz"); -const u32 gTrainerFrontPic_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/front_pics/arena_tycoon_greta_front_pic.4bpp.lz"); -const u32 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/palettes/arena_tycoon_greta.gbapal.lz"); +const u32 gTrainerFrontPic_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/front_pics/arena_tycoon_greta.4bpp.lz"); +const u32 gTrainerPalette_ArenaTycoonGreta[] = INCBIN_U32("graphics/trainers/front_pics/arena_tycoon_greta.gbapal.lz"); -const u32 gTrainerFrontPic_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/front_pics/factory_head_noland_front_pic.4bpp.lz"); -const u32 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/palettes/factory_head_noland.gbapal.lz"); +const u32 gTrainerFrontPic_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/front_pics/factory_head_noland.4bpp.lz"); +const u32 gTrainerPalette_FactoryHeadNoland[] = INCBIN_U32("graphics/trainers/front_pics/factory_head_noland.gbapal.lz"); -const u32 gTrainerFrontPic_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/front_pics/pike_queen_lucy_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/palettes/pike_queen_lucy.gbapal.lz"); +const u32 gTrainerFrontPic_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/front_pics/pike_queen_lucy.4bpp.lz"); +const u32 gTrainerPalette_PikeQueenLucy[] = INCBIN_U32("graphics/trainers/front_pics/pike_queen_lucy.gbapal.lz"); -const u32 gTrainerFrontPic_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/front_pics/pyramid_king_brandon_front_pic.4bpp.lz"); -const u32 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/palettes/pyramid_king_brandon.gbapal.lz"); +const u32 gTrainerFrontPic_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/front_pics/pyramid_king_brandon.4bpp.lz"); +const u32 gTrainerPalette_PyramidKingBrandon[] = INCBIN_U32("graphics/trainers/front_pics/pyramid_king_brandon.gbapal.lz"); -const u32 gTrainerFrontPic_Red[] = INCBIN_U32("graphics/trainers/front_pics/red_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Red[] = INCBIN_U32("graphics/trainers/palettes/red.gbapal.lz"); +const u32 gTrainerFrontPic_Red[] = INCBIN_U32("graphics/trainers/front_pics/red.4bpp.lz"); +const u32 gTrainerPalette_Red[] = INCBIN_U32("graphics/trainers/front_pics/red.gbapal.lz"); -const u32 gTrainerFrontPic_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf_front_pic.4bpp.lz"); -const u32 gTrainerPalette_Leaf[] = INCBIN_U32("graphics/trainers/palettes/leaf.gbapal.lz"); +const u32 gTrainerFrontPic_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf.4bpp.lz"); +const u32 gTrainerPalette_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf.gbapal.lz"); -const u32 gTrainerFrontPic_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.4bpp.lz"); -const u32 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz"); +const u32 gTrainerFrontPic_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/front_pics/brendan_rs.4bpp.lz"); +const u32 gTrainerPalette_RubySapphireBrendan[] = INCBIN_U32("graphics/trainers/palettes/brendan_rs.gbapal.lz"); -const u32 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_may_front_pic.4bpp.lz"); -const u32 gTrainerPalette_RubySapphireMay[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz"); +const u32 gTrainerFrontPic_RubySapphireMay[] = INCBIN_U32("graphics/trainers/front_pics/may_rs.4bpp.lz"); +const u32 gTrainerPalette_RubySapphireMay[] = INCBIN_U32("graphics/trainers/palettes/may_rs.gbapal.lz"); -const u8 gTrainerBackPic_Brendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan_back_pic.4bpp"); -const u8 gTrainerBackPic_May[] = INCBIN_U8("graphics/trainers/back_pics/may_back_pic.4bpp"); -const u8 gTrainerBackPic_Red[] = INCBIN_U8("graphics/trainers/back_pics/red_back_pic.4bpp"); -const u8 gTrainerBackPic_Leaf[] = INCBIN_U8("graphics/trainers/back_pics/leaf_back_pic.4bpp"); -const u8 gTrainerBackPic_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/back_pics/ruby_sapphire_brendan_back_pic.4bpp"); -const u8 gTrainerBackPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/back_pics/ruby_sapphire_may_back_pic.4bpp"); -const u8 gTrainerBackPic_Wally[] = INCBIN_U8("graphics/trainers/back_pics/wally_back_pic.4bpp"); -const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steven_back_pic.4bpp"); +const u8 gTrainerBackPic_Brendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan.4bpp"); +const u8 gTrainerBackPic_May[] = INCBIN_U8("graphics/trainers/back_pics/may.4bpp"); +const u8 gTrainerBackPic_Red[] = INCBIN_U8("graphics/trainers/back_pics/red.4bpp"); +const u8 gTrainerBackPic_Leaf[] = INCBIN_U8("graphics/trainers/back_pics/leaf.4bpp"); +const u8 gTrainerBackPic_RubySapphireBrendan[] = INCBIN_U8("graphics/trainers/back_pics/brendan_rs.4bpp"); +const u8 gTrainerBackPic_RubySapphireMay[] = INCBIN_U8("graphics/trainers/back_pics/may_rs.4bpp"); +const u8 gTrainerBackPic_Wally[] = INCBIN_U8("graphics/trainers/back_pics/wally.4bpp"); +const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steven.4bpp"); -const u32 gTrainerBackPicPalette_Red[] = INCBIN_U32("graphics/trainers/palettes/red_back_pic.gbapal.lz"); -const u32 gTrainerBackPicPalette_Leaf[] = INCBIN_U32("graphics/trainers/palettes/leaf_back_pic.gbapal.lz"); +const u32 gTrainerBackPicPalette_Red[] = INCBIN_U32("graphics/trainers/back_pics/red.gbapal.lz"); +const u32 gTrainerBackPicPalette_Leaf[] = INCBIN_U32("graphics/trainers/back_pics/leaf.gbapal.lz"); diff --git a/src/data/party_menu.h b/src/data/party_menu.h index 9411ec3bb7..663e6f2c04 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -789,8 +789,8 @@ static const u8 *const sUnionRoomTradeMessages[] = { [UR_TRADE_MSG_NOT_MON_PARTNER_WANTS - 1] = gText_NotPkmnOtherTrainerWants, [UR_TRADE_MSG_NOT_EGG - 1] = gText_ThatIsntAnEgg, - [UR_TRADE_MSG_MON_CANT_BE_TRADED_1 - 1] = gText_PkmnCantBeTradedNow, - [UR_TRADE_MSG_MON_CANT_BE_TRADED_2 - 1] = gText_PkmnCantBeTradedNow, + [UR_TRADE_MSG_MON_CANT_BE_TRADED_NOW - 1] = gText_PkmnCantBeTradedNow, + [UR_TRADE_MSG_MON_CANT_BE_TRADED - 1] = gText_PkmnCantBeTraded, [UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED - 1] = gText_OtherTrainersPkmnCantBeTraded, [UR_TRADE_MSG_EGG_CANT_BE_TRADED -1] = gText_EggCantBeTradedNow, [UR_TRADE_MSG_PARTNER_CANT_ACCEPT_MON - 1] = gText_OtherTrainerCantAcceptPkmn, @@ -1082,7 +1082,7 @@ static const struct CompressedSpritePalette sSpritePalette_StatusIcons = gStatusPal_Icons, TAG_STATUS_ICONS }; -static const struct SpriteTemplate sSpriteTemplate_StatusIcons = +const struct SpriteTemplate gSpriteTemplate_StatusIcons = { .tileTag = TAG_STATUS_ICONS, .paletteTag = TAG_STATUS_ICONS, diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 5c6d99b5cf..a161fbf908 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -262,7 +262,7 @@ .abilities = {ABILITY_MULTITYPE, ABILITY_NONE},\ .bodyColor = BODY_COLOR_WHITE, \ .noFlip = FALSE, \ - .flags = FLAG_MYTHICAL, \ + .flags = SPECIES_FLAG_MYTHICAL, \ } #define DEERLING_BASE_STATS(color) \ @@ -337,7 +337,7 @@ .abilities = {ABILITY_DOWNLOAD, ABILITY_NONE},\ .bodyColor = BODY_COLOR_PURPLE, \ .noFlip = FALSE, \ - .flags = FLAG_MYTHICAL, \ + .flags = SPECIES_FLAG_MYTHICAL, \ } #define VIVILLON_BASE_STATS(color) \ @@ -516,7 +516,7 @@ .abilities = {ABILITY_FAIRY_AURA, ABILITY_NONE},\ .bodyColor = BODY_COLOR_BLUE, \ .noFlip = FALSE, \ - .flags = FLAG_LEGENDARY, \ + .flags = SPECIES_FLAG_LEGENDARY, \ } #define ZYGARDE_50_BASE_STATS(ability) \ @@ -541,7 +541,7 @@ .abilities = {ability, ABILITY_NONE},\ .bodyColor = BODY_COLOR_GREEN, \ .noFlip = TRUE, \ - .flags = FLAG_LEGENDARY, \ + .flags = SPECIES_FLAG_LEGENDARY, \ } #define ZYGARDE_10_BASE_STATS(ability) \ @@ -566,7 +566,7 @@ .abilities = {ability, ABILITY_NONE},\ .bodyColor = BODY_COLOR_BLACK, \ .noFlip = TRUE, \ - .flags = FLAG_LEGENDARY, \ + .flags = SPECIES_FLAG_LEGENDARY, \ } #define ORICORIO_BASE_STATS(type, color) \ @@ -640,7 +640,7 @@ .abilities = {ABILITY_RKS_SYSTEM, ABILITY_NONE},\ .bodyColor = BODY_COLOR_GRAY, \ .noFlip = FALSE, \ - .flags = FLAG_LEGENDARY, \ + .flags = SPECIES_FLAG_LEGENDARY, \ } #define MINIOR_METEOR_ATTRIBUTES\ @@ -737,7 +737,7 @@ .abilities = {ABILITY_SOUL_HEART, ABILITY_NONE},\ .bodyColor = color, \ .noFlip = FALSE, \ - .flags = FLAG_MYTHICAL, \ + .flags = SPECIES_FLAG_MYTHICAL, \ } #define CRAMORANT_BASE_STATS \ @@ -906,7 +906,7 @@ .abilities = {ABILITY_LEAF_GUARD, ABILITY_NONE},\ .bodyColor = BODY_COLOR_GREEN, \ .noFlip = FALSE, \ - .flags = FLAG_MYTHICAL, \ + .flags = SPECIES_FLAG_MYTHICAL, \ } const struct BaseStats gBaseStats[] = @@ -4269,7 +4269,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_RUN_AWAY, ABILITY_ADAPTABILITY, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_VAPOREON] = @@ -4536,7 +4536,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_SNOW_CLOAK}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZAPDOS] = @@ -4565,7 +4565,7 @@ const struct BaseStats gBaseStats[] = #endif .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_MOLTRES] = @@ -4590,7 +4590,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_DRATINI] = @@ -4690,7 +4690,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_MEW] = @@ -4717,7 +4717,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SYNCHRONIZE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_CHIKORITA] = @@ -7003,7 +7003,7 @@ const struct BaseStats gBaseStats[] = #endif .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ENTEI] = @@ -7033,7 +7033,7 @@ const struct BaseStats gBaseStats[] = #endif .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_SUICUNE] = @@ -7063,7 +7063,7 @@ const struct BaseStats gBaseStats[] = #endif .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_LARVITAR] = @@ -7160,7 +7160,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_MULTISCALE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_HO_OH] = @@ -7187,7 +7187,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_CELEBI] = @@ -7214,7 +7214,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_TREECKO] = @@ -10403,7 +10403,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_REGICE] = @@ -10428,7 +10428,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_REGISTEEL] = @@ -10454,7 +10454,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE, ABILITY_LIGHT_METAL}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_LATIAS] = @@ -10479,7 +10479,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_LATIOS] = @@ -10504,7 +10504,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_KYOGRE] = @@ -10529,7 +10529,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DRIZZLE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_GROUDON] = @@ -10554,7 +10554,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DROUGHT, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_RAYQUAZA] = @@ -10580,7 +10580,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_AIR_LOCK, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_JIRACHI] = @@ -10607,7 +10607,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_DEOXYS] = @@ -10634,7 +10634,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, #if P_GEN_4_POKEMON == TRUE @@ -10881,7 +10881,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_KEEN_EYE, ABILITY_NONE, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_STARAVIA] = @@ -10906,7 +10906,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE, ABILITY_RECKLESS}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_STARAPTOR] = @@ -10959,7 +10959,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SIMPLE, ABILITY_UNAWARE, ABILITY_MOODY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_BIBAREL] = @@ -11009,7 +11009,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SHED_SKIN, ABILITY_NONE, ABILITY_RUN_AWAY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_KRICKETUNE] = @@ -11035,7 +11035,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SWARM, ABILITY_NONE, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_SHINX] = @@ -11060,7 +11060,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_RIVALRY, ABILITY_INTIMIDATE, ABILITY_GUTS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_LUXIO] = @@ -11337,7 +11337,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HONEY_GATHER, ABILITY_NONE, ABILITY_HUSTLE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_VESPIQUEN] = @@ -12107,7 +12107,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_HIPPOWDON] = @@ -12132,7 +12132,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_STREAM, ABILITY_NONE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_SKORUPI] = @@ -12883,7 +12883,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_MESPRIT] = @@ -12910,7 +12910,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_AZELF] = @@ -12936,7 +12936,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_DIALGA] = @@ -12961,7 +12961,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_PALKIA] = @@ -12986,7 +12986,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_HEATRAN] = @@ -13011,7 +13011,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_FLASH_FIRE, ABILITY_NONE, ABILITY_FLAME_BODY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_REGIGIGAS] = @@ -13036,7 +13036,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SLOW_START, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_GIRATINA] = @@ -13061,7 +13061,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_CRESSELIA] = @@ -13086,7 +13086,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_PHIONE] = @@ -13111,7 +13111,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_MANAPHY] = @@ -13136,7 +13136,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HYDRATION, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_DARKRAI] = @@ -13162,7 +13162,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BAD_DREAMS, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_SHAYMIN] = @@ -13189,7 +13189,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_NATURAL_CURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_ARCEUS] = @@ -13214,7 +13214,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MULTITYPE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, #endif @@ -13241,7 +13241,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_VICTORY_STAR, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_SNIVY] = @@ -13898,7 +13898,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BIG_PECKS, ABILITY_SUPER_LUCK, ABILITY_RIVALRY}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_BLITZLE] = @@ -15652,7 +15652,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_JELLICENT] = @@ -15677,7 +15677,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_WATER_ABSORB, ABILITY_CURSED_BODY, ABILITY_DAMP}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_ALOMOMOLA] = @@ -16788,7 +16788,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_TERRAKION] = @@ -16813,7 +16813,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_VIRIZION] = @@ -16838,7 +16838,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_TORNADUS] = @@ -16863,7 +16863,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_THUNDURUS] = @@ -16888,7 +16888,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRANKSTER, ABILITY_NONE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_RESHIRAM] = @@ -16913,7 +16913,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TURBOBLAZE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZEKROM] = @@ -16938,7 +16938,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TERAVOLT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_LANDORUS] = @@ -16963,7 +16963,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_FORCE, ABILITY_NONE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_KYUREM] = @@ -16990,7 +16990,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_KELDEO] = @@ -17015,7 +17015,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_MELOETTA] = @@ -17044,7 +17044,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_GENESECT] = GENESECT_BASE_STATS, @@ -17483,7 +17483,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_RIVALRY, ABILITY_UNNERVE, ABILITY_MOXIE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_FLABEBE] = FLABEBE_BASE_STATS, @@ -18557,7 +18557,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DARK_AURA, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZYGARDE] = ZYGARDE_50_BASE_STATS(ABILITY_AURA_BREAK), @@ -18585,7 +18585,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CLEAR_BODY, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_HOOPA] = @@ -18610,7 +18610,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGICIAN, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_VOLCANION] = @@ -18635,7 +18635,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_WATER_ABSORB, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, #endif @@ -19848,7 +19848,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BATTLE_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_SILVALLY] = SILVALLY_BASE_STATS(TYPE_NORMAL), @@ -20102,7 +20102,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_ELECTRIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_TAPU_LELE] = @@ -20127,7 +20127,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PSYCHIC_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_TAPU_BULU] = @@ -20152,7 +20152,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GRASSY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_TAPU_FINI] = @@ -20177,7 +20177,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MISTY_SURGE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_COSMOG] = @@ -20202,7 +20202,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_UNAWARE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_COSMOEM] = @@ -20228,7 +20228,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_STURDY, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_SOLGALEO] = @@ -20253,7 +20253,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_FULL_METAL_BODY, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_LUNALA] = @@ -20278,7 +20278,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SHADOW_SHIELD, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_NIHILEGO] = @@ -20303,7 +20303,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_BUZZWOLE] = @@ -20329,7 +20329,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_PHEROMOSA] = @@ -20354,7 +20354,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_XURKITREE] = @@ -20379,7 +20379,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_CELESTEELA] = @@ -20406,7 +20406,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_KARTANA] = @@ -20431,7 +20431,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_GUZZLORD] = @@ -20456,7 +20456,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_NECROZMA] = @@ -20482,7 +20482,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_MAGEARNA] = MAGEARNA_BASE_STATS(BODY_COLOR_GRAY), @@ -20510,7 +20510,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TECHNICIAN, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_POIPOLE] = @@ -20535,7 +20535,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_NAGANADEL] = @@ -20560,7 +20560,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_STAKATAKA] = @@ -20585,7 +20585,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_BLACEPHALON] = @@ -20610,7 +20610,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BEAST_BOOST, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, - .flags = FLAG_ULTRA_BEAST, + .flags = SPECIES_FLAG_ULTRA_BEAST, }, [SPECIES_ZERAORA] = @@ -20635,7 +20635,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_MELTAN] = @@ -20660,7 +20660,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGNET_PULL, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_MELMETAL] = @@ -20685,7 +20685,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_IRON_FIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, #endif @@ -22462,7 +22462,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTREPID_SWORD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZAMAZENTA] = @@ -22487,7 +22487,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ETERNATUS] = @@ -22512,7 +22512,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_KUBFU] = @@ -22537,7 +22537,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INNER_FOCUS, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_URSHIFU] = @@ -22562,7 +22562,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZARUDE] = ZARUDE_BASE_STATS, @@ -22589,7 +22589,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TRANSISTOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_REGIDRAGO] = @@ -22614,7 +22614,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DRAGONS_MAW, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_GLASTRIER] = @@ -22639,7 +22639,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CHILLING_NEIGH, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_SPECTRIER] = @@ -22664,7 +22664,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GRIM_NEIGH, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_CALYREX] = @@ -22689,7 +22689,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_UNNERVE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_WYRDEER] = @@ -22786,7 +22786,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_RATTLED, ABILITY_ADAPTABILITY, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_GENDER_DIFFERENCE, + .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, [SPECIES_SNEASLER] = @@ -22860,7 +22860,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HEALER, ABILITY_NONE, ABILITY_CONTRARY}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, #endif @@ -22887,6 +22887,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_THICK_FAT, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_CHARIZARD_MEGA_X] = @@ -22911,6 +22912,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_CHARIZARD_MEGA_Y] = @@ -22935,6 +22937,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DROUGHT, ABILITY_DROUGHT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_BLASTOISE_MEGA] = @@ -22959,6 +22962,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MEGA_LAUNCHER, ABILITY_MEGA_LAUNCHER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_BEEDRILL_MEGA] = @@ -22985,6 +22989,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_PIDGEOT_MEGA] = @@ -23009,6 +23014,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_NO_GUARD, ABILITY_NO_GUARD}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_ALAKAZAM_MEGA] = @@ -23038,6 +23044,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TRACE, ABILITY_TRACE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SLOWBRO_MEGA] = @@ -23063,6 +23070,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SHELL_ARMOR, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_GENGAR_MEGA] = @@ -23087,6 +23095,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SHADOW_TAG, ABILITY_SHADOW_TAG}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_KANGASKHAN_MEGA] = @@ -23111,6 +23120,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PARENTAL_BOND, ABILITY_PARENTAL_BOND}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_PINSIR_MEGA] = @@ -23135,6 +23145,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_GYARADOS_MEGA] = @@ -23159,6 +23170,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_AERODACTYL_MEGA] = @@ -23183,6 +23195,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_MEWTWO_MEGA_X] = @@ -23207,7 +23220,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_STEADFAST, ABILITY_STEADFAST}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_MEWTWO_MEGA_Y] = @@ -23232,7 +23245,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INSOMNIA, ABILITY_INSOMNIA}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_AMPHAROS_MEGA] = @@ -23257,6 +23270,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MOLD_BREAKER, ABILITY_MOLD_BREAKER}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_STEELIX_MEGA] = @@ -23282,6 +23296,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SCIZOR_MEGA] = @@ -23306,6 +23321,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TECHNICIAN, ABILITY_TECHNICIAN}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_HERACROSS_MEGA] = @@ -23330,6 +23346,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SKILL_LINK, ABILITY_SKILL_LINK}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_HOUNDOOM_MEGA] = @@ -23354,6 +23371,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SOLAR_POWER, ABILITY_SOLAR_POWER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_TYRANITAR_MEGA] = @@ -23378,6 +23396,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_STREAM, ABILITY_SAND_STREAM}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SCEPTILE_MEGA] = @@ -23402,6 +23421,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LIGHTNING_ROD, ABILITY_LIGHTNING_ROD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_BLAZIKEN_MEGA] = @@ -23426,6 +23446,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SPEED_BOOST, ABILITY_SPEED_BOOST}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SWAMPERT_MEGA] = @@ -23450,6 +23471,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SWIFT_SWIM, ABILITY_SWIFT_SWIM}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_GARDEVOIR_MEGA] = @@ -23474,6 +23496,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SABLEYE_MEGA] = @@ -23499,6 +23522,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_MAWILE_MEGA] = @@ -23524,6 +23548,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HUGE_POWER, ABILITY_HUGE_POWER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_AGGRON_MEGA] = @@ -23549,6 +23574,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_FILTER, ABILITY_FILTER}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_MEDICHAM_MEGA] = @@ -23573,6 +23599,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PURE_POWER, ABILITY_PURE_POWER}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_MANECTRIC_MEGA] = @@ -23597,6 +23624,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTIMIDATE, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SHARPEDO_MEGA] = @@ -23622,6 +23650,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_STRONG_JAW, ABILITY_STRONG_JAW}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_CAMERUPT_MEGA] = @@ -23647,6 +23676,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SHEER_FORCE, ABILITY_SHEER_FORCE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_ALTARIA_MEGA] = @@ -23671,6 +23701,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PIXILATE, ABILITY_PIXILATE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_BANETTE_MEGA] = @@ -23696,6 +23727,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRANKSTER, ABILITY_PRANKSTER}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_ABSOL_MEGA] = @@ -23720,6 +23752,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_GLALIE_MEGA] = @@ -23744,6 +23777,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_REFRIGERATE, ABILITY_REFRIGERATE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_SALAMENCE_MEGA] = @@ -23769,6 +23803,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_AERILATE, ABILITY_AERILATE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_METAGROSS_MEGA] = @@ -23794,6 +23829,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TOUGH_CLAWS, ABILITY_TOUGH_CLAWS}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_LATIAS_MEGA] = @@ -23818,7 +23854,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_LATIOS_MEGA] = @@ -23843,7 +23879,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_LEVITATE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, }, #if P_GEN_4_POKEMON == TRUE @@ -23869,6 +23905,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SCRAPPY, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_GARCHOMP_MEGA] = @@ -23893,6 +23930,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_FORCE, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_LUCARIO_MEGA] = @@ -23918,6 +23956,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_ADAPTABILITY, ABILITY_ADAPTABILITY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_ABOMASNOW_MEGA] = @@ -23944,6 +23983,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SNOW_WARNING, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_GALLADE_MEGA] = @@ -23968,6 +24008,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INNER_FOCUS, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, #endif @@ -23996,6 +24037,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HEALER, ABILITY_HEALER}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, + .flags = SPECIES_FLAG_MEGA_EVOLUTION, }, #endif @@ -24023,7 +24065,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGIC_BOUNCE, ABILITY_MAGIC_BOUNCE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL | SPECIES_FLAG_MEGA_EVOLUTION, }, #endif @@ -24050,7 +24092,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DELTA_STREAM, ABILITY_DELTA_STREAM}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MEGA_EVOLUTION, }, [SPECIES_KYOGRE_PRIMAL] = @@ -24075,7 +24117,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRIMORDIAL_SEA, ABILITY_PRIMORDIAL_SEA}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_GROUDON_PRIMAL] = @@ -24100,7 +24142,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DESOLATE_LAND, ABILITY_DESOLATE_LAND}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_RATTATA_ALOLAN] = @@ -24126,7 +24168,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_RATICATE_ALOLAN] = @@ -24152,7 +24194,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GLUTTONY, ABILITY_HUSTLE, ABILITY_THICK_FAT}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_RAICHU_ALOLAN] = @@ -24177,7 +24219,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SURGE_SURFER, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_SANDSHREW_ALOLAN] = @@ -24203,7 +24245,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_SANDSLASH_ALOLAN] = @@ -24228,7 +24270,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SLUSH_RUSH}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_VULPIX_ALOLAN] = @@ -24254,7 +24296,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_NINETALES_ALOLAN] = @@ -24280,7 +24322,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SNOW_CLOAK, ABILITY_NONE, ABILITY_SNOW_WARNING}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_DIGLETT_ALOLAN] = @@ -24306,7 +24348,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_DUGTRIO_ALOLAN] = @@ -24332,7 +24374,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAND_VEIL, ABILITY_TANGLING_HAIR, ABILITY_SAND_FORCE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = TRUE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_MEOWTH_ALOLAN] = @@ -24358,7 +24400,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PICKUP, ABILITY_TECHNICIAN, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_PERSIAN_ALOLAN] = @@ -24384,7 +24426,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_FUR_COAT, ABILITY_TECHNICIAN, ABILITY_RATTLED}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_GEODUDE_ALOLAN] = @@ -24410,7 +24452,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_GRAVELER_ALOLAN] = @@ -24436,7 +24478,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_GOLEM_ALOLAN] = @@ -24461,7 +24503,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGNET_PULL, ABILITY_STURDY, ABILITY_GALVANIZE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_GRIMER_ALOLAN] = @@ -24487,7 +24529,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_MUK_ALOLAN] = @@ -24513,7 +24555,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_POISON_TOUCH, ABILITY_GLUTTONY, ABILITY_POWER_OF_ALCHEMY}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_EXEGGUTOR_ALOLAN] = @@ -24538,7 +24580,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_FRISK, ABILITY_NONE, ABILITY_HARVEST}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_MAROWAK_ALOLAN] = @@ -24563,7 +24605,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CURSED_BODY, ABILITY_LIGHTNING_ROD, ABILITY_ROCK_HEAD}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_ALOLAN_FORM, + .flags = SPECIES_FLAG_ALOLAN_FORM, }, [SPECIES_MEOWTH_GALARIAN] = @@ -24588,7 +24630,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PICKUP, ABILITY_TOUGH_CLAWS, ABILITY_UNNERVE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_PONYTA_GALARIAN] = @@ -24613,7 +24655,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_RAPIDASH_GALARIAN] = @@ -24638,7 +24680,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_RUN_AWAY, ABILITY_PASTEL_VEIL, ABILITY_ANTICIPATION}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_SLOWPOKE_GALARIAN] = @@ -24663,7 +24705,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GLUTTONY, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_SLOWBRO_GALARIAN] = @@ -24688,7 +24730,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_QUICK_DRAW, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_FARFETCHD_GALARIAN] = @@ -24714,7 +24756,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_STEADFAST, ABILITY_NONE, ABILITY_SCRAPPY}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_WEEZING_GALARIAN] = @@ -24740,7 +24782,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_LEVITATE, ABILITY_NEUTRALIZING_GAS, ABILITY_MISTY_SURGE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_MR_MIME_GALARIAN] = @@ -24765,7 +24807,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_VITAL_SPIRIT, ABILITY_SCREEN_CLEANER, ABILITY_ICE_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_ARTICUNO_GALARIAN] = @@ -24790,7 +24832,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_COMPETITIVE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY | FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_ZAPDOS_GALARIAN] = @@ -24815,7 +24857,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DEFIANT, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_LEGENDARY | FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_MOLTRES_GALARIAN] = @@ -24840,7 +24882,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BERSERK, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY | FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_SLOWKING_GALARIAN] = @@ -24865,7 +24907,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CURIOUS_MEDICINE, ABILITY_OWN_TEMPO, ABILITY_REGENERATOR}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_CORSOLA_GALARIAN] = @@ -24890,7 +24932,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_WEAK_ARMOR, ABILITY_NONE, ABILITY_CURSED_BODY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_ZIGZAGOON_GALARIAN] = @@ -24915,7 +24957,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_LINOONE_GALARIAN] = @@ -24940,7 +24982,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PICKUP, ABILITY_GLUTTONY, ABILITY_QUICK_FEET}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, #if P_GEN_5_POKEMON == TRUE @@ -24966,7 +25008,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_HUSTLE, ABILITY_NONE, ABILITY_INNER_FOCUS}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_DARMANITAN_GALARIAN] = @@ -24991,7 +25033,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_YAMASK_GALARIAN] = @@ -25016,7 +25058,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_WANDERING_SPIRIT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_STUNFISK_GALARIAN] = @@ -25041,7 +25083,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MIMICRY, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, #endif @@ -25067,7 +25109,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_ARCANINE_HISUIAN] = @@ -25092,7 +25134,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTIMIDATE, ABILITY_FLASH_FIRE, ABILITY_JUSTIFIED}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_VOLTORB_HISUIAN] = @@ -25117,7 +25159,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_ELECTRODE_HISUIAN] = @@ -25142,7 +25184,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SOUNDPROOF, ABILITY_STATIC, ABILITY_AFTERMATH}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_TYPHLOSION_HISUIAN] = @@ -25167,7 +25209,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_BLAZE, ABILITY_NONE, ABILITY_FLASH_FIRE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_QWILFISH_HISUIAN] = @@ -25193,7 +25235,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_POISON_POINT, ABILITY_SWIFT_SWIM, ABILITY_INTIMIDATE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_SNEASEL_HISUIAN] = @@ -25219,7 +25261,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INNER_FOCUS, ABILITY_KEEN_EYE, ABILITY_POISON_TOUCH}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, #if P_GEN_5_POKEMON == TRUE @@ -25245,7 +25287,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TORRENT, ABILITY_NONE, ABILITY_SHELL_ARMOR}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_LILLIGANT_HISUIAN] = @@ -25271,7 +25313,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_CHLOROPHYLL, ABILITY_HUSTLE, ABILITY_LEAF_GUARD}, .bodyColor = BODY_COLOR_GREEN, .noFlip = TRUE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_ZORUA_HISUIAN] = @@ -25296,7 +25338,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_ZOROARK_HISUIAN] = @@ -25321,7 +25363,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_ILLUSION, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_BRAVIARY_HISUIAN] = @@ -25346,7 +25388,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_KEEN_EYE, ABILITY_SHEER_FORCE, ABILITY_DEFIANT}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, #endif @@ -25374,7 +25416,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAP_SIPPER, ABILITY_OVERCOAT, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_GOODRA_HISUIAN] = @@ -25399,7 +25441,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SAP_SIPPER, ABILITY_OVERCOAT, ABILITY_GOOEY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, [SPECIES_AVALUGG_HISUIAN] = @@ -25424,7 +25466,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_STRONG_JAW, ABILITY_ICE_BODY, ABILITY_STURDY}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, #endif @@ -25451,7 +25493,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_OVERGROW, ABILITY_NONE, ABILITY_LONG_REACH}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_HISUIAN_FORM, + .flags = SPECIES_FLAG_HISUIAN_FORM, }, #endif @@ -25668,7 +25710,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_PALKIA_ORIGIN] = @@ -25693,7 +25735,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE, ABILITY_TELEPATHY}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_GIRATINA_ORIGIN] = @@ -25862,7 +25904,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_GORILLA_TACTICS, ABILITY_NONE, ABILITY_ZEN_MODE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, - .flags = FLAG_GALARIAN_FORM, + .flags = SPECIES_FLAG_GALARIAN_FORM, }, [SPECIES_DEERLING_SUMMER] = DEERLING_BASE_STATS(BODY_COLOR_GREEN), @@ -25895,7 +25937,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_REGENERATOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_GREEN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_THUNDURUS_THERIAN] = @@ -25920,7 +25962,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_VOLT_ABSORB, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_LANDORUS_THERIAN] = @@ -25945,7 +25987,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTIMIDATE, ABILITY_NONE}, .bodyColor = BODY_COLOR_BROWN, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_KYUREM_WHITE] = @@ -25970,7 +26012,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TURBOBLAZE, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, }, [SPECIES_KYUREM_BLACK] = @@ -25995,7 +26037,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_TERAVOLT, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, }, [SPECIES_KELDEO_RESOLUTE] = @@ -26020,7 +26062,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_JUSTIFIED, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_MELOETTA_PIROUETTE] = @@ -26049,7 +26091,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_SERENE_GRACE, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = TRUE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, [SPECIES_GENESECT_DOUSE_DRIVE] = GENESECT_BASE_STATS, @@ -26328,7 +26370,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_POWER_CONSTRUCT, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_HOOPA_UNBOUND] = @@ -26353,7 +26395,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_MAGICIAN, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_MYTHICAL, + .flags = SPECIES_FLAG_MYTHICAL, }, #endif @@ -26493,7 +26535,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, }, [SPECIES_NECROZMA_DAWN_WINGS] = @@ -26518,7 +26560,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRISM_ARMOR, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, }, [SPECIES_NECROZMA_ULTRA] = @@ -26545,7 +26587,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_NEUROFORCE, ABILITY_NONE}, .bodyColor = BODY_COLOR_YELLOW, .noFlip = TRUE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_MAGEARNA_ORIGINAL_COLOR] = MAGEARNA_BASE_STATS(BODY_COLOR_RED), @@ -26642,7 +26684,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_INTREPID_SWORD, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLUE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZAMAZENTA_CROWNED_SHIELD] = @@ -26667,7 +26709,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_DAUNTLESS_SHIELD, ABILITY_NONE}, .bodyColor = BODY_COLOR_RED, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ETERNATUS_ETERNAMAX] = @@ -26692,7 +26734,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_PRESSURE, ABILITY_NONE}, .bodyColor = BODY_COLOR_PURPLE, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_URSHIFU_RAPID_STRIKE_STYLE] = @@ -26717,7 +26759,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_UNSEEN_FIST, ABILITY_NONE}, .bodyColor = BODY_COLOR_GRAY, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, [SPECIES_ZARUDE_DADA] = ZARUDE_BASE_STATS, @@ -26744,6 +26786,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_AS_ONE_ICE_RIDER, ABILITY_NONE}, .bodyColor = BODY_COLOR_WHITE, .noFlip = FALSE, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, }, [SPECIES_CALYREX_SHADOW_RIDER] = @@ -26768,6 +26811,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_AS_ONE_SHADOW_RIDER, ABILITY_NONE}, .bodyColor = BODY_COLOR_BLACK, .noFlip = FALSE, + .flags = SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_CANNOT_BE_TRADED, }, [SPECIES_ENAMORUS_THERIAN] = @@ -26792,7 +26836,7 @@ const struct BaseStats gBaseStats[] = .abilities = {ABILITY_OVERCOAT, ABILITY_NONE}, .bodyColor = BODY_COLOR_PINK, .noFlip = FALSE, - .flags = FLAG_LEGENDARY, + .flags = SPECIES_FLAG_LEGENDARY, }, #endif }; diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index 6236472755..19b22d9b3d 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -6209,95 +6209,8 @@ static const u16 sMewtwoTeachableLearnset[] = { MOVE_UNAVAILABLE, }; +// Instead of reading this array for Mew, it checks for exceptions in CanLearnTeachableMove instead. static const u16 sMewTeachableLearnset[] = { - MOVE_AERIAL_ACE, - MOVE_ATTRACT, - MOVE_BLIZZARD, - MOVE_BRICK_BREAK, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_CALM_MIND, - MOVE_CUT, - MOVE_DIG, - MOVE_DIVE, - MOVE_DOUBLE_TEAM, - MOVE_DRAGON_CLAW, - MOVE_EARTHQUAKE, - MOVE_FACADE, - MOVE_FIRE_BLAST, - MOVE_FLAMETHROWER, - MOVE_FLASH, - MOVE_FLY, - MOVE_FOCUS_PUNCH, - MOVE_FRUSTRATION, - MOVE_GIGA_DRAIN, - MOVE_HAIL, - MOVE_HIDDEN_POWER, - MOVE_HYPER_BEAM, - MOVE_ICE_BEAM, - MOVE_IRON_TAIL, - MOVE_LIGHT_SCREEN, - MOVE_OVERHEAT, - MOVE_PROTECT, - MOVE_PSYCHIC, - MOVE_RAIN_DANCE, - MOVE_REFLECT, - MOVE_REST, - MOVE_RETURN, - MOVE_ROAR, - MOVE_ROCK_SMASH, - MOVE_ROCK_TOMB, - MOVE_SAFEGUARD, - MOVE_SANDSTORM, - MOVE_SECRET_POWER, - MOVE_SHADOW_BALL, - MOVE_SHOCK_WAVE, - MOVE_SKILL_SWAP, - MOVE_SLUDGE_BOMB, - MOVE_SNATCH, - MOVE_SOLAR_BEAM, - MOVE_STEEL_WING, - MOVE_STRENGTH, - MOVE_SUNNY_DAY, - MOVE_SURF, - MOVE_TAUNT, - MOVE_THIEF, - MOVE_THUNDER, - MOVE_THUNDERBOLT, - MOVE_TORMENT, - MOVE_TOXIC, - MOVE_WATERFALL, - MOVE_WATER_PULSE, - MOVE_BODY_SLAM, - MOVE_COUNTER, - MOVE_DEFENSE_CURL, - MOVE_DOUBLE_EDGE, - MOVE_DREAM_EATER, - MOVE_DYNAMIC_PUNCH, - MOVE_ENDURE, - MOVE_EXPLOSION, - MOVE_FIRE_PUNCH, - MOVE_FURY_CUTTER, - MOVE_ICE_PUNCH, - MOVE_ICY_WIND, - MOVE_MEGA_KICK, - MOVE_MEGA_PUNCH, - MOVE_METRONOME, - MOVE_MIMIC, - MOVE_MUD_SLAP, - MOVE_PSYCH_UP, - MOVE_ROCK_SLIDE, - MOVE_ROLLOUT, - MOVE_SEISMIC_TOSS, - MOVE_SLEEP_TALK, - MOVE_SNORE, - MOVE_SOFT_BOILED, - MOVE_SUBSTITUTE, - MOVE_SWAGGER, - MOVE_SWIFT, - MOVE_SWORDS_DANCE, - MOVE_THUNDER_PUNCH, - MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; diff --git a/src/debug.c b/src/debug.c index 7c99ad2c28..aaf5a81316 100644 --- a/src/debug.c +++ b/src/debug.c @@ -294,100 +294,100 @@ extern u8 PlayersHouse_2F_EventScript_CheckWallClock[]; // Text // Main Menu -static const u8 gDebugText_Utilities[] = _("Utilities"); -static const u8 gDebugText_Scripts[] = _("Scripts"); -static const u8 gDebugText_Flags[] = _("Flags"); -static const u8 gDebugText_Vars[] = _("Variables"); -static const u8 gDebugText_Give[] = _("Give X"); -static const u8 gDebugText_Sound[] = _("Sound"); -static const u8 gDebugText_Cancel[] = _("Cancel"); +static const u8 sDebugText_Utilities[] = _("Utilities"); +static const u8 sDebugText_Scripts[] = _("Scripts"); +static const u8 sDebugText_Flags[] = _("Flags"); +static const u8 sDebugText_Vars[] = _("Variables"); +static const u8 sDebugText_Give[] = _("Give X"); +static const u8 sDebugText_Sound[] = _("Sound"); +static const u8 sDebugText_Cancel[] = _("Cancel"); // Script menu -static const u8 gDebugText_Util_Script_1[] = _("Script 1"); -static const u8 gDebugText_Util_Script_2[] = _("Script 2"); -static const u8 gDebugText_Util_Script_3[] = _("Script 3"); -static const u8 gDebugText_Util_Script_4[] = _("Script 4"); -static const u8 gDebugText_Util_Script_5[] = _("Script 5"); -static const u8 gDebugText_Util_Script_6[] = _("Script 6"); -static const u8 gDebugText_Util_Script_7[] = _("Script 7"); -static const u8 gDebugText_Util_Script_8[] = _("Script 8"); +static const u8 sDebugText_Util_Script_1[] = _("Script 1"); +static const u8 sDebugText_Util_Script_2[] = _("Script 2"); +static const u8 sDebugText_Util_Script_3[] = _("Script 3"); +static const u8 sDebugText_Util_Script_4[] = _("Script 4"); +static const u8 sDebugText_Util_Script_5[] = _("Script 5"); +static const u8 sDebugText_Util_Script_6[] = _("Script 6"); +static const u8 sDebugText_Util_Script_7[] = _("Script 7"); +static const u8 sDebugText_Util_Script_8[] = _("Script 8"); // Util Menu -static const u8 gDebugText_Util_HealParty[] = _("Heal Party"); -static const u8 gDebugText_Util_Fly[] = _("Fly to map"); -static const u8 gDebugText_Util_WarpToMap[] = _("Warp to map warp"); -static const u8 gDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); -static const u8 gDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -static const u8 gDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); -static const u8 gDebugText_Util_PoisonMons[] = _("Poison all mons"); -static const u8 gDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); -static const u8 gDebugText_Util_Weather[] = _("Set weather"); -static const u8 gDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); -static const u8 gDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); -static const u8 gDebugText_Util_SetWallClock[] = _("Set Wall Clock"); -static const u8 gDebugText_Util_WatchCredits[] = _("Watch Credits"); -static const u8 gDebugText_Util_Trainer_Name[] = _("Trainer name"); -static const u8 gDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); -static const u8 gDebugText_Util_Trainer_Id[] = _("New Trainer Id"); +static const u8 sDebugText_Util_HealParty[] = _("Heal Party"); +static const u8 sDebugText_Util_Fly[] = _("Fly to map"); +static const u8 sDebugText_Util_WarpToMap[] = _("Warp to map warp"); +static const u8 sDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_1} \n \n\n{STR_VAR_3} "); +static const u8 sDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1} \nMapSec: \n{STR_VAR_2} \n{STR_VAR_3} "); +static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp: \n{STR_VAR_1} \n \n{STR_VAR_3} "); +static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); +static const u8 sDebugText_Util_RunningShoes[] = _("Toggle Running Shoes"); +static const u8 sDebugText_Util_PoisonMons[] = _("Poison all mons"); +static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space"); +static const u8 sDebugText_Util_Weather[] = _("Set weather"); +static const u8 sDebugText_Util_Weather_ID[] = _("Weather Id: {STR_VAR_3}\n{STR_VAR_1}\n{STR_VAR_2}"); +static const u8 sDebugText_Util_CheckWallClock[] = _("Check Wall Clock"); +static const u8 sDebugText_Util_SetWallClock[] = _("Set Wall Clock"); +static const u8 sDebugText_Util_WatchCredits[] = _("Watch Credits"); +static const u8 sDebugText_Util_Trainer_Name[] = _("Trainer name"); +static const u8 sDebugText_Util_Trainer_Gender[] = _("Toggle T. Gender"); +static const u8 sDebugText_Util_Trainer_Id[] = _("New Trainer Id"); // Flags Menu -static const u8 gDebugText_Flags_Flags[] = _("Set Flag XXXX"); -static const u8 gDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); -static const u8 gDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); -static const u8 gDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); -static const u8 gDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); -static const u8 gDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); -static const u8 gDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); -static const u8 gDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); -static const u8 gDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); -static const u8 gDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); -static const u8 gDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); -static const u8 gDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); -static const u8 gDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); -static const u8 gDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); -static const u8 gDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Flags_FlagSet[] = _("TRUE"); -static const u8 gDebugText_Flags_FlagUnset[] = _("FALSE"); +static const u8 sDebugText_Flags_Flags[] = _("Set Flag XXXX"); +static const u8 sDebugText_Flags_SetPokedexFlags[] = _("All Pokédex Flags"); +static const u8 sDebugText_Flags_SwitchDex[] = _("Pokédex ON/OFF"); +static const u8 sDebugText_Flags_SwitchNationalDex[] = _("NatDex ON/OFF"); +static const u8 sDebugText_Flags_SwitchPokeNav[] = _("PokéNav ON/OFF"); +static const u8 sDebugText_Flags_ToggleFlyFlags[] = _("Fly Flags ON/OFF"); +static const u8 sDebugText_Flags_ToggleAllBadges[] = _("All badges ON/OFF"); +static const u8 sDebugText_Flags_ToggleFrontierPass[] = _("Frontier Pass ON/OFF"); +static const u8 sDebugText_Flags_SwitchCollision[] = _("Collision ON/OFF"); +static const u8 sDebugText_Flags_SwitchEncounter[] = _("Encounter ON/OFF"); +static const u8 sDebugText_Flags_SwitchTrainerSee[] = _("TrainerSee ON/OFF"); +static const u8 sDebugText_Flags_SwitchBagUse[] = _("BagUse ON/OFF"); +static const u8 sDebugText_Flags_SwitchCatching[] = _("Catching ON/OFF"); +static const u8 sDebugText_Flags_Flag[] = _("Flag: {STR_VAR_1} \n{STR_VAR_2} \n{STR_VAR_3}"); +static const u8 sDebugText_Flags_FlagHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 sDebugText_Flags_FlagSet[] = _("TRUE"); +static const u8 sDebugText_Flags_FlagUnset[] = _("FALSE"); // Variables Menu -static const u8 gDebugText_Vars_Vars[] = _("Set Vars XXXX"); -static const u8 gDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); -static const u8 gDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); -static const u8 gDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 sDebugText_Vars_Vars[] = _("Set Vars XXXX"); +static const u8 sDebugText_Vars_VariableHex[] = _("{STR_VAR_1} \n0x{STR_VAR_2} "); +static const u8 sDebugText_Vars_Variable[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); +static const u8 sDebugText_Vars_VariableValueSet[] = _("Var: {STR_VAR_1} \nVal: {STR_VAR_3} \n{STR_VAR_2}"); // Give Menu -static const u8 gDebugText_Give_GiveItem[] = _("Give item XXXX"); -static const u8 gDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_Give_AllTMs[] = _("Give all TMs"); -static const u8 gDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); -static const u8 gDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); -static const u8 gDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); -static const u8 gDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); -static const u8 gDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); -static const u8 gDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); -static const u8 gDebugText_Give_MaxMoney[] = _("Max Money"); -static const u8 gDebugText_Give_MaxCoins[] = _("Max Coins"); -static const u8 gDebugText_Give_BattlePoints[] = _("Max Battle Points"); -static const u8 gDebugText_Give_DaycareEgg[] = _("Daycare Egg"); -static const u8 gDebugText_Give_FillPc[] = _("Fill Pc"); -static const u8 gDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); -static const u8 gDebugText_AccessPC[] = _("Access PC"); +static const u8 sDebugText_Give_GiveItem[] = _("Give item XXXX"); +static const u8 sDebugText_ItemQuantity[] = _("Quantity: \n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 sDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 sDebugText_Give_AllTMs[] = _("Give all TMs"); +static const u8 sDebugText_Give_GivePokemonSimple[] = _("Pkm(lvl)"); +static const u8 sDebugText_Give_GivePokemonComplex[] = _("Pkm(l,s,n,a,IV,mov)"); +static const u8 sDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1} \n\n{STR_VAR_2}"); +static const u8 sDebugText_PokemonLevel[] = _("Level: \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonShiny[] = _("Shiny: \n {STR_VAR_2} \n \n "); +static const u8 sDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonIVs[] = _("All IVs: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_0[] = _("IV HP: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_1[] = _("IV Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_2[] = _("IV Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_3[] = _("IV Speed: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_4[] = _("IV Sp. Attack: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonIV_5[] = _("IV Sp. Defense: \n {STR_VAR_3} \n \n{STR_VAR_2} "); +static const u8 sDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_PokemonMove_3[] = _("Move 3: {STR_VAR_3} \n{STR_VAR_1} \n \n{STR_VAR_2}"); +static const u8 sDebugText_Give_MaxMoney[] = _("Max Money"); +static const u8 sDebugText_Give_MaxCoins[] = _("Max Coins"); +static const u8 sDebugText_Give_BattlePoints[] = _("Max Battle Points"); +static const u8 sDebugText_Give_DaycareEgg[] = _("Daycare Egg"); +static const u8 sDebugText_Give_FillPc[] = _("Fill Pc"); +static const u8 sDebugText_Give_GiveCHEAT[] = _("CHEAT Start"); +static const u8 sDebugText_AccessPC[] = _("Access PC"); // Sound Mneu -static const u8 gDebugText_Sound_SE[] = _("Effects"); -static const u8 gDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 gDebugText_Sound_MUS[] = _("Music"); -static const u8 gDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); -static const u8 gDebugText_Sound_Empty[] = _(""); +static const u8 sDebugText_Sound_SE[] = _("Effects"); +static const u8 sDebugText_Sound_SE_ID[] = _("Sound Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_MUS[] = _("Music"); +static const u8 sDebugText_Sound_MUS_ID[] = _("Music Id: {STR_VAR_3}\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_Empty[] = _(""); static const u8 digitInidicator_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); static const u8 digitInidicator_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); @@ -426,79 +426,79 @@ static const s32 sPowersOfTen[] = // List Menu Items static const struct ListMenuItem sDebugMenu_Items_Main[] = { - [DEBUG_MENU_ITEM_UTILITIES] = {gDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, - [DEBUG_MENU_ITEM_SCRIPTS] = {gDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, - [DEBUG_MENU_ITEM_FLAGS] = {gDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, - [DEBUG_MENU_ITEM_VARS] = {gDebugText_Vars, DEBUG_MENU_ITEM_VARS}, - [DEBUG_MENU_ITEM_GIVE] = {gDebugText_Give, DEBUG_MENU_ITEM_GIVE}, - [DEBUG_MENU_ITEM_SOUND] = {gDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, - [DEBUG_MENU_ITEM_ACCESS_PC] = {gDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, - [DEBUG_MENU_ITEM_CANCEL] = {gDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} + [DEBUG_MENU_ITEM_UTILITIES] = {sDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, + [DEBUG_MENU_ITEM_SCRIPTS] = {sDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, + [DEBUG_MENU_ITEM_FLAGS] = {sDebugText_Flags, DEBUG_MENU_ITEM_FLAGS}, + [DEBUG_MENU_ITEM_VARS] = {sDebugText_Vars, DEBUG_MENU_ITEM_VARS}, + [DEBUG_MENU_ITEM_GIVE] = {sDebugText_Give, DEBUG_MENU_ITEM_GIVE}, + [DEBUG_MENU_ITEM_SOUND] = {sDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, + [DEBUG_MENU_ITEM_ACCESS_PC] = {sDebugText_AccessPC, DEBUG_MENU_ITEM_ACCESS_PC}, + [DEBUG_MENU_ITEM_CANCEL] = {sDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL} }; static const struct ListMenuItem sDebugMenu_Items_Utilities[] = { - [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {gDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, - [DEBUG_UTIL_MENU_ITEM_FLY] = {gDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, - [DEBUG_UTIL_MENU_ITEM_WARP] = {gDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, - [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {gDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, - [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {gDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {gDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, - [DEBUG_UTIL_MENU_ITEM_WEATHER] = {gDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {gDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {gDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {gDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {gDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {gDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, - [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {gDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, + [DEBUG_UTIL_MENU_ITEM_HEAL_PARTY] = {sDebugText_Util_HealParty, DEBUG_UTIL_MENU_ITEM_HEAL_PARTY}, + [DEBUG_UTIL_MENU_ITEM_FLY] = {sDebugText_Util_Fly, DEBUG_UTIL_MENU_ITEM_FLY}, + [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES] = {sDebugText_Util_RunningShoes, DEBUG_UTIL_MENU_ITEM_RUNNING_SHOES}, + [DEBUG_UTIL_MENU_ITEM_POISON_MONS] = {sDebugText_Util_PoisonMons, DEBUG_UTIL_MENU_ITEM_POISON_MONS}, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = {sDebugText_Util_Weather, DEBUG_UTIL_MENU_ITEM_WEATHER}, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = {sDebugText_Util_CheckWallClock, DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = {sDebugText_Util_SetWallClock, DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK}, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = {sDebugText_Util_WatchCredits, DEBUG_UTIL_MENU_ITEM_WATCHCREDITS}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_NAME] = {sDebugText_Util_Trainer_Name, DEBUG_UTIL_MENU_ITEM_TRAINER_NAME}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER] = {sDebugText_Util_Trainer_Gender, DEBUG_UTIL_MENU_ITEM_TRAINER_GENDER}, + [DEBUG_UTIL_MENU_ITEM_TRAINER_ID] = {sDebugText_Util_Trainer_Id, DEBUG_UTIL_MENU_ITEM_TRAINER_ID}, }; static const struct ListMenuItem sDebugMenu_Items_Scripts[] = { - [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {gDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {gDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {gDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {gDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {gDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {gDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {gDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, - [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {gDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_1] = {sDebugText_Util_Script_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_1}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_2] = {sDebugText_Util_Script_2, DEBUG_UTIL_MENU_ITEM_SCRIPT_2}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_3] = {sDebugText_Util_Script_3, DEBUG_UTIL_MENU_ITEM_SCRIPT_3}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_4] = {sDebugText_Util_Script_4, DEBUG_UTIL_MENU_ITEM_SCRIPT_4}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_5] = {sDebugText_Util_Script_5, DEBUG_UTIL_MENU_ITEM_SCRIPT_5}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_6] = {sDebugText_Util_Script_6, DEBUG_UTIL_MENU_ITEM_SCRIPT_6}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_7] = {sDebugText_Util_Script_7, DEBUG_UTIL_MENU_ITEM_SCRIPT_7}, + [DEBUG_UTIL_MENU_ITEM_SCRIPT_8] = {sDebugText_Util_Script_8, DEBUG_UTIL_MENU_ITEM_SCRIPT_8}, }; static const struct ListMenuItem sDebugMenu_Items_Flags[] = { - [DEBUG_FLAG_MENU_ITEM_FLAGS] = {gDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, - [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {gDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, - [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {gDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, - [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {gDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, - [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {gDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, - [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {gDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, - [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {gDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, - [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {gDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, - [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {gDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {gDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF] = {gDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {gDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, - [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {gDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLAGS] = {sDebugText_Flags_Flags, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS] = {sDebugText_Flags_SetPokedexFlags, DEBUG_FLAG_MENU_ITEM_POKEDEXFLAGS}, + [DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF] = {sDebugText_Flags_SwitchDex, DEBUG_FLAG_MENU_ITEM_POKEDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_NATDEXONOFF] = {sDebugText_Flags_SwitchNationalDex, DEBUG_FLAG_MENU_ITEM_NATDEXONOFF}, + [DEBUG_FLAG_MENU_ITEM_POKENAVONOFF] = {sDebugText_Flags_SwitchPokeNav, DEBUG_FLAG_MENU_ITEM_POKENAVONOFF}, + [DEBUG_FLAG_MENU_ITEM_FLYANYWHERE] = {sDebugText_Flags_ToggleFlyFlags, DEBUG_FLAG_MENU_ITEM_FLYANYWHERE}, + [DEBUG_FLAG_MENU_ITEM_GETALLBADGES] = {sDebugText_Flags_ToggleAllBadges, DEBUG_FLAG_MENU_ITEM_GETALLBADGES}, + [DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS] = {sDebugText_Flags_ToggleFrontierPass, DEBUG_FLAG_MENU_ITEM_FRONTIER_PASS}, + [DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF] = {sDebugText_Flags_SwitchCollision, DEBUG_FLAG_MENU_ITEM_COLISSION_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF] = {sDebugText_Flags_SwitchEncounter, DEBUG_FLAG_MENU_ITEM_ENCOUNTER_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF] = {sDebugText_Flags_SwitchTrainerSee, DEBUG_FLAG_MENU_ITEM_TRAINER_SEE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF] = {sDebugText_Flags_SwitchBagUse, DEBUG_FLAG_MENU_ITEM_BAG_USE_ONOFF}, + [DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF] = {sDebugText_Flags_SwitchCatching, DEBUG_FLAG_MENU_ITEM_CATCHING_ONOFF}, }; static const struct ListMenuItem sDebugMenu_Items_Vars[] = { - [DEBUG_VARS_MENU_ITEM_VARS] = {gDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, + [DEBUG_VARS_MENU_ITEM_VARS] = {sDebugText_Vars_Vars, DEBUG_FLAG_MENU_ITEM_FLAGS}, }; static const struct ListMenuItem sDebugMenu_Items_Give[] = { - [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {gDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, - [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {gDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, - [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {gDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, - [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {gDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, - [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {gDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, - [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {gDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, - [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = {gDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, - [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {gDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, - [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {gDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, - [DEBUG_GIVE_MENU_ITEM_CHEAT] = {gDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, + [DEBUG_GIVE_MENU_ITEM_ITEM_X] = {sDebugText_Give_GiveItem, DEBUG_GIVE_MENU_ITEM_ITEM_X}, + [DEBUG_GIVE_MENU_ITEM_ALLTMS] = {sDebugText_Give_AllTMs, DEBUG_GIVE_MENU_ITEM_ALLTMS}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE] = {sDebugText_Give_GivePokemonSimple, DEBUG_GIVE_MENU_ITEM_POKEMON_SIMPLE}, + [DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX] = {sDebugText_Give_GivePokemonComplex, DEBUG_GIVE_MENU_ITEM_POKEMON_COMPLEX}, + [DEBUG_GIVE_MENU_ITEM_MAX_MONEY] = {sDebugText_Give_MaxMoney, DEBUG_GIVE_MENU_ITEM_MAX_MONEY}, + [DEBUG_GIVE_MENU_ITEM_MAX_COINS] = {sDebugText_Give_MaxCoins, DEBUG_GIVE_MENU_ITEM_MAX_COINS}, + [DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS] = {sDebugText_Give_BattlePoints, DEBUG_GIVE_MENU_ITEM_MAX_BATTLE_POINTS}, + [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {sDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, + [DEBUG_GIVE_MENU_ITEM_FILL_PC] = {sDebugText_Give_FillPc, DEBUG_GIVE_MENU_ITEM_FILL_PC}, + [DEBUG_GIVE_MENU_ITEM_CHEAT] = {sDebugText_Give_GiveCHEAT, DEBUG_GIVE_MENU_ITEM_CHEAT}, }; static const struct ListMenuItem sDebugMenu_Items_Sound[] = { - [DEBUG_SOUND_MENU_ITEM_SE] = {gDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, - [DEBUG_SOUND_MENU_ITEM_MUS] = {gDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, + [DEBUG_SOUND_MENU_ITEM_SE] = {sDebugText_Sound_SE, DEBUG_SOUND_MENU_ITEM_SE}, + [DEBUG_SOUND_MENU_ITEM_MUS] = {sDebugText_Sound_MUS, DEBUG_SOUND_MENU_ITEM_MUS}, }; // ******************************* @@ -755,13 +755,13 @@ static void DebugTask_HandleMenuInput_Main(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Main[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu_Full(taskId); @@ -773,13 +773,13 @@ static void DebugTask_HandleMenuInput_Utilities(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Utilities[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); @@ -791,13 +791,13 @@ static void DebugTask_HandleMenuInput_Scripts(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Scripts[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); @@ -809,13 +809,13 @@ static void DebugTask_HandleMenuInput_Flags(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Flags[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); @@ -827,13 +827,13 @@ static void DebugTask_HandleMenuInput_Vars(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Vars[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); @@ -845,13 +845,13 @@ static void DebugTask_HandleMenuInput_Give(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Give[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); @@ -863,13 +863,13 @@ static void DebugTask_HandleMenuInput_Sound(u8 taskId) void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); if ((func = sDebugMenu_Actions_Sound[input]) != NULL) func(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Debug_DestroyMenu(taskId); @@ -960,9 +960,9 @@ static void DebugAction_Util_Warp_Warp(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT-1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); StringCopy(gStringVar3, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMapGroup); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMapGroup; @@ -975,27 +975,27 @@ static void DebugAction_Util_Warp_Warp(u8 taskId) } static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > MAP_GROUPS_COUNT - 1) gTasks[taskId].data[3] = MAP_GROUPS_COUNT - 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; @@ -1003,13 +1003,13 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUPS_COUNT - 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMapGroup); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMapGroup); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { gTasks[taskId].data[5] = gTasks[taskId].data[3]; gTasks[taskId].data[3] = 0; @@ -1017,15 +1017,15 @@ static void DebugAction_Util_Warp_SelectMapGroup(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMap); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectMap; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); @@ -1035,27 +1035,27 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) { u8 max_value = MAP_GROUP_COUNT[gTasks[taskId].data[5]]; //maps in the selected map group - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > max_value - 1) gTasks[taskId].data[3] = max_value - 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; @@ -1063,14 +1063,14 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); ConvertIntToDecimalStringN(gStringVar2, MAP_GROUP_COUNT[gTasks[taskId].data[5]] - 1, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar1, gDebugText_Util_WarpToMap_SelMax); + StringExpandPlaceholders(gStringVar1, sDebugText_Util_WarpToMap_SelMax); GetMapName(gStringVar2, Overworld_GetMapHeaderByGroupAndId(gTasks[taskId].data[5], gTasks[taskId].data[3])->regionMapSectionId, 0); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectMap); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectMap); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { gTasks[taskId].data[6] = gTasks[taskId].data[3]; gTasks[taskId].data[3] = 0; @@ -1078,11 +1078,11 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectWarp); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Warp_SelectWarp; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); @@ -1090,16 +1090,16 @@ static void DebugAction_Util_Warp_SelectMap(u8 taskId) } static void DebugAction_Util_Warp_SelectWarp(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > 10) gTasks[taskId].data[3] = 10; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) @@ -1108,11 +1108,11 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_WarpToMap_SelectWarp); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_WarpToMap_SelectWarp); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { gTasks[taskId].data[7] = gTasks[taskId].data[3]; //WARP @@ -1122,7 +1122,7 @@ static void DebugAction_Util_Warp_SelectWarp(u8 taskId) ResetInitialPlayerAvatarState(); DebugAction_DestroyExtraWindow(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); @@ -1161,12 +1161,12 @@ static void DebugAction_Util_PoisonMons(u8 taskId) static void DebugAction_Util_CheckSaveBlock(u8 taskId) { - static const u8 gDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); + static const u8 sDebugText_SaveBlockSize[] = _("SaveBlock1 is {STR_VAR_1} bytes long.\nMax size is 15872 bytes.\pSaveBlock2 is {STR_VAR_2} bytes long.\nMax size is 3968 bytes.\pPokemonStorage is {STR_VAR_3} bytes long.\nMax size is 35712 bytes."); ConvertIntToDecimalStringN(gStringVar1, sizeof(struct SaveBlock1), STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar2, sizeof(struct SaveBlock2), STR_CONV_MODE_LEFT_ALIGN, 6); ConvertIntToDecimalStringN(gStringVar3, sizeof(struct PokemonStorage), STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gDebugText_SaveBlockSize); + StringExpandPlaceholders(gStringVar4, sDebugText_SaveBlockSize); Debug_DestroyMenu_Full(taskId); LockPlayerFieldControls(); @@ -1212,7 +1212,7 @@ static void DebugAction_Util_Weather(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar1, sWeatherNames[0], CHAR_SPACE, 30); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_Weather_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Util_Weather_SelectId; @@ -1222,28 +1222,28 @@ static void DebugAction_Util_Weather(u8 taskId) } static void DebugAction_Util_Weather_SelectId(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > WEATHER_ROUTE123_CYCLE) gTasks[taskId].data[3] = WEATHER_ROUTE123_CYCLE; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < WEATHER_NONE) gTasks[taskId].data[3] = WEATHER_NONE; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; @@ -1257,11 +1257,11 @@ static void DebugAction_Util_Weather_SelectId(u8 taskId) else StringCopyPadded(gStringVar1, sText_WeatherNotDefined, CHAR_SPACE, 30); - StringExpandPlaceholders(gStringVar4, gDebugText_Util_Weather_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Util_Weather_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { if (gTasks[taskId].data[3] <= 14 || gTasks[taskId].data[3] >= 20) { @@ -1269,7 +1269,7 @@ static void DebugAction_Util_Weather_SelectId(u8 taskId) SetWeather(gTasks[taskId].data[5]); } } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); @@ -1386,13 +1386,13 @@ static void DebugAction_Flags_Flags(u8 taskId) //Display initial Flag ConvertIntToDecimalStringN(gStringVar1, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, 1, STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Flags_FlagHex); if (FlagGet(FLAG_TEMP_1) == TRUE) - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Flags_Flag); + StringExpandPlaceholders(gStringVar4, sDebugText_Flags_Flag); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Flags_FlagsSelect; @@ -1402,16 +1402,16 @@ static void DebugAction_Flags_Flags(u8 taskId) } static void DebugAction_Flags_FlagsSelect(u8 taskId) { - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) FlagToggle(gTasks[taskId].data[3]); - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); return; } - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { PlaySE(SE_SELECT); gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; @@ -1419,7 +1419,7 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) gTasks[taskId].data[3] = FLAGS_COUNT - 1; } } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { PlaySE(SE_SELECT); gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; @@ -1427,7 +1427,7 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) gTasks[taskId].data[3] = 1; } } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { PlaySE(SE_SELECT); gTasks[taskId].data[4] -= 1; @@ -1436,7 +1436,7 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) gTasks[taskId].data[4] = 0; } } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { PlaySE(SE_SELECT); gTasks[taskId].data[4] += 1; @@ -1446,17 +1446,17 @@ static void DebugAction_Flags_FlagsSelect(u8 taskId) } } - if (gMain.newKeys & DPAD_ANY || gMain.newKeys & A_BUTTON) + if (JOY_NEW(DPAD_ANY) || JOY_NEW(A_BUTTON)) { ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_FLAGS); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 3); - StringExpandPlaceholders(gStringVar1, gDebugText_Flags_FlagHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Flags_FlagHex); if (FlagGet(gTasks[taskId].data[3]) == TRUE) - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); StringCopy(gStringVar3, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringExpandPlaceholders(gStringVar4, gDebugText_Flags_Flag); + StringExpandPlaceholders(gStringVar4, sDebugText_Flags_Flag); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } } @@ -1644,11 +1644,11 @@ static void DebugAction_Vars_Vars(u8 taskId) //Display initial Variable ConvertIntToDecimalStringN(gStringVar1, VARS_START, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, VARS_START, STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); ConvertIntToDecimalStringN(gStringVar3, 0, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_Variable); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_Variable); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Vars_Select; @@ -1660,38 +1660,38 @@ static void DebugAction_Vars_Vars(u8 taskId) static void DebugAction_Vars_Select(u8 taskId) { - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > VARS_END) gTasks[taskId].data[3] = VARS_END; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < VARS_START) gTasks[taskId].data[3] = VARS_START; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { gTasks[taskId].data[4] -= 1; if (gTasks[taskId].data[4] < 0) gTasks[taskId].data[4] = 0; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { gTasks[taskId].data[4] += 1; if (gTasks[taskId].data[4] > DEBUG_NUMBER_DIGITS_VARIABLES - 1) gTasks[taskId].data[4] = DEBUG_NUMBER_DIGITS_VARIABLES - 1; } - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value, if 65535 the value hasnt been set gTasks[taskId].data[5] = 0; else @@ -1700,11 +1700,11 @@ static void DebugAction_Vars_Select(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit //Combine str's to full window string - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_Variable); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_Variable); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { gTasks[taskId].data[4] = 0; @@ -1712,7 +1712,7 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); if (VarGetIfExist(gTasks[taskId].data[3]) == 65535) //Current value if 65535 the value hasnt been set gTasks[taskId].data[5] = 0; else @@ -1720,13 +1720,13 @@ static void DebugAction_Vars_Select(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[5], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_VariableValueSet); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_VariableValueSet); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].data[6] = gTasks[taskId].data[5]; //New value selector gTasks[taskId].func = DebugAction_Vars_SetValue; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); @@ -1735,7 +1735,7 @@ static void DebugAction_Vars_Select(u8 taskId) } static void DebugAction_Vars_SetValue(u8 taskId) { - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { if (gTasks[taskId].data[6] + sPowersOfTen[gTasks[taskId].data[4]] <= 32000) gTasks[taskId].data[6] += sPowersOfTen[gTasks[taskId].data[4]]; @@ -1745,14 +1745,14 @@ static void DebugAction_Vars_SetValue(u8 taskId) if (gTasks[taskId].data[6] >= 32000) gTasks[taskId].data[6] = 32000 - 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[6] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[6] < 0){ gTasks[taskId].data[6] = 0; } } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { gTasks[taskId].data[4] -= 1; if (gTasks[taskId].data[4] < 0) @@ -1760,7 +1760,7 @@ static void DebugAction_Vars_SetValue(u8 taskId) gTasks[taskId].data[4] = 0; } } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { gTasks[taskId].data[4] += 1; if (gTasks[taskId].data[4] > 4) @@ -1769,30 +1769,30 @@ static void DebugAction_Vars_SetValue(u8 taskId) } } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); VarSet(gTasks[taskId].data[3], gTasks[taskId].data[6]); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); DebugAction_DestroyExtraWindow(taskId); return; } - if (gMain.newKeys & DPAD_ANY || gMain.newKeys & A_BUTTON) + if (JOY_NEW(DPAD_ANY) || JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); ConvertIntToHexStringN(gStringVar2, gTasks[taskId].data[3], STR_CONV_MODE_LEFT_ALIGN, 4); - StringExpandPlaceholders(gStringVar1, gDebugText_Vars_VariableHex); + StringExpandPlaceholders(gStringVar1, sDebugText_Vars_VariableHex); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[6], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_VARIABLES); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); //Current digit - StringExpandPlaceholders(gStringVar4, gDebugText_Vars_VariableValueSet); + StringExpandPlaceholders(gStringVar4, sDebugText_Vars_VariableValueSet); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } } @@ -1820,7 +1820,7 @@ static void DebugAction_Give_Item(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); CopyItemName(1, gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemID); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectId; @@ -1834,28 +1834,28 @@ static void DebugAction_Give_Item(u8 taskId) } static void DebugAction_Give_Item_SelectId(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] >= ITEMS_COUNT) gTasks[taskId].data[3] = ITEMS_COUNT - 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; @@ -1865,7 +1865,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) CopyItemName(gTasks[taskId].data[3], gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemID); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon @@ -1878,7 +1878,7 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) gSprites[gTasks[taskId].data[6]].oam.priority = 0; } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { gTasks[taskId].data[5] = gTasks[taskId].data[3]; gTasks[taskId].data[3] = 1; @@ -1887,12 +1887,12 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemQuantity); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Item_SelectQuantity; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon @@ -1905,28 +1905,28 @@ static void DebugAction_Give_Item_SelectId(u8 taskId) } static void DebugAction_Give_Item_SelectQuantity(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] >= 100) gTasks[taskId].data[3] = 99; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; @@ -1935,11 +1935,11 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEM_QUANTITY); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_ItemQuantity); + StringExpandPlaceholders(gStringVar4, sDebugText_ItemQuantity); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon @@ -1950,7 +1950,7 @@ static void DebugAction_Give_Item_SelectQuantity(u8 taskId) AddBagItem(gTasks[taskId].data[5], gTasks[taskId].data[3]); DebugAction_DestroyExtraWindow(taskId); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { FreeSpriteTilesByTag(ITEM_TAG); //Destroy item icon FreeSpritePaletteByTag(ITEM_TAG); //Destroy item icon @@ -2015,7 +2015,7 @@ static void DebugAction_Give_PokemonSimple(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 3); StringCopy(gStringVar1, gSpeciesNames[1]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); //Set task data @@ -2053,7 +2053,7 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, 4); StringCopy(gStringVar1, gSpeciesNames[1]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectId; @@ -2070,28 +2070,28 @@ static void DebugAction_Give_PokemonComplex(u8 taskId) static void DebugAction_Give_Pokemon_SelectId(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] >= NUM_SPECIES) gTasks[taskId].data[3] = NUM_SPECIES - 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; @@ -2101,7 +2101,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) StringCopy(gStringVar1, gSpeciesNames[gTasks[taskId].data[3]]); //CopyItemName(gTasks[taskId].data[3], gStringVar1); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 4); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonID); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); @@ -2111,7 +2111,7 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) gSprites[gTasks[taskId].data[6]].oam.priority = 0; } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { sDebugMonData->mon_speciesId = gTasks[taskId].data[3]; //Species ID gTasks[taskId].data[3] = 1; @@ -2120,12 +2120,12 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonLevel); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectLevel; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2136,28 +2136,28 @@ static void DebugAction_Give_Pokemon_SelectId(u8 taskId) } static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > 100) gTasks[taskId].data[3] = 100; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; @@ -2166,11 +2166,11 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonLevel); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonLevel); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { FreeMonIconPalettes(); FreeAndDestroyMonIconSprite(&gSprites[gTasks[taskId].data[6]]); //Destroy pokemon sprite @@ -2189,14 +2189,14 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectShiny; } } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2208,17 +2208,17 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) //If complex static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > 1) gTasks[taskId].data[3] = 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) @@ -2226,16 +2226,16 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) } if (gTasks[taskId].data[3] == 1) - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagSet, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagSet, CHAR_SPACE, 15); else - StringCopyPadded(gStringVar2, gDebugText_Flags_FlagUnset, CHAR_SPACE, 15); + StringCopyPadded(gStringVar2, sDebugText_Flags_FlagUnset, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonShiny); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { sDebugMonData->isShiny = gTasks[taskId].data[3]; //isShiny gTasks[taskId].data[3] = 0; @@ -2245,12 +2245,12 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNatureNamePointers[0]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonNature); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectNature; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2259,17 +2259,17 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) } static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > NUM_NATURES-1) gTasks[taskId].data[3] = NUM_NATURES-1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) @@ -2280,11 +2280,11 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gNatureNamePointers[gTasks[taskId].data[3]]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonNature); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonNature); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { u8 abilityId; sDebugMonData->mon_natureId = gTasks[taskId].data[3]; //NatureId @@ -2296,12 +2296,12 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); abilityId = GetAbilityBySpecies(sDebugMonData->mon_speciesId, 0); StringCopy(gStringVar1, gAbilityNames[abilityId]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectAbility; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2314,17 +2314,17 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) u8 abilityCount = NUM_ABILITY_SLOTS - 1; //-1 for proper iteration u8 i = 0; - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > abilityCount) gTasks[taskId].data[3] = abilityCount; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) @@ -2340,11 +2340,11 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringCopy(gStringVar1, gAbilityNames[abilityId]); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonAbility); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { sDebugMonData->mon_abilityNum = gTasks[taskId].data[3] - i; //AbilityNum gTasks[taskId].data[3] = 0; @@ -2353,12 +2353,12 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_SelectIVs; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2367,28 +2367,28 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) } static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > 31) gTasks[taskId].data[3] = 31; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 2) gTasks[taskId].data[4] += 1; @@ -2400,29 +2400,29 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_3); break; case 4: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_4); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_4); break; case 5: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_5); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_5); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } //If A or B button - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { switch (gTasks[taskId].data[7]) { @@ -2459,22 +2459,22 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_3); break; case 4: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_4); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_4); break; case 5: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonIV_5); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonIV_5); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2491,13 +2491,13 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) StringCopy(gStringVar1, gMoveNames[gTasks[taskId].data[3]]); StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); gTasks[taskId].func = DebugAction_Give_Pokemon_Move; } } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2506,28 +2506,28 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) } static void DebugAction_Give_Pokemon_Move(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] >= MOVES_COUNT) gTasks[taskId].data[3] = MOVES_COUNT - 1; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 0) gTasks[taskId].data[3] = 0; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < 3) gTasks[taskId].data[4] += 1; @@ -2540,22 +2540,22 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { //If MOVE_NONE selected, stop asking for additional moves if (gTasks[taskId].data[3] == 0) @@ -2592,16 +2592,16 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) switch (gTasks[taskId].data[7]) { case 0: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_0); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); break; case 1: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_1); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_1); break; case 2: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_2); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_2); break; case 3: - StringExpandPlaceholders(gStringVar4, gDebugText_PokemonMove_3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_3); break; } AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); @@ -2617,7 +2617,7 @@ static void DebugAction_Give_Pokemon_Move(u8 taskId) gTasks[taskId].func = DebugAction_Give_Pokemon_ComplexCreateMon; } } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); Free(sDebugMonData); //Frees EWRAM of MonData Struct @@ -2805,16 +2805,15 @@ static void Task_WaitFadeAccessPC(u8 taskId) static void DebugAction_AccessPC(u8 taskId) { Debug_DestroyMenu_Full(taskId); - CleanupOverworldWindowsAndTilemaps(); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - CreateTask(Task_WaitFadeAccessPC, 0); + LockPlayerFieldControls(); + ScriptContext_SetupScript(EventScript_PC); } // ******************************* // Sound Scripts -static const u8 *const gBGMNames[]; -static const u8 *const gSENames[]; +static const u8 *const sBGMNames[]; +static const u8 *const sSENames[]; static void DebugAction_Sound_SE(u8 taskId) { u8 windowId; @@ -2832,8 +2831,8 @@ static void DebugAction_Sound_SE(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, 1, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringCopyPadded(gStringVar1, gSENames[0], CHAR_SPACE, 35); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); + StringCopyPadded(gStringVar1, sSENames[0], CHAR_SPACE, 35); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SE_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); StopMapMusic(); //Stop map music to better hear sounds @@ -2846,45 +2845,45 @@ static void DebugAction_Sound_SE(u8 taskId) } static void DebugAction_Sound_SE_SelectId(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > END_SE) gTasks[taskId].data[3] = END_SE; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < 1) gTasks[taskId].data[3] = 1; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, gSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); + StringCopyPadded(gStringVar1, sSENames[gTasks[taskId].data[3]-1], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_SE_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_SE_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { m4aSongNumStop(gTasks[taskId].data[5]); gTasks[taskId].data[5] = gTasks[taskId].data[3]; m4aSongNumStart(gTasks[taskId].data[3]); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); m4aSongNumStop(gTasks[taskId].data[5]); @@ -2909,8 +2908,8 @@ static void DebugAction_Sound_MUS(u8 taskId) //Display initial ID StringCopy(gStringVar2, gText_DigitIndicator[0]); ConvertIntToDecimalStringN(gStringVar3, START_MUS, STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringCopyPadded(gStringVar1, gBGMNames[0], CHAR_SPACE, 35); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); + StringCopyPadded(gStringVar1, sBGMNames[0], CHAR_SPACE, 35); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_MUS_ID); AddTextPrinterParameterized(windowId, 1, gStringVar4, 1, 1, 0, NULL); StopMapMusic(); //Stop map music to better hear new music @@ -2923,45 +2922,45 @@ static void DebugAction_Sound_MUS(u8 taskId) } static void DebugAction_Sound_MUS_SelectId(u8 taskId) { - if (gMain.newKeys & DPAD_ANY) + if (JOY_NEW(DPAD_ANY)) { - if (gMain.newKeys & DPAD_UP) + if (JOY_NEW(DPAD_UP)) { gTasks[taskId].data[3] += sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] > END_MUS) gTasks[taskId].data[3] = END_MUS; } - if (gMain.newKeys & DPAD_DOWN) + if (JOY_NEW(DPAD_DOWN)) { gTasks[taskId].data[3] -= sPowersOfTen[gTasks[taskId].data[4]]; if (gTasks[taskId].data[3] < START_MUS) gTasks[taskId].data[3] = START_MUS; } - if (gMain.newKeys & DPAD_LEFT) + if (JOY_NEW(DPAD_LEFT)) { if (gTasks[taskId].data[4] > 0) gTasks[taskId].data[4] -= 1; } - if (gMain.newKeys & DPAD_RIGHT) + if (JOY_NEW(DPAD_RIGHT)) { if (gTasks[taskId].data[4] < DEBUG_NUMBER_DIGITS_ITEMS - 1) gTasks[taskId].data[4] += 1; } StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].data[4]]); - StringCopyPadded(gStringVar1, gBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); + StringCopyPadded(gStringVar1, sBGMNames[gTasks[taskId].data[3]-START_MUS], CHAR_SPACE, 35); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].data[3], STR_CONV_MODE_LEADING_ZEROS, DEBUG_NUMBER_DIGITS_ITEMS); - StringExpandPlaceholders(gStringVar4, gDebugText_Sound_MUS_ID); + StringExpandPlaceholders(gStringVar4, sDebugText_Sound_MUS_ID); AddTextPrinterParameterized(gTasks[taskId].data[2], 1, gStringVar4, 1, 1, 0, NULL); } - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { m4aSongNumStop(gTasks[taskId].data[5]); gTasks[taskId].data[5] = gTasks[taskId].data[3]; m4aSongNumStart(gTasks[taskId].data[3]); } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); // m4aSongNumStop(gTasks[taskId].data[5]); //Uncomment if music should stop after leaving menu @@ -3508,7 +3507,7 @@ SOUND_LIST_BGM #undef X #define X(songId) sBGMName_##songId, -static const u8 *const gBGMNames[] = +static const u8 *const sBGMNames[] = { SOUND_LIST_BGM }; @@ -3520,7 +3519,7 @@ SOUND_LIST_SE #undef X #define X(songId) sSEName_##songId, -static const u8 *const gSENames[] = +static const u8 *const sSENames[] = { SOUND_LIST_SE }; diff --git a/src/decompress.c b/src/decompress.c index c94f748629..f5d4ff233d 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -277,7 +277,7 @@ bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet *src struct SpriteSheet dest; void *buffer; - buffer = AllocZeroed(*((u32 *)(&src->data[0])) >> 8); + buffer = AllocZeroed(src->data[0] >> 8); LZ77UnCompWram(src->data, buffer); dest.data = buffer; @@ -294,7 +294,7 @@ bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette struct SpritePalette dest; void *buffer; - buffer = AllocZeroed(*((u32 *)(&src->data[0])) >> 8); + buffer = AllocZeroed(src->data[0] >> 8); LZ77UnCompWram(src->data, buffer); dest.data = buffer; dest.tag = src->tag; diff --git a/src/decoration.c b/src/decoration.c index c5c7c02c34..cd3e185da3 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1000,7 +1000,7 @@ static void HandleDecorationItemsMenuInput(u8 taskId) DestroyListMenuTask(tMenuTaskId, &sDecorationsScrollOffset, &sDecorationsCursorPos); RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES); RemoveDecorationItemsOtherWindows(); - free(sDecorationItemsMenu); + Free(sDecorationItemsMenu); sSecretBasePC_SelectedDecorationActions[tDecorationMenuCommand][0](taskId); break; } @@ -1161,7 +1161,7 @@ static void DecorationItemsMenuAction_Cancel(u8 taskId) RemoveDecorationItemsScrollIndicators(); RemoveDecorationItemsOtherWindows(); DestroyListMenuTask(tMenuTaskId, NULL, NULL); - free(sDecorationItemsMenu); + Free(sDecorationItemsMenu); ReinitDecorationCategoriesWindow(taskId); } @@ -2060,13 +2060,13 @@ static u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 palette.data = GetDecorationIconPicOrPalette(decor, 1); palette.tag = paletteTag; LoadCompressedSpritePalette(&palette); - template = malloc(sizeof(struct SpriteTemplate)); + template = Alloc(sizeof(struct SpriteTemplate)); *template = gItemIconSpriteTemplate; template->tileTag = tilesTag; template->paletteTag = paletteTag; spriteId = CreateSprite(template, 0, 0, 0); FreeItemIconTemporaryBuffers(); - free(template); + Free(template); return spriteId; } @@ -2105,7 +2105,7 @@ static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u template->tileTag = tilesTag; template->paletteTag = paletteTag; spriteId = CreateSprite(template, 0, 0, 0); - free(template); + Free(template); } else { diff --git a/src/diploma.c b/src/diploma.c index ce31578dcb..a30d715546 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -73,7 +73,7 @@ void CB2_ShowDiploma(void) ResetPaletteFade(); FreeAllSpritePalettes(); LoadPalette(sDiplomaPalettes, 0, 64); - sDiplomaTilemapPtr = malloc(0x1000); + sDiplomaTilemapPtr = Alloc(0x1000); InitDiplomaBg(); InitDiplomaWindow(); ResetTempTileDataBuffers(); diff --git a/src/easy_chat.c b/src/easy_chat.c index ebc843b3cc..054c65c0fb 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1627,7 +1627,7 @@ static bool8 InitEasyChatScreenStruct(u8 type, u16 *words, u8 displayedPersonTyp u8 templateId; int i; - sEasyChatScreen = malloc(sizeof(*sEasyChatScreen)); + sEasyChatScreen = Alloc(sizeof(*sEasyChatScreen)); if (sEasyChatScreen == NULL) return FALSE; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 18590a964f..dde4f06a5b 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1538,13 +1538,13 @@ u8 CreateObjectGraphicsSprite(u16 graphicsId, void (*callback)(struct Sprite *), struct Sprite *sprite; u8 spriteId; - spriteTemplate = malloc(sizeof(struct SpriteTemplate)); + spriteTemplate = Alloc(sizeof(struct SpriteTemplate)); CopyObjectGraphicsInfoToSpriteTemplate(graphicsId, callback, spriteTemplate, &subspriteTables); if (spriteTemplate->paletteTag != TAG_NONE) LoadObjectEventPalette(spriteTemplate->paletteTag); spriteId = CreateSprite(spriteTemplate, x, y, subpriority); - free(spriteTemplate); + Free(spriteTemplate); if (spriteId != MAX_SPRITES && subspriteTables != NULL) { diff --git a/src/field_region_map.c b/src/field_region_map.c index 5e14920fba..43055174fa 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -92,7 +92,7 @@ static const struct WindowTemplate sFieldRegionMapWindowTemplates[] = void FieldInitRegionMap(MainCallback callback) { SetVBlankCallback(NULL); - sFieldRegionMapHandler = malloc(sizeof(*sFieldRegionMapHandler)); + sFieldRegionMapHandler = Alloc(sizeof(*sFieldRegionMapHandler)); sFieldRegionMapHandler->state = 0; sFieldRegionMapHandler->callback = callback; SetMainCallback2(MCB2_InitRegionMapRegisters); diff --git a/src/field_specials.c b/src/field_specials.c index eb4db96f88..ac9c5d58cc 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -953,9 +953,25 @@ void FieldShowRegionMap(void) SetMainCallback2(CB2_FieldShowRegionMap); } +static bool8 IsPlayerInFrontOfPC(void) +{ + u16 x, y; + u16 tileInFront; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + tileInFront = MapGridGetMetatileIdAt(x, y); + + return (tileInFront == METATILE_BrendansMaysHouse_BrendanPC_On + || tileInFront == METATILE_BrendansMaysHouse_BrendanPC_Off + || tileInFront == METATILE_BrendansMaysHouse_MayPC_On + || tileInFront == METATILE_BrendansMaysHouse_MayPC_Off + || tileInFront == METATILE_Building_PC_On + || tileInFront == METATILE_Building_PC_Off); +} + void DoPCTurnOnEffect(void) { - if (FuncIsActiveTask(Task_PCTurnOnEffect) != TRUE) + if (FuncIsActiveTask(Task_PCTurnOnEffect) != TRUE && IsPlayerInFrontOfPC() == TRUE) { u8 taskId = CreateTask(Task_PCTurnOnEffect, 8); gTasks[taskId].data[0] = 0; @@ -1041,6 +1057,9 @@ static void PCTurnOffEffect(void) s8 dy = 0; u16 tileId = 0; u8 playerDirection = GetPlayerFacingDirection(); + + if (IsPlayerInFrontOfPC() == FALSE) + return; switch (playerDirection) { case DIR_NORTH: diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 820628ff83..f5769cc230 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -596,8 +596,8 @@ static void UpdateRainSprite(struct Sprite *sprite) sprite->y = sprite->tPosY >> 4; if (sprite->tActive - && (sprite->x >= -8 && sprite->x <= 248) - && sprite->y >= -16 && sprite->y <= 176) + && (sprite->x >= -8 && sprite->x <= DISPLAY_WIDTH + 8) + && sprite->y >= -16 && sprite->y <= DISPLAY_HEIGHT + 16) sprite->invisible = FALSE; else sprite->invisible = TRUE; @@ -1442,9 +1442,9 @@ static void FogHorizontalSpriteCallback(struct Sprite *sprite) { sprite->y2 = (u8)gSpriteCoordOffsetY; sprite->x = gWeatherPtr->fogHScrollPosX + 32 + sprite->tSpriteColumn * 64; - if (sprite->x > 271) + if (sprite->x >= DISPLAY_WIDTH + 32) { - sprite->x = 480 + gWeatherPtr->fogHScrollPosX - (4 - sprite->tSpriteColumn) * 64; + sprite->x = (DISPLAY_WIDTH * 2) + gWeatherPtr->fogHScrollPosX - (4 - sprite->tSpriteColumn) * 64; sprite->x &= 0x1FF; } } @@ -1701,9 +1701,9 @@ static void UpdateAshSprite(struct Sprite *sprite) sprite->y = gSpriteCoordOffsetY + sprite->tOffsetY; sprite->x = gWeatherPtr->ashBaseSpritesX + 32 + sprite->tSpriteColumn * 64; - if (sprite->x > 271) + if (sprite->x >= DISPLAY_WIDTH + 32) { - sprite->x = gWeatherPtr->ashBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64; + sprite->x = gWeatherPtr->ashBaseSpritesX + (DISPLAY_WIDTH * 2) - (4 - sprite->tSpriteColumn) * 64; sprite->x &= 0x1FF; } } @@ -1911,9 +1911,9 @@ static void UpdateFogDiagonalSprite(struct Sprite *sprite) { sprite->y2 = gWeatherPtr->fogDPosY; sprite->x = gWeatherPtr->fogDBaseSpritesX + 32 + sprite->tSpriteColumn * 64; - if (sprite->x > 271) + if (sprite->x >= DISPLAY_WIDTH + 32) { - sprite->x = gWeatherPtr->fogDBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64; + sprite->x = gWeatherPtr->fogDBaseSpritesX + (DISPLAY_WIDTH * 2) - (4 - sprite->tSpriteColumn) * 64; sprite->x &= 0x1FF; } } @@ -2187,9 +2187,9 @@ static void UpdateSandstormSprite(struct Sprite *sprite) { sprite->y2 = gWeatherPtr->sandstormPosY; sprite->x = gWeatherPtr->sandstormBaseSpritesX + 32 + sprite->tSpriteColumn * 64; - if (sprite->x > 271) + if (sprite->x >= DISPLAY_WIDTH + 32) { - sprite->x = gWeatherPtr->sandstormBaseSpritesX + 480 - (4 - sprite->tSpriteColumn) * 64; + sprite->x = gWeatherPtr->sandstormBaseSpritesX + (DISPLAY_WIDTH * 2) - (4 - sprite->tSpriteColumn) * 64; sprite->x &= 0x1FF; } } @@ -2206,7 +2206,7 @@ static void UpdateSandstormSwirlSprite(struct Sprite *sprite) if (--sprite->y < -48) { - sprite->y = 208; + sprite->y = DISPLAY_HEIGHT + 48; sprite->tRadius = 4; } @@ -2567,14 +2567,16 @@ void ResumePausedWeather(void) SetCurrentAndNextWeather(weather); } -static const u8 sWeatherCycleRoute119[] = +#define WEATHER_CYCLE_LENGTH 4 + +static const u8 sWeatherCycleRoute119[WEATHER_CYCLE_LENGTH] = { WEATHER_SUNNY, WEATHER_RAIN, WEATHER_RAIN_THUNDERSTORM, WEATHER_RAIN, }; -static const u8 sWeatherCycleRoute123[] = +static const u8 sWeatherCycleRoute123[WEATHER_CYCLE_LENGTH] = { WEATHER_SUNNY, WEATHER_SUNNY, @@ -2611,7 +2613,7 @@ static u8 TranslateWeatherNum(u8 weather) void UpdateWeatherPerDay(u16 increment) { u16 weatherStage = gSaveBlock1Ptr->weatherCycleStage + increment; - weatherStage %= 4; + weatherStage %= WEATHER_CYCLE_LENGTH; gSaveBlock1Ptr->weatherCycleStage = weatherStage; } diff --git a/src/frontier_util.c b/src/frontier_util.c index b1f12e18f5..d89fca436c 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -2271,7 +2271,7 @@ static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvl { s32 i, j; struct RankingHall1P record1P[HALL_RECORDS_COUNT + 1]; - struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords)); + struct PlayerHallRecords *playerHallRecords = AllocZeroed(sizeof(struct PlayerHallRecords)); GetPlayerHallRecords(playerHallRecords); for (i = 0; i < HALL_RECORDS_COUNT; i++) @@ -2298,14 +2298,14 @@ static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvl record1P[highestId].winStreak = 0; } - free(playerHallRecords); + Free(playerHallRecords); } static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode) { s32 i, j; struct RankingHall2P record2P[HALL_RECORDS_COUNT + 1]; - struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords)); + struct PlayerHallRecords *playerHallRecords = AllocZeroed(sizeof(struct PlayerHallRecords)); GetPlayerHallRecords(playerHallRecords); for (i = 0; i < HALL_RECORDS_COUNT; i++) @@ -2332,7 +2332,7 @@ static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode) record2P[highestId].winStreak = 0; } - free(playerHallRecords); + Free(playerHallRecords); } static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) @@ -2421,7 +2421,7 @@ void ClearRankingHallRecords(void) void SaveGameFrontier(void) { s32 i; - struct Pokemon *monsParty = calloc(PARTY_SIZE, sizeof(struct Pokemon)); + struct Pokemon *monsParty = AllocZeroed(sizeof(struct Pokemon) * PARTY_SIZE); for (i = 0; i < PARTY_SIZE; i++) monsParty[i] = gPlayerParty[i]; @@ -2436,7 +2436,7 @@ void SaveGameFrontier(void) for (i = 0; i < PARTY_SIZE; i++) gPlayerParty[i] = monsParty[i]; - free(monsParty); + Free(monsParty); } // Frontier Brain functions. diff --git a/src/intro.c b/src/intro.c index b067891429..bc81bcbb6f 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1039,7 +1039,7 @@ static void MainCB2_Intro(void) AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); - if (gMain.newKeys && !gPaletteFade.active) + if (gMain.newKeys != 0 && !gPaletteFade.active) SetMainCallback2(MainCB2_EndIntro); else if (gIntroFrameCounter != -1) gIntroFrameCounter++; diff --git a/src/libisagbprn.c b/src/libisagbprn.c index 6fb9d5ec08..fab9b5990b 100644 --- a/src/libisagbprn.c +++ b/src/libisagbprn.c @@ -2,6 +2,8 @@ #include #include "gba/gba.h" #include "config.h" +#include "malloc.h" +#include "mini_printf.h" #define AGB_PRINT_FLUSH_ADDR 0x9FE209D #define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 @@ -14,6 +16,11 @@ #define NOCASHGBAPRINTADDR1 0x4FFFA10 // automatically adds a newline after the string has finished #define NOCASHGBAPRINTADDR2 0x4FFFA14 // does not automatically add the newline. by default, NOCASHGBAPRINTADDR2 is used. this is used to keep strings consistent between no$gba and VBA-RR, but a user can choose to forgo this. +// hardware extensions for LOG_HANDLER_MGBA_PRINT +#define REG_DEBUG_ENABLE ((vu16*) (0x4FFF780)) // handshake: (w)[0xC0DE] -> (r)[0x1DEA] +#define REG_DEBUG_FLAGS ((vu16*) (0x4FFF700)) +#define REG_DEBUG_STRING ((char*) (0x4FFF600)) + struct AGBPrintStruct { u16 m_nRequest; @@ -26,6 +33,8 @@ typedef void (*LPFN_PRINT_FLUSH)(void); #ifndef NDEBUG +// AGBPrint print functions +#if (LOG_HANDLER == LOG_HANDLER_AGB_PRINT) void AGBPrintFlush1Block(void); void AGBPrintInit(void) @@ -87,7 +96,13 @@ void AGBPrintf(const char *pBuf, ...) char bufPrint[0x100]; va_list vArgv; va_start(vArgv, pBuf); - vsprintf(bufPrint, pBuf, vArgv); + #if (PRETTY_PRINT_HANDLER == PRETTY_PRINT_MINI_PRINTF) + mini_vsnprintf(bufPrint, 0x100, pBuf, vArgv); + #elif (PRETTY_PRINT_HANDLER == PRETTY_PRINT_LIBC) + vsnprintf(bufPrint, 0x100, pBuf, vArgv); + #else + #error "unspecified pretty printing handler." + #endif va_end(vArgv); AGBPrint(bufPrint); } @@ -155,9 +170,10 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP AGBPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); } } +#endif -// no$gba print functions, uncomment to use -/* +// no$gba print functions +#if (LOG_HANDLER == LOG_HANDLER_NOCASH_PRINT) void NoCashGBAPrint(const char *pBuf) { *(volatile u32 *)NOCASHGBAPRINTADDR2 = (u32)pBuf; @@ -168,10 +184,74 @@ void NoCashGBAPrintf(const char *pBuf, ...) char bufPrint[0x100]; va_list vArgv; va_start(vArgv, pBuf); - vsprintf(bufPrint, pBuf, vArgv); + #if (PRETTY_PRINT_HANDLER == PRETTY_PRINT_MINI_PRINTF) + mini_vsnprintf(bufPrint, 0x100, pBuf, vArgv); + #elif (PRETTY_PRINT_HANDLER == PRETTY_PRINT_LIBC) + vsnprintf(bufPrint, 0x100, pBuf, vArgv); + #else + #error "unspecified pretty printing handler." + #endif va_end(vArgv); NoCashGBAPrint(bufPrint); } -*/ +void NoCashGBAAssert(const char *pFile, s32 nLine, const char *pExpression, bool32 nStopProgram) +{ + if (nStopProgram) + { + NoCashGBAPrintf("ASSERTION FAILED FILE=[%s] LINE=[%d] EXP=[%s]", pFile, nLine, pExpression); + asm(".hword 0xEFFF"); + } + else + { + NoCashGBAPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s]", pFile, nLine, pExpression); + } +} +#endif + +// mgba print functions +#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT) +#define MGBA_REG_DEBUG_MAX (256) + +bool32 MgbaOpen(void) +{ + *REG_DEBUG_ENABLE = 0xC0DE; + return *REG_DEBUG_ENABLE == 0x1DEA; +} + +void MgbaClose(void) +{ + *REG_DEBUG_ENABLE = 0; +} + +void MgbaPrintf(s32 level, const char* ptr, ...) +{ + va_list args; + + level &= 0x7; + va_start(args, ptr); + #if (PRETTY_PRINT_HANDLER == PRETTY_PRINT_MINI_PRINTF) + mini_vsnprintf(REG_DEBUG_STRING, MGBA_REG_DEBUG_MAX, ptr, args); + #elif (PRETTY_PRINT_HANDLER == PRETTY_PRINT_LIBC) + vsnprintf(REG_DEBUG_STRING, MGBA_REG_DEBUG_MAX, ptr, args); + #else + #error "unspecified pretty printing handler." + #endif + va_end(args); + *REG_DEBUG_FLAGS = level | 0x100; +} + +void MgbaAssert(const char *pFile, s32 nLine, const char *pExpression, bool32 nStopProgram) +{ + if (nStopProgram) + { + MgbaPrintf(MGBA_LOG_ERROR, "ASSERTION FAILED FILE=[%s] LINE=[%d] EXP=[%s]", pFile, nLine, pExpression); + asm(".hword 0xEFFF"); + } + else + { + MgbaPrintf(MGBA_LOG_WARN, "WARING FILE=[%s] LINE=[%d] EXP=[%s]", pFile, nLine, pExpression); + } +} +#endif #endif diff --git a/src/link.c b/src/link.c index 57e33c8115..b01be9d890 100644 --- a/src/link.c +++ b/src/link.c @@ -1608,7 +1608,7 @@ void CB2_LinkError(void) SetVBlankCallback(VBlankCB_LinkError); ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sLinkErrorBgTemplates, ARRAY_COUNT(sLinkErrorBgTemplates)); - sLinkErrorBgTilemapBuffer = tilemapBuffer = malloc(BG_SCREEN_SIZE); + sLinkErrorBgTilemapBuffer = tilemapBuffer = Alloc(BG_SCREEN_SIZE); SetBgTilemapBuffer(1, tilemapBuffer); if (InitWindows(sLinkErrorWindowTemplates)) { diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 0825daea2c..0d028cd48a 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -913,7 +913,7 @@ void SaveLinkTrainerNames(void) s32 j; s32 nextSpace; s32 connectedTrainerRecordIndices[MAX_RFU_PLAYERS]; - struct TrainerNameRecord *newRecords = calloc(ARRAY_COUNT(gSaveBlock1Ptr->trainerNameRecords), sizeof(struct TrainerNameRecord)); + struct TrainerNameRecord *newRecords = AllocZeroed(sizeof(gSaveBlock1Ptr->trainerNameRecords)); // Check if we already have a record saved for connected trainers. for (i = 0; i < GetLinkPlayerCount(); i++) @@ -955,7 +955,7 @@ void SaveLinkTrainerNames(void) // Finalize the new list, and clean up. memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, sizeof(gSaveBlock1Ptr->trainerNameRecords)); - free(newRecords); + Free(newRecords); } } diff --git a/src/list_menu.c b/src/list_menu.c index 64692ce1f6..112fca7530 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -440,13 +440,13 @@ s32 ListMenu_ProcessInput(u8 listTaskId) break; case LIST_MULTIPLE_SCROLL_DPAD: // note: JOY_REPEAT won't match here - leftButton = gMain.newAndRepeatedKeys & DPAD_LEFT; - rightButton = gMain.newAndRepeatedKeys & DPAD_RIGHT; + leftButton = JOY_REPEAT(DPAD_LEFT); + rightButton = JOY_REPEAT(DPAD_RIGHT); break; case LIST_MULTIPLE_SCROLL_L_R: // same as above - leftButton = gMain.newAndRepeatedKeys & L_BUTTON; - rightButton = gMain.newAndRepeatedKeys & R_BUTTON; + leftButton = JOY_REPEAT(L_BUTTON); + rightButton = JOY_REPEAT(R_BUTTON); break; } diff --git a/src/mail.c b/src/mail.c index c697ff4c4e..2a88b7ba94 100644 --- a/src/mail.c +++ b/src/mail.c @@ -448,7 +448,7 @@ void ReadMail(struct Mail *mail, void (*exitCallback)(void), bool8 hasText) u16 buffer[2]; u16 species; - sMailRead = calloc(1, sizeof(*sMailRead)); + sMailRead = AllocZeroed(sizeof(*sMailRead)); sMailRead->language = GAME_LANGUAGE; sMailRead->international = TRUE; sMailRead->parserSingle = CopyEasyChatWord; diff --git a/src/main.c b/src/main.c index 5fd236447b..99d2610bb3 100644 --- a/src/main.c +++ b/src/main.c @@ -119,13 +119,20 @@ void AgbMain() gLinkTransferringData = FALSE; sUnusedVar = 0xFC0; +#ifndef NDEBUG +#if (LOG_HANDLER == LOG_HANDLER_MGBA_PRINT) + (void) MgbaOpen(); +#elif (LOG_HANDLER == LOG_HANDLER_AGB_PRINT) + AGBPrintfInit(); +#endif +#endif for (;;) { ReadKeys(); if (gSoftResetDisabled == FALSE - && (gMain.heldKeysRaw & A_BUTTON) - && (gMain.heldKeysRaw & B_START_SELECT) == B_START_SELECT) + && JOY_HELD_RAW(A_BUTTON) + && JOY_HELD_RAW(B_START_SELECT) == B_START_SELECT) { rfu_REQ_stopMode(); rfu_waitREQComplete(); @@ -278,7 +285,7 @@ static void ReadKeys(void) gMain.heldKeys |= A_BUTTON; } - if (gMain.newKeys & gMain.watchedKeysMask) + if (JOY_NEW(gMain.watchedKeysMask)) gMain.watchedKeysPressed = TRUE; } diff --git a/src/mini_printf.c b/src/mini_printf.c new file mode 100644 index 0000000000..8345a3935e --- /dev/null +++ b/src/mini_printf.c @@ -0,0 +1,353 @@ +/* + * The Minimal snprintf() implementation + * + * Copyright (c) 2013,2014 Michal Ludvig + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the auhor nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * mini-printf courtesy of https://github.com/mludvig/mini-printf + * stripped to reduce file size for agb needs + */ + +#include "mini_printf.h" +#include "gba/types.h" +#include "gba/defines.h" +#include "config.h" +#include "characters.h" +#include "string_util.h" + +#ifndef NDEBUG + +struct mini_buff +{ + char *buffer, *pbuffer; + u32 buffer_len; +}; + +static inline char mini_pchar_decode(char encoded) +{ + char ret = '?'; + if (encoded >= CHAR_a && encoded <= CHAR_z) + ret = encoded-(CHAR_a-'a'); // lower-case characters + else if (encoded >= CHAR_A && encoded <= CHAR_Z) + ret = encoded-(CHAR_A-'A'); // upper-case characters + else if (encoded >= CHAR_0 && encoded <= CHAR_9) + ret = encoded-(CHAR_0-'0'); // numbers + else if (encoded == CHAR_SPACE) + ret = ' '; // space + else if (encoded == CHAR_EXCL_MARK) + ret = '!'; // exclamation point + else if (encoded == CHAR_QUESTION_MARK) + ret = '?'; // question mark + else if (encoded == CHAR_PERIOD) + ret = '.'; // period + else if (encoded == CHAR_DBL_QUOTE_LEFT || encoded == CHAR_DBL_QUOTE_RIGHT) + ret = '"'; // double quote + else if (encoded == CHAR_SGL_QUOTE_LEFT || encoded == CHAR_SGL_QUOTE_RIGHT) + ret = '\''; // single quote + else if (encoded == CHAR_CURRENCY) + ret = '$'; // currency mark (pokemonies in game, dollar sign in logs) + else if (encoded == CHAR_COMMA) + ret = ','; // comma + else if (encoded == CHAR_MULT_SIGN) + ret = '#'; // pound, hashtag, octothorpe, whatever + else if (encoded == CHAR_SLASH) + ret = '/'; // slash + else if (encoded == CHAR_LESS_THAN) + ret = '<'; // less than sign + else if (encoded == CHAR_GREATER_THAN) + ret = '>'; // greater than sign + else if (encoded == CHAR_PERCENT) + ret = '%'; // percentage + else if (encoded == CHAR_LEFT_PAREN) + ret = '('; // opening parentheses + else if (encoded == CHAR_RIGHT_PAREN) + ret = ')'; // closing parentheses + return ret; +} + +static s32 _putsAscii(char *s, s32 len, void *buf) +{ + char *p0; + s32 i; + struct mini_buff *b; + + if (!buf) + return len; + + b = buf; + p0 = b->buffer; + + /* Copy to buffer */ + for (i = 0; i < len; i++) { + if(b->pbuffer == b->buffer + b->buffer_len - 1) { + break; + } + *(b->pbuffer ++) = s[i]; + } + *(b->pbuffer) = 0; + return b->pbuffer - p0; +} + +static s32 _putsEncoded(char *s, s32 len, void *buf) +{ + char *p0; + s32 i; + struct mini_buff *b; + + if (!buf) + return len; + + b = buf; + p0 = b->buffer; + + /* Copy to buffer */ + for (i = 0; i < len; i++) { + if(b->pbuffer == b->buffer + b->buffer_len - 1) { + break; + } + *(b->pbuffer ++) = mini_pchar_decode(s[i]); + } + *(b->pbuffer) = 0; + return b->pbuffer - p0; +} + +static s32 mini_strlen(const char *s) +{ + s32 len = 0; + while (s[len] != '\0') len++; + return len; +} + +static s32 mini_itoa(u32 value, u32 radix, s32 uppercase, bool32 unsig, char *buffer) +{ + char *pbuffer = buffer; + s32 negative = 0; + s32 i, len; + + /* No support for unusual radixes. */ + if (radix > 16) + return 0; + + if (value < 0 && !unsig) + { + negative = 1; + value = -value; + } + + /* This builds the string back to front ... */ + do + { + s32 digit = value % radix; + *(pbuffer++) = (digit < 10 ? '0' + digit : (uppercase ? 'A' : 'a') + digit - 10); + value /= radix; + } while (value > 0); + + if (negative) + *(pbuffer++) = '-'; + + *(pbuffer) = '\0'; + + /* ... now we reverse it (could do it recursively but will + * conserve the stack space) */ + len = (pbuffer - buffer); + for (i = 0; i < len / 2; i++) + { + char j = buffer[i]; + buffer[i] = buffer[len-i-1]; + buffer[len-i-1] = j; + } + + return len; +} + +static s32 mini_pad(char* ptr, s32 len, char pad_char, s32 pad_to, char *buffer) +{ + s32 i; + bool32 overflow = FALSE; + char * pbuffer = buffer; + if(pad_to == 0) + pad_to = len; + if (len > pad_to) { + len = pad_to; + overflow = TRUE; + } + for(i = pad_to - len; i > 0; i --) + { + *(pbuffer++) = pad_char; + } + for(i = len; i > 0; i --) + { + *(pbuffer++) = *(ptr++); + } + len = pbuffer - buffer; + if(overflow) + { + for (i = 0; i < 3 && pbuffer > buffer; i ++) + { + *(pbuffer-- - 1) = '*'; + } + } + return len; +} + +s32 mini_vsnprintf(char *buffer, u32 buffer_len, const char *fmt, va_list va) +{ + struct mini_buff b; + s32 n; + b.buffer = buffer; + b.pbuffer = buffer; + b.buffer_len = buffer_len; + if (buffer_len == 0) + buffer = NULL; + n = mini_vpprintf((buffer != NULL) ? &b : NULL, fmt, va); + if (buffer == NULL) + return n; + return b.pbuffer - b.buffer; +} + +s32 mini_vpprintf(void* buf, const char *fmt, va_list va) +{ + char bf[24]; + char bf2[24]; + char ch; + s32 n; + n = 0; + while ((ch=*(fmt++))) + { + s32 len; + if (ch != '%') + { + len = 1; + len = _putsAscii(&ch, len, buf); + } else + { + char pad_char = ' '; + s32 pad_to = 0; + char l = 0; + char *ptr; + + ch=*(fmt++); + + /* Zero padding requested */ + if (ch == '0') + pad_char = '0'; + while (ch >= '0' && ch <= '9') + { + pad_to = pad_to * 10 + (ch - '0'); + ch= *(fmt++); + } + if(pad_to > (s32) sizeof(bf)) + { + pad_to = sizeof(bf); + } + if (ch == 'l') + { + l = 1; + ch=*(fmt++); + } + + switch (ch) + { + case 0: + goto end; + case 'u': + case 'd': + if(l) + { + len = mini_itoa(va_arg(va, u32), 10, 0, (ch=='u'), bf2); + } else + { + if(ch == 'u') + { + len = mini_itoa((u32) va_arg(va, u32), 10, 0, 1, bf2); + } + else + { + len = mini_itoa((s32) va_arg(va, s32), 10, 0, 0, bf2); + } + } + len = mini_pad(bf2, len, pad_char, pad_to, bf); + len = _putsAscii(bf, len, buf); + break; + + case 'x': + case 'X': + if(l) + { + len = mini_itoa(va_arg(va, u32), 16, (ch=='X'), 1, bf2); + } + else + { + len = mini_itoa((u32) va_arg(va, u32), 16, (ch=='X'), 1, bf2); + } + len = mini_pad(bf2, len, pad_char, pad_to, bf); + len = _putsAscii(bf, len, buf); + break; + + case 'c' : + ch = (char)(va_arg(va, s32)); + len = mini_pad(&ch, 1, pad_char, pad_to, bf); + len = _putsAscii(bf, len, buf); + break; + + case 's' : + ptr = va_arg(va, char*); + len = mini_strlen(ptr); + if (pad_to > 0) + { + len = mini_pad(ptr, len, pad_char, pad_to, bf); + len = _putsAscii(bf, len, buf); + } else + { + len = _putsAscii(ptr, len, buf); + } + break; + case 'S' : // preproc encoded string handler + ptr = va_arg(va, char*); + len = StringLength(ptr); + if (pad_to > 0) + { + len = mini_pad(ptr, len, pad_char, pad_to, bf); + len = _putsEncoded(bf, len, buf); + } else + { + len = _putsEncoded(ptr, len, buf); + } + break; + default: + len = 1; + len = _putsAscii(&ch, len, buf); + break; + } + } + n = n + len; + } +end: + return n; +} + +#endif diff --git a/src/naming_screen.c b/src/naming_screen.c index a6e55eed60..f7d2ccc2ec 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1771,7 +1771,7 @@ static void DrawGenderIcon(void) StringCopy(text, gText_FemaleSymbol); isFemale = TRUE; } - AddTextPrinterParameterized3(sNamingScreen->windows[WIN_TEXT_ENTRY], FONT_NORMAL, 0x68, 1, sGenderColors[isFemale], TEXT_SKIP_DRAW, text); + AddTextPrinterParameterized3(sNamingScreen->windows[WIN_TEXT_ENTRY], FONT_NORMAL, (POKEMON_NAME_LENGTH * 4) + 64, 1, sGenderColors[isFemale], TEXT_SKIP_DRAW, text); } } diff --git a/src/party_menu.c b/src/party_menu.c index a93f66ebbe..ec4ea79f8f 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -241,7 +241,6 @@ static bool8 AllocPartyMenuBgGfx(void); static void InitPartyMenuWindows(u8); static void InitPartyMenuBoxes(u8); static void LoadPartyMenuPokeballGfx(void); -static void LoadPartyMenuAilmentGfx(void); static bool8 CreatePartyMonSpritesLoop(void); static bool8 RenderPartyMenuBoxes(void); static void CreateCancelConfirmPokeballSprites(void); @@ -3587,9 +3586,12 @@ static void CursorCb_Register(u8 taskId) switch (CanRegisterMonForTradingBoard(*(struct RfuGameCompatibilityData *)GetHostRfuGameData(), species2, species, isEventLegal)) { - case CANT_REGISTER_MON: + case CANT_REGISTER_MON_NOW: StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow); break; + case CANT_REGISTER_MON: + StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTraded); + break; case CANT_REGISTER_EGG: StringExpandPlaceholders(gStringVar4, gText_EggCantBeTradedNow); break; @@ -4168,7 +4170,7 @@ static void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { - menuBox->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); + menuBox->statusSpriteId = CreateSprite(&gSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); SetPartyMonAilmentGfx(mon, menuBox); } } @@ -4177,7 +4179,7 @@ static void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, stru { if (species != SPECIES_NONE) { - menuBox->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); + menuBox->statusSpriteId = CreateSprite(&gSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); UpdatePartyMonAilmentGfx(status, menuBox); gSprites[menuBox->statusSpriteId].oam.priority = 0; } @@ -4203,7 +4205,7 @@ static void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) } } -static void LoadPartyMenuAilmentGfx(void) +void LoadPartyMenuAilmentGfx(void) { LoadCompressedSpriteSheet(&sSpriteSheet_StatusIcons); LoadCompressedSpritePalette(&sSpritePalette_StatusIcons); @@ -4892,13 +4894,13 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move) return FALSE; } -bool8 BoxMonKnowsMove(struct BoxPokemon *mon, u16 move) +bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move) { u8 i; for (i = 0; i < MAX_MON_MOVES; i++) { - if (GetMonData(mon, MON_DATA_MOVE1 + i) == move) + if (GetBoxMonData(boxMon, MON_DATA_MOVE1 + i) == move) return TRUE; } return FALSE; @@ -6158,10 +6160,10 @@ void ChooseMonForWirelessMinigame(void) static u8 GetPartyLayoutFromBattleType(void) { - if (!IsDoubleBattle() || gPlayerPartyCount == 1) // Draw the single layout in a double battle where the player has only one pokemon. - return PARTY_LAYOUT_SINGLE; if (IsMultiBattle() == TRUE) return PARTY_LAYOUT_MULTI; + if (!IsDoubleBattle() || gPlayerPartyCount == 1) // Draw the single layout in a double battle where the player has only one pokemon. + return PARTY_LAYOUT_SINGLE; return PARTY_LAYOUT_DOUBLE; } diff --git a/src/pokedex.c b/src/pokedex.c index 74bebbffd6..de7f186a57 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4379,7 +4379,7 @@ bool16 HasAllMons(void) for (i = 1; i < NATIONAL_DEX_COUNT + 1; i++) { - if (!(gBaseStats[i].flags & FLAG_MYTHICAL) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) + if (!(gBaseStats[i].flags & SPECIES_FLAG_MYTHICAL) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) return FALSE; } diff --git a/src/pokemon.c b/src/pokemon.c index dcf79e0b7c..d6b6e2aed2 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3329,14 +3329,23 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, } else // Player is the OT { + u32 shinyValue; value = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24); - if (CheckBagHasItem(ITEM_SHINY_CHARM, 1)) + if (gBaseStats[species].flags & SPECIES_FLAG_SHINY_LOCKED) + { + do + { + // Choose random personalities until one that results in a non-shiny Pokémon + personality = Random32(); + shinyValue = HIHALF(value) ^ LOHALF(value) ^ HIHALF(personality) ^ LOHALF(personality); + } while (shinyValue < SHINY_ODDS); + } + else if (CheckBagHasItem(ITEM_SHINY_CHARM, 1)) { - u32 shinyValue; u32 rolls = 0; do { @@ -3398,8 +3407,18 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, iv = (value & (MAX_IV_MASK << 10)) >> 10; SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); + if (gBaseStats[species].flags & SPECIES_FLAG_ALL_PERFECT_IVS) + { + iv = MAX_PER_STAT_IVS; + SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); + SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv); + SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); + SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); + SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); + } #if P_LEGENDARY_PERFECT_IVS >= GEN_6 - if (gBaseStats[species].flags & (FLAG_LEGENDARY | FLAG_MYTHICAL | FLAG_ULTRA_BEAST)) + else if (gBaseStats[species].flags & (SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MYTHICAL | SPECIES_FLAG_ULTRA_BEAST)) { iv = MAX_PER_STAT_IVS; // Initialize a list of IV indices. @@ -3419,29 +3438,28 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, { switch (selectedIvs[i]) { - case STAT_HP: - SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); - break; - case STAT_ATK: - SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv); - break; - case STAT_DEF: - SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); - break; - case STAT_SPEED: - SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); - break; - case STAT_SPATK: - SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); - break; - case STAT_SPDEF: - SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); - break; + case STAT_HP: + SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); + break; + case STAT_ATK: + SetBoxMonData(boxMon, MON_DATA_ATK_IV, &iv); + break; + case STAT_DEF: + SetBoxMonData(boxMon, MON_DATA_DEF_IV, &iv); + break; + case STAT_SPEED: + SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv); + break; + case STAT_SPATK: + SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv); + break; + case STAT_SPDEF: + SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); + break; } } } #endif - } if (gBaseStats[species].abilities[1]) @@ -7327,6 +7345,38 @@ u8 CanLearnTeachableMove(u16 species, u16 move) { return FALSE; } + else if (species == SPECIES_MEW) + { + switch (move) + { + case MOVE_BADDY_BAD: + case MOVE_BLAST_BURN: + case MOVE_BOUNCY_BUBBLE: + case MOVE_BUZZY_BUZZ: + case MOVE_DRACO_METEOR: + case MOVE_DRAGON_ASCENT: + case MOVE_FIRE_PLEDGE: + case MOVE_FLOATY_FALL: + case MOVE_FREEZY_FROST: + case MOVE_FRENZY_PLANT: + case MOVE_GLITZY_GLOW: + case MOVE_GRASS_PLEDGE: + case MOVE_HYDRO_CANNON: + case MOVE_RELIC_SONG: + case MOVE_SAPPY_SEED: + case MOVE_SECRET_SWORD: + case MOVE_SIZZLY_SLIDE: + case MOVE_SPARKLY_SWIRL: + case MOVE_SPLISHY_SPLASH: + case MOVE_STEEL_BEAM: + case MOVE_VOLT_TACKLE: + case MOVE_WATER_PLEDGE: + case MOVE_ZIPPY_ZAP: + return FALSE; + default: + return TRUE; + } + } else { u8 i; @@ -8421,7 +8471,7 @@ void TrySpecialOverworldEvo(void) bool32 ShouldShowFemaleDifferences(u16 species, u32 personality) { - return (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; + return (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; } void TryToSetBattleFormChangeMoves(struct Pokemon *mon) diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 4168b75242..8a047e3979 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -417,21 +417,21 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) FillWindowPixelBuffer(WIN_INSTRUCTIONS, 0x11); if (data->currentSubmenu == 0) { - if (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) + if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsGender, x, 0, 0, NULL); else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructions, x, 0, 0, NULL); } else if (data->currentSubmenu == 1) { - if (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) + if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuOneGender, x, 0, 0, NULL); else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuOne, x, 0, 0, NULL); } else if (data->currentSubmenu == 2) { - if (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) + if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuTwoGender, x, 0, 0, NULL); else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuTwo, x, 0, 0, NULL); @@ -485,7 +485,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data) text[i++] = CHAR_SPACE; text[i++] = CHAR_HYPHEN; - if (gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) + if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) { if (data->isFemale) text[i++] = CHAR_FEMALE; @@ -688,14 +688,14 @@ static const struct CompressedSpritePalette *GetMonSpritePalStructCustom(u16 spe { if (isShiny) { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) return &gMonShinyPaletteTableFemale[species]; else return &gMonShinyPaletteTable[species]; } else { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) return &gMonPaletteTableFemale[species]; else return &gMonPaletteTable[species]; @@ -714,14 +714,14 @@ static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bo if (isShiny) { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) lzPaletteData = gMonShinyPaletteTableFemale[species].data; else lzPaletteData = gMonShinyPaletteTable[species].data; } else { - if ((gBaseStats[species].flags & FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) lzPaletteData = gMonPaletteTableFemale[species].data; else lzPaletteData = gMonPaletteTable[species].data; @@ -1493,7 +1493,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) ReloadPokemonSprites(data); ApplyOffsetSpriteValues(data); } - if (JOY_NEW(SELECT_BUTTON) && (gBaseStats[data->currentmonId].flags & FLAG_GENDER_DIFFERENCE)) + if (JOY_NEW(SELECT_BUTTON) && (gBaseStats[data->currentmonId].flags & SPECIES_FLAG_GENDER_DIFFERENCE)) { data->isFemale = !data->isFemale; PrintDigitChars(data); @@ -1686,7 +1686,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) FreeMonIconPalettes(); AllocateMonSpritesGfx(); - LoadMonIconPalette(species); + LoadMonIconPalettePersonality(species, (data->isFemale ? FEMALE_PERSONALITY : MALE_PERSONALITY)); //Update instructions PrintInstructionsOnWindow(data); diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index a6088607a7..c9dae53432 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -2808,6 +2808,17 @@ void LoadMonIconPalette(u16 species) LoadSpritePalette(&gMonIconPaletteTable[palIndex]); } +void LoadMonIconPalettePersonality(u16 species, u32 personality) +{ + u8 palIndex; + if (ShouldShowFemaleDifferences(species, personality)) + palIndex = gMonIconPaletteIndicesFemale[species]; + else + palIndex = gMonIconPaletteIndices[species]; + if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF) + LoadSpritePalette(&gMonIconPaletteTable[palIndex]); +} + void FreeMonIconPalettes(void) { u8 i; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 432b8083cc..3f58daa861 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -3770,7 +3770,7 @@ static void Task_ChangeScreen(u8 taskId) mode = sStorage->summaryScreenMode; FreePokeStorageData(); if (mode == SUMMARY_MODE_NORMAL && boxMons == &sSavedMovingMon.box) - ShowPokemonSummaryScreenSet40EF(mode, boxMons, monIndex, maxMonIndex, CB2_ReturnToPokeStorage); + ShowPokemonSummaryScreenHandleDeoxys(mode, boxMons, monIndex, maxMonIndex, CB2_ReturnToPokeStorage); else ShowPokemonSummaryScreen(mode, boxMons, monIndex, maxMonIndex, CB2_ReturnToPokeStorage); break; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index a0193ff6e7..93f85de6ff 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -185,7 +185,7 @@ static EWRAM_DATA struct PokemonSummaryScreenData u8 filler40CA; u8 windowIds[8]; u8 spriteIds[SPRITE_ARR_ID_COUNT]; - bool8 unk40EF; + bool8 handleDeoxys; s16 switchCounter; // Used for various switch statement cases that decompress/load graphics or pokemon data u8 unk_filler4[6]; u8 splitIconSpriteId; @@ -1211,10 +1211,10 @@ void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 ma sMonSummaryScreen->newMove = newMove; } -void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) +void ShowPokemonSummaryScreenHandleDeoxys(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback); - sMonSummaryScreen->unk40EF = TRUE; + sMonSummaryScreen->handleDeoxys = TRUE; } static void MainCB2(void) @@ -1497,7 +1497,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon) sum->ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); break; case 2: - if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == SUMMARY_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE) + if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == SUMMARY_MODE_BOX || sMonSummaryScreen->handleDeoxys == TRUE) { sum->nature = GetNature(mon); sum->currentHP = GetMonData(mon, MON_DATA_HP); diff --git a/src/record_mixing.c b/src/record_mixing.c index c899db25e7..5d75f3fc89 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -315,8 +315,8 @@ static void Task_RecordMixing_Main(u8 taskId) switch (tState) { case 0: // init - sSentRecord = malloc(sizeof(*sSentRecord)); - sReceivedRecords = malloc(sizeof(*sReceivedRecords) * MAX_LINK_PLAYERS); + sSentRecord = Alloc(sizeof(*sSentRecord)); + sReceivedRecords = Alloc(sizeof(*sReceivedRecords) * MAX_LINK_PLAYERS); SetLocalLinkPlayerId(gSpecialVar_0x8005); VarSet(VAR_TEMP_0, 1); sReadyToReceive = FALSE; @@ -358,8 +358,8 @@ static void Task_RecordMixing_Main(u8 taskId) case 5: // Wait for the task created by CreateTask_ReestablishCableClubLink if (!gTasks[tLinkTaskId].isActive) { - free(sReceivedRecords); - free(sSentRecord); + Free(sReceivedRecords); + Free(sSentRecord); SetLinkWaitingForScript(); if (gWirelessCommType != 0) CreateTask(Task_ReturnToFieldRecordMixing, 10); @@ -689,7 +689,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *records, size_t recordSize, u8 if (GetLilycoveLadyId() == 0) { - lilycoveLady = malloc(sizeof(*lilycoveLady)); + lilycoveLady = Alloc(sizeof(*lilycoveLady)); if (lilycoveLady == NULL) return; @@ -705,7 +705,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *records, size_t recordSize, u8 if (lilycoveLady != NULL) { QuizLadyClearQuestionForRecordMix(lilycoveLady); - free(lilycoveLady); + Free(lilycoveLady); } } diff --git a/src/recorded_battle.c b/src/recorded_battle.c index e8785b5f82..dead1dd7e3 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -475,8 +475,8 @@ bool32 MoveRecordedBattleToSaveData(void) break; } - free(battleSave); - free(savSection); + Free(battleSave); + Free(savSection); return ret; } diff --git a/src/region_map.c b/src/region_map.c index a4db1cb048..8157f8a4e7 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -1664,7 +1664,7 @@ void CB2_OpenFlyMap(void) SetGpuReg(REG_OFFSET_BG2HOFS, 0); SetGpuReg(REG_OFFSET_BG3HOFS, 0); SetGpuReg(REG_OFFSET_BG3VOFS, 0); - sFlyMap = malloc(sizeof(*sFlyMap)); + sFlyMap = Alloc(sizeof(*sFlyMap)); if (sFlyMap == NULL) { SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 0d2b358024..16310a7c36 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -73,7 +73,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) break; case 4: FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 4; + gReservedSpritePaletteCount = MAX_BATTLERS_COUNT; break; case 5: ClearSpritesHealthboxAnimData(); diff --git a/src/secret_base.c b/src/secret_base.c index 74129d3ff5..ea19993439 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -921,7 +921,7 @@ static void Task_ShowSecretBaseRegistryMenu(u8 taskId) tSelectedRow = 0; tScrollOffset = 0; ClearDialogWindowAndFrame(0, FALSE); - sRegistryMenu = calloc(1, sizeof(*sRegistryMenu)); + sRegistryMenu = AllocZeroed(sizeof(*sRegistryMenu)); tMainWindowId = AddWindow(&sRegistryWindowTemplates[0]); BuildRegistryMenuItems(taskId); FinalizeRegistryMenu(taskId); @@ -1006,7 +1006,7 @@ static void HandleRegistryMenuInput(u8 taskId) ClearWindowTilemap(tMainWindowId); RemoveWindow(tMainWindowId); ScheduleBgCopyTilemapToVram(0); - free(sRegistryMenu); + Free(sRegistryMenu); GoToSecretBasePCRegisterMenu(taskId); break; default: diff --git a/src/strings.c b/src/strings.c index fce4acdde1..4452fd8256 100644 --- a/src/strings.c +++ b/src/strings.c @@ -479,6 +479,7 @@ const u8 gText_PauseUntilPress[] = _("{PAUSE_UNTIL_PRESS}"); const u8 gJPText_AreYouSureYouWantToSpinTradeMon[] = _("{STR_VAR_1}を ぐるぐるこうかんに\nだして よろしいですか?"); ALIGNED(4) const u8 gText_OnlyPkmnForBattle[] = _("That's your only\nPOKéMON for battle."); ALIGNED(4) const u8 gText_PkmnCantBeTradedNow[] = _("That POKéMON can't be traded\nnow."); +ALIGNED(4) const u8 gText_PkmnCantBeTraded[] = _("That POKéMON can't be traded."); ALIGNED(4) const u8 gText_EggCantBeTradedNow[] = _("An EGG can't be traded now."); ALIGNED(4) const u8 gText_OtherTrainersPkmnCantBeTraded[] = _("The other TRAINER's POKéMON\ncan't be traded now."); ALIGNED(4) const u8 gText_OtherTrainerCantAcceptPkmn[] = _("The other TRAINER can't accept\nthat POKéMON now."); diff --git a/src/title_screen.c b/src/title_screen.c index 25a1d60d05..689c96863d 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -634,7 +634,7 @@ static void MainCB2(void) static void Task_TitleScreenPhase1(u8 taskId) { // Skip to next phase when A, B, Start, or Select is pressed - if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[1] != 0) + if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].data[1] != 0) { gTasks[taskId].tSkipToNext = TRUE; gTasks[taskId].tCounter = 0; @@ -681,7 +681,7 @@ static void Task_TitleScreenPhase2(u8 taskId) u32 yPos; // Skip to next phase when A, B, Start, or Select is pressed - if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].tSkipToNext) + if (JOY_NEW(A_B_START_SELECT) || gTasks[taskId].tSkipToNext) { gTasks[taskId].tSkipToNext = TRUE; gTasks[taskId].tCounter = 0; diff --git a/src/trade.c b/src/trade.c index ba889c7c92..0ad1c66b06 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1504,6 +1504,10 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player return PARTNER_MON_INVALID; } + // Can't trade specific species + if (gBaseStats[partnerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + return PARTNER_MON_INVALID; + // Partner cant trade Egg or non-Hoenn mon if player doesn't have National Dex if (!IsNationalPokedexEnabled()) { @@ -2360,6 +2364,10 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int return CANT_TRADE_INVALID_MON; } + // Can't trade specific species + if (gBaseStats[species[monIdx]].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + return CANT_TRADE_INVALID_MON; + // Make Eggs not count for numMonsLeft for (i = 0; i < partyCount; i++) { @@ -2450,7 +2458,11 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf // Cannot trade illegitimate Deoxys/Mew if (IsDeoxysOrMewUntradable(playerSpecies, isEventLegal)) - return UR_TRADE_MSG_MON_CANT_BE_TRADED_2; + return UR_TRADE_MSG_MON_CANT_BE_TRADED; + + // Can't trade specific species + if (gBaseStats[playerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + return UR_TRADE_MSG_MON_CANT_BE_TRADED; if (partnerSpecies == SPECIES_EGG) { @@ -2469,7 +2481,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf // If the player is trading an Egg then the partner must also be trading an Egg // Odd that this wasn't checked earlier, as by this point we know either the partner doesn't have an Egg or that both do. if (playerSpecies2 == SPECIES_EGG && playerSpecies2 != partnerSpecies) - return UR_TRADE_MSG_MON_CANT_BE_TRADED_1; + return UR_TRADE_MSG_MON_CANT_BE_TRADED_NOW; // If the player doesn't have the National Dex then Eggs and non-Hoenn Pokémon can't be traded if (!playerHasNationalDex) @@ -2478,7 +2490,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_EGG_CANT_BE_TRADED; if (!IsSpeciesInHoennDex(playerSpecies2)) - return UR_TRADE_MSG_MON_CANT_BE_TRADED_2; + return UR_TRADE_MSG_MON_CANT_BE_TRADED_NOW; if (!IsSpeciesInHoennDex(partnerSpecies)) return UR_TRADE_MSG_PARTNERS_MON_CANT_BE_TRADED; @@ -2497,6 +2509,10 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp bool8 hasNationalDex = player.hasNationalDex; if (IsDeoxysOrMewUntradable(species, isEventLegal)) + return CANT_REGISTER_MON_NOW; + + // Can't trade specific species + if (gBaseStats[species].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_REGISTER_MON; if (hasNationalDex) @@ -2509,7 +2525,7 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp if (IsSpeciesInHoennDex(species2)) return CAN_REGISTER_MON; - return CANT_REGISTER_MON; + return CANT_REGISTER_MON_NOW; } // Spin Trade wasnt fully implemented, but this checks if a mon would be valid to Spin Trade diff --git a/src/tv.c b/src/tv.c index 108770332b..da1ff29175 100644 --- a/src/tv.c +++ b/src/tv.c @@ -3428,7 +3428,7 @@ void ReceiveTvShowsData(void *src, u32 size, u8 playersLinkId) TVShow (*rmBuffer2)[MAX_LINK_PLAYERS][TV_SHOWS_COUNT]; TVShow (*rmBuffer)[MAX_LINK_PLAYERS][TV_SHOWS_COUNT]; - rmBuffer2 = malloc(MAX_LINK_PLAYERS * TV_SHOWS_COUNT * sizeof(TVShow)); + rmBuffer2 = Alloc(MAX_LINK_PLAYERS * TV_SHOWS_COUNT * sizeof(TVShow)); if (rmBuffer2 != NULL) { for (i = 0; i < MAX_LINK_PLAYERS; i++) @@ -3466,7 +3466,7 @@ void ReceiveTvShowsData(void *src, u32 size, u8 playersLinkId) CompactTVShowArray(gSaveBlock1Ptr->tvShows); DeactivateShowsWithUnseenSpecies(); DeactivateGameCompleteShowsIfNotUnlocked(); - free(rmBuffer2); + Free(rmBuffer2); } } @@ -3813,7 +3813,7 @@ void ReceivePokeNewsData(void *src, u32 size, u8 playersLinkId) PokeNews (*rmBuffer2)[MAX_LINK_PLAYERS][POKE_NEWS_COUNT]; PokeNews (*rmBuffer)[MAX_LINK_PLAYERS][POKE_NEWS_COUNT]; - rmBuffer2 = malloc(MAX_LINK_PLAYERS * POKE_NEWS_COUNT * sizeof(PokeNews)); + rmBuffer2 = Alloc(MAX_LINK_PLAYERS * POKE_NEWS_COUNT * sizeof(PokeNews)); if (rmBuffer2 != NULL) { for (i = 0; i < MAX_LINK_PLAYERS; i++) @@ -3839,7 +3839,7 @@ void ReceivePokeNewsData(void *src, u32 size, u8 playersLinkId) } ClearInvalidPokeNews(); ClearPokeNewsIfGameNotComplete(); - free(rmBuffer2); + Free(rmBuffer2); } } @@ -3944,7 +3944,7 @@ static void TranslateShowNames(TVShow *show, u32 language) int i; TVShow **shows; - shows = calloc(11, sizeof(TVShow *)); + shows = AllocZeroed(sizeof(TVShow *) * 11); for (i = 0; i < LAST_TVSHOW_IDX; i++) { switch (show[i].common.kind) @@ -4001,7 +4001,7 @@ static void TranslateShowNames(TVShow *show, u32 language) break; } } - free(shows); + Free(shows); } void SanitizeTVShowsForRuby(TVShow *shows) diff --git a/src/union_room.c b/src/union_room.c index 48b9f20f15..467fb3e228 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -3365,12 +3365,12 @@ static void Task_InitUnionRoom(u8 taskId) } break; case 4: - free(data->spawnPlayer); - free(data->playerList); - free(data->incomingParentList); - free(data->incomingChildList); + Free(data->spawnPlayer); + Free(data->playerList); + Free(data->incomingParentList); + Free(data->incomingChildList); DestroyTask(data->searchTaskId); - free(sWirelessLinkMain.uRoom); + Free(sWirelessLinkMain.uRoom); LinkRfu_Shutdown(); DestroyTask(taskId); break; diff --git a/src/union_room_chat.c b/src/union_room_chat.c index 5c26d1ea36..e1ca7c0b0d 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -1044,7 +1044,7 @@ static void Chat_HandleInput(void) { SetChatFunction(CHAT_FUNC_SWITCH); } - else if (gMain.newAndRepeatedKeys & B_BUTTON) + else if (JOY_REPEAT(B_BUTTON)) { if (sChat->bufferCursorPos) {