diff --git a/README.md b/README.md index 5ed5f30ad023..8ee2c4581a61 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ Based off RHH's pokeemerald-expansion v1.7.1 https://github.com/rh-hideout/pokee - *Support for new evolution methods*. - *Dark Mode*. - [Nature Colors](https://github.com/DizzyEggg/pokeemerald/tree/nature_color) in summary screen by @DizzyEggg + - [Dynamic Multichoice](https://github.com/SBird1337/pokeemerald/tree/feature/dynmulti) by @SBird1337 - ***Other features*** - Pressing B while holding a Pokémon drops them like in modern games (configurable). - Running indoors (configurable). diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 2d1fe667dfa0..c7377378b768 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -980,7 +980,7 @@ .byte 0xbb .endm - .macro maxattackhalvehp failInstr:req + .macro halvehp failInstr:req .byte 0xbc .4byte \failInstr .endm @@ -1087,8 +1087,9 @@ .4byte \failInstr .endm - .macro trycopyability failInstr:req + .macro trycopyability battler:req, failInstr:req .byte 0xd3 + .byte \battler .4byte \failInstr .endm @@ -2332,6 +2333,15 @@ goto \jumpInstr .endm + .macro setallytonextattacker jumpInstr:req + jumpifbyte CMP_GREATER_THAN, gBattlerAttacker, 0x1, 1f + addbyte gBattlerAttacker, 0x2 + goto \jumpInstr + 1: + subbyte gBattlerAttacker, 0x2 + goto \jumpInstr + .endm + .macro jumpifleafguardprotected battler:req, jumpInstr:req various \battler, VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED .4byte \jumpInstr diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 103b5136e3ca..57e88ca27dad 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -1737,11 +1737,44 @@ .2byte \quantity .endm - @ Like callnative, but function expects a ctx - .macro callfunc func:req - .byte 0xe3 - .4byte \func - .endm + @ Like callnative, but function expects a ctx + .macro callfunc func:req + .byte 0xe3 + .4byte \func + .endm + + .macro _dynmultichoice left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, shouldSort:req, initialSelected:req, callbacks:req argv:vararg + .byte 0xe3 + .2byte \left + .2byte \top + .byte \ignoreBPress + .byte \maxBeforeScroll + .byte \shouldSort + .2byte \initialSelected + .byte \callbacks + .byte (.Ldynmultichoice_\@_2 - .Ldynmultichoice_\@_1) / 4 +.Ldynmultichoice_\@_1: + .4byte \argv +.Ldynmultichoice_\@_2: + .endm + + @ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. + @ Lists of options are provided in argv. + @ If ignoreBPress is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button. + .macro dynmultichoice left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, initialSelected:req, callbacks:req argv:vararg + _dynmultichoice \left, \top, \ignoreBPress, \maxBeforeScroll, FALSE, \initialSelected, \callbacks, \argv + .endm + + .macro dynmultipush name:req, id:req + .byte 0xe4 + .4byte \name + .2byte \id + .endm + + .macro dynmultistack left:req, top:req, ignoreBPress:req, maxBeforeScroll:req, shouldSort:req, initialSelected:req, callbacks:req + _dynmultichoice \left, \top, \ignoreBPress, \maxBeforeScroll, \shouldSort, \initialSelected, \callbacks, NULL + .endm + @ Supplementary @@ -2032,3 +2065,33 @@ callnative CreateTrainerPartyForPlayer trainerbattle_no_intro \trainer2, NULL .endm + + @ Sets VAR_RESULT to TRUE if stat can be hyper trained, or to + @ FALSE otherwise. + .macro canhypertrain stat:req, slot:req + callnative CanHyperTrain + .byte \stat + .2byte \slot + .endm + + @ Hyper Trains a stat. + .macro hypertrain stat:req, slot:req + callnative HyperTrain + .byte \stat + .2byte \slot + .endm + + @ Sets VAR_RESULT to TRUE if the Pokemon has the Gigantamax Factor, + @ or to FALSE otherwise. + .macro hasgigantamaxfactor slot:req + callnative HasGigantamaxFactor + .2byte \slot + .endm + + @ Toggles the Gigantamax Factor for a Pokemon. + @ Fails for Melmetal (vanilla behavior). + @ Sets VAR_RESULT to TRUE if it succeeds, and FALSE otherwise. + .macro togglegigantamaxfactor slot:req + callnative ToggleGigantamaxFactor + .2byte \slot + .endm diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 481e0f677938..84b94940d9a6 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -16933,6 +16933,29 @@ ChillyReceptionSnowballs: delay 3 return +Move_BURNING_BULWARK:: + goto Move_PROTECT + +Move_ALLURING_VOICE:: + loadspritegfx ANIM_TAG_THIN_RING + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x8, 0x6e7d + waitforvisualfinish + createvisualtask SoundTask_PlayCryWithEcho, 5, FALSE + createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1 + createvisualtask SoundTask_WaitForCry, 5 + delay 0xA + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 26, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 26, 1 + waitforvisualfinish + createvisualtask SoundTask_WaitForCry, 0x5 + waitforvisualfinish + createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x8, 0x0, 0x6e7d + waitforvisualfinish + end + Move_TERA_BLAST:: Move_AXE_KICK:: Move_LAST_RESPECTS:: @@ -16984,13 +17007,11 @@ Move_IVY_CUDGEL:: Move_ELECTRO_SHOT:: Move_TERA_STARSTORM:: Move_FICKLE_BEAM:: -Move_BURNING_BULWARK:: Move_THUNDERCLAP:: Move_MIGHTY_CLEAVE:: Move_TACHYON_CUTTER:: Move_HARD_PRESS:: Move_DRAGON_CHEER:: -Move_ALLURING_VOICE:: Move_TEMPER_FLARE:: Move_SUPERCELL_SLAM:: Move_PSYCHIC_NOISE:: @@ -19357,7 +19378,7 @@ Move_TELEPORT: call UnsetPsychicBg waitforvisualfinish end - + DoubleTeamAnimRet: setalpha 12, 8 monbg ANIM_ATK_PARTNER diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 485a67db14ca..cddbdcc04403 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -439,6 +439,72 @@ gBattleScriptsForMoveEffects:: .4byte BattleScript_EffectGlaiveRush @ EFFECT_GLAIVE_RUSH .4byte BattleScript_EffectBrickBreak @ EFFECT_RAGING_BULL .4byte BattleScript_EffectHit @ EFFECT_RAGE_FIST + .4byte BattleScript_EffectDoodle @ EFFECT_DOODLE + .4byte BattleScript_EffectFilletAway @ EFFECT_FILLET_AWAY + .4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL + .4byte BattleScript_EffectHit @ EFFECT_FICKLE_BEAM + +BattleScript_EffectFilletAway: + attackcanceler + attackstring + ppreduce + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, MAX_STAT_STAGE, BattleScript_FilletAwayTryAttack + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, MAX_STAT_STAGE, BattleScript_FilletAwayTryAttack + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, MAX_STAT_STAGE, BattleScript_ButItFailed +BattleScript_FilletAwayTryAttack:: + halvehp BattleScript_ButItFailed + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, FALSE + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_SPATK | BIT_SPEED, STAT_CHANGE_BY_TWO + setstatchanger STAT_ATK, 2, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_FilletAwayTrySpAtk + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_FilletAwayTrySpAtk:: + setstatchanger STAT_SPATK, 2, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_FilletAwayTrySpeed + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_FilletAwayTrySpeed:: + setstatchanger STAT_SPEED, 2, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_FilletAwayEnd + printfromtable gStatUpStringIds + waitmessage B_WAIT_TIME_LONG +BattleScript_FilletAwayEnd:: + bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + goto BattleScript_MoveEnd + +BattleScript_EffectDoodle: + attackcanceler + attackstring + ppreduce + attackanimation + waitanimation + setbyte gBattleCommunication, 0 +BattleScript_EffectDoodle_CopyAbility: + trycopyability BS_ATTACKER, BattleScript_ButItFailed +.if B_ABILITY_POP_UP == TRUE + setbyte sFIXED_ABILITY_POPUP, TRUE + showabilitypopup BS_ATTACKER + pause 60 + sethword sABILITY_OVERWRITE, 0 + updateabilitypopup BS_ATTACKER + pause 20 + destroyabilitypopup + pause 40 +.endif + printstring STRINGID_PKMNCOPIEDFOE + waitmessage B_WAIT_TIME_LONG + switchinabilities BS_ATTACKER + jumpifbyte CMP_NOT_EQUAL, gBattleCommunication, 0x0, BattleScript_MoveEnd + addbyte gBattleCommunication, 1 + jumpifnoally BS_TARGET, BattleScript_MoveEnd + setallytonextattacker BattleScript_EffectDoodle_CopyAbility + goto BattleScript_MoveEnd BattleScript_EffectGlaiveRush:: call BattleScript_EffectHit_Ret @@ -997,12 +1063,25 @@ BattleScript_EffectMeteorBeam:: @ DecideTurn jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn - setbyte sTWOTURN_STRINGID, B_MSG_TURN1_METEOR_BEAM + jumpifmove MOVE_METEOR_BEAM, BattleScript_SetStringMeteorBeam + jumpifmove MOVE_ELECTRO_SHOT, BattleScript_SetStringElectroShock +BattleScript_TryCharging: call BattleScript_FirstChargingTurnMeteorBeam + jumpifmove MOVE_METEOR_BEAM, BattleScript_TryMeteorBeam + jumpifweatheraffected BS_ATTACKER, B_WEATHER_RAIN, BattleScript_TwoTurnMovesSecondTurn @ Check for move Electro Shot +BattleScript_TryMeteorBeam: jumpifnoholdeffect BS_ATTACKER, HOLD_EFFECT_POWER_HERB, BattleScript_MoveEnd call BattleScript_PowerHerbActivation goto BattleScript_TwoTurnMovesSecondTurn +BattleScript_SetStringMeteorBeam: + setbyte sTWOTURN_STRINGID, B_MSG_TURN1_METEOR_BEAM + goto BattleScript_TryCharging + +BattleScript_SetStringElectroShock: + setbyte sTWOTURN_STRINGID, B_MSG_TURN1_ELECTRO_SHOCK + goto BattleScript_TryCharging + BattleScript_FirstChargingTurnMeteorBeam:: attackcanceler flushtextbox @@ -5307,12 +5386,16 @@ BattleScript_EffectBellyDrum:: attackcanceler attackstring ppreduce - maxattackhalvehp BattleScript_ButItFailed + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_ATK, MAX_STAT_STAGE, BattleScript_ButItFailed + halvehp BattleScript_ButItFailed orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE attackanimation waitanimation healthbarupdate BS_ATTACKER datahpupdate BS_ATTACKER + playstatchangeanimation BS_ATTACKER, BIT_ATK, STAT_CHANGE_BY_TWO + setstatchanger STAT_ATK, MAX_STAT_STAGE, FALSE + statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_MoveEnd printstring STRINGID_PKMNCUTHPMAXEDATTACK waitmessage B_WAIT_TIME_LONG goto BattleScript_MoveEnd @@ -5908,7 +5991,7 @@ BattleScript_EffectRolePlay:: attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON - trycopyability BattleScript_ButItFailed + trycopyability BS_ATTACKER, BattleScript_ButItFailed attackanimation waitanimation .if B_ABILITY_POP_UP == TRUE @@ -8819,6 +8902,16 @@ BattleScript_ZeroToHeroActivates:: waitmessage B_WAIT_TIME_LONG end3 +BattleScript_HospitalityActivates:: + pause B_WAIT_TIME_SHORT + call BattleScript_AbilityPopUp + printstring STRINGID_HOSPITALITYRESTORATION + waitmessage B_WAIT_TIME_LONG + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + end3 + BattleScript_AttackWeakenedByStrongWinds:: pause B_WAIT_TIME_SHORT printstring STRINGID_ATTACKWEAKENEDBSTRONGWINDS @@ -9215,6 +9308,7 @@ BattleScript_BattlerAbilityStatRaiseOnSwitchIn:: waitanimation printstring STRINGID_BATTLERABILITYRAISEDSTAT waitmessage B_WAIT_TIME_LONG + copybyte gBattlerAttacker, sSAVED_BATTLER end3 BattleScript_ScriptingAbilityStatRaise:: diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc index e9df95f42cca..725a7f8721f0 100644 --- a/data/script_cmd_table.inc +++ b/data/script_cmd_table.inc @@ -228,6 +228,8 @@ gScriptCmdTable:: .4byte ScrCmd_buffercontestname @ 0xe1 .4byte ScrCmd_bufferitemnameplural @ 0xe2 .4byte ScrCmd_callfunc @ 0xe3 + .4byte ScrCmd_dynmultichoice @ 0xe4 + .4byte ScrCmd_dynmultipush @ 0xe5 gScriptCmdTableEnd:: .4byte ScrCmd_nop diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc index bf9fa6004dc4..0d2ed408663a 100644 --- a/data/scripts/berry_tree.inc +++ b/data/scripts/berry_tree.inc @@ -6,6 +6,8 @@ BerryTreeScript:: case BERRY_STAGE_PLANTED, BerryTree_EventScript_CheckBerryStage1 case BERRY_STAGE_SPROUTED, BerryTree_EventScript_CheckBerryStage2 case BERRY_STAGE_TALLER, BerryTree_EventScript_CheckBerryStage3 + case BERRY_STAGE_TRUNK, BerryTree_EventScript_CheckBerryStageTrunk + case BERRY_STAGE_BUDDING, BerryTree_EventScript_CheckBerryStageBudding case BERRY_STAGE_FLOWERING, BerryTree_EventScript_CheckBerryStage4 case BERRY_STAGE_BERRIES, BerryTree_EventScript_CheckBerryFullyGrown end @@ -23,6 +25,8 @@ BerryTree_EventScript_CheckSoil:: faceplayer specialvar VAR_RESULT, PlayerHasBerries goto_if_eq VAR_RESULT, TRUE, BerryTree_EventScript_WantToPlant + specialvar VAR_RESULT, PlayerHasMulch + goto_if_eq VAR_RESULT, TRUE, BerryTree_EventScript_WantToMulch message BerryTree_Text_ItsSoftLoamySoil waitmessage waitbuttonpress @@ -30,11 +34,42 @@ BerryTree_EventScript_CheckSoil:: end BerryTree_EventScript_WantToPlant:: + specialvar VAR_RESULT, PlayerHasMulch + goto_if_eq VAR_RESULT, TRUE, BerryTree_EventScript_WantToPlantMulch msgbox BerryTree_Text_WantToPlant, MSGBOX_YESNO goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_ChooseBerryToPlant goto_if_eq VAR_RESULT, NO, BerryTree_EventScript_CancelPlanting end +BerryTree_EventScript_WantToMulch:: +.if OW_BERRY_MULCH_USAGE == TRUE + msgbox BerryTree_Text_WantToMulch, MSGBOX_YESNO + goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_ChooseMulchToUse + goto_if_eq VAR_RESULT, NO, BerryTree_EventScript_CancelPlanting +.endif + end + +BerryTree_EventScript_WantToPlantMulch:: +.if OW_BERRY_MULCH_USAGE == TRUE + message BerryTree_Text_ItsSoftLoamySoil + waitmessage + multichoice 0, 0, MULTI_BERRY_PLOT, FALSE + switch VAR_RESULT + case 0, BerryTree_EventScript_ChooseMulchToUse + case 1, BerryTree_EventScript_ChooseBerryToPlant + case 2, BerryTree_EventScript_CancelPlanting + case MULTI_B_PRESSED, BerryTree_EventScript_CancelPlanting + +BerryTree_EventScript_ChooseMulchToUse:: + fadescreen FADE_TO_BLACK + closemessage + special Bag_ChooseMulch + waitstate + goto_if_eq VAR_ITEM_ID, 0, BerryTree_EventScript_CancelPlanting + removeitem VAR_ITEM_ID + call BerryTree_EventScript_UseMulch +.endif + BerryTree_EventScript_ChooseBerryToPlant:: fadescreen FADE_TO_BLACK closemessage @@ -72,6 +107,22 @@ BerryTree_EventScript_CheckBerryStage3:: waitbuttonpress goto BerryTree_EventScript_WantToWater +BerryTree_EventScript_CheckBerryStageTrunk:: + lockall + special ObjectEventInteractionGetBerryName + message BerryTree_Text_BerryGrowthStageTrunk + waitmessage + waitbuttonpress + goto BerryTree_EventScript_WantToWater + +BerryTree_EventScript_CheckBerryStageBudding:: + lockall + special ObjectEventInteractionGetBerryName + message BerryTree_Text_BerryGrowthStageBudding + waitmessage + waitbuttonpress + goto BerryTree_EventScript_WantToWater + BerryTree_EventScript_CheckBerryStage4:: call BerryTree_EventScript_GetCareAdverb lockall @@ -103,13 +154,25 @@ BerryTree_EventScript_CheckBerryFullyGrown:: lock faceplayer special ObjectEventInteractionGetBerryCountString +.if OW_BERRY_MUTATIONS == TRUE + goto_if_eq VAR_RESULT, TRUE, BerryTree_EventScript_CheckBerryFullyGrown_Mutation +.endif msgbox BerryTree_Text_WantToPick, MSGBOX_YESNO goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_PickBerry goto_if_eq VAR_RESULT, NO, BerryTree_EventScript_CancelPickingBerry +.set BERRY_NORMAL_BAG_FULL, 0 +.set BERRY_NORMAL_SPACE_IN_BAG, 1 +.set BERRY_MUTATION_BAG_FULL, 2 +.set BERRY_MUTATION_SPACE_IN_BAG, 3 + BerryTree_EventScript_PickBerry:: special ObjectEventInteractionPickBerryTree - goto_if_eq VAR_0x8004, 0, BerryTree_EventScript_BerryPocketFull + goto_if_eq VAR_0x8004, BERRY_NORMAL_BAG_FULL, BerryTree_EventScript_BerryPocketFull +.if OW_BERRY_MUTATIONS == TRUE + goto_if_eq VAR_0x8004, BERRY_MUTATION_BAG_FULL, BerryTree_EventScript_BerryPocketFull_Mutation + goto_if_eq VAR_0x8004, BERRY_MUTATION_SPACE_IN_BAG, BerryTree_EventScript_PickBerry_Mutation +.endif special IncrementDailyPickedBerries special ObjectEventInteractionRemoveBerryTree message BerryTree_Text_PickedTheBerry @@ -145,8 +208,16 @@ BerryTree_EventScript_ItemUsePlantBerry:: end BerryTree_EventScript_WantToWater:: +.if OW_BERRY_PESTS == TRUE + call BerryTree_EventScript_CheckForPests +.endif +.if OW_BERRY_WEEDS == TRUE + call BerryTree_EventScript_CheckForWeed +.endif checkitem ITEM_WAILMER_PAIL goto_if_eq VAR_RESULT, FALSE, BerryTree_EventScript_DontWater + specialvar VAR_RESULT, CanWaterBerryPlot + goto_if_eq VAR_RESULT, FALSE, BerryTree_EventScript_DontWater special ObjectEventInteractionGetBerryName msgbox BerryTree_Text_WantToWater, MSGBOX_YESNO goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_WaterBerry @@ -194,17 +265,39 @@ BerryTree_Text_PlantedOneBerry: .string "the soft, loamy soil.$" BerryTree_Text_BerryGrowthStage1: +.if OW_BERRY_SIX_STAGES == TRUE + .string "This is where you planted the\n{STR_VAR_1}!$" +.else .string "One {STR_VAR_1} was planted here.$" +.endif BerryTree_Text_BerryGrowthStage2: +.if OW_BERRY_SIX_STAGES == TRUE + .string "The {STR_VAR_1} is sprouting!$" +.else .string "{STR_VAR_1} has sprouted.$" +.endif BerryTree_Text_BerryGrowthStage3: +.if OW_BERRY_SIX_STAGES == TRUE + .string "The {STR_VAR_1}'s seedling is growing well!$" +.else .string "This {STR_VAR_1} plant is growing taller.$" +.endif + +BerryTree_Text_BerryGrowthStageTrunk: + .string "The {STR_VAR_1}'s trunk is getting bigger!$" + +BerryTree_Text_BerryGrowthStageBudding: + .string "The {STR_VAR_1} tree has buds!$" BerryTree_Text_BerryGrowthStage4: +.if OW_BERRY_SIX_STAGES == TRUE + .string "The {STR_VAR_1} tree is in bloom!$" +.else .string "These {STR_VAR_1} flowers are blooming\n" .string "{STR_VAR_2}.$" +.endif BerryTree_Text_CareAdverbGreat: .string "very beautifully$" @@ -249,3 +342,123 @@ BerryTree_Text_PlantIsDelighted: BerryTree_Text_ExclamationPoint: .string "!$" + +.if OW_BERRY_MUTATIONS == TRUE +BerryTree_EventScript_CheckBerryFullyGrown_Mutation: + msgbox BerryTree_Text_WantToPick_Mutation, MSGBOX_YESNO + goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_PickBerry + goto_if_eq VAR_RESULT, NO, BerryTree_EventScript_CancelPickingBerry_Mutation + +BerryTree_EventScript_CancelPickingBerry_Mutation:: + message BerryTree_Text_BerryLeftUnpicked_Mutation + waitmessage + waitbuttonpress + release + end + +BerryTree_EventScript_BerryPocketFull_Mutation:: + message BerryTree_Text_BerryPocketFull_Mutation + waitmessage + waitbuttonpress + release + end + +BerryTree_EventScript_PickBerry_Mutation:: + special IncrementDailyPickedBerries + special ObjectEventInteractionRemoveBerryTree + message BerryTree_Text_PickedTheBerry_Mutation + playfanfare MUS_OBTAIN_BERRY + waitmessage + waitfanfare + waitbuttonpress + message BerryTree_Text_PutAwayBerry_Mutation + waitmessage + waitbuttonpress + release + end + +BerryTree_Text_WantToPick_Mutation: + .string "You found {STR_VAR_2} {STR_VAR_1}\n" + .string "and 1 {STR_VAR_3}!\p" + .string "Do you want to pick them?$" + +BerryTree_Text_BerryLeftUnpicked_Mutation: + .string "{PLAYER} left the {STR_VAR_1}\n" + .string "and the {STR_VAR_3} unpicked.$" + +BerryTree_Text_BerryPocketFull_Mutation: + .string "The BAG's BERRIES POCKET is full.\p" + .string "The {STR_VAR_1} and the\n" + .string "{STR_VAR_3} couldn't be taken.$" + +BerryTree_Text_PickedTheBerry_Mutation: + .string "{PLAYER} picked the {STR_VAR_2} {STR_VAR_1}\n" + .string "and the {STR_VAR_3}.$" + +BerryTree_Text_PutAwayBerry_Mutation: + .string "{PLAYER} put away the {STR_VAR_1}\n" + .string "and the {STR_VAR_3} in the BAG's\l" + .string "BERRIES POCKET.\p" + .string "The soil returned to its soft and\n" + .string "loamy state.$" +.endif + +.if OW_BERRY_MULCH_USAGE == TRUE +BerryTree_EventScript_UseMulch:: + special ObjectEventInteractionApplyMulch + message BerryTree_Text_ScatteredMulch + waitmessage + waitbuttonpress + return + +BerryTree_Text_WantToMulch: + .string "It's soft, loamy soil.\n" + .string "Put down some fertilizer?$" + +BerryTree_Text_ScatteredMulch: + .string "{PLAYER} scattered the {STR_VAR_1}\n" + .string "on the soft, loamy soil.$" +.endif + +.if OW_BERRY_WEEDS == TRUE +BerryTree_EventScript_CheckForWeed:: + specialvar VAR_RESULT, ObjectEventInteractionBerryHasWeed + call_if_eq VAR_RESULT, TRUE, BerryTree_EventScript_WeedIsGrowing + return + +BerryTree_EventScript_WeedIsGrowing:: + msgbox BerryTree_Text_WeedIsGrowing, MSGBOX_YESNO + goto_if_eq VAR_RESULT, YES, BerryTree_EventScript_PullOutWeed + return + +BerryTree_EventScript_PullOutWeed:: + special ObjectEventInteractionPullBerryWeed + message BerryTree_Text_PulledOutTheWeed + waitmessage + waitbuttonpress + return + +BerryTree_Text_WeedIsGrowing: + .string "A weed is growing here.\n" + .string "Do you want to pull it out?$" + +BerryTree_Text_PulledOutTheWeed: + .string "{PLAYER} pulled out the weed!$" +.endif + +.if OW_BERRY_PESTS == TRUE +BerryTree_EventScript_CheckForPests:: + specialvar VAR_RESULT, ObjectEventInteractionBerryHasPests + call_if_eq VAR_RESULT, TRUE, BerryTree_EventScript_EncounterPests + return + +BerryTree_EventScript_EncounterPests:: + message BerryTree_Text_APokemonAppeared + waitmessage + waitbuttonpress + dowildbattle + return + +BerryTree_Text_APokemonAppeared: + .string "A Pokémon appeared!$" +.endif diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc index 4d14a2a2a65b..4c74fc1cbd7c 100644 --- a/data/scripts/debug.inc +++ b/data/scripts/debug.inc @@ -215,6 +215,24 @@ Debug_ShowExpansionVersion:: Debug_ExpansionVersion: .string "pokeemerald-expansion {STR_VAR_1}$" +Debug_BerryPestsDisabled:: + msgbox DebugText_BerryPestsDisabled, MSGBOX_DEFAULT + release + end + +DebugText_BerryPestsDisabled: + .string "OW_BERRY_PESTS is disabled.\n" + .string "Unable to force pests onto berry trees.$" + +Debug_BerryWeedsDisabled:: + msgbox DebugText_BerryWeedsDisabled, MSGBOX_DEFAULT + release + end + +DebugText_BerryWeedsDisabled: + .string "OW_BERRY_WEEDS is disabled.\n" + .string "Unable to force weeds onto berry trees.$" + .endif Debug_FlagsAndVarNotSetBattleConfigMessage:: diff --git a/data/scripts/pc.inc b/data/scripts/pc.inc index 1993aaf63f86..e4e37f5b4309 100644 --- a/data/scripts/pc.inc +++ b/data/scripts/pc.inc @@ -64,3 +64,11 @@ EventScript_AccessHallOfFame:: waitstate goto EventScript_AccessPC end + +EventScript_AccessPokemonBoxLink:: + playse SE_PC_LOGIN + msgbox gText_StorageSystemOpened, MSGBOX_DEFAULT + special ShowPokemonStorageSystemPC + waitstate + goto EventScript_TurnOffPC + end diff --git a/data/specials.inc b/data/specials.inc index 152210c176d9..d5e659e1f9a4 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -542,3 +542,11 @@ gSpecials:: def_special TrySkyBattle def_special VsSeekerResetObjectMovementAfterChargeComplete def_special VsSeekerFreezeObjectsAfterChargeComplete + def_special PlayerHasMulch + def_special Bag_ChooseMulch + def_special ObjectEventInteractionApplyMulch + def_special ObjectEventInteractionPullBerryWeed + def_special ObjectEventInteractionClearBerryPests + def_special ObjectEventInteractionBerryHasWeed + def_special ObjectEventInteractionBerryHasPests + def_special CanWaterBerryPlot diff --git a/graphics/items/icon_palettes/metal_alloy.pal b/graphics/items/icon_palettes/metal_alloy.pal new file mode 100644 index 000000000000..83756399234e --- /dev/null +++ b/graphics/items/icon_palettes/metal_alloy.pal @@ -0,0 +1,18 @@ +JASC-PAL +0100 +15 +0 0 0 +249 253 255 +224 232 243 +169 163 177 +136 130 156 +178 194 220 +123 146 180 +162 164 202 +153 208 247 +85 96 152 +136 150 213 +186 212 247 +90 118 181 +154 195 255 +49 49 49 diff --git a/graphics/items/icons/metal_alloy.png b/graphics/items/icons/metal_alloy.png new file mode 100644 index 000000000000..408e13dd5b9b Binary files /dev/null and b/graphics/items/icons/metal_alloy.png differ diff --git a/include/battle.h b/include/battle.h index 7185bf340c56..fba81a802ac0 100644 --- a/include/battle.h +++ b/include/battle.h @@ -15,6 +15,7 @@ #include "pokeball.h" #include "battle_debug.h" #include "battle_dynamax.h" +#include "random.h" // for rng_value_t // Used to exclude moves learned temporarily by Transform or Mimic #define MOVE_IS_PERMANENT(battler, moveSlot) \ @@ -64,7 +65,7 @@ struct ResourceFlags struct DisableStruct { u32 transformedMonPersonality; - u32 transformedMonOtId; + bool8 transformedMonShininess; u16 disabledMove; u16 encoredMove; u8 protectUses:4; @@ -161,6 +162,7 @@ struct ProtectStruct u16 shellTrap:1; u16 maxGuarded:1; u16 silkTrapped:1; + u16 burningBulwarked:1; u16 eatMirrorHerb:1; u16 activateOpportunist:2; // 2 - to copy stats. 1 - stats copied (do not repeat). 0 - no stats to copy u16 usedAllySwitch:1; @@ -335,7 +337,7 @@ struct AI_ThinkingStruct u16 moveConsidered; s32 score[MAX_MON_MOVES]; u32 funcResult; - u32 aiFlags; + u32 aiFlags[MAX_BATTLERS_COUNT]; u8 aiAction; u8 aiLogicId; struct AI_SavedBattleMon saved[MAX_BATTLERS_COUNT]; @@ -580,6 +582,13 @@ struct LostItem u16 stolen:1; }; +#if HQ_RANDOM == TRUE +struct BattleVideo { + u32 battleTypeFlags; + rng_value_t rngSeed; +}; +#endif + struct BattleStruct { u8 turnEffectsTracker; @@ -651,7 +660,12 @@ struct BattleStruct u16 lastTakenMoveFrom[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT]; // a 2-D array [target][attacker] union { struct LinkBattlerHeader linkBattlerHeader; + + #if HQ_RANDOM == FALSE u32 battleVideo[2]; + #else + struct BattleVideo battleVideo; + #endif } multiBuffer; u8 wishPerishSongState; u8 wishPerishSongBattlerId; @@ -667,7 +681,7 @@ struct BattleStruct u16 arenaStartHp[2]; u8 arenaLostPlayerMons; // Bits for party member, lost as in referee's decision, not by fainting. u8 arenaLostOpponentMons; - u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed pokemon. + u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed Pokémon. u8 debugBattler; u8 magnitudeBasePower; u8 presentBasePower; @@ -800,6 +814,7 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER || gProtectStructs[battlerId].spikyShielded \ || gProtectStructs[battlerId].kingsShielded \ || gProtectStructs[battlerId].banefulBunkered \ + || gProtectStructs[battlerId].burningBulwarked \ || gProtectStructs[battlerId].obstructed \ || gProtectStructs[battlerId].silkTrapped) @@ -940,7 +955,7 @@ struct BattleSpriteData struct MonSpritesGfx { - void *firstDecompressed; // ptr to the decompressed sprite of the first pokemon + void *firstDecompressed; // ptr to the decompressed sprite of the first Pokémon union { void *ptr[MAX_BATTLERS_COUNT]; u8 *byte[MAX_BATTLERS_COUNT]; @@ -1053,7 +1068,7 @@ extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT]; extern u8 gBattlerInMenuId; extern bool8 gDoingBattleAnim; extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT]; -extern u32 gTransformedOtIds[MAX_BATTLERS_COUNT]; +extern bool8 gTransformedShininess[MAX_BATTLERS_COUNT]; extern u8 gPlayerDpadHoldFrames; extern struct BattleSpriteData *gBattleSpritesDataPtr; extern struct MonSpritesGfx *gMonSpritesGfxPtr; diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index 8c22baa3122e..16f6468757c1 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -4,6 +4,6 @@ void GetAIPartyIndexes(u32 battlerId, s32 *firstId, s32 *lastId); void AI_TrySwitchOrUseItem(u32 battler); u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd); -bool32 ShouldSwitch(u32 battler); +bool32 ShouldSwitch(u32 battler, bool32 emitResult); #endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H diff --git a/include/battle_ai_util.h b/include/battle_ai_util.h index f3a94cb9c104..1dd0f077d6ba 100644 --- a/include/battle_ai_util.h +++ b/include/battle_ai_util.h @@ -59,7 +59,6 @@ bool32 ShouldRestoreHpBerry(u32 battlerAtk, u32 item); bool32 IsStatBoostingBerry(u32 item); bool32 CanKnockOffItem(u32 battler, u32 item); bool32 IsAbilityOfRating(u32 ability, s8 rating); -s8 GetAbilityRating(u32 ability); bool32 AI_IsAbilityOnSide(u32 battlerId, u32 ability); bool32 AI_MoveMakesContact(u32 ability, u32 holdEffect, u32 move); u32 AI_GetBattlerMoveTargetType(u32 battlerId, u32 move); diff --git a/include/battle_anim.h b/include/battle_anim.h index 98959d54e1a8..62aca91318d4 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -159,7 +159,7 @@ void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union Aff bool8 RunAffineAnimFromTaskData(struct Task *task); void AnimThrowProjectile(struct Sprite *sprite); void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battlerId); -u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId); +u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battlerId); void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite); void Trade_MoveSelectedMonToTarget(struct Sprite *sprite); void DestroyAnimVisualTaskAndDisableBlend(u8 taskId); diff --git a/include/battle_main.h b/include/battle_main.h index 6a55a1cf2a62..a28e8d5de637 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -4,12 +4,6 @@ #include "pokemon.h" #include "data.h" -struct TrainerMoney -{ - u8 classId; - u8 value; -}; - // For displaying a multi battle partner's Pokémon in the party menu struct MultiPartnerMenuPokemon { @@ -84,9 +78,6 @@ extern const struct SpriteTemplate gUnusedBattleInitSprite; extern const struct OamData gOamData_BattleSpriteOpponentSide; extern const struct OamData gOamData_BattleSpritePlayerSide; extern const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1]; -extern const struct TrainerMoney gTrainerMoneyTable[]; -extern const u8 gAbilityNames[][ABILITY_NAME_LENGTH + 1]; -extern const u8 *const gAbilityDescriptionPointers[]; extern const u8 gStatusConditionString_PoisonJpn[8]; extern const u8 gStatusConditionString_SleepJpn[8]; diff --git a/include/battle_scripts.h b/include/battle_scripts.h index bc534b69af69..db9db4fb8243 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -461,6 +461,7 @@ extern const u8 BattleScript_CudChewActivates[]; extern const u8 BattleScript_SupremeOverlordActivates[]; extern const u8 BattleScript_CostarActivates[]; extern const u8 BattleScript_ZeroToHeroActivates[]; +extern const u8 BattleScript_HospitalityActivates[]; extern const u8 BattleScript_ToxicDebrisActivates[]; extern const u8 BattleScript_EarthEaterActivates[]; extern const u8 BattleScript_MimicryActivates_End3[]; diff --git a/include/battle_util.h b/include/battle_util.h index 8cec71e43e5b..08487bfcf167 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -224,15 +224,6 @@ void RecalcBattlerStats(u32 battler, struct Pokemon *mon); bool32 IsAlly(u32 battlerAtk, u32 battlerDef); bool32 IsGen6ExpShareEnabled(void); -// Ability checks -bool32 IsRolePlayBannedAbilityAtk(u16 ability); -bool32 IsRolePlayBannedAbility(u16 ability); -bool32 IsSkillSwapBannedAbility(u16 ability); -bool32 IsWorrySeedBannedAbility(u16 ability); -bool32 IsGastroAcidBannedAbility(u16 ability); -bool32 IsEntrainmentBannedAbilityAttacker(u16 ability); -bool32 IsEntrainmentTargetOrSimpleBeamBannedAbility(u16 ability); - bool32 CanSleep(u32 battler); bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget); bool32 CanBeBurned(u32 battler); diff --git a/include/berry.h b/include/berry.h index 22b9158ee204..ba1bbb1d129b 100644 --- a/include/berry.h +++ b/include/berry.h @@ -1,7 +1,6 @@ #ifndef GUARD_BERRY_H #define GUARD_BERRY_H -void ClearEnigmaBerries(void); void SetEnigmaBerry(u8 *src); bool32 IsEnigmaBerryValid(void); const struct Berry *GetBerryInfo(u8 berry); @@ -19,12 +18,15 @@ u8 ItemIdToBerryType(u16 item); void GetBerryNameByBerryType(u8 berry, u8 *string); void ResetBerryTreeSparkleFlag(u8 id); void Bag_ChooseBerry(void); +void Bag_ChooseMulch(void); void ObjectEventInteractionGetBerryTreeData(void); void ObjectEventInteractionPlantBerryTree(void); void ObjectEventInteractionPickBerryTree(void); void ObjectEventInteractionRemoveBerryTree(void); +void ObjectEventInteractionApplyMulch(void); bool8 PlayerHasBerries(void); void SetBerryTreesSeen(void); +bool32 BerryTreeGrow(struct BerryTree *tree); extern const struct Berry gBerries[]; diff --git a/include/config.h b/include/config.h index 59b23f9d34c1..d1fc1e0eb637 100644 --- a/include/config.h +++ b/include/config.h @@ -79,5 +79,6 @@ #define EXPANSION_INTRO TRUE // If TRUE, a custom RHH intro will play after the vanilla copyright screen. #define POKEDEX_PLUS_HGSS TRUE // If TRUE, enables the custom HGSS style Pokedex. #define SUMMARY_SCREEN_NATURE_COLORS TRUE // If TRUE, nature-based stat boosts and reductions will be red and blue in the summary screen. +#define HQ_RANDOM TRUE // If TRUE, replaces the default RNG with an implementation of SFC32 RNG. May break code that relies on RNG. #endif // GUARD_CONFIG_H diff --git a/include/config/battle.h b/include/config/battle.h index a855217dae16..e963dc775bd1 100644 --- a/include/config/battle.h +++ b/include/config/battle.h @@ -46,6 +46,7 @@ #define B_PRANKSTER_DARK_TYPES GEN_LATEST // In Gen7+, Prankster-elevated status moves do not affect Dark type Pokémon. #define B_SHEER_COLD_IMMUNITY GEN_LATEST // In Gen7+, Ice-types are immune to Sheer Cold #define B_ROOST_PURE_FLYING GEN_LATEST // In Gen5+, Roost makes pure Flying-types into Normal-type. +#define B_STATUS_TYPE_IMMUNITY GEN_LATEST // In Gen1, Pokémon were immune to paralysis/freeze/burn side effects of attacking moves, if they shared a type with the move. // Turn settings #define B_BINDING_TURNS GEN_LATEST // In Gen5+, binding moves last for 4-5 turns instead of 2-5 turns. (With Grip Claw, 7 and 5 turns respectively.) @@ -70,6 +71,9 @@ #define B_PP_REDUCED_BY_SPITE GEN_LATEST // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5. #define B_EXTRAPOLATED_MOVE_FLAGS TRUE // Adds move flags to moves that they don't officially have but would likely have if they were in the latest core series game. +// Ability data settings +#define B_UPDATED_ABILITY_DATA GEN_LATEST // Affects flags + // Move accuracy settings #define B_TOXIC_NEVER_MISS GEN_LATEST // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss. #define B_MINIMIZE_DMG_ACC GEN_LATEST // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks. diff --git a/include/config/item.h b/include/config/item.h index e7ebda234a9f..1bdbdd82b8f9 100644 --- a/include/config/item.h +++ b/include/config/item.h @@ -14,6 +14,8 @@ #define I_USE_EVO_HELD_ITEMS_FROM_BAG TRUE // If TRUE, items such as Razor Claw or Electirizer will be usable from the bag to evolve a Pokémon just like in LA. #define I_TYPE_BOOST_POWER GEN_LATEST // In Gen4+, all regular type boosting held items had their power increased from 10% to 20%. eg. Charcoal #define I_SELL_VALUE_FRACTION GEN_LATEST // In Gen9+, items sell for 1/4 of their value instead of 1/2. +#define I_PRICE GEN_LATEST // Some items have varied in value across generations. +#define I_BERRY_PRICE GEN_7 // Since Berries have become unplantable (Gen8+), their price has gone up. // TM config #define I_REUSABLE_TMS TRUE // In Gen5-8, TMs are reusable. Setting this to TRUE will make all vanilla TMs reusable, though they can also be cherry-picked by setting their importance to 1. diff --git a/include/config/overworld.h b/include/config/overworld.h index 34880644211d..e3cbae1b231b 100644 --- a/include/config/overworld.h +++ b/include/config/overworld.h @@ -11,6 +11,24 @@ // PC settings #define OW_PC_PRESS_B GEN_LATEST // In Gen4, pressing B when holding a Pokémon is equivalent to placing it. In Gen3, it gives the "You're holding a Pokémon!" error. #define OW_PC_JAPAN_WALDA_ICONS TRUE // In the US release of Emerald, the Cross, Bolt, and Plusle icons for Walda's wallpapers were left blank from the Japan release. Setting this to TRUE will restore them. +#define OW_PC_HEAL GEN_LATEST // In Gen8+, Pokémon are not healed when deposited in the PC. + +// Berry settings +// These generational defines only make a distinction for Berries! +#define GEN_6_XY GEN_6 +#define GEN_6_ORAS GEN_LATEST + 1 + +#define OW_BERRY_MUTATIONS TRUE // If enabled, Berry plants can mutate based on berries planted next to them. +#define OW_BERRY_MOISTURE TRUE // If enabled, Berry watering is not a matter of watering it once per stage, but rather of keeping the soil moist. +#define OW_BERRY_ALWAYS_WATERABLE TRUE // If OW_BERRY_MOISTURE is enabled, this setting allows the player to continuously water soil; dry soil will cause a decrease in Berry Yield (like Gen4). When off, soil can only be watered when dry and watering increases yield (like Gen6). +#define OW_BERRY_MULCH_USAGE FALSE // If enabled, Mulch can be used on soil to fertilize it. Otherwise, it is considered unusable. Note that moisture effects only work with OW_BERRY_MOISTURE enabled! +#define OW_BERRY_WEEDS TRUE // If enabled, weeds may grow on Berry plants that the player needs to take care of. Without OW_BERRY_MOISTURE, weeding bonuses are rounded down. +#define OW_BERRY_PESTS TRUE // If enabled, pests may approach Berry plants that the player needs to take care of. Without OW_BERRY_MOISTURE, pest bonuses are rounded down. +#define OW_BERRY_SIX_STAGES TRUE // In XY, Berries go through six stages instead of four. This toggle does not affect the time it takes for a tree to be ready for harvest. Without OW_BERRY_MOISTURE, the two extra stages count as BERRY_STAGE_TALLER for watering purposes. + +#define OW_BERRY_GROWTH_RATE GEN_3 // Presets for how long each Berry plant takes to grow. +#define OW_BERRY_YIELD_RATE GEN_3 // Presets for how many Berries each plant can yield. +#define OW_BERRY_DRAIN_RATE GEN_6_ORAS // If OW_BERRY_MOISTURE is enabled, this setting changes how fast the soil dries out. GEN_4 uses a Berry-dependent drain rate, GEN_6_XY dries out in 24 hours (4 hours with the relevant Mulch) and GEN_6_ORAS dries out in 4 hours. Other values are illegal. // Out-of-battle Ability effects #define OW_SYNCHRONIZE_NATURE GEN_LATEST // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same Nature, as opposed to 50% previously. Stationary Pokémon are excluded in Gen3. In Gen6, all No Eggs Discovered gift Pokémon will have the same Nature, while in Gen7 all gift Pokémon will, regardless of Egg Group - In Gen 8, no gift Pokémon are affected. In Gen9, this ability has no out-of-battle effect. diff --git a/include/config/pokemon.h b/include/config/pokemon.h index abdb728ac175..d905979aaea2 100644 --- a/include/config/pokemon.h +++ b/include/config/pokemon.h @@ -29,9 +29,11 @@ // Other settings #define P_CUSTOM_GENDER_DIFF_ICONS TRUE // If TRUE, will give more Pokémon custom icons for their female forms, i.e. Hippopotas and Hippowdon +#define P_FOOTPRINTS TRUE // If TRUE, Pokémon will have footprints (as was the case up to Gen 5 and in BDSP). Disabling this saves some ROM space. #define P_LEGENDARY_PERFECT_IVS GEN_LATEST // Since Gen 6, Legendaries, Mythicals and Ultra Beasts found in the wild or given through gifts have at least 3 perfect IVs. #define P_EV_CAP GEN_LATEST // Since Gen 6, the max EVs per stat is 252 instead of 255. #define P_CATCH_CURVE GEN_LATEST // Since Gen 6, the capture rate curve was changed to make pokeballs more effective on lower level pokemon +#define P_SHOW_TERA_TYPE GEN_LATEST // Since Gen 9, the Tera Type is shown on the summary screen. // Flag settings // To use the following features in scripting, replace the 0s with the flag ID you're assigning it to. diff --git a/include/config/species_enabled.h b/include/config/species_enabled.h index 9afc7d103730..dce0095620d5 100644 --- a/include/config/species_enabled.h +++ b/include/config/species_enabled.h @@ -594,5 +594,11 @@ #define P_FAMILY_MUNKIDORI P_GEN_9_POKEMON #define P_FAMILY_FEZANDIPITI P_GEN_9_POKEMON #define P_FAMILY_OGERPON P_GEN_9_POKEMON +#define P_FAMILY_GOUGING_FIRE P_GEN_9_POKEMON +#define P_FAMILY_RAGING_BOLT P_GEN_9_POKEMON +#define P_FAMILY_IRON_BOULDER P_GEN_9_POKEMON +#define P_FAMILY_IRON_CROWN P_GEN_9_POKEMON +#define P_FAMILY_TERAPAGOS P_GEN_9_POKEMON +#define P_FAMILY_PECHARUNT P_GEN_9_POKEMON #endif // GUARD_CONFIG_SPECIES_ENABLED_H diff --git a/include/constants/abilities.h b/include/constants/abilities.h index 7e3b1728d947..3cced68bb16b 100644 --- a/include/constants/abilities.h +++ b/include/constants/abilities.h @@ -332,10 +332,10 @@ #define ABILITY_EMBODY_ASPECT_CORNERSTONE 304 #define ABILITY_TOXIC_CHAIN 305 #define ABILITY_SUPERSWEET_SYRUP 306 -#define ABILITY_307 307 -#define ABILITY_308 308 -#define ABILITY_309 309 -#define ABILITY_310 310 +#define ABILITY_TERA_SHIFT 307 +#define ABILITY_TERA_SHELL 308 +#define ABILITY_TERAFORM_ZERO 309 +#define ABILITY_POISON_PUPPETEER 310 #define ABILITIES_COUNT_GEN9 311 diff --git a/include/constants/battle.h b/include/constants/battle.h index 35addb937b3e..92688026f8cc 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -104,7 +104,10 @@ #define B_OUTCOME_LINK_BATTLE_RAN (1 << 7) // 128 // Non-volatile status conditions -// These persist remain outside of battle and after switching out +// These remain outside of battle and after switching out. +// If a new STATUS1 is added here, it should also be added to +// sCompressedStatuses in src/pokemon.c or else it will be lost outside +// of battle. #define STATUS1_NONE 0 #define STATUS1_SLEEP (1 << 0 | 1 << 1 | 1 << 2) // First 3 bits (Number of turns to sleep) #define STATUS1_SLEEP_TURN(num) ((num) << 0) // Just for readability (or if rearranging statuses) diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h index a0b0fb1d4c87..b1662469e755 100644 --- a/include/constants/battle_move_effects.h +++ b/include/constants/battle_move_effects.h @@ -416,7 +416,11 @@ #define EFFECT_GLAIVE_RUSH 410 #define EFFECT_RAGING_BULL 411 #define EFFECT_RAGE_FIST 412 +#define EFFECT_DOODLE 413 +#define EFFECT_FILLET_AWAY 414 +#define EFFECT_IVY_CUDGEL 415 +#define EFFECT_FICKLE_BEAM 416 -#define NUM_BATTLE_MOVE_EFFECTS 413 +#define NUM_BATTLE_MOVE_EFFECTS 417 #endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H diff --git a/include/constants/battle_palace.h b/include/constants/battle_palace.h index 85165508922e..1d8c2f2ddad5 100644 --- a/include/constants/battle_palace.h +++ b/include/constants/battle_palace.h @@ -16,12 +16,12 @@ #define PALACE_DATA_WIN_STREAK 1 #define PALACE_DATA_WIN_STREAK_ACTIVE 2 -// Pokemon in Battle Palace have a move "group" type preference depending on nature +// Pokémon in Battle Palace have a move "group" type preference depending on nature #define PALACE_MOVE_GROUP_ATTACK 0 #define PALACE_MOVE_GROUP_DEFENSE 1 #define PALACE_MOVE_GROUP_SUPPORT 2 -// In palace doubles battles pokemon have a target preference depending on nature +// In palace doubles battles Pokémon have a target preference depending on nature #define PALACE_TARGET_STRONGER 0 #define PALACE_TARGET_WEAKER 1 #define PALACE_TARGET_RANDOM 2 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index 6263f87a38b0..c4ca5dee437d 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -696,8 +696,10 @@ #define STRINGID_SWAMPENVELOPEDSIDE 694 #define STRINGID_THESWAMPDISAPPEARED 695 #define STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE 696 +#define STRINGID_HOSPITALITYRESTORATION 697 +#define STRINGID_ELECTROSHOCKCHARGING 698 -#define BATTLESTRINGS_COUNT 697 +#define BATTLESTRINGS_COUNT 699 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -755,6 +757,7 @@ #define B_MSG_TURN1_FREEZE_SHOCK 10 #define B_MSG_TURN1_SKY_DROP 11 #define B_MSG_TURN1_METEOR_BEAM 12 +#define B_MSG_TURN1_ELECTRO_SHOCK 13 // gMoveWeatherChangeStringIds #define B_MSG_STARTED_RAIN 0 diff --git a/include/constants/berry.h b/include/constants/berry.h index 3ba59c0f5ec4..bc86f44ce637 100644 --- a/include/constants/berry.h +++ b/include/constants/berry.h @@ -10,6 +10,13 @@ #define BERRY_FIRMNESS_VERY_HARD 4 #define BERRY_FIRMNESS_SUPER_HARD 5 +#define BERRY_COLOR_RED 0 +#define BERRY_COLOR_BLUE 1 +#define BERRY_COLOR_PURPLE 2 +#define BERRY_COLOR_GREEN 3 +#define BERRY_COLOR_YELLOW 4 +#define BERRY_COLOR_PINK 5 + #define FLAVOR_SPICY 0 #define FLAVOR_DRY 1 #define FLAVOR_SWEET 2 @@ -23,6 +30,8 @@ #define BERRY_STAGE_TALLER 3 #define BERRY_STAGE_FLOWERING 4 #define BERRY_STAGE_BERRIES 5 +#define BERRY_STAGE_TRUNK 6 // These follow BERRY_STAGE_BERRIES to preserve save compatibility +#define BERRY_STAGE_BUDDING 7 #define BERRY_STAGE_SPARKLING 255 // Berries can be watered in the following stages: diff --git a/include/constants/cries.h b/include/constants/cries.h index 4b9936fc3a71..33eff9f3a0e5 100644 --- a/include/constants/cries.h +++ b/include/constants/cries.h @@ -2025,6 +2025,7 @@ enum { CRY_APPLETUN, #if P_GEN_9_CROSS_EVOS CRY_DIPPLIN, + //CRY_HYDRAPPLE, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN #if P_FAMILY_SILICOBRA @@ -2112,6 +2113,9 @@ enum { #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON CRY_DURALUDON, +#if P_GEN_9_CROSS_EVOS + //CRY_ARCHALUDON, +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY CRY_DREEPY, @@ -2404,6 +2408,24 @@ enum { #if P_FAMILY_OGERPON CRY_OGERPON, #endif //P_FAMILY_OGERPON +#if P_FAMILY_GOUGING_FIRE + //CRY_GOUGING_FIRE, +#endif //P_FAMILY_GOUGING_FIRE +#if P_FAMILY_RAGING_BOLT + //CRY_RAGING_BOLT, +#endif //P_FAMILY_RAGING_BOLT +#if P_FAMILY_IRON_BOULDER + //CRY_IRON_BOULDER, +#endif //P_FAMILY_IRON_BOULDER +#if P_FAMILY_IRON_CROWN + //CRY_IRON_CROWN, +#endif //P_FAMILY_IRON_CROWN +#if P_FAMILY_TERAPAGOS + //CRY_TERAPAGOS, +#endif //P_FAMILY_TERAPAGOS +#if P_FAMILY_PECHARUNT + //CRY_PECHARUNT, +#endif //P_FAMILY_PECHARUNT CRY_COUNT, }; diff --git a/include/constants/field_specials.h b/include/constants/field_specials.h index 665940331365..1e08a47f95ee 100644 --- a/include/constants/field_specials.h +++ b/include/constants/field_specials.h @@ -62,7 +62,7 @@ #define DEPT_STORE_FLOORNUM_11F 14 #define DEPT_STORE_FLOORNUM_ROOFTOP 15 -// Lilycove Pokemon Trainer Fan Club +// Lilycove Pokémon Trainer Fan Club #define NUM_TRAINER_FAN_CLUB_MEMBERS 8 #define FANCLUB_GOT_FIRST_FANS 7 diff --git a/include/constants/global.h b/include/constants/global.h index 29295869645c..ae784525b52d 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -9,9 +9,9 @@ // Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen. // In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen. -// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------". +// In Gen 4 only, migrated Pokémon with Diamond, Pearl, or Platinum's ID show as "----------". // Gen 5 and up read Diamond, Pearl, or Platinum's ID as "Sinnoh". -// In Gen 4 and up, migrated Pokemon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string. +// In Gen 4 and up, migrated Pokémon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string. #define VERSION_SAPPHIRE 1 #define VERSION_RUBY 2 #define VERSION_EMERALD 3 @@ -24,6 +24,8 @@ #define VERSION_PLATINUM 12 #define VERSION_GAMECUBE 15 +#define NUM_VERSIONS 15 + #define LANGUAGE_JAPANESE 1 #define LANGUAGE_ENGLISH 2 #define LANGUAGE_FRENCH 3 diff --git a/include/constants/hold_effects.h b/include/constants/hold_effects.h index a54f569cd29e..0f364d2462cf 100644 --- a/include/constants/hold_effects.h +++ b/include/constants/hold_effects.h @@ -160,7 +160,6 @@ #define HOLD_EFFECT_COVERT_CLOAK 179 #define HOLD_EFFECT_LOADED_DICE 180 #define HOLD_EFFECT_BOOSTER_ENERGY 181 // Not implemented. -#define HOLD_EFFECT_MASK 183 // Gen2 hold effect #define HOLD_EFFECT_BERSERK_GENE 184 diff --git a/include/constants/items.h b/include/constants/items.h index 074dcd9fc540..63ea57dff5bb 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -986,8 +986,10 @@ #define ITEM_SWIFT_MOCHI 811 #define ITEM_FRESH_START_MOCHI 812 #define ITEM_GLIMMERING_CHARM 813 +#define ITEM_METAL_ALLOY 814 +#define ITEM_STELLAR_TERA_SHARD 815 -#define ITEMS_COUNT 814 +#define ITEMS_COUNT 816 #define ITEM_FIELD_ARROW ITEMS_COUNT // A special item id associated with "Cancel"/"Exit" etc. in a list of items or decorations @@ -1015,6 +1017,7 @@ #define ITEM_TO_BERRY(itemId)(((itemId) - FIRST_BERRY_INDEX) + 1) #define ITEM_TO_MAIL(itemId)((itemId) - FIRST_MAIL_INDEX) #define MAIL_NONE 0xFF +#define ITEM_TO_MULCH(itemId)(((itemId) - ITEM_GROWTH_MULCH) + 1) #define NUM_TECHNICAL_MACHINES 100 #define NUM_HIDDEN_MACHINES 8 diff --git a/include/constants/moves.h b/include/constants/moves.h index b7ded3d51361..a0c0eaf3b304 100644 --- a/include/constants/moves.h +++ b/include/constants/moves.h @@ -1016,6 +1016,8 @@ #define MOVES_COUNT_DYNAMAX (LAST_MAX_MOVE + 1) +#define MOVES_COUNT_ALL MOVES_COUNT_DYNAMAX + // Used for checks for moves affected by Disable, Mimic, etc. #define MOVE_UNAVAILABLE 0xFFFF diff --git a/include/constants/pokedex.h b/include/constants/pokedex.h index ffbbb2eb18a8..c03b096f9add 100644 --- a/include/constants/pokedex.h +++ b/include/constants/pokedex.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_POKEDEX_H #define GUARD_CONSTANTS_POKEDEX_H -// National Pokedex order. +// National Pokédex order // These constants are NOT disabled by P_GEN_X_POKEMON to keep pokedex_orders.h clean. enum { NATIONAL_DEX_NONE, @@ -1031,21 +1031,21 @@ enum { NATIONAL_DEX_MUNKIDORI, NATIONAL_DEX_FEZANDIPITI, NATIONAL_DEX_OGERPON, - NATIONAL_DEX_1018, - NATIONAL_DEX_1019, - NATIONAL_DEX_1020, - NATIONAL_DEX_1021, - NATIONAL_DEX_1022, - NATIONAL_DEX_1023, - NATIONAL_DEX_1024, - NATIONAL_DEX_1025, + NATIONAL_DEX_ARCHALUDON, + NATIONAL_DEX_HYDRAPPLE, + NATIONAL_DEX_GOUGING_FIRE, + NATIONAL_DEX_RAGING_BOLT, + NATIONAL_DEX_IRON_BOULDER, + NATIONAL_DEX_IRON_CROWN, + NATIONAL_DEX_TERAPAGOS, + NATIONAL_DEX_PECHARUNT, }; #define KANTO_DEX_COUNT NATIONAL_DEX_MEW #define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI #if P_GEN_9_POKEMON == TRUE - #define NATIONAL_DEX_COUNT NATIONAL_DEX_1025 + #define NATIONAL_DEX_COUNT NATIONAL_DEX_PECHARUNT #elif P_GEN_8_POKEMON == TRUE #define NATIONAL_DEX_COUNT NATIONAL_DEX_ENAMORUS #elif P_GEN_7_POKEMON == TRUE @@ -1062,7 +1062,7 @@ enum { #define POKEMON_SLOTS_NUMBER (NATIONAL_DEX_COUNT + 1) -// Hoenn Pokedex order +// Hoenn Pokédex order enum { HOENN_DEX_NONE, HOENN_DEX_TREECKO, diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index ec664d0b5d5b..22a2d9a9bda5 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -1,7 +1,7 @@ #ifndef GUARD_CONSTANTS_POKEMON_H #define GUARD_CONSTANTS_POKEMON_H -// Pokemon types +// Pokémon types #define TYPE_NONE 255 #define TYPE_NORMAL 0 #define TYPE_FIGHTING 1 @@ -24,7 +24,7 @@ #define TYPE_FAIRY 18 #define NUMBER_OF_MON_TYPES 19 -// Pokemon egg groups +// Pokémon egg groups #define EGG_GROUP_NONE 0 #define EGG_GROUP_MONSTER 1 #define EGG_GROUP_WATER_1 2 @@ -44,7 +44,7 @@ #define EGG_GROUPS_PER_MON 2 -// Pokemon natures +// Pokémon natures #define NATURE_HARDY 0 #define NATURE_LONELY 1 #define NATURE_BRAVE 2 @@ -72,7 +72,7 @@ #define NATURE_QUIRKY 24 #define NUM_NATURES 25 -// Pokemon Stats +// Pokémon Stats #define STAT_HP 0 #define STAT_ATK 1 #define STAT_DEF 2 @@ -146,6 +146,8 @@ #define MIN_LEVEL 1 #define MAX_LEVEL 100 +#define MAX_DYNAMAX_LEVEL 10 + #define OT_ID_PLAYER_ID 0 #define OT_ID_PRESET 1 #define OT_ID_RANDOM_NO_SHINY 2 @@ -243,7 +245,7 @@ #define GROWTH_FAST 4 #define GROWTH_SLOW 5 -// Body colors for pokedex search +// Body colors for Pokédex search #define BODY_COLOR_RED 0 #define BODY_COLOR_BLUE 1 #define BODY_COLOR_YELLOW 2 @@ -319,7 +321,7 @@ #define MON_PIC_HEIGHT 64 #define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2) -// Most pokemon have 2 frames (a default and an alternate for their animation). +// Most Pokémon have 2 frames (a default and an alternate for their animation). // There are 4 exceptions: // - Deoxys has 2 frames, 1 for each form // - Spinda has 1 frame, presumably to avoid the work of animating its spots diff --git a/include/constants/script_menu.h b/include/constants/script_menu.h index c58df7335f96..73b972afa85a 100644 --- a/include/constants/script_menu.h +++ b/include/constants/script_menu.h @@ -122,6 +122,7 @@ #define MULTI_SLATEPORT_TENT_RULES 111 #define MULTI_FALLARBOR_TENT_RULES 112 #define MULTI_TAG_MATCH_TYPE 113 +#define MULTI_BERRY_PLOT 114 // Lilycove SS Tidal Multichoice Selections #define SSTIDAL_SELECTION_SLATEPORT 0 @@ -165,4 +166,10 @@ #define STDSTRING_BATTLE_PIKE 28 #define STDSTRING_BATTLE_PYRAMID 29 +// Dynamic Multichoice Callbacks + +#define DYN_MULTICHOICE_CB_DEBUG 0 +#define DYN_MULTICHOICE_CB_SHOW_ITEM 1 +#define DYN_MULTICHOICE_CB_NONE 255 + #endif //GUARD_SCRIPT_MENU_CONSTANTS_H diff --git a/include/constants/species.h b/include/constants/species.h index d5f1ca1efa62..ef83e63979b7 100644 --- a/include/constants/species.h +++ b/include/constants/species.h @@ -1658,19 +1658,19 @@ #define SPECIES_OGERPON_CORNERSTONE_MASK_TERA GEN9_START + 135 #define SPECIES_URSALUNA_BLOODMOON GEN9_START + 136 // Indigo Disk -#define SPECIES_1018 GEN9_START + 137 -#define SPECIES_1019 GEN9_START + 138 -#define SPECIES_1020 GEN9_START + 139 -#define SPECIES_1021 GEN9_START + 140 -#define SPECIES_1022 GEN9_START + 141 -#define SPECIES_1023 GEN9_START + 142 -#define SPECIES_1024 SPECIES_1024_FORM_1 -#define SPECIES_1024_FORM_1 GEN9_START + 143 -#define SPECIES_1024_FORM_2 GEN9_START + 144 -#define SPECIES_1024_FORM_3 GEN9_START + 145 -#define SPECIES_1025 GEN9_START + 146 - -#define PLACEHOLDER_START SPECIES_1025 +#define SPECIES_ARCHALUDON GEN9_START + 137 +#define SPECIES_HYDRAPPLE GEN9_START + 138 +#define SPECIES_GOUGING_FIRE GEN9_START + 139 +#define SPECIES_RAGING_BOLT GEN9_START + 140 +#define SPECIES_IRON_BOULDER GEN9_START + 141 +#define SPECIES_IRON_CROWN GEN9_START + 142 +#define SPECIES_TERAPAGOS SPECIES_TERAPAGOS_NORMAL +#define SPECIES_TERAPAGOS_NORMAL GEN9_START + 143 +#define SPECIES_TERAPAGOS_TERASTAL GEN9_START + 144 +#define SPECIES_TERAPAGOS_STELLAR GEN9_START + 145 +#define SPECIES_PECHARUNT GEN9_START + 146 + +#define PLACEHOLDER_START SPECIES_PECHARUNT // XD: Gale of Darkness #define SPECIES_LUGIA_SHADOW PLACEHOLDER_START + 1 // Diamond & Pearl diff --git a/include/constants/tv.h b/include/constants/tv.h index 13ec88ecdcad..1b629fb03952 100644 --- a/include/constants/tv.h +++ b/include/constants/tv.h @@ -170,7 +170,7 @@ #define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s -// TV Show states for Pokemon Contest Live Updates +// TV Show states for Pokémon Contest Live Updates #define CONTESTLIVE_STATE_INTRO 0 #define CONTESTLIVE_STATE_WON_BOTH_ROUNDS 1 #define CONTESTLIVE_STATE_BETTER_ROUND2 2 diff --git a/include/contest.h b/include/contest.h index 21e2530c2114..8a3b6a3c6558 100644 --- a/include/contest.h +++ b/include/contest.h @@ -3,6 +3,7 @@ #include "palette.h" #include "constants/contest.h" +#include "random.h" // for rng_value_t enum { @@ -106,7 +107,9 @@ struct ContestPokemon u8 sheen; u8 highestRank; bool8 gameCleared; - u8 unused[10]; + u8 isShiny:1; + u8 unused1:7; + u8 unused2[9]; u32 personality; u32 otId; }; @@ -124,6 +127,8 @@ struct ContestMoveAnimData u16 species; u16 targetSpecies; bool8 hasTargetAnim:1; + u8 isShiny:1; + u8 targetIsShiny:1; u8 contestant; u32 personality; u32 otId; @@ -209,7 +214,7 @@ struct ContestantStatus u8 comboAppealBonus; u8 repeatJam; u8 nextTurnOrder; // turn position - u8 attentionLevel; // How much the Pokemon "stood out" + u8 attentionLevel; // How much the Pokémon "stood out" u8 contestantAnimTarget; }; @@ -327,7 +332,7 @@ extern struct ContestResources *gContestResources; extern struct ContestWinner gCurContestWinner; extern u8 gCurContestWinnerIsForArtist; extern u8 gCurContestWinnerSaveIdx; -extern u32 gContestRngValue; +extern rng_value_t gContestRngValue; // contest.c void ResetLinkContestBoolean(void); diff --git a/include/crt0.h b/include/crt0.h index a4a5c7f79bc5..c60ed3b0b733 100644 --- a/include/crt0.h +++ b/include/crt0.h @@ -3,4 +3,6 @@ extern u32 IntrMain[]; +extern void ReInitializeEWRAM(); + #endif //GUARD_CRT0_H diff --git a/include/data.h b/include/data.h index fe88eca947dc..06e5ac9bf5a4 100644 --- a/include/data.h +++ b/include/data.h @@ -2,6 +2,7 @@ #define GUARD_DATA_H #include "constants/moves.h" +#include "constants/trainers.h" #define SPECIES_SHINY_TAG 5000 #define FOLLOWER_PAL_TAG 10000 @@ -41,6 +42,22 @@ struct MonCoords u8 y_offset; }; +struct TrainerSprite +{ + u8 y_offset; + struct CompressedSpriteSheet frontPic; + struct CompressedSpritePalette palette; + const union AnimCmd *const *const animation; +}; + +struct TrainerBacksprite +{ + struct MonCoords coordinates; + struct CompressedSpriteSheet backPic; + struct CompressedSpritePalette palette; + const union AnimCmd *const *const animation; +}; + #define MON_COORDS_SIZE(width, height)(DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8)) #define GET_MON_COORDS_WIDTH(size)((size >> 4) * 8) #define GET_MON_COORDS_HEIGHT(size)((size & 0xF) * 8) @@ -63,6 +80,8 @@ struct TrainerMon u8 nature : 5; bool8 gender : 2; bool8 isShiny : 1; + u8 dynamaxLevel : 4; + bool8 gigantamaxFactor : 1; }; #define TRAINER_PARTY(partyArray) partyArray, .partySize = ARRAY_COUNT(partyArray) @@ -81,6 +100,13 @@ struct Trainer /*0x1F*/ u8 partySize; }; +struct TrainerClass +{ + u8 name[13]; + u8 money; + u16 ball; +}; + #define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F)) struct FollowerMsgInfo { @@ -117,15 +143,10 @@ extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[]; extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[]; extern const union AnimCmd sAnim_GeneralFrame0[]; +extern const union AnimCmd sAnim_GeneralFrame3[]; extern const union AnimCmd *const gAnims_MonPic[]; -extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[]; -extern const struct MonCoords gTrainerFrontPicCoords[]; -extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; -extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[]; -extern const struct MonCoords gTrainerBackPicCoords[]; -extern const struct CompressedSpriteSheet gTrainerBackPicTable[]; // functionally unused -extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; +extern const struct TrainerSprite gTrainerSprites[]; +extern const struct TrainerBacksprite gTrainerBacksprites[]; extern const struct CompressedSpritePalette gFollowerPaletteTable[]; extern const struct CompressedSpritePalette gFollowerShinyPaletteTable[]; @@ -133,7 +154,7 @@ extern const struct CompressedSpritePalette gFollowerShinyPaletteTable[]; extern const struct Trainer gTrainers[]; extern const struct Trainer gBattlePartners[]; -extern const u8 gTrainerClassNames[][13]; +extern const struct TrainerClass gTrainerClasses[TRAINER_CLASS_COUNT]; extern const u8 gMoveNames[MOVES_COUNT_DYNAMAX][MOVE_NAME_LENGTH + 1]; extern const u8 *const gZMoveNames[]; extern const u8 *const gMaxMoveNames[]; diff --git a/include/event_object_movement.h b/include/event_object_movement.h index 8ff9d9013c06..796b64e35f6b 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -101,7 +101,6 @@ extern const struct OamData gObjectEventBaseOam_32x32; extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const u8 gReflectionEffectPaletteMap[]; -extern const u8 *const gBerryTreeObjectEventGraphicsIdTablePointers[]; extern const struct SpriteFrameImage *const gBerryTreePicTablePointers[]; extern const u8 *const gBerryTreePaletteSlotTablePointers[]; diff --git a/include/event_scripts.h b/include/event_scripts.h index bbb1197dfa78..b370849aa3ff 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -542,6 +542,7 @@ extern const u8 MauvilleCity_PokemonCenter_1F_Text_HotSpringsStory[]; extern const u8 LittlerootTown_BrendansHouse_2F_EventScript_PC[]; extern const u8 LittlerootTown_MaysHouse_2F_EventScript_PC[]; extern const u8 EventScript_PC[]; +extern const u8 EventScript_AccessPokemonBoxLink[]; extern const u8 EventScript_TestSignpostMsg[]; extern const u8 EventScript_HiddenItemScript[]; extern const u8 EventScript_TV[]; diff --git a/include/field_specials.h b/include/field_specials.h index d36f2686c286..95a91d543f06 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -3,6 +3,7 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; +extern u16 gScrollableMultichoice_ScrollOffset; u8 GetLeadMonIndex(void); u8 IsDestinationBoxFull(void); diff --git a/include/gba/defines.h b/include/gba/defines.h index e5147da4a08a..be8bfcdf83c1 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -6,8 +6,10 @@ #define TRUE 1 #define FALSE 0 -#define IWRAM_DATA __attribute__((section("iwram_data"))) -#define EWRAM_DATA __attribute__((section("ewram_data"))) +#define IWRAM_DATA __attribute__((section(".bss"))) +#define EWRAM_DATA __attribute__((section(".sbss"))) +#define IWRAM_INIT __attribute__((section(".iwram"))) +#define EWRAM_INIT __attribute__((section(".ewram"))) #define UNUSED __attribute__((unused)) #if MODERN diff --git a/include/global.berry.h b/include/global.berry.h index 29f1cfe14a51..a8a76c089ea0 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -7,19 +7,24 @@ struct Berry { const u8 name[BERRY_NAME_LENGTH + 1]; - u8 firmness; - u16 size; + u8 firmness:4; + u8 color:4; + u16 size:10; + u16 weedsBonus:3; + u16 pestsBonus:3; u8 maxYield; - u8 minYield; + u8 minYield:4; + u8 waterBonus:4; const u8 *description1; const u8 *description2; - u8 stageDuration; + u8 growthDuration; u8 spicy; u8 dry; u8 sweet; u8 bitter; u8 sour; u8 smoothness; + u8 drainRate; }; // with no const fields @@ -27,20 +32,24 @@ struct Berry struct Berry2 { u8 name[BERRY_NAME_LENGTH + 1]; - u8 firmness; - u16 size; + u8 firmness:4; + u8 color:4; + u16 size:10; + u16 weedsBonus:3; + u16 pestsBonus:3; u8 maxYield; - u8 minYield; + u8 minYield:4; + u8 waterBonus:4; u8 *description1; u8 *description2; - u8 stageDuration; + u8 growthDuration; u8 spicy; u8 dry; u8 sweet; u8 bitter; u8 sour; u8 smoothness; - //u8 padding; + u8 drainRate; }; struct EnigmaBerry @@ -62,16 +71,21 @@ struct BattleEnigmaBerry struct BerryTree { - u8 berry; - u8 stage:7; + u8 berry:7; + u8 weeds:1; + u8 stage:3; + u8 mulch:4; u8 stopGrowth:1; - u16 minutesUntilNextStage; - u8 berryYield; + u16 minutesUntilNextStage:14; + u16 mutationA:2; + u8 berryYield:5; + u8 pests:1; + u8 mutationB:2; u8 regrowthCount:4; - u8 watered1:1; - u8 watered2:1; - u8 watered3:1; - u8 watered4:1; + u8 watered:4; // Used to keep track of bonuses in case of gradient watering + u16 moistureLevel:7; + u16 moistureClock:7; + u16 padding:2; }; #endif // GUARD_GLOBAL_BERRY_H diff --git a/include/global.h b/include/global.h index 49adeac5b947..e75d834d6f7f 100644 --- a/include/global.h +++ b/include/global.h @@ -149,8 +149,8 @@ #define CAT(a, b) CAT_(a, b) #define CAT_(a, b) a ## b -#define STR(a) STR_(a) -#define STR_(a) #a +#define STR(...) STR_(__VA_ARGS__) +#define STR_(...) #__VA_ARGS__ // Converts a string to a compound literal, essentially making it a pointer to const u8 #define COMPOUND_STRING(str) (const u8[]) _(str) @@ -531,7 +531,7 @@ struct SaveBlock2 /*0x90*/ u8 filler_90[0x8]; /*0x98*/ struct Time localTimeOffset; /*0xA0*/ struct Time lastBerryTreeUpdate; - /*0xA8*/ u32 gcnLinkFlags; // Read by Pokemon Colosseum/XD + /*0xA8*/ u32 gcnLinkFlags; // Read by Pokémon Colosseum/XD /*0xAC*/ u32 encryptionKey; /*0xB0*/ struct PlayersApprentice playerApprentice; /*0xDC*/ struct Apprentice apprentices[APPRENTICE_COUNT]; //272 bytes @@ -767,7 +767,8 @@ struct ContestWinner u8 contestCategory; u8 monName[POKEMON_NAME_LENGTH + 1]; u8 trainerName[PLAYER_NAME_LENGTH + 1]; - u8 contestRank; + u8 contestRank:7; + bool8 isShiny:1; //u8 padding; }; diff --git a/include/graphics.h b/include/graphics.h index 1ae8555221ac..ab7253702151 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -62,210 +62,9 @@ extern const u32 gBallGfx_Cherish[]; extern const u32 gBallPal_Cherish[]; extern const u32 gOpenPokeballGfx[]; -// pokemon gfx +// Pokémon gfx extern const u16 gMonIconPalettes[][16]; -// trainer sprites -extern const u32 gTrainerFrontPic_Hiker[]; -extern const u32 gTrainerFrontPic_AquaGruntM[]; -extern const u32 gTrainerFrontPic_PokemonBreederF[]; -extern const u32 gTrainerFrontPic_CoolTrainerM[]; -extern const u32 gTrainerFrontPic_BirdKeeper[]; -extern const u32 gTrainerFrontPic_Collector[]; -extern const u32 gTrainerFrontPic_AquaGruntF[]; -extern const u32 gTrainerFrontPic_SwimmerM[]; -extern const u32 gTrainerFrontPic_MagmaGruntM[]; -extern const u32 gTrainerFrontPic_ExpertM[]; -extern const u32 gTrainerFrontPic_AquaAdminM[]; -extern const u32 gTrainerFrontPic_BlackBelt[]; -extern const u32 gTrainerFrontPic_AquaAdminF[]; -extern const u32 gTrainerFrontPic_AquaLeaderArchie[]; -extern const u32 gTrainerFrontPic_HexManiac[]; -extern const u32 gTrainerFrontPic_AromaLady[]; -extern const u32 gTrainerFrontPic_RuinManiac[]; -extern const u32 gTrainerFrontPic_Interviewer[]; -extern const u32 gTrainerFrontPic_TuberF[]; -extern const u32 gTrainerFrontPic_TuberM[]; -extern const u32 gTrainerFrontPic_CoolTrainerF[]; -extern const u32 gTrainerFrontPic_Lady[]; -extern const u32 gTrainerFrontPic_Beauty[]; -extern const u32 gTrainerFrontPic_RichBoy[]; -extern const u32 gTrainerFrontPic_ExpertF[]; -extern const u32 gTrainerFrontPic_Pokemaniac[]; -extern const u32 gTrainerFrontPic_MagmaGruntF[]; -extern const u32 gTrainerFrontPic_Guitarist[]; -extern const u32 gTrainerFrontPic_Kindler[]; -extern const u32 gTrainerFrontPic_Camper[]; -extern const u32 gTrainerFrontPic_Picnicker[]; -extern const u32 gTrainerFrontPic_BugManiac[]; -extern const u32 gTrainerFrontPic_PokemonBreederM[]; -extern const u32 gTrainerFrontPic_PsychicM[]; -extern const u32 gTrainerFrontPic_PsychicF[]; -extern const u32 gTrainerFrontPic_Gentleman[]; -extern const u32 gTrainerFrontPic_EliteFourSidney[]; -extern const u32 gTrainerFrontPic_EliteFourPhoebe[]; -extern const u32 gTrainerFrontPic_EliteFourGlacia[]; -extern const u32 gTrainerFrontPic_EliteFourDrake[]; -extern const u32 gTrainerFrontPic_LeaderRoxanne[]; -extern const u32 gTrainerFrontPic_LeaderBrawly[]; -extern const u32 gTrainerFrontPic_LeaderWattson[]; -extern const u32 gTrainerFrontPic_LeaderFlannery[]; -extern const u32 gTrainerFrontPic_LeaderNorman[]; -extern const u32 gTrainerFrontPic_LeaderWinona[]; -extern const u32 gTrainerFrontPic_LeaderTateAndLiza[]; -extern const u32 gTrainerFrontPic_LeaderJuan[]; -extern const u32 gTrainerFrontPic_SchoolKidM[]; -extern const u32 gTrainerFrontPic_SchoolKidF[]; -extern const u32 gTrainerFrontPic_SrAndJr[]; -extern const u32 gTrainerFrontPic_PokefanM[]; -extern const u32 gTrainerFrontPic_PokefanF[]; -extern const u32 gTrainerFrontPic_Youngster[]; -extern const u32 gTrainerFrontPic_ChampionWallace[]; -extern const u32 gTrainerFrontPic_Fisherman[]; -extern const u32 gTrainerFrontPic_CyclingTriathleteM[]; -extern const u32 gTrainerFrontPic_CyclingTriathleteF[]; -extern const u32 gTrainerFrontPic_RunningTriathleteM[]; -extern const u32 gTrainerFrontPic_RunningTriathleteF[]; -extern const u32 gTrainerFrontPic_SwimmingTriathleteM[]; -extern const u32 gTrainerFrontPic_SwimmingTriathleteF[]; -extern const u32 gTrainerFrontPic_DragonTamer[]; -extern const u32 gTrainerFrontPic_NinjaBoy[]; -extern const u32 gTrainerFrontPic_BattleGirl[]; -extern const u32 gTrainerFrontPic_ParasolLady[]; -extern const u32 gTrainerFrontPic_SwimmerF[]; -extern const u32 gTrainerFrontPic_Twins[]; -extern const u32 gTrainerFrontPic_Sailor[]; -extern const u32 gTrainerFrontPic_MagmaAdmin[]; -extern const u32 gTrainerFrontPic_Wally[]; -extern const u32 gTrainerFrontPic_Brendan[]; -extern const u32 gTrainerFrontPic_May[]; -extern const u32 gTrainerFrontPic_BugCatcher[]; -extern const u32 gTrainerFrontPic_PokemonRangerM[]; -extern const u32 gTrainerFrontPic_PokemonRangerF[]; -extern const u32 gTrainerFrontPic_MagmaLeaderMaxie[]; -extern const u32 gTrainerFrontPic_Lass[]; -extern const u32 gTrainerFrontPic_YoungCouple[]; -extern const u32 gTrainerFrontPic_OldCouple[]; -extern const u32 gTrainerFrontPic_SisAndBro[]; -extern const u32 gTrainerFrontPic_Steven[]; -extern const u32 gTrainerFrontPic_SalonMaidenAnabel[]; -extern const u32 gTrainerFrontPic_DomeAceTucker[]; -extern const u32 gTrainerFrontPic_PalaceMavenSpenser[]; -extern const u32 gTrainerFrontPic_ArenaTycoonGreta[]; -extern const u32 gTrainerFrontPic_FactoryHeadNoland[]; -extern const u32 gTrainerFrontPic_PikeQueenLucy[]; -extern const u32 gTrainerFrontPic_PyramidKingBrandon[]; -extern const u32 gTrainerFrontPic_Red[]; -extern const u32 gTrainerFrontPic_Leaf[]; -extern const u32 gTrainerFrontPic_RubySapphireBrendan[]; -extern const u32 gTrainerFrontPic_RubySapphireMay[]; - -extern const u32 gTrainerPalette_Hiker[]; -extern const u32 gTrainerPalette_AquaGruntM[]; -extern const u32 gTrainerPalette_PokemonBreederF[]; -extern const u32 gTrainerPalette_CoolTrainerM[]; -extern const u32 gTrainerPalette_BirdKeeper[]; -extern const u32 gTrainerPalette_Collector[]; -extern const u32 gTrainerPalette_AquaGruntF[]; -extern const u32 gTrainerPalette_SwimmerM[]; -extern const u32 gTrainerPalette_MagmaGruntM[]; -extern const u32 gTrainerPalette_ExpertM[]; -extern const u32 gTrainerPalette_AquaAdminM[]; -extern const u32 gTrainerPalette_BlackBelt[]; -extern const u32 gTrainerPalette_AquaAdminF[]; -extern const u32 gTrainerPalette_AquaLeaderArchie[]; -extern const u32 gTrainerPalette_HexManiac[]; -extern const u32 gTrainerPalette_AromaLady[]; -extern const u32 gTrainerPalette_RuinManiac[]; -extern const u32 gTrainerPalette_Interviewer[]; -extern const u32 gTrainerPalette_TuberF[]; -extern const u32 gTrainerPalette_TuberM[]; -extern const u32 gTrainerPalette_CoolTrainerF[]; -extern const u32 gTrainerPalette_Lady[]; -extern const u32 gTrainerPalette_Beauty[]; -extern const u32 gTrainerPalette_RichBoy[]; -extern const u32 gTrainerPalette_ExpertF[]; -extern const u32 gTrainerPalette_Pokemaniac[]; -extern const u32 gTrainerPalette_MagmaGruntF[]; -extern const u32 gTrainerPalette_Guitarist[]; -extern const u32 gTrainerPalette_Kindler[]; -extern const u32 gTrainerPalette_Camper[]; -extern const u32 gTrainerPalette_Picnicker[]; -extern const u32 gTrainerPalette_BugManiac[]; -extern const u32 gTrainerPalette_PokemonBreederM[]; -extern const u32 gTrainerPalette_PsychicM[]; -extern const u32 gTrainerPalette_PsychicF[]; -extern const u32 gTrainerPalette_Gentleman[]; -extern const u32 gTrainerPalette_EliteFourSidney[]; -extern const u32 gTrainerPalette_EliteFourPhoebe[]; -extern const u32 gTrainerPalette_EliteFourGlacia[]; -extern const u32 gTrainerPalette_EliteFourDrake[]; -extern const u32 gTrainerPalette_LeaderRoxanne[]; -extern const u32 gTrainerPalette_LeaderBrawly[]; -extern const u32 gTrainerPalette_LeaderWattson[]; -extern const u32 gTrainerPalette_LeaderFlannery[]; -extern const u32 gTrainerPalette_LeaderNorman[]; -extern const u32 gTrainerPalette_LeaderWinona[]; -extern const u32 gTrainerPalette_LeaderTateAndLiza[]; -extern const u32 gTrainerPalette_LeaderJuan[]; -extern const u32 gTrainerPalette_SchoolKidM[]; -extern const u32 gTrainerPalette_SchoolKidF[]; -extern const u32 gTrainerPalette_SrAndJr[]; -extern const u32 gTrainerPalette_PokefanM[]; -extern const u32 gTrainerPalette_PokefanF[]; -extern const u32 gTrainerPalette_Youngster[]; -extern const u32 gTrainerPalette_ChampionWallace[]; -extern const u32 gTrainerPalette_Fisherman[]; -extern const u32 gTrainerPalette_CyclingTriathleteM[]; -extern const u32 gTrainerPalette_CyclingTriathleteF[]; -extern const u32 gTrainerPalette_RunningTriathleteM[]; -extern const u32 gTrainerPalette_RunningTriathleteF[]; -extern const u32 gTrainerPalette_SwimmingTriathleteM[]; -extern const u32 gTrainerPalette_SwimmingTriathleteF[]; -extern const u32 gTrainerPalette_DragonTamer[]; -extern const u32 gTrainerPalette_NinjaBoy[]; -extern const u32 gTrainerPalette_BattleGirl[]; -extern const u32 gTrainerPalette_ParasolLady[]; -extern const u32 gTrainerPalette_SwimmerF[]; -extern const u32 gTrainerPalette_Twins[]; -extern const u32 gTrainerPalette_Sailor[]; -extern const u32 gTrainerPalette_MagmaAdmin[]; -extern const u32 gTrainerPalette_Wally[]; -extern const u32 gTrainerPalette_Brendan[]; -extern const u32 gTrainerPalette_May[]; -extern const u32 gTrainerPalette_BugCatcher[]; -extern const u32 gTrainerPalette_PokemonRangerM[]; -extern const u32 gTrainerPalette_PokemonRangerF[]; -extern const u32 gTrainerPalette_MagmaLeaderMaxie[]; -extern const u32 gTrainerPalette_Lass[]; -extern const u32 gTrainerPalette_YoungCouple[]; -extern const u32 gTrainerPalette_OldCouple[]; -extern const u32 gTrainerPalette_SisAndBro[]; -extern const u32 gTrainerPalette_Steven[]; -extern const u32 gTrainerPalette_SalonMaidenAnabel[]; -extern const u32 gTrainerPalette_DomeAceTucker[]; -extern const u32 gTrainerPalette_PalaceMavenSpenser[]; -extern const u32 gTrainerPalette_ArenaTycoonGreta[]; -extern const u32 gTrainerPalette_FactoryHeadNoland[]; -extern const u32 gTrainerPalette_PikeQueenLucy[]; -extern const u32 gTrainerPalette_PyramidKingBrandon[]; -extern const u32 gTrainerPalette_Red[]; -extern const u32 gTrainerPalette_Leaf[]; -extern const u32 gTrainerPalette_RubySapphireBrendan[]; -extern const u32 gTrainerPalette_RubySapphireMay[]; - -extern const u8 gTrainerBackPic_Brendan[]; -extern const u8 gTrainerBackPic_May[]; -extern const u8 gTrainerBackPic_Red[]; -extern const u8 gTrainerBackPic_Leaf[]; -extern const u8 gTrainerBackPic_RubySapphireBrendan[]; -extern const u8 gTrainerBackPic_RubySapphireMay[]; -extern const u8 gTrainerBackPic_Wally[]; -extern const u8 gTrainerBackPic_Steven[]; - -extern const u32 gTrainerBackPicPalette_Red[]; -extern const u32 gTrainerBackPicPalette_Leaf[]; - // pokeblock extern const u32 gMenuPokeblock_Gfx[]; extern const u32 gMenuPokeblock_Pal[]; @@ -490,7 +289,7 @@ extern const u32 gBattleTerrainPalette_StadiumGlacia[]; extern const u32 gBattleTerrainPalette_StadiumDrake[]; extern const u32 gBattleTerrainPalette_StadiumWallace[]; -// pokedex +// Pokédex extern const u32 gPokedexInterface_Gfx[]; extern const u16 gPokedexBgHoenn_Pal[]; extern const u32 gPokedexMenu_Gfx[]; @@ -997,6 +796,8 @@ extern const u32 gItemIcon_UnremarkableTeacup[]; extern const u32 gItemIconPalette_UnremarkableTeacup[]; extern const u32 gItemIcon_MasterpieceTeacup[]; extern const u32 gItemIconPalette_MasterpieceTeacup[]; +extern const u32 gItemIcon_MetalAlloy[]; +extern const u32 gItemIconPalette_MetalAlloy[]; // Nectars extern const u32 gItemIcon_RedNectar[]; extern const u32 gItemIconPalette_RedNectar[]; @@ -2121,7 +1922,7 @@ extern const u32 gBerryPalette_Rowap[]; extern const u32 gBerryPalette_Kee[]; extern const u32 gBerryPalette_Maranga[]; -//pokenav +//PokéNav extern const u16 gPokenavCondition_Pal[]; extern const u32 gPokenavCondition_Gfx[]; extern const u32 gPokenavCondition_Tilemap[]; @@ -3343,11 +3144,11 @@ extern const u32 gBattleAnimBgImage_Rainbow[]; extern const u32 gBattleAnimBGPalette_Rainbow[]; extern const u32 gBattleAnimBgTilemap_Rainbow[]; -// Pokedex Area Screen +// Pokédex Area Screen extern const u32 gPokedexAreaScreenAreaUnknown_Gfx[]; extern const u16 gPokedexAreaScreenAreaUnknown_Pal[]; -// Pokemon Storage System +// Pokémon Storage System extern const u32 gStorageSystemMenu_Gfx[]; extern const u16 gStorageSystemPartyMenu_Pal[]; extern const u32 gStorageSystemPartyMenu_Tilemap[]; @@ -3475,7 +3276,7 @@ extern const u32 gBerryCrush_Crusher_Gfx[]; extern const u16 gBerryCrush_Crusher_Pal[]; extern const u32 gBerryCrush_TextWindows_Tilemap[]; -// Pokenav +// PokéNav extern const u32 gPokenavMessageBox_Gfx[]; extern const u32 gPokenavMessageBox_Tilemap[]; extern const u16 gPokenavMessageBox_Pal[]; diff --git a/include/item.h b/include/item.h index 49ea627283da..081d14399238 100644 --- a/include/item.h +++ b/include/item.h @@ -63,7 +63,7 @@ u16 CountTotalItemQuantityInBag(u16 itemId); bool8 AddPyramidBagItem(u16 itemId, u16 count); bool8 RemovePyramidBagItem(u16 itemId, u16 count); const u8 *ItemId_GetName(u16 itemId); -u16 ItemId_GetPrice(u16 itemId); +u32 ItemId_GetPrice(u16 itemId); u32 ItemId_GetHoldEffect(u32 itemId); u32 ItemId_GetHoldEffectParam(u32 itemId); const u8 *ItemId_GetDescription(u16 itemId); diff --git a/include/item_menu.h b/include/item_menu.h index 91ff0e806dec..c6efedd31d75 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -17,6 +17,7 @@ enum { ITEMMENULOCATION_APPRENTICE, ITEMMENULOCATION_WALLY, ITEMMENULOCATION_PCBOX, + ITEMMENULOCATION_BERRY_TREE_MULCH, ITEMMENULOCATION_LAST, }; @@ -101,6 +102,7 @@ void DoWallyTutorialBagMenu(void); void ResetBagScrollPositions(void); void ChooseBerryForMachine(void (*exitCallback)(void)); void CB2_ChooseBerry(void); +void CB2_ChooseMulch(void); void Task_FadeAndCloseBagMenu(u8 taskId); void BagMenu_YesNo(u8 taskId, u8 windowType, const struct YesNoFuncTable* funcTable); void UpdatePocketItemList(u8 pocketId); diff --git a/include/item_use.h b/include/item_use.h index 00c741ba7663..0670a9569ede 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -7,18 +7,21 @@ void ItemUseOutOfBattle_Rod(u8); void ItemUseOutOfBattle_Itemfinder(u8); void ItemUseOutOfBattle_PokeblockCase(u8); void ItemUseOutOfBattle_CoinCase(u8); +void ItemUseOutOfBattle_PokemonBoxLink(u8); void ItemUseOutOfBattle_PowderJar(u8); void ItemUseOutOfBattle_SSTicket(u8); void ItemUseOutOfBattle_WailmerPail(u8); void ItemUseOutOfBattle_Medicine(u8); void ItemUseOutOfBattle_AbilityCapsule(u8); void ItemUseOutOfBattle_AbilityPatch(u8); +void ItemUseOutOfBattle_Mint(u8); void ItemUseOutOfBattle_ResetEVs(u8); void ItemUseOutOfBattle_ReduceEV(u8); void ItemUseOutOfBattle_SacredAsh(u8); void ItemUseOutOfBattle_PPRecovery(u8); void ItemUseOutOfBattle_PPUp(u8); void ItemUseOutOfBattle_RareCandy(u8); +void ItemUseOutOfBattle_DynamaxCandy(u8); void ItemUseOutOfBattle_TMHM(u8); void ItemUseOutOfBattle_Repel(u8); void ItemUseOutOfBattle_Lure(u8); @@ -43,6 +46,7 @@ u8 CanUseDigOrEscapeRopeOnCurMap(void); u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId); void FieldUseFunc_VsSeeker(u8 taskId); void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8 taskId); +void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField); enum { BALL_THROW_UNABLE_TWO_MONS, diff --git a/include/list_menu.h b/include/list_menu.h index 9299ede6c806..23caaf4b4c75 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -126,5 +126,7 @@ u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *currItemPtr); void RemoveScrollIndicatorArrowPair(u8 taskId); void Task_ScrollIndicatorArrowPairOnMainMenu(u8 taskId); +bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown); +bool8 ListMenuChangeSelectionFull(struct ListMenu *list, bool32 updateCursor, bool32 callCallback, u8 count, bool8 movingDown); #endif //GUARD_LIST_MENU_H diff --git a/include/party_menu.h b/include/party_menu.h index aca962868104..ba89f536ebbb 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -59,6 +59,7 @@ void ItemUseCB_BattleChooseMove(u8 taskId, TaskFunc task); void ItemUseCB_Medicine(u8 taskId, TaskFunc task); void ItemUseCB_AbilityCapsule(u8 taskId, TaskFunc task); void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task); +void ItemUseCB_Mint(u8 taskId, TaskFunc task); void ItemUseCB_ResetEVs(u8 taskId, TaskFunc task); void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task); void ItemUseCB_PPRecovery(u8 taskId, TaskFunc task); @@ -68,6 +69,7 @@ bool8 MonKnowsMove(struct Pokemon *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_DynamaxCandy(u8 taskId, TaskFunc task); void ItemUseCB_SacredAsh(u8 taskId, TaskFunc task); void ItemUseCB_EvolutionStone(u8 taskId, TaskFunc task); void ItemUseCB_FormChange(u8 taskId, TaskFunc task); diff --git a/include/pokedex.h b/include/pokedex.h index 39b45fc5ff8a..c53d3e013b1f 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -21,8 +21,9 @@ enum void ResetPokedex(void); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); -u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality); +u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, u32 personality); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); +void DrawFootprint(u8 windowId, u16 species); u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16); bool16 HasAllHoennMons(void); void ResetPokedexScrollPositions(void); diff --git a/include/pokemon.h b/include/pokemon.h index 317d6973e93e..4a3d1276b1fd 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -12,8 +12,8 @@ // Property labels for Get(Box)MonData / Set(Box)MonData enum { MON_DATA_PERSONALITY, + MON_DATA_STATUS, MON_DATA_OT_ID, - MON_DATA_NICKNAME, MON_DATA_LANGUAGE, MON_DATA_SANITY_IS_BAD_EGG, MON_DATA_SANITY_HAS_SPECIES, @@ -21,7 +21,11 @@ enum { MON_DATA_OT_NAME, MON_DATA_MARKINGS, MON_DATA_CHECKSUM, + MON_DATA_HP, + MON_DATA_IS_SHINY, + MON_DATA_HIDDEN_NATURE, MON_DATA_ENCRYPT_SEPARATOR, + MON_DATA_NICKNAME, MON_DATA_SPECIES, MON_DATA_HELD_ITEM, MON_DATA_MOVE1, @@ -66,9 +70,7 @@ enum { MON_DATA_CUTE_RIBBON, MON_DATA_SMART_RIBBON, MON_DATA_TOUGH_RIBBON, - MON_DATA_STATUS, MON_DATA_LEVEL, - MON_DATA_HP, MON_DATA_MAX_HP, MON_DATA_ATK, MON_DATA_DEF, @@ -101,7 +103,16 @@ enum { MON_DATA_SPATK2, MON_DATA_SPDEF2, MON_DATA_NATURE, - MON_DATA_HIDDEN_NATURE + MON_DATA_HYPER_TRAINED_HP, + MON_DATA_HYPER_TRAINED_ATK, + MON_DATA_HYPER_TRAINED_DEF, + MON_DATA_HYPER_TRAINED_SPEED, + MON_DATA_HYPER_TRAINED_SPATK, + MON_DATA_HYPER_TRAINED_SPDEF, + MON_DATA_IS_SHADOW, + MON_DATA_DYNAMAX_LEVEL, + MON_DATA_GIGANTAMAX_FACTOR, + MON_DATA_TERA_TYPE, }; struct BoxPokemon @@ -152,6 +163,12 @@ struct BoxPokemon u8 pp3:6; u8 pp4:6; u8 hiddenNature:5; + u8 hyperTrainedHP:1; + u8 hyperTrainedAttack:1; + u8 hyperTrainedDefense:1; + u8 hyperTrainedSpeed:1; + u8 hyperTrainedSpAttack:1; + u8 hyperTrainedSpDefense:1; }; /* size = 0x3C (60) bytes */ struct Pokemon @@ -231,6 +248,7 @@ struct BattlePokemon /*0x51*/ u32 status2; /*0x55*/ u32 otId; /*0x59*/ u8 metLevel; + /*0x5A*/ bool8 isShiny; }; struct Evolution @@ -297,7 +315,9 @@ struct SpeciesInfo /*0x8C*/ /* 0x64 */ const u32 *shinyPaletteFemale; /* 0x68 */ const u8 *iconSprite; /* 0x6C */ const u8 *iconSpriteFemale; +#if P_FOOTPRINTS /* 0x70 */ const u8 *footprint; +#endif // All Pokémon pics are 64x64, but this data table defines where in this 64x64 frame the sprite's non-transparent pixels actually are. /* 0x74 */ u8 frontPicSize; // The dimensions of this drawn pixel area. /* 0x74 */ u8 frontPicSizeFemale; // The dimensions of this drawn pixel area. @@ -398,8 +418,22 @@ struct BattleMove u32 encoreBanned:1; u32 parentalBondBanned:1; u32 skyBattleBanned:1; - u16 argument; u32 sketchBanned:1; + u16 argument; +}; + +struct Ability +{ + u8 name[ABILITY_NAME_LENGTH + 1]; + const u8 *description; + s8 aiRating; + u8 cantBeCopied:1; // cannot be copied by Role Play or Doodle + u8 cantBeSwapped:1; // cannot be swapped with Skill Swap or Wandering Spirit + u8 cantBeTraced:1; // cannot be copied by Trace - same as cantBeCopied except for Wonder Guard + u8 cantBeSuppressed:1; // cannot be negated by Gastro Acid or Neutralizing Gas + u8 cantBeOverwritten:1; // cannot be overwritten by Entrainment, Worry Seed or Simple Beam (but can be by Mummy) - same as cantBeSuppressed except for Truant + u8 breakable:1; // can be bypassed by Mold Breaker and clones + u8 failsOnImposter:1; // doesn't work on an Imposter mon; when can we actually use this? }; #define SPINDA_SPOT_WIDTH 16 @@ -470,6 +504,7 @@ extern const u16 gUnionRoomFacilityClasses[]; extern const struct SpriteTemplate gBattlerSpriteTemplates[]; extern const s8 gNatureStatTable[][5]; extern const u32 sExpCandyExperienceTable[]; +extern const struct Ability gAbilities[]; void ZeroBoxMonData(struct BoxPokemon *boxMon); void ZeroMonData(struct Pokemon *mon); @@ -603,7 +638,7 @@ void PlayBattleBGM(void); void PlayMapChosenOrBattleBGM(u16 songId); void CreateTask_PlayMapChosenOrBattleBGM(u16 songId); const u32 *GetMonFrontSpritePal(struct Pokemon *mon); -const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality); +const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality); bool8 IsMoveHM(u16 move); bool8 IsMonSpriteNotFlipped(u16 species); s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor); @@ -615,7 +650,6 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon); void SetMonPreventsSwitchingString(void); void SetWildMonHeldItem(void); bool8 IsMonShiny(struct Pokemon *mon); -bool8 IsShinyOtIdPersonality(u32 otId, u32 personality); const u8 *GetTrainerPartnerName(void); void BattleAnimateFrontSprite(struct Sprite *sprite, u16 species, bool8 noCry, u8 panMode); void DoMonFrontSpriteAnimation(struct Sprite *sprite, u16 species, bool8 noCry, u8 panModeAnimFlag); diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index b313b59d9b72..f56c3aca64e5 100755 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -17,7 +17,7 @@ void ShowPokemonSummaryScreenHandleDeoxys(u8 mode, struct BoxPokemon *mons, u8 m u8 GetMoveSlotToReplace(void); void SummaryScreen_SetAnimDelayTaskId(u8 taskId); -// The Pokemon Summary Screen can operate in different modes. Certain features, +// The Pokémon Summary Screen can operate in different modes. Certain features, // such as move re-ordering, are available in the different modes. enum PokemonSummaryScreenMode { diff --git a/include/pokenav.h b/include/pokenav.h index b7a259443a3b..2accff4abf05 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -65,8 +65,8 @@ struct PokenavMonList enum { POKENAV_MODE_NORMAL, // Chosen from Start menu. - POKENAV_MODE_FORCE_CALL_READY, // Pokenav tutorial before calling Mr. Stone - POKENAV_MODE_FORCE_CALL_EXIT, // Pokenav tutorial after calling Mr. Stone + POKENAV_MODE_FORCE_CALL_READY, // PokéNav tutorial before calling Mr. Stone + POKENAV_MODE_FORCE_CALL_EXIT, // PokéNav tutorial after calling Mr. Stone }; enum @@ -236,8 +236,8 @@ enum [CHECK_PAGE_INTRO_2] = gText_MatchCall##name##_Intro2} -// Pokenav Function IDs -// Indices into the LoopedTask tables for each of the main Pokenav features +// PokéNav Function IDs +// Indices into the LoopedTask tables for each of the main PokéNav features enum RegionMapFuncIds { diff --git a/include/random.h b/include/random.h index 7ed9c5ca3fcd..853e7d610c2f 100644 --- a/include/random.h +++ b/include/random.h @@ -1,8 +1,77 @@ #ifndef GUARD_RANDOM_H #define GUARD_RANDOM_H -extern u32 gRngValue; -extern u32 gRng2Value; +//extern u32 gRngValue_old; +//extern u32 gRng2Value_old; + +// The number 1103515245 comes from the example implementation of rand and srand +// in the ISO C standard. +#define ISO_RANDOMIZE1(val)(1103515245 * (val) + 24691) +#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345) + +/* Some functions have been added to support HQ_RANDOM. +* +* If using HQ_RANDOM, you cannot call Random() in interrupt handlers safely. +* AdvanceRandom() is provided to handle burning numbers in the VBlank handler +* if you choose to do that, and can be used regardless of HQ_RANDOM setting. +* If you need to use random numbers in the VBlank handler, a local state +* should be used instead. +* +* LocalRandom(*val) allows you to have local random states that are the same +* type as the global states regardless of HQ_RANDOM setting, which is useful +* if you want to be able to set them from or assign them to gRngValue. +* +* Random2_32() was added to HQ_RANDOM because the output of the generator is +* always 32 bits and Random()/Random2() are just wrappers in that mode. It is +* also available in non-HQ mode for consistency. +*/ + +#if HQ_RANDOM == TRUE +struct Sfc32State { + u32 a; + u32 b; + u32 c; + u32 ctr; +}; + +typedef struct Sfc32State rng_value_t; + +#define RNG_VALUE_EMPTY {} + +// Calling this function directly is discouraged. +// Use LocalRandom() instead. +static inline u32 _SFC32_Next(struct Sfc32State *state) +{ + const u32 result = state->a + state->b + state->ctr++; + state->a = state->b ^ (state->b >> 9); + state->b = state->c * 9; + state->c = result + ((state->c << 21) | (state->c >> 11)); + return result; +} + +static inline u16 LocalRandom(rng_value_t *val) +{ + return _SFC32_Next(val) >> 16; +} + +u32 Random32(void); +u32 Random2_32(void); + +static inline u16 Random(void) +{ + return Random32() >> 16; +} + +static inline u16 Random2(void) +{ + return Random2_32() >> 16; +} + +void AdvanceRandom(void); +#else +typedef u32 rng_value_t; + +#define RNG_VALUE_EMPTY 0 //Returns a 16-bit pseudorandom number u16 Random(void); @@ -10,11 +79,23 @@ u16 Random2(void); //Returns a 32-bit pseudorandom number #define Random32() (Random() | (Random() << 16)) +#define Random2_32() (Random2() | (Random2() << 16)) -// The number 1103515245 comes from the example implementation of rand and srand -// in the ISO C standard. -#define ISO_RANDOMIZE1(val)(1103515245 * (val) + 24691) -#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345) +static inline u16 LocalRandom(rng_value_t *val) +{ + *val = ISO_RANDOMIZE1(*val); + return *val >> 16; +} + +static inline void AdvanceRandom(void) +{ + Random(); +} + +#endif + +extern rng_value_t gRngValue; +extern rng_value_t gRng2Value; //Sets the initial seed value of the pseudorandom number generator void SeedRng(u16 seed); @@ -100,6 +181,7 @@ enum RandomTag RNG_QUICK_DRAW, RNG_QUICK_CLAW, RNG_TRACE, + RNG_FICKLE_BEAM, }; #define RandomWeighted(tag, ...) \ diff --git a/include/recorded_battle.h b/include/recorded_battle.h index fcbe9495fd86..c64a665b74fe 100644 --- a/include/recorded_battle.h +++ b/include/recorded_battle.h @@ -2,6 +2,7 @@ #define GUARD_RECORDED_BATTLE_H #include "constants/battle.h" +#include "random.h" #define BATTLER_RECORD_SIZE 664 @@ -13,7 +14,7 @@ struct RecordedBattleSave u8 playersGender[MAX_BATTLERS_COUNT]; u32 playersTrainerId[MAX_BATTLERS_COUNT]; u8 playersLanguage[MAX_BATTLERS_COUNT]; - u32 rngSeed; + rng_value_t rngSeed; u32 battleFlags; u8 playersBattlers[MAX_BATTLERS_COUNT]; u16 opponentA; @@ -49,8 +50,8 @@ enum RECORDED_ITEM_MOVE, }; -extern u32 gRecordedBattleRngSeed; -extern u32 gBattlePalaceMoveSelectionRngValue; +extern rng_value_t gRecordedBattleRngSeed; +extern rng_value_t gBattlePalaceMoveSelectionRngValue; extern u8 gRecordedBattleMultiplayerId; #define B_RECORD_MODE_RECORDING 1 diff --git a/include/script.h b/include/script.h index 7c180e961b3a..4dc30ca74cfd 100644 --- a/include/script.h +++ b/include/script.h @@ -31,6 +31,7 @@ void ScriptCall(struct ScriptContext *ctx, const u8 *ptr); void ScriptReturn(struct ScriptContext *ctx); u16 ScriptReadHalfword(struct ScriptContext *ctx); u32 ScriptReadWord(struct ScriptContext *ctx); +u32 ScriptPeekWord(struct ScriptContext *ctx); void LockPlayerFieldControls(void); void UnlockPlayerFieldControls(void); bool8 ArePlayerFieldControlsLocked(void); diff --git a/include/script_menu.h b/include/script_menu.h index 41b45000eb42..d690939faecb 100644 --- a/include/script_menu.h +++ b/include/script_menu.h @@ -1,11 +1,37 @@ #ifndef GUARD_SCRIPT_MENU_H #define GUARD_SCRIPT_MENU_H +#include "list_menu.h" #include "constants/script_menu.h" #include "menu.h" +// The default size the stack for dynamic multichoice is initialized to +// If you try to push an element when the stack is full, it will be reallocated +// With increasing capacity of MULTICHOICE_DYNAMIC_STACK_INC + +#define MULTICHOICE_DYNAMIC_STACK_SIZE 5 +#define MULTICHOICE_DYNAMIC_STACK_INC 5 + extern const u8 *const gStdStrings[]; +struct DynamicMultichoiceStack +{ + s32 top; + u32 capacity; + struct ListMenuItem *elements; +}; + +void MultichoiceDynamic_InitStack(u32 capacity); +void MultichoiceDynamic_ReallocStack(u32 newCapacity); +bool32 MultichoiceDynamic_StackFull(void); +bool32 MultichoiceDynamic_StackEmpty(void); +u32 MultichoiceDynamic_StackSize(void); +void MultichoiceDynamic_PushElement(struct ListMenuItem item); +struct ListMenuItem *MultichoiceDynamic_PopElement(void); +struct ListMenuItem *MultichoiceDynamic_PeekElement(void); +struct ListMenuItem *MultichoiceDynamic_PeekElementAt(u32 index); +void MultichoiceDynamic_DestroyStack(void); +bool8 ScriptMenu_MultichoiceDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u8 maxBeforeScroll, u32 initialRow, u32 callbackSet); bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress); bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 defaultChoice); void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count); diff --git a/include/strings.h b/include/strings.h index f891c7a57560..3ea42f22e636 100644 --- a/include/strings.h +++ b/include/strings.h @@ -526,7 +526,7 @@ extern const u8 gText_Speed[]; extern const u8 gText_Dash[]; extern const u8 gText_Plus[]; -//pokedex text +//Pokédex text extern const u8 gText_CryOf[]; extern const u8 gText_SizeComparedTo[]; extern const u8 gText_PokedexRegistration[]; @@ -1132,7 +1132,7 @@ extern const u8 gTrickHouse_Mechadoll_Six2[]; extern const u8 gTrickHouse_Mechadoll_Seven2[]; extern const u8 gTrickHouse_Mechadoll_Eight2[]; -// Pokedex strings +// Pokédex strings extern const u8 gText_SearchForPkmnBasedOnParameters[]; extern const u8 gText_SwitchPokedexListings[]; extern const u8 gText_ReturnToPokedex[]; @@ -2899,7 +2899,7 @@ extern const u8 gText_WantToPlayAgain[]; extern const u8 gText_CommunicationStandby3[]; extern const u8 gText_SomeoneDroppedOut[]; -// Pokemon jump +// Pokémon jump extern const u8 gText_WantToPlayAgain2[]; extern const u8 gText_SomeoneDroppedOut2[]; extern const u8 gText_CommunicationStandby4[]; @@ -2974,7 +2974,7 @@ extern const u8 gText_CutenessContest[]; extern const u8 gText_SmartnessContest[]; extern const u8 gText_ToughnessContest[]; -// Pokenav Match Call +// PokéNav Match Call extern const u8 gText_CallCantBeMadeHere[]; extern const u8 gText_NumberRegistered[]; extern const u8 gText_NumberOfBattles[]; @@ -2984,7 +2984,7 @@ extern const u8 gText_Call[]; extern const u8 gText_Check[]; extern const u8 gText_Cancel6[]; -// Pokenav Menu Handler +// PokéNav Menu Handler extern const u8 gText_CheckMapOfHoenn[]; extern const u8 gText_CheckPokemonInDetail[]; extern const u8 gText_CallRegisteredTrainer[]; @@ -3001,7 +3001,7 @@ extern const u8 gText_FindToughPokemon[]; extern const u8 gText_ReturnToConditionMenu[]; extern const u8 gText_NoRibbonWinners[]; -// Pokenav +// PokéNav extern const u8 gText_NumberIndex[]; extern const u8 gText_RibbonsF700[]; @@ -3059,4 +3059,7 @@ extern const u8 gText_ExpShareOff[]; extern const u8 gText_BasePointsResetToZero[]; +extern const u8 gText_Fertilize[]; +extern const u8 gText_PlantBerry[]; + #endif // GUARD_STRINGS_H diff --git a/include/test/battle.h b/include/test/battle.h index cb62e5b56f44..581546f87b63 100644 --- a/include/test/battle.h +++ b/include/test/battle.h @@ -280,6 +280,13 @@ * GIVEN { * RNGSeed(0xC0DEIDEA); * + * FLAG_SET(flagId) + * Sets the specified flag. Can currently only set one flag at a time. + * Cleared between perameters and at the end of the test. + * Example: + * GIVEN { + * FLAG_SET(FLAG_SYS_EXAMPLE_FLAG); + * * PLAYER(species) and OPPONENT(species) * Adds the species to the player's or opponent's party respectively. * The Pokémon can be further customized with the following functions: @@ -489,6 +496,7 @@ #include "constants/battle_ai.h" #include "constants/battle_anim.h" #include "constants/battle_move_effects.h" +#include "constants/flags.h" #include "constants/hold_effects.h" #include "constants/items.h" #include "constants/moves.h" @@ -681,6 +689,7 @@ struct BattleTestData struct ExpectedAiScore expectedAiScores[MAX_BATTLERS_COUNT][MAX_TURNS][MAX_AI_SCORE_COMPARISION_PER_TURN]; // Max 4 comparisions per turn struct AILogLine aiLogLines[MAX_BATTLERS_COUNT][MAX_MON_MOVES][MAX_AI_LOG_LINES]; u8 aiLogPrintedForMove[MAX_BATTLERS_COUNT]; // Marks ai score log as printed for move, so the same log isn't displayed multiple times. + u16 flagId; }; struct BattleTestRunnerState @@ -818,6 +827,8 @@ struct moveWithPP { #define AI_FLAGS(flags) AIFlags_(__LINE__, flags) #define AI_LOG AILogScores(__LINE__) +#define FLAG_SET(flagId) SetFlagForTest(__LINE__, flagId) + #define PLAYER(species) for (OpenPokemon(__LINE__, B_SIDE_PLAYER, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__)) #define OPPONENT(species) for (OpenPokemon(__LINE__, B_SIDE_OPPONENT, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__)) @@ -838,11 +849,17 @@ struct moveWithPP { #define Friendship(friendship) Friendship_(__LINE__, friendship) #define Status1(status1) Status1_(__LINE__, status1) #define OTName(otName) do {static const u8 otName_[] = _(otName); OTName_(__LINE__, otName_);} while (0) +#define DynamaxLevel(dynamaxLevel) DynamaxLevel_(__LINE__, dynamaxLevel) +#define GigantamaxFactor(gigantamaxFactor) GigantamaxFactor_(__LINE__, gigantamaxFactor) +#define TeraType(teraType) TeraType_(__LINE__, teraType) +#define Shadow(isShadow) Shadow_(__LINE__, shadow) +void SetFlagForTest(u32 sourceLine, u16 flagId); +void ClearFlagAfterTest(void); void OpenPokemon(u32 sourceLine, u32 side, u32 species); void ClosePokemon(u32 sourceLine); -void RNGSeed_(u32 sourceLine, u32 seed); +void RNGSeed_(u32 sourceLine, rng_value_t seed); void AIFlags_(u32 sourceLine, u32 flags); void AILogScores(u32 sourceLine); void Gender_(u32 sourceLine, u32 gender); @@ -862,6 +879,10 @@ void MovesWithPP_(u32 sourceLine, struct moveWithPP moveWithPP[MAX_MON_MOVES]); void Friendship_(u32 sourceLine, u32 friendship); void Status1_(u32 sourceLine, u32 status1); void OTName_(u32 sourceLine, const u8 *otName); +void DynamaxLevel_(u32 sourceLine, u32 dynamaxLevel); +void GigantamaxFactor_(u32 sourceLine, bool32 gigantamaxFactor); +void TeraType_(u32 sourceLine, u32 teraType); +void Shadow_(u32 sourceLine, bool32 isShadow); // Created for easy use of EXPECT_MOVES, so the user can provide 1, 2, 3 or 4 moves for AI which can pass the test. struct FourMoves diff --git a/include/test/overworld_script.h b/include/test/overworld_script.h new file mode 100644 index 000000000000..e2f65930f5d1 --- /dev/null +++ b/include/test/overworld_script.h @@ -0,0 +1,48 @@ +/* Embedded DSL for testing overworld scripts in isolation. + * The overworld is not available, so it is only possible to test + * commands which don't affect the overworld itself, e.g. givemon can + * be tested because it only alters gPlayerParty, but addobject cannot + * because it affects object events (which aren't loaded). + * + * OVERWORLD_SCRIPT(instructions...) + * Returns a pointer to a compiled overworld script. Cannot be used to + * initialize global const data, although the pointer IS to const data. + * Note that each script command must be followed by a ;, e.g.: + * const u8 *myScript = OVERWORLD_SCRIPT( + * random 2; + * addvar VAR_RESULT, 1; + * ); + * + * RUN_OVERWORLD_SCRIPT(instructions...) + * Runs an overworld script in the immediate script context, which means + * that commands like waitstate are not supported. + * RUN_OVERWORLD_SCRIPT( + * setvar VAR_RESULT, 3; + * ); + * EXPECT_EQ(GetVar(VAR_RESULT), 3); */ +#ifndef GUARD_TEST_OVERWORLD_SCRIPT +#define GUARD_TEST_OVERWORLD_SCRIPT + +#include "script.h" +#include "test/test.h" + +#define OVERWORLD_SCRIPT(...) \ + ({ \ + const u8 *_script; \ + asm("mov %0, pc\n" \ + "b .Lend" STR(__LINE__) "\n" \ + STR(__VA_ARGS__) \ + "\n" \ + "end\n" \ + ".balign 2\n" \ + ".Lend" STR(__LINE__) ":\n" \ + : "=r" (_script)); \ + _script; \ + }) + +#define RUN_OVERWORLD_SCRIPT(...) RunScriptImmediately(OVERWORLD_SCRIPT(__VA_ARGS__)) + +// Make overworld script macros available. +asm(".include \"asm/macros/event.inc\"\n"); + +#endif diff --git a/include/test/test.h b/include/test/test.h index 72bc36ee7787..790563e77227 100644 --- a/include/test/test.h +++ b/include/test/test.h @@ -61,6 +61,7 @@ struct FunctionTestRunnerState { u16 parameters; u16 runParameter; + u16 checkProgressParameter; }; extern const struct TestRunner gFunctionTestRunner; diff --git a/include/test_runner.h b/include/test_runner.h index e0df88b0a6e7..248a0463e549 100644 --- a/include/test_runner.h +++ b/include/test_runner.h @@ -19,6 +19,7 @@ void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex); void TestRunner_Battle_CheckAiMoveScores(u32 battlerId); void TestRunner_Battle_AISetScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score); void TestRunner_Battle_AIAdjustScore(const char *file, u32 line, u32 battlerId, u32 moveIndex, s32 score); +void TestRunner_Battle_InvalidNoHPMon(u32 battlerId, u32 partyIndex); void TestRunner_Battle_CheckBattleRecordActionType(u32 battlerId, u32 recordIndex, u32 actionType); @@ -38,6 +39,7 @@ u32 TestRunner_Battle_GetForcedAbility(u32 side, u32 partyIndex); #define TestRunner_Battle_CheckAiMoveScores(...) (void)0 #define TestRunner_Battle_AISetScore(...) (void)0 #define TestRunner_Battle_AIAdjustScore(...) (void)0 +#define TestRunner_Battle_InvalidNoHPMon(...) (void)0 #define TestRunner_Battle_CheckBattleRecordActionType(...) (void)0 diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index abd770a24b18..619fa91e7039 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -8,8 +8,8 @@ #define F_MON_PIC_NO_AFFINE (1 << 7) bool16 ResetAllPicSprites(void); -u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); -u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); +u16 CreateMonPicSprite_Affine(u16 species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); +u16 CreateMonPicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyMonPicSprite(u16 spriteId); u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); diff --git a/ld_script.ld b/ld_script.ld index 4abf0b703151..e1d48959076c 100644 --- a/ld_script.ld +++ b/ld_script.ld @@ -13,19 +13,35 @@ MEMORY SECTIONS { - ewram 0x2000000 (NOLOAD) : + .ewram ORIGIN(EWRAM) : AT (__ewram_lma) + ALIGN(4) + { + __ewram_start = .; + *(.ewram*) + __ewram_end = .; + } > EWRAM + + .ewram.sbss (NOLOAD) : ALIGN(4) { INCLUDE "sym_ewram.ld" - src/*.o(ewram_data); - gflib/*.o(ewram_data); + src/*.o(.sbss); + gflib/*.o(.sbss); *libc.a:impure.o(.data); *libc.a:locale.o(.data); *libc.a:mallocr.o(.data); } > EWRAM - iwram 0x3000000 (NOLOAD) : + .iwram ORIGIN(IWRAM) : AT (__iwram_lma) + ALIGN(4) + { + __iwram_start = .; + *(.iwram*); + __iwram_end = .; + } > IWRAM + + .iwram.bss (NOLOAD) : ALIGN(4) { /* .bss starts at 0x3000000 */ @@ -1330,6 +1346,20 @@ SECTIONS { data/*.o(.rodata); } > ROM = 0 + .data.iwram : + ALIGN(4) + { + __iwram_lma = .; + . = . + (__iwram_end - __iwram_start); + } > ROM = 0 + + .data.ewram : + ALIGN(4) + { + __ewram_lma = .; + . = . + (__ewram_end - __ewram_start); + } > ROM = 0 + __rom_end = .; /* DWARF debug sections. diff --git a/ld_script_modern.ld b/ld_script_modern.ld index f3bf7b6798df..fd35a1ca31d8 100644 --- a/ld_script_modern.ld +++ b/ld_script_modern.ld @@ -12,15 +12,32 @@ MEMORY } SECTIONS { - ewram 0x2000000 (NOLOAD) : + + + .ewram ORIGIN(EWRAM) : AT (__ewram_lma) ALIGN(4) { - src/*.o(ewram_data); - gflib/*.o(ewram_data); + __ewram_start = .; + *(.ewram*) + __ewram_end = .; + } > EWRAM + .ewram.sbss (NOLOAD) : + ALIGN(4) + { + src/*.o(.sbss); + gflib/*.o(.sbss); } > EWRAM - iwram 0x3000000 (NOLOAD) : + .iwram ORIGIN(IWRAM) : AT (__iwram_lma) + ALIGN(4) + { + __iwram_start = .; + *(.iwram*); + __iwram_end = .; + } > IWRAM + + .iwram.bss (NOLOAD) : ALIGN(4) { src/*.o(.bss); @@ -38,9 +55,8 @@ SECTIONS { } > IWRAM /* BEGIN ROM DATA */ - . = 0x8000000; - .text : + .text ORIGIN(ROM) : ALIGN(4) { src/rom_header.o(.text*); @@ -125,6 +141,20 @@ SECTIONS { src/graphics.o(.rodata); } > ROM =0 + .data.iwram : + ALIGN(4) + { + __iwram_lma = .; + . = . + (__iwram_end - __iwram_start); + } > ROM = 0 + + .data.ewram : + ALIGN(4) + { + __ewram_lma = .; + . = . + (__ewram_end - __ewram_start); + } > ROM = 0 + __rom_end = .; /* DWARF debug sections. diff --git a/ld_script_test.ld b/ld_script_test.ld index 49a0ec35b0b7..ec99609a7e6d 100644 --- a/ld_script_test.ld +++ b/ld_script_test.ld @@ -12,15 +12,32 @@ MEMORY } SECTIONS { - ewram 0x2000000 (NOLOAD) : + + .ewram ORIGIN(EWRAM) : AT (__ewram_lma) + ALIGN(4) + { + __ewram_start = .; + *(.ewram*) + __ewram_end = .; + } > EWRAM + + .ewram.sbss (NOLOAD) : ALIGN(4) { - src/*.o(ewram_data); - gflib/*.o(ewram_data); - test/*.o(ewram_data); + src/*.o(.sbss); + gflib/*.o(.sbss); + test/*.o(.sbss); } > EWRAM - iwram 0x3000000 (NOLOAD) : + .iwram ORIGIN(IWRAM) : AT (__iwram_lma) + ALIGN(4) + { + __iwram_start = .; + *(.iwram*); + __iwram_end = .; + } > IWRAM + + .iwram.sbss (NOLOAD) : ALIGN(4) { src/*.o(.bss); @@ -97,6 +114,20 @@ SECTIONS { src/libisagbprn.o(.rodata); } > ROM =0 + .data.iwram : + ALIGN(4) + { + __iwram_lma = .; + . = . + (__iwram_end - __iwram_start); + } > ROM = 0 + + .data.ewram : + ALIGN(4) + { + __ewram_lma = .; + . = . + (__ewram_end - __ewram_start); + } > ROM = 0 + tests : ALIGN(4) { diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index b9c4198f6c8f..ae06cdfb5155 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -22,6 +22,7 @@ #include "constants/hold_effects.h" #include "constants/moves.h" #include "constants/items.h" +#include "constants/trainers.h" #define AI_ACTION_DONE (1 << 0) #define AI_ACTION_FLEE (1 << 1) @@ -139,36 +140,76 @@ static u32 GetWildAiFlags(void) return flags; } +static u32 GetAiFlags(u16 trainerId) +{ + u32 flags = 0; + + if (!(gBattleTypeFlags & BATTLE_TYPE_HAS_AI) && !IsWildMonSmart()) + return 0; + if (trainerId == 0xFFFF) + { + flags = GetWildAiFlags(); + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) + flags = GetAiScriptsInRecordedBattle(); + else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + flags = AI_FLAG_SAFARI; + else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) + flags = AI_FLAG_ROAMING; + else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + flags = AI_FLAG_FIRST_BATTLE; + else if (gBattleTypeFlags & BATTLE_TYPE_FACTORY) + flags = GetAiScriptsInBattleFactory(); + else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE)) + flags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT; + else + flags = gTrainers[trainerId].aiFlags; + } + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + flags |= AI_FLAG_DOUBLE_BATTLE; + + return flags; +} + void BattleAI_SetupFlags(void) { + AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_LEFT] = 0; // player has no AI + #if DEBUG_OVERWORLD_MENU == TRUE if (gIsDebugBattle) - AI_THINKING_STRUCT->aiFlags = gDebugAIFlags; - else + { + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] = gDebugAIFlags; + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = gDebugAIFlags; + return; + } #endif - if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) - AI_THINKING_STRUCT->aiFlags = GetAiScriptsInRecordedBattle(); - else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) - AI_THINKING_STRUCT->aiFlags = AI_FLAG_SAFARI; - else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) - AI_THINKING_STRUCT->aiFlags = AI_FLAG_ROAMING; - else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) - AI_THINKING_STRUCT->aiFlags = AI_FLAG_FIRST_BATTLE; - else if (gBattleTypeFlags & BATTLE_TYPE_FACTORY) - AI_THINKING_STRUCT->aiFlags = GetAiScriptsInBattleFactory(); - else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER_HILL | BATTLE_TYPE_SECRET_BASE)) - AI_THINKING_STRUCT->aiFlags = AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT; - else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) - AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags | gTrainers[gTrainerBattleOpponent_B].aiFlags; - else - AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags; - // check smart wild AI - if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER)) && IsWildMonSmart()) - AI_THINKING_STRUCT->aiFlags |= GetWildAiFlags(); + if (IsWildMonSmart() && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER))) + { + // smart wild AI + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] = GetAiFlags(0xFFFF); + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = GetAiFlags(0xFFFF); + } + else + { + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] = GetAiFlags(gTrainerBattleOpponent_A); + if (gTrainerBattleOpponent_B != 0) + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = GetAiFlags(gTrainerBattleOpponent_B); + else + AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] = AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT]; + } - if (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS) || gTrainers[gTrainerBattleOpponent_A].doubleBattle) - AI_THINKING_STRUCT->aiFlags |= AI_FLAG_DOUBLE_BATTLE; // Act smart in doubles and don't attack your partner. + if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) + { + AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = GetAiFlags(gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)); + } + else + { + AI_THINKING_STRUCT->aiFlags[B_POSITION_PLAYER_RIGHT] = 0; // player + } } // sBattler_AI set in ComputeBattleAiScores @@ -176,11 +217,12 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves, u32 battler) { s32 i; u8 moveLimitations; + u32 flags[MAX_BATTLERS_COUNT]; // Clear AI data but preserve the flags. - u32 flags = AI_THINKING_STRUCT->aiFlags; + memcpy(&flags[0], &AI_THINKING_STRUCT->aiFlags[0], sizeof(u32) * MAX_BATTLERS_COUNT); memset(AI_THINKING_STRUCT, 0, sizeof(struct AI_ThinkingStruct)); - AI_THINKING_STRUCT->aiFlags = flags; + memcpy(&AI_THINKING_STRUCT->aiFlags[0], &flags[0], sizeof(u32) * MAX_BATTLERS_COUNT); // Conditional score reset, unlike Ruby. for (i = 0; i < MAX_MON_MOVES; i++) @@ -251,7 +293,7 @@ static void CopyBattlerDataToAIParty(u32 bPosition, u32 side) void Ai_InitPartyStruct(void) { u32 i; - bool32 isOmniscient = (AI_THINKING_STRUCT->aiFlags & AI_FLAG_OMNISCIENT); + bool32 isOmniscient = (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_LEFT] & AI_FLAG_OMNISCIENT) || (AI_THINKING_STRUCT->aiFlags[B_POSITION_OPPONENT_RIGHT] & AI_FLAG_OMNISCIENT); struct Pokemon *mon; AI_PARTY->count[B_SIDE_PLAYER] = gPlayerPartyCount; @@ -433,13 +475,13 @@ static bool32 AI_ShouldSwitchIfBadMoves(u32 battler, bool32 doubleBattle) if (CountUsablePartyMons(battler) > 0 && !IsBattlerTrapped(battler, TRUE) && !(gBattleTypeFlags & (BATTLE_TYPE_ARENA | BATTLE_TYPE_PALACE)) - && AI_THINKING_STRUCT->aiFlags & (AI_FLAG_CHECK_VIABILITY | AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_PREFER_BATON_PASS)) + && AI_THINKING_STRUCT->aiFlags[battler] & (AI_FLAG_CHECK_VIABILITY | AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_PREFER_BATON_PASS)) { // Consider switching if all moves are worthless to use. if (GetTotalBaseStat(gBattleMons[battler].species) >= 310 // Mon is not weak. && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2) // Mon has more than 50% of its HP { - s32 cap = AI_THINKING_STRUCT->aiFlags & (AI_FLAG_CHECK_VIABILITY) ? 95 : 93; + s32 cap = AI_THINKING_STRUCT->aiFlags[battler] & (AI_FLAG_CHECK_VIABILITY) ? 95 : 93; if (doubleBattle) { for (i = 0; i < MAX_BATTLERS_COUNT; i++) @@ -492,7 +534,7 @@ static u32 ChooseMoveOrAction_Singles(u32 battlerAi) u8 consideredMoveArray[MAX_MON_MOVES]; u32 numOfBestMoves; s32 i; - u32 flags = AI_THINKING_STRUCT->aiFlags; + u32 flags = AI_THINKING_STRUCT->aiFlags[battlerAi]; AI_DATA->partnerMove = 0; // no ally while (flags != 0) @@ -577,7 +619,7 @@ static u32 ChooseMoveOrAction_Doubles(u32 battlerAi) AI_DATA->partnerMove = GetAllyChosenMove(battlerAi); AI_THINKING_STRUCT->aiLogicId = 0; AI_THINKING_STRUCT->movesetIndex = 0; - flags = AI_THINKING_STRUCT->aiFlags; + flags = AI_THINKING_STRUCT->aiFlags[sBattler_AI]; while (flags != 0) { @@ -877,6 +919,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; // fallthrough case ABILITY_KEEN_EYE: + case ABILITY_MINDS_EYE: if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2) RETURN_SCORE_MINUS(10); break; @@ -1016,7 +1059,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-10); break; case EFFECT_EXPLOSION: - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_WILL_SUICIDE)) + if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE)) ADJUST_SCORE(-2); if (effectiveness == AI_EFFECTIVENESS_x0) @@ -1299,7 +1342,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ACCURACY_DOWN_2: if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ACC)) ADJUST_SCORE(-10); - else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE)) + else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || aiData->abilities[battlerDef] == ABILITY_MINDS_EYE + || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE)) ADJUST_SCORE(-8); break; case EFFECT_EVASION_DOWN: @@ -1655,6 +1699,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) ADJUST_SCORE(-6); break; case EFFECT_BELLY_DRUM: + case EFFECT_FILLET_AWAY: if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY) ADJUST_SCORE(-10); else if (aiData->hpPercents[battlerAtk] <= 60) @@ -1994,7 +2039,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) } } - /*if (AI_THINKING_STRUCT->aiFlags == AI_SCRIPT_CHECK_BAD_MOVE //Only basic AI + /*if (AI_THINKING_STRUCT->aiFlags[battlerAtk] == AI_SCRIPT_CHECK_BAD_MOVE //Only basic AI && IS_DOUBLE_BATTLE) //Make the regular AI know how to use Protect minimally in Doubles { u8 shouldProtect = ShouldProtect(battlerAtk, battlerDef, move); @@ -2108,8 +2153,8 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_ROLE_PLAY: if (aiData->abilities[battlerAtk] == aiData->abilities[battlerDef] || aiData->abilities[battlerDef] == ABILITY_NONE - || IsRolePlayBannedAbilityAtk(aiData->abilities[battlerAtk]) - || IsRolePlayBannedAbility(aiData->abilities[battlerDef])) + || gAbilities[aiData->abilities[battlerAtk]].cantBeSuppressed + || gAbilities[aiData->abilities[battlerDef]].cantBeCopied) ADJUST_SCORE(-10); else if (IsAbilityOfRating(aiData->abilities[battlerAtk], 5)) ADJUST_SCORE(-4); @@ -2138,25 +2183,26 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_SKILL_SWAP: if (aiData->abilities[battlerAtk] == ABILITY_NONE || aiData->abilities[battlerDef] == ABILITY_NONE - || IsSkillSwapBannedAbility(aiData->abilities[battlerAtk]) || IsSkillSwapBannedAbility(aiData->abilities[battlerDef]) + || gAbilities[aiData->abilities[battlerAtk]].cantBeSwapped + || gAbilities[aiData->abilities[battlerDef]].cantBeSwapped || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) ADJUST_SCORE(-10); break; case EFFECT_WORRY_SEED: if (aiData->abilities[battlerDef] == ABILITY_INSOMNIA - || IsWorrySeedBannedAbility(aiData->abilities[battlerDef]) + || gAbilities[aiData->abilities[battlerDef]].cantBeOverwritten || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) ADJUST_SCORE(-10); break; case EFFECT_GASTRO_ACID: if (gStatuses3[battlerDef] & STATUS3_GASTRO_ACID - || IsGastroAcidBannedAbility(aiData->abilities[battlerDef])) + || gAbilities[aiData->abilities[battlerDef]].cantBeSuppressed) ADJUST_SCORE(-10); break; case EFFECT_ENTRAINMENT: if (aiData->abilities[battlerAtk] == ABILITY_NONE - || IsEntrainmentBannedAbilityAttacker(aiData->abilities[battlerAtk]) - || IsEntrainmentTargetOrSimpleBeamBannedAbility(aiData->abilities[battlerDef]) + || gAbilities[aiData->abilities[battlerAtk]].cantBeCopied + || gAbilities[aiData->abilities[battlerDef]].cantBeOverwritten || aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ABILITY_SHIELD) ADJUST_SCORE(-10); break; @@ -2164,7 +2210,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case EFFECT_SIMPLE_BEAM: if (aiData->abilities[battlerDef] == ABILITY_SIMPLE - || IsEntrainmentTargetOrSimpleBeamBannedAbility(aiData->abilities[battlerDef]) + || gAbilities[aiData->abilities[battlerDef]].cantBeOverwritten || aiData->holdEffects[battlerDef] == HOLD_EFFECT_ABILITY_SHIELD) ADJUST_SCORE(-10); break; @@ -2685,8 +2731,8 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) u32 atkPartnerAbility = aiData->abilities[BATTLE_PARTNER(battlerAtk)]; u32 atkPartnerHoldEffect = aiData->holdEffects[BATTLE_PARTNER(battlerAtk)]; bool32 partnerProtecting = (gBattleMoves[aiData->partnerMove].effect == EFFECT_PROTECT); - bool32 attackerHasBadAbility = (GetAbilityRating(aiData->abilities[battlerAtk]) < 0); - bool32 partnerHasBadAbility = (GetAbilityRating(atkPartnerAbility) < 0); + bool32 attackerHasBadAbility = (gAbilities[aiData->abilities[battlerAtk]].aiRating < 0); + bool32 partnerHasBadAbility = (gAbilities[atkPartnerAbility].aiRating < 0); u32 predictedMove = aiData->predictedMoves[battlerDef]; SetTypeBeforeUsingMove(move, battlerAtk); @@ -2801,7 +2847,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) switch (atkPartnerAbility) { case ABILITY_VOLT_ABSORB: - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_HP_AWARE)) + if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) { RETURN_SCORE_MINUS(10); } @@ -2822,7 +2868,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case ABILITY_WATER_ABSORB: case ABILITY_DRY_SKIN: - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_HP_AWARE)) + if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) { RETURN_SCORE_MINUS(10); } @@ -3231,7 +3277,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score } // check status move preference - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_PREFER_STATUS_MOVES && IS_MOVE_STATUS(move) && effectiveness != AI_EFFECTIVENESS_x0) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_PREFER_STATUS_MOVES && IS_MOVE_STATUS(move) && effectiveness != AI_EFFECTIVENESS_x0) ADJUST_SCORE(1); // check thawing moves @@ -3239,7 +3285,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(10); // check burn / frostbite - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING && AI_DATA->abilities[battlerAtk] == ABILITY_NATURAL_CURE) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING && AI_DATA->abilities[battlerAtk] == ABILITY_NATURAL_CURE) { if ((gBattleMons[battlerAtk].status1 & STATUS1_BURN && HasOnlyMovesWithCategory(battlerAtk, BATTLE_CATEGORY_PHYSICAL, TRUE)) || (gBattleMons[battlerAtk].status1 & STATUS1_FROSTBITE && HasOnlyMovesWithCategory(battlerAtk, BATTLE_CATEGORY_SPECIAL, TRUE))) @@ -3261,7 +3307,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(2); case EFFECT_EXPLOSION: case EFFECT_MEMENTO: - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE && gBattleMons[battlerDef].statStages[STAT_EVASION] < 7) { if (aiData->hpPercents[battlerAtk] < 50 && AI_RandLessThan(128)) ADJUST_SCORE(1); @@ -3567,7 +3613,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(5); if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_LIGHT_CLAY) ADJUST_SCORE(2); - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SCREENER) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SCREENER) ADJUST_SCORE(2); } break; @@ -3609,7 +3655,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(5); break; case EFFECT_MIST: - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SCREENER) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SCREENER) ADJUST_SCORE(2); break; case EFFECT_FOCUS_ENERGY: @@ -3705,7 +3751,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score } break; case EFFECT_BATON_PASS: - if (ShouldSwitch(battlerAtk) && (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE + if (ShouldSwitch(battlerAtk, FALSE) && (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || (gStatuses3[battlerAtk] & (STATUS3_ROOTED | STATUS3_AQUA_RING | STATUS3_MAGNET_RISE | STATUS3_POWER_TRICK)) || AnyStatIsRaised(battlerAtk))) ADJUST_SCORE(5); @@ -3933,7 +3979,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score //TODO - track entire opponent party data to determine hazard effectiveness break; case EFFECT_FORESIGHT: - if (aiData->abilities[battlerAtk] == ABILITY_SCRAPPY) + if (aiData->abilities[battlerAtk] == ABILITY_SCRAPPY || aiData->abilities[battlerAtk] == ABILITY_MINDS_EYE) break; else if (gBattleMons[battlerDef].statStages[STAT_EVASION] > DEFAULT_STAT_STAGE || (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GHOST) @@ -4068,7 +4114,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score break; case STAT_DEF: case STAT_SPDEF: - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_STALL) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) ADJUST_SCORE(1); break; } @@ -4332,8 +4378,8 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score } break; case EFFECT_ROLE_PLAY: - if (!IsRolePlayBannedAbilityAtk(aiData->abilities[battlerAtk]) - && !IsRolePlayBannedAbility(aiData->abilities[battlerDef]) + if (!gAbilities[aiData->abilities[battlerAtk]].cantBeSuppressed + && !gAbilities[aiData->abilities[battlerDef]].cantBeCopied && !IsAbilityOfRating(aiData->abilities[battlerAtk], 5) && IsAbilityOfRating(aiData->abilities[battlerDef], 5)) ADJUST_SCORE(2); @@ -4399,7 +4445,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score } break; case EFFECT_SKILL_SWAP: - if (GetAbilityRating(aiData->abilities[battlerDef]) > GetAbilityRating(aiData->abilities[battlerAtk])) + if (gAbilities[aiData->abilities[battlerDef]].aiRating > gAbilities[aiData->abilities[battlerAtk]].aiRating) ADJUST_SCORE(1); break; case EFFECT_WORRY_SEED: @@ -4409,7 +4455,7 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score ADJUST_SCORE(2); break; case EFFECT_ENTRAINMENT: - if (IsAbilityOfRating(aiData->abilities[battlerDef], 5) || GetAbilityRating(aiData->abilities[battlerAtk]) <= 0) + if (IsAbilityOfRating(aiData->abilities[battlerDef], 5) || gAbilities[aiData->abilities[battlerAtk]].aiRating <= 0) { if (aiData->abilities[battlerDef] != aiData->abilities[battlerAtk] && !(gStatuses3[battlerDef] & STATUS3_GASTRO_ACID)) ADJUST_SCORE(2); @@ -4866,7 +4912,7 @@ static s32 AI_SetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32 score || gBattleResults.battleTurnCounter != 0) return score; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_SMART_SWITCHING && AI_WhoStrikesFirst(battlerAtk, battlerDef, move) == AI_IS_SLOWER && CanTargetFaintAi(battlerDef, battlerAtk) && GetMovePriority(battlerAtk, move) == 0) @@ -4999,6 +5045,7 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_FOCUS_PUNCH: case EFFECT_REVENGE: case EFFECT_TEETER_DANCE: + case EFFECT_FILLET_AWAY: if (Random() & 1) ADJUST_SCORE(2); break; @@ -5149,6 +5196,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_CONVERSION_2: case EFFECT_SAFEGUARD: case EFFECT_BELLY_DRUM: + case EFFECT_FILLET_AWAY: ADJUST_SCORE(-2); break; default: @@ -5184,6 +5232,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_HAIL: case EFFECT_SNOWSCAPE: case EFFECT_RAIN_DANCE: + case EFFECT_FILLET_AWAY: ADJUST_SCORE(-2); break; default: diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f4ea29176707..43450089c409 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -22,9 +22,9 @@ #include "constants/moves.h" // this file's functions -static bool8 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool8 noRng); -static bool8 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u8 moduloPercent); -static bool8 ShouldUseItem(u32 battler); +static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng); +static bool32 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u32 moduloPercent, bool32 emitResult); +static bool32 ShouldUseItem(u32 battler); static bool32 AiExpectsToFaintPlayer(u32 battler); static bool32 AI_ShouldHeal(u32 battler, u32 healAmount); static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount); @@ -38,10 +38,10 @@ static void InitializeSwitchinCandidate(struct Pokemon *mon) static bool32 IsAceMon(u32 battler, u32 monPartyId) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON - && !(gBattleStruct->forcedSwitch & gBitTable[battler]) - && monPartyId == CalculateEnemyPartyCount()-1) - return TRUE; + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_ACE_POKEMON + && !(gBattleStruct->forcedSwitch & gBitTable[battler]) + && monPartyId == CalculateEnemyPartyCount()-1) + return TRUE; return FALSE; } @@ -65,29 +65,28 @@ void GetAIPartyIndexes(u32 battler, s32 *firstId, s32 *lastId) } // Note that as many return statements as possible are INTENTIONALLY put after all of the loops; -// the function can take a max of about 0.06s to run, and this prevents the player from identifying +// the function can take a max of about 0.06s to run, and this prevents the player from identifying // whether the mon will switch or not by seeing how long the delay is before they select a move -static bool8 HasBadOdds(u32 battler) - +static bool32 HasBadOdds(u32 battler, bool32 emitResult) { //Variable initialization u8 opposingPosition, atkType1, atkType2, defType1, defType2, effectiveness; s32 i, damageDealt = 0, maxDamageDealt = 0, damageTaken = 0, maxDamageTaken = 0; u32 aiMove, playerMove, aiBestMove = MOVE_NONE, aiAbility = GetBattlerAbility(battler), opposingBattler, weather = AI_GetWeather(AI_DATA); - bool8 getsOneShot = FALSE, hasStatusMove = FALSE, hasSuperEffectiveMove = FALSE; + bool32 getsOneShot = FALSE, hasStatusMove = FALSE, hasSuperEffectiveMove = FALSE; u16 typeEffectiveness = UQ_4_12(1.0), aiMoveEffect; //baseline typing damage // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING)) + if (!(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING)) return FALSE; // Won't bother configuring this for double battles - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) return FALSE; - + opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); opposingBattler = GetBattlerAtPosition(opposingPosition); - + // Gets types of player (opposingBattler) and computer (battler) atkType1 = gBattleMons[opposingBattler].type1; atkType2 = gBattleMons[opposingBattler].type2; @@ -102,7 +101,7 @@ static bool8 HasBadOdds(u32 battler) if (aiMove != MOVE_NONE) { // Check if mon has an "important" status move - if (aiMoveEffect == EFFECT_REFLECT || aiMoveEffect == EFFECT_LIGHT_SCREEN + if (aiMoveEffect == EFFECT_REFLECT || aiMoveEffect == EFFECT_LIGHT_SCREEN || aiMoveEffect == EFFECT_SPIKES || aiMoveEffect == EFFECT_TOXIC_SPIKES || aiMoveEffect == EFFECT_STEALTH_ROCK || aiMoveEffect == EFFECT_STICKY_WEB || aiMoveEffect == EFFECT_LEECH_SEED || aiMoveEffect == EFFECT_EXPLOSION || aiMoveEffect == EFFECT_SLEEP || aiMoveEffect == EFFECT_YAWN || aiMoveEffect == EFFECT_TOXIC || aiMoveEffect == EFFECT_WILL_O_WISP || aiMoveEffect == EFFECT_PARALYZE @@ -174,18 +173,19 @@ static bool8 HasBadOdds(u32 battler) // Start assessing whether or not mon has bad odds // Jump straight to swtiching out in cases where mon gets OHKO'd if (((getsOneShot && gBattleMons[opposingBattler].speed > gBattleMons[battler].speed) // If the player OHKOs and outspeeds OR OHKOs, doesn't outspeed but isn't 2HKO'd - || (getsOneShot && gBattleMons[opposingBattler].speed <= gBattleMons[battler].speed && maxDamageDealt < gBattleMons[opposingBattler].hp / 2)) + || (getsOneShot && gBattleMons[opposingBattler].speed <= gBattleMons[battler].speed && maxDamageDealt < gBattleMons[opposingBattler].hp / 2)) && (gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2 // And the current mon has at least 1/2 their HP, or 1/4 HP and Regenerator - || (aiAbility == ABILITY_REGENERATOR - && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) + || (aiAbility == ABILITY_REGENERATOR + && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) { // 50% chance to stay in regardless - if (Random() % 2 == 0) + if (Random() % 2 == 0) return FALSE; // Switch mon out - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } @@ -194,33 +194,35 @@ static bool8 HasBadOdds(u32 battler) { if (!hasSuperEffectiveMove // If the AI doesn't have a super effective move && (gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 2 // And the current mon has at least 1/2 their HP, or 1/4 HP and Regenerator - || (aiAbility == ABILITY_REGENERATOR - && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) + || (aiAbility == ABILITY_REGENERATOR + && gBattleMons[battler].hp >= gBattleMons[battler].maxHP / 4))) { // Then check if they have an important status move, which is worth using even in a bad matchup - if(hasStatusMove) + if (hasStatusMove) return FALSE; // 50% chance to stay in regardless - if (Random() % 2 == 0) + if (Random() % 2 == 0) return FALSE; // Switch mon out - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } } return FALSE; } -static bool8 ShouldSwitchIfAllBadMoves(u32 battler) +static bool32 ShouldSwitchIfAllBadMoves(u32 battler, bool32 emitResult) { if (AI_DATA->shouldSwitchMon & gBitTable[battler]) { AI_DATA->shouldSwitchMon &= ~(gBitTable[battler]); gBattleStruct->AI_monToSwitchIntoId[battler] = AI_DATA->monToSwitchId[battler]; - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); + if (emitResult) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } else @@ -229,7 +231,7 @@ static bool8 ShouldSwitchIfAllBadMoves(u32 battler) } } -static bool8 ShouldSwitchIfWonderGuard(u32 battler) +static bool32 ShouldSwitchIfWonderGuard(u32 battler, bool32 emitResult) { u8 opposingPosition; u8 opposingBattler; @@ -247,7 +249,7 @@ static bool8 ShouldSwitchIfWonderGuard(u32 battler) if (GetBattlerAbility(GetBattlerAtPosition(opposingPosition)) != ABILITY_WONDER_GUARD) return FALSE; - // Check if Pokemon has a super effective move. + // Check if Pokémon has a super effective move. for (opposingBattler = GetBattlerAtPosition(opposingPosition), i = 0; i < MAX_MON_MOVES; i++) { move = gBattleMons[battler].moves[i]; @@ -266,7 +268,7 @@ static bool8 ShouldSwitchIfWonderGuard(u32 battler) else party = gEnemyParty; - // Find a Pokemon in the party that has a super effective move. + // Find a Pokémon in the party that has a super effective move. for (i = firstId; i < lastId; i++) { if (!IsValidForBattle(&party[i])) @@ -284,18 +286,19 @@ static bool8 ShouldSwitchIfWonderGuard(u32 battler) if (AI_GetTypeEffectiveness(move, battler, opposingBattler) >= UQ_4_12(2.0) && Random() % 3 < 2) { // We found a mon. - *(gBattleStruct->AI_monToSwitchIntoId + battler) = i; - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = i; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } } } } - return FALSE; // There is not a single Pokemon in the party that has a super effective move against a mon with Wonder Guard. + return FALSE; // There is not a single Pokémon in the party that has a super effective move against a mon with Wonder Guard. } -static bool8 FindMonThatAbsorbsOpponentsMove(u32 battler) +static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler, bool32 emitResult) { u8 battlerIn1, battlerIn2; u8 numAbsorbingAbilities = 0; @@ -382,9 +385,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(u32 battler) continue; if (i == gBattlerPartyIndexes[battlerIn2]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn1]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn2]) continue; if (IsAceMon(battler, i)) continue; @@ -396,8 +399,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(u32 battler) if (absorbingTypeAbilities[j] == monAbility && Random() & 1) { // we found a mon. - *(gBattleStruct->AI_monToSwitchIntoId + battler) = i; - BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = i; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } } @@ -405,9 +409,10 @@ static bool8 FindMonThatAbsorbsOpponentsMove(u32 battler) return FALSE; } -static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) +static bool32 ShouldSwitchIfGameStatePrompt(u32 battler, bool32 emitResult) { - bool8 switchMon = FALSE; + bool32 switchMon = FALSE; + bool32 monIdChosen = FALSE; // Id of the mon to switch into. u16 monAbility = AI_DATA->abilities[battler]; u16 holdEffect = AI_DATA->holdEffects[battler]; u8 opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); @@ -428,7 +433,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) && monAbility != ABILITY_SOUNDPROOF) switchMon = TRUE; - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING) + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING) { //Yawn if (gStatuses3[battler] & STATUS3_YAWN @@ -474,7 +479,8 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) || GetMonAbility(&party[i]) == ABILITY_ELECTRIC_SURGE)) //Ally has Misty or Electric Surge { *(gBattleStruct->AI_monToSwitchIntoId + BATTLE_PARTNER(battler)) = i; - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); + if (emitResult) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); switchMon = FALSE; break; } @@ -503,6 +509,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3) && AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE && AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE + && AI_DATA->abilities[opposingBattler] != ABILITY_MINDS_EYE && (B_ILLUMINATE_EFFECT >= GEN_9 && AI_DATA->abilities[opposingBattler] != ABILITY_ILLUMINATE) && !(gBattleMons[battler].status2 & STATUS2_FORESIGHT) && !(gStatuses3[battler] & STATUS3_MIRACLE_EYED)) @@ -551,8 +558,8 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) //Semi-Invulnerable if (gStatuses3[opposingBattler] & STATUS3_SEMI_INVULNERABLE) { - if (FindMonThatAbsorbsOpponentsMove(battler)) //If find absorber default to switch - switchMon = TRUE; + if (FindMonThatAbsorbsOpponentsMove(battler, FALSE)) // Switch if absorber found. Note: FindMonThatAbsorbsOpponentsMove already provides id of the mon to switch into to gBattleStruct->AI_monToSwitchIntoId. + switchMon = TRUE, monIdChosen = TRUE; if (!AI_OpponentCanFaintAiWithMod(battler, 0) && AnyStatIsRaised(battler)) switchMon = FALSE; @@ -565,8 +572,10 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) if (switchMon) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); + if (!monIdChosen) + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } else @@ -575,7 +584,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler) } } -static bool8 ShouldSwitchIfAbilityBenefit(u32 battler) +static bool32 ShouldSwitchIfAbilityBenefit(u32 battler, bool32 emitResult) { s32 moduloChance = 4; //25% Chance Default s32 chanceReducer = 1; //No Reduce default. Increase to reduce @@ -620,21 +629,20 @@ static bool8 ShouldSwitchIfAbilityBenefit(u32 battler) return FALSE; } - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } -static bool8 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool8 noRng) +static bool32 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool32 noRng) { - u8 opposingPosition; - u8 opposingBattler; s32 i; u16 move; - opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); - opposingBattler = GetBattlerAtPosition(opposingPosition); + u32 opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(battler)); + u32 opposingBattler = GetBattlerAtPosition(opposingPosition); if (!(gAbsentBattlerFlags & gBitTable[opposingBattler])) { @@ -679,7 +687,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(u32 battler, bool8 noRng) return FALSE; } -static bool8 AreStatsRaised(u32 battler) +static bool32 AreStatsRaised(u32 battler) { u8 buffedStatsValue = 0; s32 i; @@ -693,9 +701,9 @@ static bool8 AreStatsRaised(u32 battler) return (buffedStatsValue > 3); } -static bool8 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u8 moduloPercent) +static bool32 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u32 moduloPercent, bool32 emitResult) { - u8 battlerIn1, battlerIn2; + u32 battlerIn1, battlerIn2; s32 firstId; s32 lastId; // + 1 struct Pokemon *party; @@ -742,9 +750,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u8 modulo continue; if (i == gBattlerPartyIndexes[battlerIn2]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn1]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn2]) continue; if (IsAceMon(battler, i)) continue; @@ -764,8 +772,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u32 battler, u16 flags, u8 modulo if (AI_GetTypeEffectiveness(move, battler, battlerIn1) >= UQ_4_12(2.0) && Random() % moduloPercent == 0) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = i; - BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = i; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, BUFFER_B, B_ACTION_SWITCH, 0); return TRUE; } } @@ -785,7 +794,7 @@ static bool32 CanMonSurviveHazardSwitchin(u32 battler) if (ability == ABILITY_REGENERATOR) battlerHp = (battlerHp * 133) / 100; // Account for Regenerator healing - + hazardDamage = GetSwitchinHazardsDamage(battler, &gBattleMons[battler]); // Battler will faint to hazards, check to see if another mon can clear them @@ -816,9 +825,9 @@ static bool32 CanMonSurviveHazardSwitchin(u32 battler) continue; if (i == gBattlerPartyIndexes[battlerIn2]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn1]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn2]) continue; if (IsAceMon(battler, i)) continue; @@ -839,10 +848,10 @@ static bool32 CanMonSurviveHazardSwitchin(u32 battler) return TRUE; } -static bool32 ShouldSwitchIfEncored(u32 battler) -{ +static bool32 ShouldSwitchIfEncored(u32 battler, bool32 emitResult) +{ // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING)) + if (!(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING)) return FALSE; // If not Encored or if no good switchin, don't switch @@ -852,8 +861,9 @@ static bool32 ShouldSwitchIfEncored(u32 battler) // Otherwise 50% chance to switch out if (Random() & 1) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; - BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; + if (emitResult) + BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } @@ -861,13 +871,13 @@ static bool32 ShouldSwitchIfEncored(u32 battler) } // AI should switch if it's become setup fodder and has something better to switch to -static bool8 AreAttackingStatsLowered(u32 battler) +static bool32 AreAttackingStatsLowered(u32 battler, bool32 emitResult) { s8 attackingStage = gBattleMons[battler].statStages[STAT_ATK]; s8 spAttackingStage = gBattleMons[battler].statStages[STAT_SPATK]; // Only use this if AI_FLAG_SMART_SWITCHING is set for the trainer - if (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING)) + if (!(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING)) return FALSE; // Physical attacker @@ -881,7 +891,7 @@ static bool8 AreAttackingStatsLowered(u32 battler) { if (AI_DATA->mostSuitableMonId != PARTY_SIZE && (Random() & 1)) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } @@ -889,7 +899,7 @@ static bool8 AreAttackingStatsLowered(u32 battler) // If at -3 or worse, switch out regardless else if (attackingStage < DEFAULT_STAT_STAGE - 2) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } @@ -906,7 +916,7 @@ static bool8 AreAttackingStatsLowered(u32 battler) { if (AI_DATA->mostSuitableMonId != PARTY_SIZE && (Random() & 1)) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } @@ -914,7 +924,7 @@ static bool8 AreAttackingStatsLowered(u32 battler) // If at -3 or worse, switch out regardless else if (spAttackingStage < DEFAULT_STAT_STAGE - 2) { - *(gBattleStruct->AI_monToSwitchIntoId + battler) = PARTY_SIZE; + gBattleStruct->AI_monToSwitchIntoId[battler] = PARTY_SIZE; BtlController_EmitTwoReturnValues(battler, 1, B_ACTION_SWITCH, 0); return TRUE; } @@ -922,9 +932,9 @@ static bool8 AreAttackingStatsLowered(u32 battler) return FALSE; } -bool32 ShouldSwitch(u32 battler) +bool32 ShouldSwitch(u32 battler, bool32 emitResult) { - u8 battlerIn1, battlerIn2; + u32 battlerIn1, battlerIn2; s32 firstId; s32 lastId; // + 1 struct Pokemon *party; @@ -972,9 +982,9 @@ bool32 ShouldSwitch(u32 battler) continue; if (i == gBattlerPartyIndexes[battlerIn2]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn1]) continue; - if (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if (i == gBattleStruct->monToSwitchIntoId[battlerIn2]) continue; if (IsAceMon(battler, i)) { @@ -997,29 +1007,29 @@ bool32 ShouldSwitch(u32 battler) //Since the order is sequencial, and some of these functions prompt switch to specific party members. //These Functions can prompt switch to specific party members - if (ShouldSwitchIfWonderGuard(battler)) + if (ShouldSwitchIfWonderGuard(battler, emitResult)) return TRUE; - if (ShouldSwitchIfGameStatePrompt(battler)) + if (ShouldSwitchIfGameStatePrompt(battler, emitResult)) return TRUE; - if (FindMonThatAbsorbsOpponentsMove(battler)) + if (FindMonThatAbsorbsOpponentsMove(battler, emitResult)) return TRUE; //These Functions can prompt switch to generic pary members - if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE)) + if ((AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_SWITCHING) && (CanMonSurviveHazardSwitchin(battler) == FALSE)) return FALSE; - if (ShouldSwitchIfAllBadMoves(battler)) + if (ShouldSwitchIfAllBadMoves(battler, emitResult)) return TRUE; - if (ShouldSwitchIfAbilityBenefit(battler)) + if (ShouldSwitchIfAbilityBenefit(battler, emitResult)) return TRUE; - if (HasBadOdds(battler)) + if (HasBadOdds(battler, emitResult)) return TRUE; - if (ShouldSwitchIfEncored(battler)) + if (ShouldSwitchIfEncored(battler, emitResult)) return TRUE; - if (AreAttackingStatsLowered(battler)) + if (AreAttackingStatsLowered(battler, emitResult)) return TRUE; - //Removing switch capabilites under specific conditions - //These Functions prevent the "FindMonWithFlagsAndSuperEffective" from getting out of hand. + // Removing switch capabilites under specific conditions + // These Functions prevent the "FindMonWithFlagsAndSuperEffective" from getting out of hand. if (HasSuperEffectiveMoveAgainstOpponents(battler, FALSE)) return FALSE; if (AreStatsRaised(battler)) @@ -1027,8 +1037,8 @@ bool32 ShouldSwitch(u32 battler) //Default Function //Can prompt switch if AI has a pokemon in party that resists current opponent & has super effective move - if (FindMonWithFlagsAndSuperEffective(battler, MOVE_RESULT_DOESNT_AFFECT_FOE, 2) - || FindMonWithFlagsAndSuperEffective(battler, MOVE_RESULT_NOT_VERY_EFFECTIVE, 3)) + if (FindMonWithFlagsAndSuperEffective(battler, MOVE_RESULT_DOESNT_AFFECT_FOE, 2, emitResult) + || FindMonWithFlagsAndSuperEffective(battler, MOVE_RESULT_NOT_VERY_EFFECTIVE, 3, emitResult)) return TRUE; return FALSE; @@ -1049,9 +1059,9 @@ void AI_TrySwitchOrUseItem(u32 battler) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - if (ShouldSwitch(battler)) + if (ShouldSwitch(battler, TRUE)) { - if (*(gBattleStruct->AI_monToSwitchIntoId + battler) == PARTY_SIZE) + if (gBattleStruct->AI_monToSwitchIntoId[battler] == PARTY_SIZE) { s32 monToSwitchId = AI_DATA->mostSuitableMonId; if (monToSwitchId == PARTY_SIZE) @@ -1077,9 +1087,9 @@ void AI_TrySwitchOrUseItem(u32 battler) continue; if (monToSwitchId == gBattlerPartyIndexes[battlerIn2]) continue; - if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) + if (monToSwitchId == gBattleStruct->monToSwitchIntoId[battlerIn1]) continue; - if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + if (monToSwitchId == gBattleStruct->monToSwitchIntoId[battlerIn2]) continue; if (IsAceMon(battler, monToSwitchId)) continue; @@ -1088,10 +1098,10 @@ void AI_TrySwitchOrUseItem(u32 battler) } } - *(gBattleStruct->AI_monToSwitchIntoId + battler) = monToSwitchId; + gBattleStruct->AI_monToSwitchIntoId[battler] = monToSwitchId; } - *(gBattleStruct->monToSwitchIntoId + battler) = *(gBattleStruct->AI_monToSwitchIntoId + battler); + *(gBattleStruct->monToSwitchIntoId + battler) = gBattleStruct->AI_monToSwitchIntoId[battler]; return; } else if (ShouldUseItem(battler)) @@ -1367,7 +1377,7 @@ static s32 GetSwitchinWeatherImpact(void) // Gets one turn of recurring healing static u32 GetSwitchinRecurringHealing(void) -{ +{ u32 recurringHealing = 0, maxHP = AI_DATA->switchinCandidate.battleMon.maxHP, ability = AI_DATA->switchinCandidate.battleMon.ability; u16 item = AI_DATA->switchinCandidate.battleMon.item; @@ -1439,9 +1449,9 @@ static u32 GetSwitchinStatusDamage(u32 battler) u32 statusDamage = 0; // Status condition damage - if ((status != 0) && AI_DATA->switchinCandidate.battleMon.ability != ABILITY_MAGIC_GUARD) + if ((status != 0) && AI_DATA->switchinCandidate.battleMon.ability != ABILITY_MAGIC_GUARD) { - if (status & STATUS1_BURN) + if (status & STATUS1_BURN) { #if B_BURN_DAMAGE >= GEN_7 statusDamage = maxHP / 16; @@ -1484,7 +1494,7 @@ static u32 GetSwitchinStatusDamage(u32 battler) if (tSpikesLayers != 0 && (defType1 != TYPE_POISON && defType2 != TYPE_POISON && ability != ABILITY_IMMUNITY && ability != ABILITY_POISON_HEAL && status == 0 - && !(heldItemEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS + && !(heldItemEffect == HOLD_EFFECT_HEAVY_DUTY_BOOTS && (((gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) || ability == ABILITY_KLUTZ))) && heldItemEffect != HOLD_EFFECT_CURE_PSN && heldItemEffect != HOLD_EFFECT_CURE_STATUS && IsMonGrounded(heldItemEffect, ability, defType1, defType2))) @@ -1517,7 +1527,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) u8 weatherDuration = gWishFutureKnock.weatherDuration, holdEffectParam = gItems[AI_DATA->switchinCandidate.battleMon.item].holdEffectParam; u32 opposingBattler = GetBattlerAtPosition(BATTLE_OPPOSITE(GetBattlerPosition(battler))); u32 opposingAbility = gBattleMons[opposingBattler].ability; - bool8 usedSingleUseHealingItem = FALSE; + bool32 usedSingleUseHealingItem = FALSE; s32 currentHP = startingHP; // No damage being dealt @@ -1559,7 +1569,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler) singleUseItemHeal = 1; } } - else if (currentHP < maxHP / CONFUSE_BERRY_HP_FRACTION + else if (currentHP < maxHP / CONFUSE_BERRY_HP_FRACTION && opposingAbility != ABILITY_UNNERVE && (item == ITEM_AGUAV_BERRY || item == ITEM_FIGY_BERRY || item == ITEM_IAPAPA_BERRY || item == ITEM_MAGO_BERRY || item == ITEM_WIKI_BERRY)) { @@ -1608,7 +1618,7 @@ static u16 GetSwitchinTypeMatchup(u32 opposingBattler, struct BattlePokemon batt // Check type matchup u16 typeEffectiveness = UQ_4_12(1.0); - u8 atkType1 = gSpeciesInfo[gBattleMons[opposingBattler].species].types[0], atkType2 = gSpeciesInfo[gBattleMons[opposingBattler].species].types[1], + u8 atkType1 = gSpeciesInfo[gBattleMons[opposingBattler].species].types[0], atkType2 = gSpeciesInfo[gBattleMons[opposingBattler].species].types[1], defType1 = battleMon.type1, defType2 = battleMon.type2; // Multiply type effectiveness by a factor depending on type matchup @@ -1669,11 +1679,11 @@ static s32 GetMaxDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposingBattle // the Type Matchup code will prioritize switching into a mon with the best type matchup and also a super effective move, or just best type matchup if no super effective move is found // the Most Defensive code will prioritize switching into the mon that takes the most hits to KO, with a minimum of 4 hits required to be considered a valid option // the Baton Pass code will prioritize switching into a mon with Baton Pass if it can get in, boost, and BP out without being KO'd, and randomizes between multiple valid options -// the Revenge Killer code will prioritize, in order, OHKO and outspeeds / OHKO, slower but not 2HKO'd / 2HKO, outspeeds and not OHKO'd / 2HKO, slower but not 3HKO'd +// the Revenge Killer code will prioritize, in order, OHKO and outspeeds / OHKO, slower but not 2HKO'd / 2HKO, outspeeds and not OHKO'd / 2HKO, slower but not 3HKO'd // the Most Damage code will prioritize switching into whatever mon deals the most damage, which is generally not as good as having a good Type Matchup // Everything runs in the same loop to minimize computation time. This makes it harder to read, but hopefully the comments can guide you! -static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, u32 battler, u32 opposingBattler, u8 battlerIn1, u8 battlerIn2, bool8 isSwitchAfterKO) +static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, u32 battler, u32 opposingBattler, u8 battlerIn1, u8 battlerIn2, bool32 isSwitchAfterKO) { int revengeKillerId = PARTY_SIZE, slowRevengeKillerId = PARTY_SIZE, fastThreatenId = PARTY_SIZE, slowThreatenId = PARTY_SIZE, damageMonId = PARTY_SIZE; int batonPassId = PARTY_SIZE, typeMatchupId = PARTY_SIZE, typeMatchupEffectiveId = PARTY_SIZE, defensiveMonId = PARTY_SIZE, aceMonId = PARTY_SIZE; @@ -1695,8 +1705,8 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, if (!IsValidForBattle(&party[i]) || gBattlerPartyIndexes[battlerIn1] == i || gBattlerPartyIndexes[battlerIn2] == i - || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) - || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2)) + || i == gBattleStruct->monToSwitchIntoId[battlerIn1] + || i == gBattleStruct->monToSwitchIntoId[battlerIn2]) { continue; } @@ -1712,7 +1722,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, InitializeSwitchinCandidate(&party[i]); // While not really invalid per say, not really wise to switch into this mon - if (AI_DATA->switchinCandidate.battleMon.ability == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler)) + if (AI_DATA->switchinCandidate.battleMon.ability == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler)) continue; // Get max number of hits for player to KO AI mon @@ -1748,7 +1758,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, // Only do damage calc if switching after KO, don't need it otherwise and saves ~0.02s per turn if (isSwitchAfterKO && aiMove != MOVE_NONE && gBattleMoves[aiMove].power != 0) damageDealt = AI_CalcPartyMonDamage(aiMove, battler, opposingBattler, AI_DATA->switchinCandidate.battleMon, TRUE); - + // Check for Baton Pass; hitsToKO requirements mean mon can boost and BP without dying whether it's slower or not if (aiMove == MOVE_BATON_PASS && ((hitsToKO > hitsToKOThreshold + 1 && AI_DATA->switchinCandidate.battleMon.speed < playerMonSpeed) || (hitsToKO > hitsToKOThreshold && AI_DATA->switchinCandidate.battleMon.speed > playerMonSpeed))) bits |= gBitTable[i]; @@ -1857,7 +1867,7 @@ static u32 GetBestMonIntegrated(struct Pokemon *party, int firstId, int lastId, else if (typeMatchupId != PARTY_SIZE) return typeMatchupId; - + else if (batonPassId != PARTY_SIZE) return batonPassId; @@ -1929,10 +1939,10 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) // Split ideal mon decision between after previous mon KO'd (prioritize offensive options) and after switching active mon out (prioritize defensive options), and expand the scope of both. // Only use better mon selection if AI_FLAG_SMART_MON_CHOICES is set for the trainer. - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_SMART_MON_CHOICES) + if (AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_SMART_MON_CHOICES) { bestMonId = GetBestMonIntegrated(party, firstId, lastId, battler, opposingBattler, battlerIn1, battlerIn2, switchAfterMonKOd); - return bestMonId; + return bestMonId; } // This all handled by the GetBestMonIntegrated function if the AI_FLAG_SMART_MON_CHOICES flag is set @@ -1946,8 +1956,8 @@ u8 GetMostSuitableMonToSwitchInto(u32 battler, bool32 switchAfterMonKOd) if (!IsValidForBattle(&party[i]) || gBattlerPartyIndexes[battlerIn1] == i || gBattlerPartyIndexes[battlerIn2] == i - || i == *(gBattleStruct->monToSwitchIntoId + battlerIn1) - || i == *(gBattleStruct->monToSwitchIntoId + battlerIn2) + || i == gBattleStruct->monToSwitchIntoId[battlerIn1] + || i == gBattleStruct->monToSwitchIntoId[battlerIn2] || (GetMonAbility(&party[i]) == ABILITY_TRUANT && IsTruantMonVulnerable(battler, opposingBattler))) // While not really invalid per say, not really wise to switch into this mon.) { invalidMons |= gBitTable[i]; @@ -1999,12 +2009,12 @@ static bool32 AiExpectsToFaintPlayer(u32 battler) return FALSE; } -static bool8 ShouldUseItem(u32 battler) +static bool32 ShouldUseItem(u32 battler) { struct Pokemon *party; s32 i; u8 validMons = 0; - bool8 shouldUse = FALSE; + bool32 shouldUse = FALSE; if (IsAiVsAiBattle()) return FALSE; @@ -2138,4 +2148,4 @@ static bool32 AI_OpponentCanFaintAiWithMod(u32 battler, u32 healAmount) } } return FALSE; -} \ No newline at end of file +} diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 83858b7a380c..df7a87789816 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -37,267 +37,6 @@ static u32 AI_GetEffectiveness(uq4_12_t multiplier); // Const Data -static const s8 sAiAbilityRatings[ABILITIES_COUNT] = -{ - [ABILITY_ADAPTABILITY] = 8, - [ABILITY_AFTERMATH] = 5, - [ABILITY_AERILATE] = 8, - [ABILITY_AIR_LOCK] = 5, - [ABILITY_ANALYTIC] = 5, - [ABILITY_ANGER_POINT] = 4, - [ABILITY_ANTICIPATION] = 2, - [ABILITY_ARENA_TRAP] = 9, - [ABILITY_AROMA_VEIL] = 3, - [ABILITY_AURA_BREAK] = 3, - [ABILITY_BAD_DREAMS] = 4, - [ABILITY_BATTERY] = 0, - [ABILITY_BATTLE_ARMOR] = 2, - [ABILITY_BATTLE_BOND] = 6, - [ABILITY_BEAST_BOOST] = 7, - [ABILITY_BERSERK] = 5, - [ABILITY_BIG_PECKS] = 1, - [ABILITY_BLAZE] = 5, - [ABILITY_BULLETPROOF] = 7, - [ABILITY_CHEEK_POUCH] = 4, - [ABILITY_CHLOROPHYLL] = 6, - [ABILITY_CLEAR_BODY] = 4, - [ABILITY_CLOUD_NINE] = 5, - [ABILITY_COLOR_CHANGE] = 2, - [ABILITY_COMATOSE] = 6, - [ABILITY_COMPETITIVE] = 5, - [ABILITY_COMPOUND_EYES] = 7, - [ABILITY_CONTRARY] = 8, - [ABILITY_CORROSION] = 5, - [ABILITY_CURSED_BODY] = 4, - [ABILITY_CUTE_CHARM] = 2, - [ABILITY_DAMP] = 2, - [ABILITY_DANCER] = 5, - [ABILITY_DARK_AURA] = 6, - [ABILITY_DAZZLING] = 5, - [ABILITY_DEFEATIST] = -1, - [ABILITY_DEFIANT] = 5, - [ABILITY_DELTA_STREAM] = 10, - [ABILITY_DESOLATE_LAND] = 10, - [ABILITY_DISGUISE] = 8, - [ABILITY_DOWNLOAD] = 7, - [ABILITY_DRIZZLE] = 9, - [ABILITY_DROUGHT] = 9, - [ABILITY_DRY_SKIN] = 6, - [ABILITY_EARLY_BIRD] = 4, - [ABILITY_EFFECT_SPORE] = 4, - [ABILITY_ELECTRIC_SURGE] = 8, - [ABILITY_EMERGENCY_EXIT] = 3, - [ABILITY_FAIRY_AURA] = 6, - [ABILITY_FILTER] = 6, - [ABILITY_FLAME_BODY] = 4, - [ABILITY_FLARE_BOOST] = 5, - [ABILITY_FLASH_FIRE] = 6, - [ABILITY_FLOWER_GIFT] = 4, - [ABILITY_FLOWER_VEIL] = 0, - [ABILITY_FLUFFY] = 5, - [ABILITY_FORECAST] = 6, - [ABILITY_FOREWARN] = 2, - [ABILITY_FRIEND_GUARD] = 0, - [ABILITY_FRISK] = 3, - [ABILITY_FULL_METAL_BODY] = 4, - [ABILITY_FUR_COAT] = 7, - [ABILITY_GALE_WINGS] = 6, - [ABILITY_GALVANIZE] = 8, - [ABILITY_GLUTTONY] = 3, - [ABILITY_GOOEY] = 5, - [ABILITY_GRASS_PELT] = 2, - [ABILITY_GRASSY_SURGE] = 8, - [ABILITY_GUTS] = 6, - [ABILITY_HARVEST] = 5, - [ABILITY_HEALER] = 0, - [ABILITY_HEATPROOF] = 5, - [ABILITY_HEAVY_METAL] = -1, - [ABILITY_HONEY_GATHER] = 0, - [ABILITY_HUGE_POWER] = 10, - [ABILITY_HUSTLE] = 7, - [ABILITY_HYDRATION] = 4, - [ABILITY_HYPER_CUTTER] = 3, - [ABILITY_ICE_BODY] = 3, - [ABILITY_ILLUMINATE] = 0, - [ABILITY_ILLUSION] = 8, - [ABILITY_IMMUNITY] = 4, - [ABILITY_IMPOSTER] = 9, - [ABILITY_INFILTRATOR] = 6, - [ABILITY_INNARDS_OUT] = 5, - [ABILITY_INNER_FOCUS] = 2, - [ABILITY_INSOMNIA] = 4, - [ABILITY_INTIMIDATE] = 7, - [ABILITY_IRON_BARBS] = 6, - [ABILITY_IRON_FIST] = 6, - [ABILITY_JUSTIFIED] = 4, - [ABILITY_KEEN_EYE] = 1, - [ABILITY_KLUTZ] = -1, - [ABILITY_LEAF_GUARD] = 2, - [ABILITY_LEVITATE] = 7, - [ABILITY_LIGHT_METAL] = 2, - [ABILITY_LIGHTNING_ROD] = 7, - [ABILITY_LIMBER] = 3, - [ABILITY_LIQUID_OOZE] = 3, - [ABILITY_LIQUID_VOICE] = 5, - [ABILITY_LONG_REACH] = 3, - [ABILITY_MAGIC_BOUNCE] = 9, - [ABILITY_MAGIC_GUARD] = 9, - [ABILITY_MAGICIAN] = 3, - [ABILITY_MAGMA_ARMOR] = 1, - [ABILITY_MAGNET_PULL] = 9, - [ABILITY_MARVEL_SCALE] = 5, - [ABILITY_MEGA_LAUNCHER] = 7, - [ABILITY_MERCILESS] = 4, - [ABILITY_MINUS] = 0, - [ABILITY_MISTY_SURGE] = 8, - [ABILITY_MOLD_BREAKER] = 7, - [ABILITY_MOODY] = 10, - [ABILITY_MOTOR_DRIVE] = 6, - [ABILITY_MOXIE] = 7, - [ABILITY_MULTISCALE] = 8, - [ABILITY_MULTITYPE] = 8, - [ABILITY_MUMMY] = 5, - [ABILITY_NATURAL_CURE] = 7, - [ABILITY_NEUROFORCE] = 6, - [ABILITY_NO_GUARD] = 8, - [ABILITY_NORMALIZE] = -1, - [ABILITY_OBLIVIOUS] = 2, - [ABILITY_OVERCOAT] = 5, - [ABILITY_OVERGROW] = 5, - [ABILITY_OWN_TEMPO] = 3, - [ABILITY_PARENTAL_BOND] = 10, - [ABILITY_PICKUP] = 1, - [ABILITY_PICKPOCKET] = 3, - [ABILITY_PIXILATE] = 8, - [ABILITY_PLUS] = 0, - [ABILITY_POISON_HEAL] = 8, - [ABILITY_POISON_POINT] = 4, - [ABILITY_POISON_TOUCH] = 4, - [ABILITY_POWER_CONSTRUCT] = 10, - [ABILITY_POWER_OF_ALCHEMY] = 0, - [ABILITY_PRANKSTER] = 8, - [ABILITY_PRESSURE] = 5, - [ABILITY_PRIMORDIAL_SEA] = 10, - [ABILITY_PRISM_ARMOR] = 6, - [ABILITY_PROTEAN] = 8, - [ABILITY_PSYCHIC_SURGE] = 8, - [ABILITY_PURE_POWER] = 10, - [ABILITY_QUEENLY_MAJESTY] = 6, - [ABILITY_QUICK_FEET] = 5, - [ABILITY_RAIN_DISH] = 3, - [ABILITY_RATTLED] = 3, - [ABILITY_RECEIVER] = 0, - [ABILITY_RECKLESS] = 6, - [ABILITY_REFRIGERATE] = 8, - [ABILITY_REGENERATOR] = 8, - [ABILITY_RIVALRY] = 1, - [ABILITY_RKS_SYSTEM] = 8, - [ABILITY_ROCK_HEAD] = 5, - [ABILITY_ROUGH_SKIN] = 6, - [ABILITY_RUN_AWAY] = 0, - [ABILITY_SAND_FORCE] = 4, - [ABILITY_SAND_RUSH] = 6, - [ABILITY_SAND_STREAM] = 9, - [ABILITY_SAND_VEIL] = 3, - [ABILITY_SAP_SIPPER] = 7, - [ABILITY_SCHOOLING] = 6, - [ABILITY_SCRAPPY] = 6, - [ABILITY_SERENE_GRACE] = 8, - [ABILITY_SHADOW_SHIELD] = 8, - [ABILITY_SHADOW_TAG] = 10, - [ABILITY_SHED_SKIN] = 7, - [ABILITY_SHEER_FORCE] = 8, - [ABILITY_SHELL_ARMOR] = 2, - [ABILITY_SHIELD_DUST] = 5, - [ABILITY_SHIELDS_DOWN] = 6, - [ABILITY_SIMPLE] = 8, - [ABILITY_SKILL_LINK] = 7, - [ABILITY_SLOW_START] = -2, - [ABILITY_SLUSH_RUSH] = 5, - [ABILITY_SNIPER] = 3, - [ABILITY_SNOW_CLOAK] = 3, - [ABILITY_SNOW_WARNING] = 8, - [ABILITY_SOLAR_POWER] = 3, - [ABILITY_SOLID_ROCK] = 6, - [ABILITY_SOUL_HEART] = 7, - [ABILITY_SOUNDPROOF] = 4, - [ABILITY_SPEED_BOOST] = 9, - [ABILITY_STAKEOUT] = 6, - [ABILITY_STALL] = -1, - [ABILITY_STAMINA] = 6, - [ABILITY_STANCE_CHANGE] = 10, - [ABILITY_STATIC] = 4, - [ABILITY_STEADFAST] = 2, - [ABILITY_STEELWORKER] = 6, - [ABILITY_STENCH] = 1, - [ABILITY_STICKY_HOLD] = 3, - [ABILITY_STORM_DRAIN] = 7, - [ABILITY_STRONG_JAW] = 6, - [ABILITY_STURDY] = 6, - [ABILITY_SUCTION_CUPS] = 2, - [ABILITY_SUPER_LUCK] = 3, - [ABILITY_SURGE_SURFER] = 4, - [ABILITY_SWARM] = 5, - [ABILITY_SWEET_VEIL] = 4, - [ABILITY_SWIFT_SWIM] = 6, - [ABILITY_SYMBIOSIS] = 0, - [ABILITY_SYNCHRONIZE] = 4, - [ABILITY_TANGLED_FEET] = 2, - [ABILITY_TANGLING_HAIR] = 5, - [ABILITY_TECHNICIAN] = 8, - [ABILITY_TELEPATHY] = 0, - [ABILITY_TERAVOLT] = 7, - [ABILITY_THICK_FAT] = 7, - [ABILITY_TINTED_LENS] = 7, - [ABILITY_TORRENT] = 5, - [ABILITY_TOXIC_BOOST] = 6, - [ABILITY_TOUGH_CLAWS] = 7, - [ABILITY_TRACE] = 6, - [ABILITY_TRIAGE] = 7, - [ABILITY_TRUANT] = -2, - [ABILITY_TURBOBLAZE] = 7, - [ABILITY_UNAWARE] = 6, - [ABILITY_UNBURDEN] = 7, - [ABILITY_UNNERVE] = 3, - [ABILITY_VICTORY_STAR] = 6, - [ABILITY_VITAL_SPIRIT] = 4, - [ABILITY_VOLT_ABSORB] = 7, - [ABILITY_WATER_ABSORB] = 7, - [ABILITY_WATER_BUBBLE] = 8, - [ABILITY_WATER_COMPACTION] = 4, - [ABILITY_WATER_VEIL] = 4, - [ABILITY_WEAK_ARMOR] = 2, - [ABILITY_WHITE_SMOKE] = 4, - [ABILITY_WIMP_OUT] = 3, - [ABILITY_WONDER_GUARD] = 10, - [ABILITY_WONDER_SKIN] = 4, - [ABILITY_ZEN_MODE] = -1, - [ABILITY_INTREPID_SWORD] = 3, - [ABILITY_DAUNTLESS_SHIELD] = 3, - [ABILITY_BALL_FETCH] = 0, - [ABILITY_COTTON_DOWN] = 3, - [ABILITY_MIRROR_ARMOR] = 6, - [ABILITY_GULP_MISSILE] = 3, - [ABILITY_STALWART] = 2, - [ABILITY_PROPELLER_TAIL] = 2, - [ABILITY_STEAM_ENGINE] = 3, - [ABILITY_PUNK_ROCK] = 2, - [ABILITY_SAND_SPIT] = 5, - [ABILITY_ICE_SCALES] = 7, - [ABILITY_RIPEN] = 4, - [ABILITY_ICE_FACE] = 4, - [ABILITY_POWER_SPOT] = 2, - [ABILITY_MIMICRY] = 2, - [ABILITY_SCREEN_CLEANER] = 3, - [ABILITY_NEUTRALIZING_GAS] = 5, - [ABILITY_HUNGER_SWITCH] = 2, - [ABILITY_PASTEL_VEIL] = 4, - [ABILITY_STEELY_SPIRIT] = 2, - [ABILITY_PERISH_BODY] = -1, - [ABILITY_WANDERING_SPIRIT] = 2, - [ABILITY_GORILLA_TACTICS] = 4, -}; - static const u16 sEncouragedEncoreEffects[] = { EFFECT_DREAM_EATER, @@ -363,6 +102,7 @@ static const u16 sEncouragedEncoreEffects[] = EFFECT_WATER_SPORT, EFFECT_DRAGON_DANCE, EFFECT_CAMOUFLAGE, + EFFECT_FILLET_AWAY, }; // Functions @@ -406,7 +146,7 @@ bool32 BattlerHasAi(u32 battlerId) bool32 IsAiBattlerAware(u32 battlerId) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_OMNISCIENT) + if (AI_THINKING_STRUCT->aiFlags[battlerId] & AI_FLAG_OMNISCIENT) return TRUE; return BattlerHasAi(battlerId); @@ -1297,7 +1037,7 @@ u32 AI_DecideHoldEffectForTurn(u32 battlerId) else holdEffect = GetBattlerHoldEffect(battlerId, FALSE); - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_NEGATE_UNAWARE) + if (AI_THINKING_STRUCT->aiFlags[battlerId] & AI_FLAG_NEGATE_UNAWARE) return holdEffect; if (gStatuses3[battlerId] & STATUS3_EMBARGO) @@ -1348,7 +1088,7 @@ bool32 AI_IsBattlerGrounded(u32 battlerId) bool32 DoesBattlerIgnoreAbilityChecks(u32 atkAbility, u32 move) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_NEGATE_UNAWARE) + if (AI_THINKING_STRUCT->aiFlags[sBattler_AI] & AI_FLAG_NEGATE_UNAWARE) return FALSE; // AI handicap flag: doesn't understand ability suppression concept if (IsMoldBreakerTypeAbility(atkAbility) || gBattleMoves[move].ignoresTargetAbility) @@ -1359,7 +1099,7 @@ bool32 DoesBattlerIgnoreAbilityChecks(u32 atkAbility, u32 move) static inline bool32 AI_WeatherHasEffect(struct AiLogicData *aiData) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_NEGATE_UNAWARE) + if (AI_THINKING_STRUCT->aiFlags[sBattler_AI] & AI_FLAG_NEGATE_UNAWARE) return TRUE; // AI doesn't understand weather supression (handicap) return aiData->weatherHasEffect; // weather damping abilities are announced @@ -1444,7 +1184,7 @@ bool32 IsHazardMoveEffect(u32 moveEffect) bool32 IsMoveRedirectionPrevented(u32 move, u32 atkAbility) { - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_NEGATE_UNAWARE) + if (AI_THINKING_STRUCT->aiFlags[sBattler_AI] & AI_FLAG_NEGATE_UNAWARE) return FALSE; if (move == MOVE_SKY_DROP @@ -1773,7 +1513,9 @@ u32 CountNegativeStatStages(u32 battlerId) bool32 ShouldLowerAttack(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (gBattleMons[battlerDef].statStages[STAT_ATK] > 4 @@ -1790,7 +1532,9 @@ bool32 ShouldLowerAttack(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerDefense(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (gBattleMons[battlerDef].statStages[STAT_DEF] > 4 @@ -1807,7 +1551,9 @@ bool32 ShouldLowerDefense(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerSpeed(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (!AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) @@ -1822,7 +1568,9 @@ bool32 ShouldLowerSpeed(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerSpAtk(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (gBattleMons[battlerDef].statStages[STAT_SPATK] > 4 @@ -1838,7 +1586,9 @@ bool32 ShouldLowerSpAtk(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerSpDef(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (gBattleMons[battlerDef].statStages[STAT_SPDEF] > 4 @@ -1854,7 +1604,9 @@ bool32 ShouldLowerSpDef(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (defAbility != ABILITY_CONTRARY @@ -1862,6 +1614,7 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) && defAbility != ABILITY_WHITE_SMOKE && defAbility != ABILITY_FULL_METAL_BODY && defAbility != ABILITY_KEEN_EYE + && defAbility != ABILITY_MINDS_EYE && (B_ILLUMINATE_EFFECT >= GEN_9 && defAbility != ABILITY_ILLUMINATE) && AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET) return TRUE; @@ -1870,7 +1623,9 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility) bool32 ShouldLowerEvasion(u32 battlerAtk, u32 battlerDef, u32 defAbility) { - if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) && (AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if (AI_STRIKES_FIRST(battlerAtk, battlerDef, AI_THINKING_STRUCT->moveConsidered) + && (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) + && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return FALSE; // Don't bother lowering stats if can kill enemy. if (gBattleMons[battlerDef].statStages[STAT_EVASION] > DEFAULT_STAT_STAGE @@ -2099,6 +1854,7 @@ bool32 IsAttackBoostMoveEffect(u32 effect) case EFFECT_BELLY_DRUM: case EFFECT_BULK_UP: case EFFECT_GROWTH: + case EFFECT_FILLET_AWAY: return TRUE; default: return FALSE; @@ -2532,8 +2288,8 @@ bool32 ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 move, u32 bool32 shouldSwitch; u32 battlerToSwitch; - shouldSwitch = ShouldSwitch(battlerAtk); - battlerToSwitch = *(gBattleStruct->AI_monToSwitchIntoId + battlerAtk); + shouldSwitch = ShouldSwitch(battlerAtk, FALSE); + battlerToSwitch = gBattleStruct->AI_monToSwitchIntoId[battlerAtk]; if (PartyBattlerShouldAvoidHazards(battlerAtk, battlerToSwitch)) return DONT_PIVOT; @@ -2956,7 +2712,7 @@ bool32 ShouldTrap(u32 battlerAtk, u32 battlerDef, u32 move) if (BattlerWillFaintFromSecondaryDamage(battlerDef, AI_DATA->abilities[battlerDef])) return TRUE; // battler is taking secondary damage with low HP - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_STALL) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL) { if (!CanTargetFaintAi(battlerDef, battlerAtk)) return TRUE; // attacker goes first and opponent can't kill us @@ -3456,16 +3212,11 @@ bool32 SideHasMoveCategory(u32 battlerId, u32 category) bool32 IsAbilityOfRating(u32 ability, s8 rating) { - if (sAiAbilityRatings[ability] >= rating) + if (gAbilities[ability].aiRating >= rating) return TRUE; return FALSE; } -s8 GetAbilityRating(u32 ability) -{ - return sAiAbilityRatings[ability]; -} - static const u16 sRecycleEncouragedItems[] = { ITEM_CHESTO_BERRY, @@ -3540,7 +3291,7 @@ void IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score) if (AI_DATA->hpPercents[battlerAtk] < 80 && AI_RandLessThan(128)) return; - if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; // Damaging moves would get a score boost from AI_TryToFaint or PreferStrongestMove so we don't consider them here switch (statId) @@ -3614,8 +3365,8 @@ void IncreaseStatUpScore(u32 battlerAtk, u32 battlerDef, u32 statId, s32 *score) void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PSN || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PSN || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; if (AI_CanPoison(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove) && AI_DATA->hpPercents[battlerDef] > 20) @@ -3623,7 +3374,7 @@ void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) if (!HasDamagingMove(battlerDef)) ADJUST_SCORE_PTR(2); - if (AI_THINKING_STRUCT->aiFlags & AI_FLAG_STALL && HasMoveEffect(battlerAtk, EFFECT_PROTECT)) + if (AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_STALL && HasMoveEffect(battlerAtk, EFFECT_PROTECT)) ADJUST_SCORE_PTR(1); // stall tactic if (HasMoveEffect(battlerAtk, EFFECT_VENOSHOCK) @@ -3638,8 +3389,8 @@ void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_BRN || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_BRN || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; if (AI_CanBurn(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) @@ -3658,8 +3409,8 @@ void IncreaseBurnScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PAR || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_PAR || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; if (AI_CanParalyze(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) @@ -3680,8 +3431,8 @@ void IncreaseParalyzeScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_SLP || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_SLP || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; if (AI_CanPutToSleep(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], move, AI_DATA->partnerMove)) @@ -3699,8 +3450,8 @@ void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if (((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) - || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_CONFUSION || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) + if (((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_CONFUSION || AI_DATA->holdEffects[battlerDef] == HOLD_EFFECT_CURE_STATUS) return; if (AI_CanConfuse(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove) @@ -3718,7 +3469,7 @@ void IncreaseConfusionScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score void IncreaseFrostbiteScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score) { - if ((AI_THINKING_STRUCT->aiFlags & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) + if ((AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_TRY_TO_FAINT) && CanAIFaintTarget(battlerAtk, battlerDef, 0)) return; if (AI_CanGiveFrostbite(battlerAtk, battlerDef, AI_DATA->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, AI_DATA->partnerMove)) diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 54b8446703f3..abcdd44c357d 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -6577,7 +6577,7 @@ static void AnimTask_AllySwitchDataSwap(u8 taskId) SWAP(gBattleSpritesDataPtr->battlerData[battlerAtk].invisible, gBattleSpritesDataPtr->battlerData[battlerPartner].invisible, temp); SWAP(gTransformedPersonalities[battlerAtk], gTransformedPersonalities[battlerPartner], temp); - SWAP(gTransformedOtIds[battlerAtk], gTransformedOtIds[battlerPartner], temp); + SWAP(gTransformedShininess[battlerAtk], gTransformedShininess[battlerPartner], temp); SWAP(gStatuses3[battlerAtk], gStatuses3[battlerPartner], temp); SWAP(gStatuses4[battlerAtk], gStatuses4[battlerPartner], temp); SWAP(gBattleStruct->chosenMovePositions[battlerAtk], gBattleStruct->chosenMovePositions[battlerPartner], temp); diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 2c8572cc8ca2..26fb3ef2ec2d 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -3255,9 +3255,8 @@ static void AnimReversalOrb_Step(struct Sprite *sprite) // Copies the target mon's sprite, and makes a white silhouette that shrinks away. void AnimTask_RolePlaySilhouette(u8 taskId) { - bool8 isBackPic; + bool8 isBackPic, isShiny; u32 personality; - u32 otId; u16 species; s16 xOffset; u32 priority; @@ -3269,7 +3268,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) { isBackPic = TRUE; personality = gContestResources->moveAnim->targetPersonality; - otId = gContestResources->moveAnim->otId; + isShiny = gContestResources->moveAnim->targetIsShiny; species = gContestResources->moveAnim->targetSpecies; xOffset = 20; priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); @@ -3280,7 +3279,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) { isBackPic = FALSE; personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); - otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); + isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) { if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) @@ -3300,7 +3299,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) { isBackPic = TRUE; personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_OT_ID); + isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimTarget]], MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimTarget].transformSpecies == SPECIES_NONE) { if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) @@ -3320,7 +3319,7 @@ void AnimTask_RolePlaySilhouette(u8 taskId) coord1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); coord2 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); - spriteId = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, otId, gBattleAnimTarget); + spriteId = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, coord1 + xOffset, coord2, 5, personality, isShiny, gBattleAnimTarget); gSprites[spriteId].oam.priority = priority; gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND; @@ -5162,10 +5161,9 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) { u8 spriteId, spriteId2; int personality; - int otId; u16 species; u8 subpriority; - bool8 isBackPic; + bool8 isBackPic, isShiny; s16 x; switch (gTasks[taskId].data[0]) @@ -5190,7 +5188,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) if (IsContest()) { personality = gContestResources->moveAnim->personality; - otId = gContestResources->moveAnim->otId; + isShiny = gContestResources->moveAnim->isShiny; species = gContestResources->moveAnim->species; subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); isBackPic = FALSE; @@ -5201,7 +5199,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { personality = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); - otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID); + isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); else @@ -5214,7 +5212,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) else { personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_OT_ID); + isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies == SPECIES_NONE) species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); else @@ -5226,7 +5224,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } - spriteId2 = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, otId, gBattleAnimAttacker); + spriteId2 = CreateAdditionalMonSpriteForMoveAnim(species, isBackPic, 0, x, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y), subpriority, personality, isShiny, gBattleAnimAttacker); if (gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies != SPECIES_NONE) BlendPalette(OBJ_PLTT_ID(gSprites[spriteId2].oam.paletteNum), 16, 6, RGB_WHITE); diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 5f52d6cd675a..7caac0a869c7 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -543,7 +543,7 @@ static void SlideMonToOriginalPos_Step(struct Sprite *sprite) } // Linearly translates a mon to a target offset. The horizontal offset -// is mirrored for the opponent's pokemon, and the vertical offset +// is mirrored for the opponent's Pokémon, and the vertical offset // is only mirrored if arg 3 is set to 1. // arg 0: 0 = attacker, 1 = target // arg 1: target x pixel offset diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index e7c976070323..1f3166db53a5 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -52,7 +52,7 @@ const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] = }, }; -// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch) +// Placeholders for Pokémon sprites to be created for a move animation effect (e.g. Role Play / Snatch) #define TAG_MOVE_EFFECT_MON_1 55125 #define TAG_MOVE_EFFECT_MON_2 55126 @@ -2052,8 +2052,8 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId) return 1; } -// Create pokemon sprite to be used for a move animation effect (e.g. Role Play / Snatch) -u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId) +// Create Pokémon sprite to be used for a move animation effect (e.g. Role Play / Snatch) +u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battlerId) { u8 spriteId; u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]); @@ -2063,7 +2063,10 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 gMonSpritesGfxPtr->buffer = AllocZeroed(MON_PIC_SIZE * MAX_MON_PIC_FRAMES); if (!isBackpic) { - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP, personality); + if(!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, @@ -2071,7 +2074,10 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 } else { - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP, personality); + if(!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(palette), PLTT_SIZE_4BPP); LoadSpecialPokePic(gMonSpritesGfxPtr->buffer, species, personality, diff --git a/src/battle_anim_throw.c b/src/battle_anim_throw.c index 4d2873a92afa..6a23807a133a 100644 --- a/src/battle_anim_throw.c +++ b/src/battle_anim_throw.c @@ -2481,26 +2481,17 @@ void AnimTask_SetTargetToEffectBattler(u8 taskId) void TryShinyAnimation(u8 battler, struct Pokemon *mon) { bool8 isShiny; - u32 otId, personality; - u32 shinyValue; u8 taskCirc, taskDgnl; struct Pokemon* illusionMon; - isShiny = FALSE; + isShiny = GetMonData(mon, MON_DATA_IS_SHINY); gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim = TRUE; illusionMon = GetIllusionMonPtr(battler); if (illusionMon != NULL) mon = illusionMon; - otId = GetMonData(mon, MON_DATA_OT_ID); - personality = GetMonData(mon, MON_DATA_PERSONALITY); - if (IsBattlerSpriteVisible(battler) && IsValidForBattle(mon)) { - shinyValue = GET_SHINY_VALUE(otId, personality); - if (shinyValue < SHINY_ODDS) - isShiny = TRUE; - if (isShiny) { if (GetSpriteTileStartByTag(ANIM_TAG_GOLD_STARS) == 0xFFFF) diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 3a3cb7e8ce33..c9197bc5dfd3 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -28,6 +28,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "recorded_battle.h" +#include "random.h" static void LinkOpponentHandleLoadMonSprite(u32 battler); static void LinkOpponentHandleSwitchInAnim(u32 battler); @@ -462,7 +463,7 @@ static void LinkOpponentHandleDrawTrainerPic(u32 battler) } BtlController_HandleDrawTrainerPic(battler, trainerPicId, TRUE, - xPos, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicId].size), + xPos, 40 + 4 * (8 - gTrainerSprites[trainerPicId].y_offset), -1); } diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 4b8daeb1e1fd..e5fb49bebf65 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -28,6 +28,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "recorded_battle.h" +#include "random.h" static void LinkPartnerHandleLoadMonSprite(u32 battler); static void LinkPartnerHandleSwitchInAnim(u32 battler); @@ -234,7 +235,7 @@ static void LinkPartnerHandleDrawTrainerPic(u32 battler) trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler)); BtlController_HandleDrawTrainerPic(battler, trainerPicId, FALSE, - xPos, 80 + 4 * (8 - gTrainerBackPicCoords[trainerPicId].size), + xPos, 80 + 4 * (8 - gTrainerBacksprites[trainerPicId].coordinates.size), -1); } @@ -261,7 +262,7 @@ static void LinkPartnerHandleHealthBarUpdate(u32 battler) static void LinkPartnerHandleIntroTrainerBallThrow(u32 battler) { u32 trainerPicId = LinkPlayerGetTrainerPicId(GetBattlerMultiplayerId(battler)); - const u32 *trainerPal = gTrainerBackPicPaletteTable[trainerPicId].data; + const u32 *trainerPal = gTrainerBacksprites[trainerPicId].palette.data; // Link partner uses the same intro sequence as the player partner. BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Controller_PlayerPartnerShowIntroHealthbox); } diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 6b09f0d41fa7..7ffcd5ae2c7d 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -485,7 +485,7 @@ static void OpponentHandleDrawTrainerPic(u32 battler) } BtlController_HandleDrawTrainerPic(battler, trainerPicId, TRUE, - xPos, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicId].size), + xPos, 40 + 4 * (8 - gTrainerSprites[trainerPicId].y_offset), -1); } @@ -679,7 +679,7 @@ static void OpponentHandleChoosePokemon(u32 battler) if (IsValidForBattle(&gEnemyParty[chosenMonId]) && chosenMonId != gBattlerPartyIndexes[battler1] && chosenMonId != gBattlerPartyIndexes[battler2] - && (!(AI_THINKING_STRUCT->aiFlags & AI_FLAG_ACE_POKEMON) + && (!(AI_THINKING_STRUCT->aiFlags[battler] & AI_FLAG_ACE_POKEMON) || chosenMonId != CalculateEnemyPartyCount() - 1 || CountAIAliveNonEggMonsExcept(PARTY_SIZE) == pokemonInBattle)) { diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index b6592db67385..ba16ef2dbbba 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1280,12 +1280,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler) bool32 bgmRestored = FALSE; bool32 battlerAnimsDone = FALSE; - // Start shiny animation if applicable for 1st pokemon + // Start shiny animation if applicable for 1st Pokémon if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive) TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]); - // Start shiny animation if applicable for 2nd pokemon + // Start shiny animation if applicable for 2nd Pokémon if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive) TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]); @@ -1731,7 +1731,7 @@ static void MoveSelectionDisplayMoveType(u32 battler) { u8 *txtPtr; u8 type; - u32 itemId; + u32 speciesId; struct Pokemon *mon; struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]); @@ -1743,10 +1743,12 @@ static void MoveSelectionDisplayMoveType(u32 battler) if (moveInfo->moves[gMoveSelectionCursor[battler]] == MOVE_IVY_CUDGEL) { mon = &GetSideParty(GetBattlerSide(battler))[gBattlerPartyIndexes[battler]]; - itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + speciesId = GetMonData(mon, MON_DATA_SPECIES); - if (ItemId_GetHoldEffect(itemId) == HOLD_EFFECT_MASK) - type = ItemId_GetSecondaryId(itemId); + if (speciesId == SPECIES_OGERPON_WELLSPRING_MASK || speciesId == SPECIES_OGERPON_WELLSPRING_MASK_TERA + || speciesId == SPECIES_OGERPON_HEARTHFLAME_MASK || speciesId == SPECIES_OGERPON_HEARTHFLAME_MASK_TERA + || speciesId == SPECIES_OGERPON_CORNERSTONE_MASK || speciesId == SPECIES_OGERPON_CORNERSTONE_MASK_TERA) + type = gBattleMons[battler].type2; else type = gBattleMoves[MOVE_IVY_CUDGEL].type; } @@ -1880,18 +1882,18 @@ static void PlayerHandleDrawTrainerPic(u32 battler) if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId < TRAINER_PARTNER(PARTNER_NONE)) { xPos = 90; - yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80; } else { - yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80; } } else { xPos = 80; - yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80; } // Use front pic table for any tag battles unless your partner is Steven or a custom partner. @@ -2234,7 +2236,7 @@ static void PlayerHandleOneReturnValue_Duplicate(u32 battler) static void PlayerHandleIntroTrainerBallThrow(u32 battler) { - const u32 *trainerPal = gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data; + const u32 *trainerPal = gTrainerBacksprites[gSaveBlock2Ptr->playerGender].palette.data; BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox); } diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 8f989c677d7b..62941c92af49 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -301,19 +301,19 @@ static void PlayerPartnerHandleDrawTrainerPic(u32 battler) { trainerPicId = gBattlePartners[gPartnerTrainerId - TRAINER_PARTNER(PARTNER_NONE)].trainerPic; xPos = 90; - yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80; } else if (IsAiVsAiBattle()) { trainerPicId = gTrainers[gPartnerTrainerId].trainerPic; xPos = 60; - yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80; } else { trainerPicId = GetFrontierTrainerFrontSpriteId(gPartnerTrainerId); xPos = 32; - yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80; } // Use back pic only if the partner Steven or is custom. @@ -435,11 +435,11 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(u32 battler) const u32 *trainerPal; if (gPartnerTrainerId > TRAINER_PARTNER(PARTNER_NONE)) - trainerPal = gTrainerBackPicPaletteTable[gPartnerSpriteId].data; + trainerPal = gTrainerBacksprites[gPartnerSpriteId].palette.data; else if (IsAiVsAiBattle()) - trainerPal = gTrainerFrontPicPaletteTable[gTrainers[gPartnerTrainerId].trainerPic].data; + trainerPal = gTrainerSprites[gTrainers[gPartnerTrainerId].trainerPic].palette.data; else - trainerPal = gTrainerFrontPicPaletteTable[GetFrontierTrainerFrontSpriteId(gPartnerTrainerId)].data; // 2 vs 2 multi battle in Battle Frontier, load front sprite and pal. + trainerPal = gTrainerSprites[GetFrontierTrainerFrontSpriteId(gPartnerTrainerId)].palette.data; // 2 vs 2 multi battle in Battle Frontier, load front sprite and pal. BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Controller_PlayerPartnerShowIntroHealthbox); } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 58ef101ec99a..36caa14c1433 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -421,7 +421,7 @@ static void RecordedOpponentHandleDrawTrainerPic(u32 battler) } BtlController_HandleDrawTrainerPic(battler, trainerPicId, TRUE, - xPos, 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicId].size), + xPos, 40 + 4 * (8 - gTrainerSprites[trainerPicId].y_offset), -1); } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 39e869867efc..b8322b3eaf64 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -393,18 +393,18 @@ static void RecordedPlayerHandleDrawTrainerPic(u32 battler) if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) { xPos = 90; - yPos = (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 80; } else { - yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80; } } else { xPos = 80; - yPos = (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80; + yPos = (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80; } if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) @@ -517,7 +517,7 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(u32 battler) else trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN; - trainerPal = gTrainerFrontPicPaletteTable[trainerPicId].data; + trainerPal = gTrainerSprites[trainerPicId].palette.data; BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F9, trainerPal, 24, Intro_TryShinyAnimShowHealthbox); } diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index b5a64c286b8e..39fbc63ab6d2 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -249,7 +249,7 @@ static void SafariHandleDrawTrainerPic(u32 battler) u32 trainerPicId = gSaveBlock2Ptr->playerGender + TRAINER_BACK_PIC_BRENDAN; BtlController_HandleDrawTrainerPic(battler, trainerPicId, FALSE, - 80, 80 + 4 * (8 - gTrainerBackPicCoords[trainerPicId].size), + 80, 80 + 4 * (8 - gTrainerBacksprites[trainerPicId].coordinates.size), 30); } diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index a262886f4614..7b0bb6f154f4 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -297,7 +297,7 @@ static void WallyBufferExecCompleted(u32 battler) static void WallyHandleDrawTrainerPic(u32 battler) { BtlController_HandleDrawTrainerPic(battler, TRAINER_BACK_PIC_WALLY, FALSE, - 80, 80 + 4 * (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size), + 80, 80 + 4 * (8 - gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].coordinates.size), 30); } @@ -420,7 +420,7 @@ static void WallyHandleFaintingCry(u32 battler) static void WallyHandleIntroTrainerBallThrow(u32 battler) { - const u32 *trainerPal = gTrainerBackPicPaletteTable[TRAINER_BACK_PIC_WALLY].data; + const u32 *trainerPal = gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].palette.data; BtlController_HandleIntroTrainerBallThrow(battler, 0xD6F8, trainerPal, 31, Intro_TryShinyAnimShowHealthbox); } diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 5af9bca97000..64c9d1388bd9 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -2481,7 +2481,7 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is yPos, subpriority); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); gSprites[gBattlerSpriteIds[battler]].x2 = -DISPLAY_WIDTH; gSprites[gBattlerSpriteIds[battler]].sSpeedX = 2; gSprites[gBattlerSpriteIds[battler]].oam.affineParam = trainerPicId; @@ -2499,7 +2499,7 @@ void BtlController_HandleDrawTrainerPic(u32 battler, u32 trainerPicId, bool32 is yPos, subpriority); - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); gSprites[gBattlerSpriteIds[battler]].oam.affineMode = ST_OAM_AFFINE_OFF; gSprites[gBattlerSpriteIds[battler]].hFlip = 1; gSprites[gBattlerSpriteIds[battler]].y2 = 48; @@ -2533,7 +2533,7 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId) SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 80, - (8 - gTrainerBackPicCoords[trainerPicId].size) * 4 + 80, + (8 - gTrainerBacksprites[trainerPicId].coordinates.size) * 4 + 80, 30); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].x2 = -96; @@ -2545,10 +2545,10 @@ void BtlController_HandleTrainerSlide(u32 battler, u32 trainerPicId) SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(battler)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 176, - (8 - gTrainerFrontPicCoords[trainerPicId].size) * 4 + 40, + (8 - gTrainerSprites[trainerPicId].y_offset) * 4 + 40, 30); gSprites[gBattlerSpriteIds[battler]].oam.affineParam = trainerPicId; - gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag); + gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerSprites[trainerPicId].palette.tag); gSprites[gBattlerSpriteIds[battler]].x2 = 96; gSprites[gBattlerSpriteIds[battler]].x += 32; gSprites[gBattlerSpriteIds[battler]].sSpeedX = -2; @@ -2650,7 +2650,7 @@ void BtlController_HandleMoveAnimation(u32 battler, bool32 updateTvData) gWeatherMoveAnim = gBattleResources->bufferA[battler][12] | (gBattleResources->bufferA[battler][13] << 8); gAnimDisableStructPtr = (struct DisableStruct *)&gBattleResources->bufferA[battler][16]; gTransformedPersonalities[battler] = gAnimDisableStructPtr->transformedMonPersonality; - gTransformedOtIds[battler] = gAnimDisableStructPtr->transformedMonOtId; + gTransformedShininess[battler] = gAnimDisableStructPtr->transformedMonShininess; gBattleSpritesDataPtr->healthBoxesData[battler].animationState = 0; gBattlerControllerFuncs[battler] = Controller_DoMoveAnimation; if (updateTvData) diff --git a/src/battle_debug.c b/src/battle_debug.c index 3fca57e38ffd..ddbed79ddaba 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -769,6 +769,7 @@ static void Task_ShowAiPoints(u8 taskId) u32 i, count; struct WindowTemplate winTemplate; struct BattleDebugMenu *data = GetStructPtr(taskId); + struct Pokemon *mon; switch (data->aiViewState) { @@ -800,8 +801,11 @@ static void Task_ShowAiPoints(u8 taskId) data->spriteIds.aiIconSpriteIds[i] = 0xFF; } } + + mon = &GetBattlerParty(data->aiBattlerId)[gBattlerPartyIndexes[data->aiBattlerId]]; + data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species, - gBattleMons[data->aiBattlerId].otId, + GetMonData(mon, MON_DATA_IS_SHINY), gBattleMons[data->aiBattlerId].personality, TRUE, 39, 130, 15, TAG_NONE); @@ -864,7 +868,7 @@ static void PutAiInfoText(struct BattleDebugMenu *data) u16 holdEffect = AI_DATA->holdEffects[i]; u16 item = AI_DATA->items[i]; u8 x = (i == B_POSITION_PLAYER_LEFT) ? 83 + (i) * 75 : 83 + (i-1) * 75; - AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, gAbilityNames[ability], x, 0, 0, NULL); + AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, gAbilities[ability].name, x, 0, 0, NULL); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, ItemId_GetName(item), x, 15, 0, NULL); AddTextPrinterParameterized(data->aiMovesWindowId, FONT_SMALL, GetHoldEffectName(holdEffect), x, 30, 0, NULL); } @@ -897,7 +901,7 @@ static void PutAiPartyText(struct BattleDebugMenu *data) 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 = StringCopyN(text, gAbilities[aiMons[i].ability].name, 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); @@ -926,6 +930,7 @@ static void Task_ShowAiKnowledge(u8 taskId) u32 i, count; struct WindowTemplate winTemplate; struct BattleDebugMenu *data = GetStructPtr(taskId); + struct Pokemon *mon; switch (data->aiViewState) { @@ -957,8 +962,11 @@ static void Task_ShowAiKnowledge(u8 taskId) data->spriteIds.aiIconSpriteIds[i] = 0xFF; } } + + mon = &GetBattlerParty(data->aiBattlerId)[gBattlerPartyIndexes[data->aiBattlerId]]; + data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species, - gBattleMons[data->aiBattlerId].otId, + GetMonData(mon, MON_DATA_IS_SHINY), gBattleMons[data->aiBattlerId].personality, TRUE, 39, 130, 15, TAG_NONE); @@ -1433,7 +1441,7 @@ static void PrintSecondaryEntries(struct BattleDebugMenu *data) } break; case LIST_ITEM_ABILITY: - PadString(gAbilityNames[gBattleMons[data->battlerId].ability], text); + PadString(gAbilities[gBattleMons[data->battlerId].ability].name, text); printer.currentY = printer.y = sSecondaryListTemplate.upText_Y; AddTextPrinter(&printer, 0, NULL); break; @@ -1901,8 +1909,8 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data) data->modifyArrows.typeOfVal = VAL_BITFIELD_32; goto CASE_ITEM_STATUS; case LIST_ITEM_AI: - data->modifyArrows.modifiedValPtr = &gBattleResources->ai->aiFlags; - data->modifyArrows.currValue = GetBitfieldValue(gBattleResources->ai->aiFlags, data->bitfield[data->currentSecondaryListItemId].currBit, data->bitfield[data->currentSecondaryListItemId].bitsCount); + data->modifyArrows.modifiedValPtr = &gBattleResources->ai->aiFlags[data->battlerId]; + data->modifyArrows.currValue = GetBitfieldValue(gBattleResources->ai->aiFlags[data->battlerId], data->bitfield[data->currentSecondaryListItemId].currBit, data->bitfield[data->currentSecondaryListItemId].bitsCount); data->modifyArrows.typeOfVal = VAL_BITFIELD_32; goto CASE_ITEM_STATUS; CASE_ITEM_STATUS: diff --git a/src/battle_dome.c b/src/battle_dome.c index 48d70c848dcc..c0395b7e35c6 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -2224,7 +2224,7 @@ static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tou #ifdef BUGFIX u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId); #else - u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokemon have ivs of 3. + u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokémon have ivs of 3. #endif u8 level = SetFacilityPtrsGetLevel(); CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId], @@ -2286,13 +2286,13 @@ static void CreateDomeOpponentMons(u16 tournamentTrainerId) } } -// Returns a bitmask representing which 2 of the trainer's 3 pokemon to select. +// Returns a bitmask representing which 2 of the trainer's 3 Pokémon to select. // The choice is calculated solely depending on the type effectiveness of their -// movesets against the player's pokemon. +// movesets against the player's Pokémon. // There is a 50% chance of either a "good" or "bad" selection mode being used. // In the good mode movesets are preferred which are more effective against the -// player, and in the bad mode the opposite is true. If all 3 pokemon tie, the -// other mode will be tried. If they tie again, the pokemon selection is random. +// player, and in the bad mode the opposite is true. If all 3 Pokémon tie, the +// other mode will be tried. If they tie again, the Pokémon selection is random. int GetDomeTrainerSelectedMons(u16 tournamentTrainerId) { int selectedMonBits; @@ -4152,6 +4152,7 @@ static bool32 IsDomeComboMoveEffect(u32 effect) case EFFECT_CHARGE: case EFFECT_BULK_UP: case EFFECT_ATTACK_ACCURACY_UP: + case EFFECT_FILLET_AWAY: // Others case EFFECT_FOCUS_ENERGY: case EFFECT_LOCK_ON: @@ -4262,8 +4263,8 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId) else j = GetFrontierOpponentClass(trainerId); - for (;gTrainerClassNames[j][i] != EOS; i++) - gStringVar1[i] = gTrainerClassNames[j][i]; + for (;gTrainerClasses[j].name[i] != EOS; i++) + gStringVar1[i] = gTrainerClasses[j].name[i]; gStringVar1[i] = CHAR_SPACE; gStringVar1[i + 1] = EOS; @@ -4746,7 +4747,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) if (lost[1]) gSprites[sInfoCard->spriteIds[1 + arrId]].oam.paletteNum = 3; - // Draw left trainer's pokemon icons. + // Draw left trainer's Pokémon icons. for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerIds[0] == TRAINER_PLAYER) @@ -4786,7 +4787,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo) } } - // Draw right trainer's pokemon icons. + // Draw right trainer's Pokémon icons. for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { if (trainerIds[1] == TRAINER_PLAYER) @@ -5137,7 +5138,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun int movePower = 0; SetFacilityPtrsGetLevel(); - // Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons. + // Calc move points of all 4 moves for all 3 Pokémon hitting all 3 target mons. for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { for (j = 0; j < MAX_MON_MOVES; j++) diff --git a/src/battle_dynamax.c b/src/battle_dynamax.c index a44bb3aeb903..bf223e50023d 100644 --- a/src/battle_dynamax.c +++ b/src/battle_dynamax.c @@ -149,8 +149,8 @@ bool32 CanDynamax(u16 battlerId) // Returns whether a battler is transformed into a Gigantamax form. bool32 IsGigantamaxed(u16 battlerId) { - // TODO: Incorporate Gigantamax factor. - if ((gSpeciesInfo[gBattleMons[battlerId].species].isGigantamax)) + struct Pokemon *mon = &GetSideParty(GetBattlerSide(battlerId))[gBattlerPartyIndexes[battlerId]]; + if ((gSpeciesInfo[gBattleMons[battlerId].species].isGigantamax) && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) return TRUE; return FALSE; } @@ -162,9 +162,9 @@ void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon) return; else { - u16 mult = UQ_4_12(1.5); // placeholder - u16 hp = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_HP) * mult) + UQ_4_12_ROUND); - u16 maxHP = UQ_4_12_TO_INT((GetMonData(mon, MON_DATA_MAX_HP) * mult) + UQ_4_12_ROUND); + u32 scale = 150 + 5 * GetMonData(mon, MON_DATA_DYNAMAX_LEVEL); + u32 hp = (GetMonData(mon, MON_DATA_HP) * scale + 99) / 100; + u32 maxHP = (GetMonData(mon, MON_DATA_MAX_HP) * scale + 99) / 100; SetMonData(mon, MON_DATA_HP, &hp); SetMonData(mon, MON_DATA_MAX_HP, &maxHP); } diff --git a/src/battle_factory.c b/src/battle_factory.c index 4543bfbad46e..8e3f84b359d7 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -337,7 +337,7 @@ static void GenerateOpponentMons(void) if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player + // Ensure none of the opponent's Pokémon are the same as the potential rental Pokémon for the player for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) { if (gFacilityTrainerMons[monId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) @@ -346,7 +346,7 @@ static void GenerateOpponentMons(void) if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons)) continue; - // "High tier" pokemon are only allowed on open level mode + // "High tier" Pokémon are only allowed on open level mode if (lvlMode == FRONTIER_LVL_50 && monId > FRONTIER_MONS_HIGH_TIER) continue; @@ -554,7 +554,7 @@ static void GenerateInitialRentalMons(void) i = 0; while (i != PARTY_SIZE) { - if (i < rentalRank) // The more times the player has rented, the more initial rentals are generated from a better set of pokemon + if (i < rentalRank) // The more times the player has rented, the more initial rentals are generated from a better set of Pokémon monId = GetFactoryMonId(factoryLvlMode, challengeNum, TRUE); else monId = GetFactoryMonId(factoryLvlMode, challengeNum, FALSE); @@ -562,7 +562,7 @@ static void GenerateInitialRentalMons(void) if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN) continue; - // Cannot have two pokemon of the same species. + // Cannot have two Pokémon of the same species. for (j = firstMonId; j < firstMonId + i; j++) { u16 existingMonId = monIds[j]; diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index 66ff6bcb0301..e945361f338b 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -32,15 +32,15 @@ #include "constants/songs.h" #include "constants/rgb.h" -// Select_ refers to the first Pokemon selection screen where you choose your initial 3 rental Pokemon. -// Swap_ refers to the subsequent selection screens where you can swap a Pokemon with one from the beaten trainer +// Select_ refers to the first Pokémon selection screen where you choose your initial 3 rental Pokémon. +// Swap_ refers to the subsequent selection screens where you can swap a Pokémon with one from the beaten trainer // Note that, generally, "Action" will refer to the immediate actions that can be taken on each screen, -// i.e. selecting a pokemon or selecting the Cancel button +// i.e. selecting a Pokémon or selecting the Cancel button // The "Options menu" will refer to the popup menu that shows when some actions have been selected -#define SWAP_PLAYER_SCREEN 0 // The screen where the player selects which of their pokemon to swap away -#define SWAP_ENEMY_SCREEN 1 // The screen where the player selects which new pokemon from the defeated party to swap for +#define SWAP_PLAYER_SCREEN 0 // The screen where the player selects which of their Pokémon to swap away +#define SWAP_ENEMY_SCREEN 1 // The screen where the player selects which new Pokémon from the defeated party to swap for #define SELECTABLE_MONS_COUNT 6 @@ -89,7 +89,7 @@ struct FactorySelectableMon { u16 monId; u16 ballSpriteId; - u8 selectedId; // 0 - not selected, 1 - first pokemon, 2 - second pokemon, 3 - third pokemon + u8 selectedId; // 0 - not selected, 1 - first Pokémon, 2 - second Pokémon, 3 - third Pokémon struct Pokemon monData; }; @@ -1060,7 +1060,7 @@ static void SpriteCB_Pokeball(struct Sprite *sprite) { if (sprite->oam.paletteNum == IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED)) { - // Pokeball selected, do rocking animation + // Poké Ball selected, do rocking animation if (sprite->animEnded) { if (sprite->data[0] != 0) @@ -1084,7 +1084,7 @@ static void SpriteCB_Pokeball(struct Sprite *sprite) } else { - // Pokeball not selected, remain still + // Poké Ball not selected, remain still StartSpriteAnimIfDifferent(sprite, 0); } } @@ -1521,7 +1521,7 @@ static void Select_Task_Exit(u8 taskId) } } -// Handles the Yes/No prompt when confirming the 3 selected rental pokemon +// Handles the Yes/No prompt when confirming the 3 selected rental Pokémon static void Select_Task_HandleYesNo(u8 taskId) { if (sFactorySelectScreen->monPicAnimating == TRUE) @@ -1543,14 +1543,14 @@ static void Select_Task_HandleYesNo(u8 taskId) PlaySE(SE_SELECT); if (sFactorySelectScreen->yesNoCursorPos == 0) { - // Selected Yes, confirmed selected pokemon + // Selected Yes, confirmed selected Pokémon Select_HideChosenMons(); gTasks[taskId].tState = 0; gTasks[taskId].func = Select_Task_Exit; } else { - // Selected No, continue choosing pokemon + // Selected No, continue choosing Pokémon Select_ErasePopupMenu(SELECT_WIN_YES_NO); Select_DeclineChosenMons(); sFactorySelectScreen->fadeSpeciesNameActive = TRUE; @@ -1560,7 +1560,7 @@ static void Select_Task_HandleYesNo(u8 taskId) } else if (JOY_NEW(B_BUTTON)) { - // Pressed B, Continue choosing pokemon + // Pressed B, Continue choosing Pokémon PlaySE(SE_SELECT); Select_ErasePopupMenu(SELECT_WIN_YES_NO); Select_DeclineChosenMons(); @@ -1582,7 +1582,7 @@ static void Select_Task_HandleYesNo(u8 taskId) } } -// Handles the popup menu that shows when a pokemon is selected +// Handles the popup menu that shows when a Pokémon is selected static void Select_Task_HandleMenu(u8 taskId) { switch (gTasks[taskId].tState) @@ -2017,9 +2017,9 @@ static void Select_CreateMonSprite(void) struct Pokemon *mon = &sFactorySelectScreen->mons[monId].monData; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL); + bool8 isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); - sFactorySelectScreen->monPics[1].monSpriteId = CreateMonPicSprite(species, otId, personality, TRUE, 88, 32, 15, TAG_NONE); + sFactorySelectScreen->monPics[1].monSpriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 88, 32, 15, TAG_NONE); gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecX = 0; gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecY = 0; @@ -2035,7 +2035,8 @@ static void Select_ReshowMonSprite(void) { struct Pokemon *mon; u16 species; - u32 personality, otId; + u32 personality; + bool8 isShiny; sFactorySelectScreen->monPics[1].bgSpriteId = CreateSprite(&sSpriteTemplate_Select_MonPicBgAnim, 120, 64, 1); StartSpriteAffineAnim(&gSprites[sFactorySelectScreen->monPics[1].bgSpriteId], 2); @@ -2043,9 +2044,9 @@ static void Select_ReshowMonSprite(void) mon = &sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].monData; species = GetMonData(mon, MON_DATA_SPECIES, NULL); personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - otId = GetMonData(mon, MON_DATA_OT_ID, NULL); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); - sFactorySelectScreen->monPics[1].monSpriteId = CreateMonPicSprite(species, otId, personality, TRUE, 88, 32, 15, TAG_NONE); + sFactorySelectScreen->monPics[1].monSpriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 88, 32, 15, TAG_NONE); gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecX = 0; gSprites[sFactorySelectScreen->monPics[1].monSpriteId].centerToCornerVecY = 0; @@ -2065,9 +2066,9 @@ static void Select_CreateChosenMonsSprites(void) struct Pokemon *mon = &sFactorySelectScreen->mons[j].monData; u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - u32 otId = GetMonData(mon, MON_DATA_OT_ID, NULL); + bool8 isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); - sFactorySelectScreen->monPics[i].monSpriteId = CreateMonPicSprite(species, otId, personality, TRUE, (i * 72) + 16, 32, i + 13, TAG_NONE); + sFactorySelectScreen->monPics[i].monSpriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, (i * 72) + 16, 32, i + 13, TAG_NONE); gSprites[sFactorySelectScreen->monPics[i].monSpriteId].centerToCornerVecX = 0; gSprites[sFactorySelectScreen->monPics[i].monSpriteId].centerToCornerVecY = 0; break; @@ -2415,7 +2416,7 @@ static void Swap_Task_Exit(u8 taskId) { case 0: // Set return value for script - // TRUE if player kept their current pokemon + // TRUE if player kept their current Pokémon if (sFactorySwapScreen->monSwapped == TRUE) { gTasks[taskId].tState++; @@ -2630,7 +2631,7 @@ static void Swap_Task_HandleMenu(u8 taskId) } } -// Handles input on the two main swap screens (choosing a current pokeon to get rid of, and choosing a new pokemon to receive) +// Handles input on the two main swap screens (choosing a current pokeon to get rid of, and choosing a new Pokémon to receive) static void Swap_Task_HandleChooseMons(u8 taskId) { switch (gTasks[taskId].tState) @@ -2645,7 +2646,7 @@ static void Swap_Task_HandleChooseMons(u8 taskId) case STATE_CHOOSE_MONS_HANDLE_INPUT: if (JOY_NEW(A_BUTTON)) { - // Run whatever action is currently selected (a pokeball, the Cancel button, etc.) + // Run whatever action is currently selected (a Poké Ball, the Cancel button, etc.) PlaySE(SE_SELECT); sFactorySwapScreen->fadeSpeciesNameActive = FALSE; Swap_PrintMonSpeciesAtFade(); @@ -3553,7 +3554,7 @@ static void Swap_HandleActionCursorChange(u8 cursorId) { if (cursorId < FRONTIER_PARTY_SIZE) { - // Cursor is on one of the pokemon + // Cursor is on one of the Pokémon gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE; Swap_HideActionButtonHighlights(); gSprites[sFactorySwapScreen->cursorSpriteId].x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].x; @@ -4076,7 +4077,8 @@ static void Swap_ShowSummaryMonSprite(void) { struct Pokemon *mon; u16 species; - u32 personality, otId; + u32 personality; + bool8 isShiny; sFactorySwapScreen->monPic.bgSpriteId = CreateSprite(&sSpriteTemplate_Swap_MonPicBgAnim, 120, 64, 1); StartSpriteAffineAnim(&gSprites[sFactorySwapScreen->monPic.bgSpriteId], 2); @@ -4084,13 +4086,9 @@ static void Swap_ShowSummaryMonSprite(void) mon = &gPlayerParty[sFactorySwapScreen->cursorPos]; species = GetMonData(mon, MON_DATA_SPECIES, NULL); personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - otId = GetMonData(mon, MON_DATA_OT_ID, NULL); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); -#ifdef BUGFIX - sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite(species, otId, personality, TRUE, 88, 32, 15, TAG_NONE); -#else - sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite(species, personality, otId, TRUE, 88, 32, 15, TAG_NONE); -#endif + sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 88, 32, 15, TAG_NONE); gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecX = 0; gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecY = 0; @@ -4295,7 +4293,8 @@ static void Swap_CreateMonSprite(void) { struct Pokemon *mon; u16 species; - u32 personality, otId; + u32 personality; + bool8 isShiny; if (!sFactorySwapScreen->inEnemyScreen) mon = &gPlayerParty[sFactorySwapScreen->cursorPos]; @@ -4304,9 +4303,9 @@ static void Swap_CreateMonSprite(void) species = GetMonData(mon, MON_DATA_SPECIES, NULL); personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); - otId = GetMonData(mon, MON_DATA_OT_ID, NULL); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); - sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite(species, otId, personality, TRUE, 88, 32, 15, TAG_NONE); + sFactorySwapScreen->monPic.monSpriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, 88, 32, 15, TAG_NONE); gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecX = 0; gSprites[sFactorySwapScreen->monPic.monSpriteId].centerToCornerVecY = 0; diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 8ce731a30689..32fad74618ec 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -103,7 +103,7 @@ void FreeBattleSpritesData(void) FREE_AND_SET_NULL(gBattleSpritesDataPtr); } -// Pokemon chooses move to use in Battle Palace rather than player +// Pokémon chooses move to use in Battle Palace rather than player u16 ChooseMoveAndTargetInBattlePalace(u32 battler) { s32 i, var1, var2; @@ -163,7 +163,7 @@ u16 ChooseMoveAndTargetInBattlePalace(u32 battler) chosenMoveId = BattleAI_ChooseMoveOrAction(); } - // If no moves matched the selected group, pick a new move from groups the pokemon has + // If no moves matched the selected group, pick a new move from groups the Pokémon has // In this case the AI is not checked again, so the choice may be worse // If a move is chosen this way, there's a 50% chance that it will be unable to use it anyway if (chosenMoveId == -1 || chosenMoveId >= MAX_MON_MOVES) @@ -356,7 +356,7 @@ static u16 GetBattlePalaceTarget(u32 battler) return BATTLE_OPPOSITE(battler) << 8; } -// Wait for the pokemon to finish appearing out from the pokeball on send out +// Wait for the Pokémon to finish appearing out from the Poké Ball on send out void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite) { u8 spriteId = sprite->data[1]; @@ -570,7 +570,7 @@ bool8 IsBattleSEPlaying(u8 battler) void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) { - u32 monsPersonality, currentPersonality, otId, currentOtId, species, paletteOffset, position; + u32 monsPersonality, currentPersonality, species, paletteOffset, position; const void *lzPaletteData; struct Pokemon *illusionMon = GetIllusionMonPtr(battler); bool8 isShiny; @@ -582,13 +582,12 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) return; monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY); - otId = GetMonData(mon, MON_DATA_OT_ID); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY); if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_NONE) { species = GetMonData(mon, MON_DATA_SPECIES); currentPersonality = monsPersonality; - currentOtId = otId; } else { @@ -596,12 +595,10 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) if (B_TRANSFORM_SHINY >= GEN_4) { currentPersonality = gTransformedPersonalities[battler]; - currentOtId = gTransformedOtIds[battler]; } else { currentPersonality = monsPersonality; - currentOtId = otId; } } @@ -624,10 +621,9 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_NONE) lzPaletteData = GetMonFrontSpritePal(mon); else - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, currentOtId, currentPersonality); + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, currentPersonality); LZDecompressWram(lzPaletteData, gDecompressionBuffer); - isShiny = IsShinyOtIdPersonality(currentOtId, currentPersonality); if (!isShiny) HueShiftMonPalette((u16*) gDecompressionBuffer, currentPersonality); @@ -657,23 +653,23 @@ void BattleGfxSfxDummy2(u16 species) void DecompressTrainerFrontPic(u16 frontPicId, u8 battler) { u8 position = GetBattlerPosition(battler); - DecompressPicFromTable(&gTrainerFrontPicTable[frontPicId], + DecompressPicFromTable(&gTrainerSprites[frontPicId].frontPic, gMonSpritesGfxPtr->sprites.ptr[position]); - LoadCompressedSpritePalette(&gTrainerFrontPicPaletteTable[frontPicId]); + LoadCompressedSpritePalette(&gTrainerSprites[frontPicId].palette); } void DecompressTrainerBackPic(u16 backPicId, u8 battler) { u8 position = GetBattlerPosition(battler); - DecompressPicFromTable(&gTrainerBackPicTable[backPicId], + DecompressPicFromTable(&gTrainerBacksprites[backPicId].backPic, gMonSpritesGfxPtr->sprites.ptr[position]); - LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data, + LoadCompressedPalette(gTrainerBacksprites[backPicId].palette.data, OBJ_PLTT_ID(battler), PLTT_SIZE_4BPP); } void FreeTrainerFrontPicPalette(u16 frontPicId) { - FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[frontPicId].tag); + FreeSpritePaletteByTag(gTrainerSprites[frontPicId].palette.tag); } // Unused. @@ -874,7 +870,8 @@ void CopyBattleSpriteInvisibility(u8 battler) void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bool8 trackEnemyPersonality) { - u32 personalityValue, otId, position, paletteOffset, targetSpecies; + u32 personalityValue, position, paletteOffset, targetSpecies; + bool8 isShiny; const void *lzPaletteData, *src; void *dst; @@ -883,7 +880,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo position = B_POSITION_PLAYER_LEFT; targetSpecies = gContestResources->moveAnim->targetSpecies; personalityValue = gContestResources->moveAnim->personality; - otId = gContestResources->moveAnim->otId; + isShiny = gContestResources->moveAnim->isShiny; HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[position], @@ -904,14 +901,13 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality) { personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_IS_SHINY); } else { personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_IS_SHINY); } - otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[position], @@ -923,13 +919,12 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality) { personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); - + isShiny = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_IS_SHINY); } else { personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_PERSONALITY); - otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_OT_ID); + isShiny = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerAtk]], MON_DATA_IS_SHINY); } HandleLoadSpecialPokePic(TRUE, @@ -942,10 +937,10 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo dst = (void *)(OBJ_VRAM0 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32); DmaCopy32(3, src, dst, MON_PIC_SIZE); paletteOffset = OBJ_PLTT_ID(battlerAtk); - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue); + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, isShiny, personalityValue); LZDecompressWram(lzPaletteData, gDecompressionBuffer); - if (!IsShinyOtIdPersonality(otId, personalityValue)) + if (!isShiny) HueShiftMonPalette((u16*) gDecompressionBuffer, personalityValue); LoadPalette(gDecompressionBuffer, paletteOffset, PLTT_SIZE_4BPP); diff --git a/src/battle_interface.c b/src/battle_interface.c index 7abc7a38c86f..345243e02bd2 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -3114,7 +3114,7 @@ static void PrintBattlerOnAbilityPopUp(u8 battlerId, u8 spriteId1, u8 spriteId2) static void PrintAbilityOnAbilityPopUp(u32 ability, u8 spriteId1, u8 spriteId2) { - PrintOnAbilityPopUp(gAbilityNames[ability], + PrintOnAbilityPopUp(gAbilities[ability].name, (void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32) + 256, (void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256, 5, 12, diff --git a/src/battle_main.c b/src/battle_main.c index 15501c3c1ca2..1b44a8494ee7 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -215,7 +215,7 @@ EWRAM_DATA u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gBattlerInMenuId = 0; EWRAM_DATA bool8 gDoingBattleAnim = FALSE; EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0}; -EWRAM_DATA u32 gTransformedOtIds[MAX_BATTLERS_COUNT] = {0}; +EWRAM_DATA bool8 gTransformedShininess[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gPlayerDpadHoldFrames = 0; EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL; EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL; @@ -323,94 +323,86 @@ const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1] = [TYPE_FAIRY] = _("Fairy"), }; -// This is a factor in how much money you get for beating a trainer. -const struct TrainerMoney gTrainerMoneyTable[] = -{ - {TRAINER_CLASS_TEAM_AQUA, 5}, - {TRAINER_CLASS_AQUA_ADMIN, 10}, - {TRAINER_CLASS_AQUA_LEADER, 20}, - {TRAINER_CLASS_AROMA_LADY, 10}, - {TRAINER_CLASS_RUIN_MANIAC, 15}, - {TRAINER_CLASS_INTERVIEWER, 12}, - {TRAINER_CLASS_TUBER_F, 1}, - {TRAINER_CLASS_TUBER_M, 1}, - {TRAINER_CLASS_SIS_AND_BRO, 3}, - {TRAINER_CLASS_COOLTRAINER, 12}, - {TRAINER_CLASS_HEX_MANIAC, 6}, - {TRAINER_CLASS_LADY, 50}, - {TRAINER_CLASS_BEAUTY, 20}, - {TRAINER_CLASS_RICH_BOY, 50}, - {TRAINER_CLASS_POKEMANIAC, 15}, - {TRAINER_CLASS_SWIMMER_M, 2}, - {TRAINER_CLASS_BLACK_BELT, 8}, - {TRAINER_CLASS_GUITARIST, 8}, - {TRAINER_CLASS_KINDLER, 8}, - {TRAINER_CLASS_CAMPER, 4}, - {TRAINER_CLASS_OLD_COUPLE, 10}, - {TRAINER_CLASS_BUG_MANIAC, 15}, - {TRAINER_CLASS_PSYCHIC, 6}, - {TRAINER_CLASS_GENTLEMAN, 20}, - {TRAINER_CLASS_ELITE_FOUR, 25}, - {TRAINER_CLASS_LEADER, 25}, - {TRAINER_CLASS_SCHOOL_KID, 5}, - {TRAINER_CLASS_SR_AND_JR, 4}, - {TRAINER_CLASS_POKEFAN, 20}, - {TRAINER_CLASS_EXPERT, 10}, - {TRAINER_CLASS_YOUNGSTER, 4}, - {TRAINER_CLASS_CHAMPION, 50}, - {TRAINER_CLASS_FISHERMAN, 10}, - {TRAINER_CLASS_TRIATHLETE, 10}, - {TRAINER_CLASS_DRAGON_TAMER, 12}, - {TRAINER_CLASS_BIRD_KEEPER, 8}, - {TRAINER_CLASS_NINJA_BOY, 3}, - {TRAINER_CLASS_BATTLE_GIRL, 6}, - {TRAINER_CLASS_PARASOL_LADY, 10}, - {TRAINER_CLASS_SWIMMER_F, 2}, - {TRAINER_CLASS_PICNICKER, 4}, - {TRAINER_CLASS_TWINS, 3}, - {TRAINER_CLASS_SAILOR, 8}, - {TRAINER_CLASS_COLLECTOR, 15}, - {TRAINER_CLASS_RIVAL, 15}, - {TRAINER_CLASS_PKMN_BREEDER, 10}, - {TRAINER_CLASS_PKMN_RANGER, 12}, - {TRAINER_CLASS_TEAM_MAGMA, 5}, - {TRAINER_CLASS_MAGMA_ADMIN, 10}, - {TRAINER_CLASS_MAGMA_LEADER, 20}, - {TRAINER_CLASS_LASS, 4}, - {TRAINER_CLASS_BUG_CATCHER, 4}, - {TRAINER_CLASS_HIKER, 10}, - {TRAINER_CLASS_YOUNG_COUPLE, 8}, - {TRAINER_CLASS_WINSTRATE, 10}, - {0xFF, 5}, // Any trainer class not listed above uses this -}; +#define DEFAULT_MONEY 5 +#define DEFAULT_BALL ITEM_POKE_BALL + +#define TRAINER_CLASS(trainerClass, trainerName, trainerMoney, trainerBall) \ + [TRAINER_CLASS_##trainerClass] = \ + { \ + .name = _(trainerName), \ + .money = trainerMoney, \ + .ball = trainerBall, \ + } -#if B_TRAINER_CLASS_POKE_BALLS >= GEN_7 -static const u16 sTrainerBallTable[TRAINER_CLASS_COUNT] = +const struct TrainerClass gTrainerClasses[TRAINER_CLASS_COUNT] = { -#if B_TRAINER_CLASS_POKE_BALLS == GEN_7 - [TRAINER_CLASS_PKMN_BREEDER] = ITEM_FRIEND_BALL, -#elif B_TRAINER_CLASS_POKE_BALLS == GEN_8 - [TRAINER_CLASS_PKMN_BREEDER] = ITEM_HEAL_BALL, -#endif - [TRAINER_CLASS_COOLTRAINER] = ITEM_ULTRA_BALL, - [TRAINER_CLASS_COLLECTOR] = ITEM_PREMIER_BALL, - [TRAINER_CLASS_SWIMMER_M] = ITEM_DIVE_BALL, - [TRAINER_CLASS_BLACK_BELT] = ITEM_ULTRA_BALL, - [TRAINER_CLASS_AQUA_LEADER] = ITEM_MASTER_BALL, - [TRAINER_CLASS_GENTLEMAN] = ITEM_LUXURY_BALL, - [TRAINER_CLASS_ELITE_FOUR] = ITEM_ULTRA_BALL, -#if B_TRAINER_CLASS_POKE_BALLS == GEN_7 - [TRAINER_CLASS_FISHERMAN] = ITEM_LURE_BALL, -#elif B_TRAINER_CLASS_POKE_BALLS == GEN_8 - [TRAINER_CLASS_FISHERMAN] = ITEM_DIVE_BALL, -#endif - [TRAINER_CLASS_SWIMMER_F] = ITEM_DIVE_BALL, - [TRAINER_CLASS_COOLTRAINER_2] = ITEM_ULTRA_BALL, - [TRAINER_CLASS_MAGMA_LEADER] = ITEM_MASTER_BALL, + TRAINER_CLASS(PKMN_TRAINER_1, "{PKMN} TRAINER", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(PKMN_TRAINER_2, "{PKMN} TRAINER", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(HIKER, "HIKER", 10, DEFAULT_BALL), + TRAINER_CLASS(TEAM_AQUA, "TEAM AQUA", 5, DEFAULT_BALL), + TRAINER_CLASS(PKMN_BREEDER, "{PKMN} BREEDER", 10, B_TRAINER_CLASS_POKE_BALLS >= GEN_8 ? ITEM_HEAL_BALL : ITEM_FRIEND_BALL), + TRAINER_CLASS(COOLTRAINER, "COOLTRAINER", 12, ITEM_ULTRA_BALL), + TRAINER_CLASS(BIRD_KEEPER, "BIRD KEEPER", 8, DEFAULT_BALL), + TRAINER_CLASS(COLLECTOR, "COLLECTOR", 15, ITEM_PREMIER_BALL), + TRAINER_CLASS(SWIMMER_M, "SWIMMER♂", 2, ITEM_DIVE_BALL), + TRAINER_CLASS(TEAM_MAGMA, "TEAM MAGMA", 5, DEFAULT_BALL), + TRAINER_CLASS(EXPERT, "EXPERT", 10, DEFAULT_BALL), + TRAINER_CLASS(AQUA_ADMIN, "AQUA ADMIN", 10, DEFAULT_BALL), + TRAINER_CLASS(BLACK_BELT, "BLACK BELT", 8, ITEM_ULTRA_BALL), + TRAINER_CLASS(AQUA_LEADER, "AQUA LEADER", 20, ITEM_MASTER_BALL), + TRAINER_CLASS(HEX_MANIAC, "HEX MANIAC", 6, DEFAULT_BALL), + TRAINER_CLASS(AROMA_LADY, "AROMA LADY", 10, DEFAULT_BALL), + TRAINER_CLASS(RUIN_MANIAC, "RUIN MANIAC", 15, DEFAULT_BALL), + TRAINER_CLASS(INTERVIEWER, "INTERVIEWER", 12, DEFAULT_BALL), + TRAINER_CLASS(TUBER_F, "TUBER", 1, DEFAULT_BALL), + TRAINER_CLASS(TUBER_M, "TUBER", 1, DEFAULT_BALL), + TRAINER_CLASS(LADY, "LADY", 50, DEFAULT_BALL), + TRAINER_CLASS(BEAUTY, "BEAUTY", 20, DEFAULT_BALL), + TRAINER_CLASS(RICH_BOY, "RICH BOY", 50, DEFAULT_BALL), + TRAINER_CLASS(POKEMANIAC, "POKéMANIAC", 15, DEFAULT_BALL), + TRAINER_CLASS(GUITARIST, "GUITARIST", 8, DEFAULT_BALL), + TRAINER_CLASS(KINDLER, "KINDLER", 8, DEFAULT_BALL), + TRAINER_CLASS(CAMPER, "CAMPER", 4, DEFAULT_BALL), + TRAINER_CLASS(PICNICKER, "PICNICKER", 4, DEFAULT_BALL), + TRAINER_CLASS(BUG_MANIAC, "BUG MANIAC", 15, DEFAULT_BALL), + TRAINER_CLASS(PSYCHIC, "PSYCHIC", 6, DEFAULT_BALL), + TRAINER_CLASS(GENTLEMAN, "GENTLEMAN", 20, ITEM_LUXURY_BALL), + TRAINER_CLASS(ELITE_FOUR, "ELITE FOUR", 25, ITEM_ULTRA_BALL), + TRAINER_CLASS(LEADER, "LEADER", 25, DEFAULT_BALL), + TRAINER_CLASS(SCHOOL_KID, "SCHOOL KID", 5, DEFAULT_BALL), + TRAINER_CLASS(SR_AND_JR, "SR. AND JR.", 4, DEFAULT_BALL), + TRAINER_CLASS(WINSTRATE, "WINSTRATE", 10, DEFAULT_BALL), + TRAINER_CLASS(POKEFAN, "POKéFAN", 20, DEFAULT_BALL), + TRAINER_CLASS(YOUNGSTER, "YOUNGSTER", 4, DEFAULT_BALL), + TRAINER_CLASS(CHAMPION, "CHAMPION", 50, DEFAULT_BALL), + TRAINER_CLASS(FISHERMAN, "FISHERMAN", 10, B_TRAINER_CLASS_POKE_BALLS >= GEN_8 ? ITEM_DIVE_BALL : ITEM_LURE_BALL), + TRAINER_CLASS(TRIATHLETE, "TRIATHLETE", 10, DEFAULT_BALL), + TRAINER_CLASS(DRAGON_TAMER, "DRAGON TAMER", 12, DEFAULT_BALL), + TRAINER_CLASS(NINJA_BOY, "NINJA BOY", 3, DEFAULT_BALL), + TRAINER_CLASS(BATTLE_GIRL, "BATTLE GIRL", 6, DEFAULT_BALL), + TRAINER_CLASS(PARASOL_LADY, "PARASOL LADY", 10, DEFAULT_BALL), + TRAINER_CLASS(SWIMMER_F, "SWIMMER♀", 2, ITEM_DIVE_BALL), + TRAINER_CLASS(TWINS, "TWINS", 3, DEFAULT_BALL), + TRAINER_CLASS(SAILOR, "SAILOR", 8, DEFAULT_BALL), + TRAINER_CLASS(COOLTRAINER_2, "COOLTRAINER", DEFAULT_MONEY, ITEM_ULTRA_BALL), + TRAINER_CLASS(MAGMA_ADMIN, "MAGMA ADMIN", 10, DEFAULT_BALL), + TRAINER_CLASS(RIVAL, "{PKMN} TRAINER", 15, DEFAULT_BALL), + TRAINER_CLASS(BUG_CATCHER, "BUG CATCHER", 4, DEFAULT_BALL), + TRAINER_CLASS(PKMN_RANGER, "{PKMN} RANGER", 12, DEFAULT_BALL), + TRAINER_CLASS(MAGMA_LEADER, "MAGMA LEADER", 20, ITEM_MASTER_BALL), + TRAINER_CLASS(LASS, "LASS", 4, DEFAULT_BALL), + TRAINER_CLASS(YOUNG_COUPLE, "YOUNG COUPLE", 8, DEFAULT_BALL), + TRAINER_CLASS(OLD_COUPLE, "OLD COUPLE", 10, DEFAULT_BALL), + TRAINER_CLASS(SIS_AND_BRO, "SIS AND BRO", 3, DEFAULT_BALL), + TRAINER_CLASS(SALON_MAIDEN, "SALON MAIDEN", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(DOME_ACE, "DOME ACE", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(PALACE_MAVEN, "PALACE MAVEN", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(ARENA_TYCOON, "ARENA TYCOON", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(FACTORY_HEAD, "FACTORY HEAD", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(PIKE_QUEEN, "PIKE QUEEN", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(PYRAMID_KING, "PYRAMID KING", DEFAULT_MONEY, DEFAULT_BALL), + TRAINER_CLASS(RS_PROTAG, "{PKMN} TRAINER", DEFAULT_MONEY, DEFAULT_BALL), }; -#endif - -#include "data/text/abilities.h" static void (* const sTurnActionsFuncsTable[])(void) = { @@ -1718,9 +1710,16 @@ static void CB2_HandleStartMultiBattle(void) case 8: if (IsLinkTaskFinished()) { + #if HQ_RANDOM == TRUE + struct BattleVideo *ptr = &gBattleStruct->multiBuffer.battleVideo; + ptr->battleTypeFlags = gBattleTypeFlags; + ptr->rngSeed = gRecordedBattleRngSeed; + #else u32 *ptr = gBattleStruct->multiBuffer.battleVideo; ptr[0] = gBattleTypeFlags; ptr[1] = gRecordedBattleRngSeed; // UB: overwrites berry data + #endif + SendBlock(BitmaskAllOtherLinkPlayers(), ptr, sizeof(gBattleStruct->multiBuffer.battleVideo)); gBattleCommunication[MULTIUSE_STATE]++; } @@ -2016,12 +2015,27 @@ u8 CreateNPCTrainerPartyFromTrainer(struct Pokemon *party, const struct Trainer { SetMonData(&party[i], MON_DATA_NICKNAME, partyData[i].nickname); } + if (partyData[i].isShiny) + { + u32 data = TRUE; + SetMonData(&party[i], MON_DATA_IS_SHINY, &data); + } + if (partyData[i].dynamaxLevel > 0) + { + u32 data = partyData[i].dynamaxLevel; + SetMonData(&party[i], MON_DATA_DYNAMAX_LEVEL, &data); + } + if (partyData[i].gigantamaxFactor) + { + u32 data = partyData[i].gigantamaxFactor; + SetMonData(&party[i], MON_DATA_GIGANTAMAX_FACTOR, &data); + } CalculateMonStats(&party[i]); #if B_TRAINER_CLASS_POKE_BALLS >= GEN_7 if (ball == -1) { - ball = (sTrainerBallTable[trainer->trainerClass]) ? sTrainerBallTable[trainer->trainerClass] : ITEM_POKE_BALL; + ball = gTrainerClasses[trainer->trainerClass].ball ?: ITEM_POKE_BALL; SetMonData(&party[i], MON_DATA_POKEBALL, &ball); } #endif @@ -2058,7 +2072,7 @@ void VBlankCB_Battle(void) { // Change gRngSeed every vblank unless the battle could be recorded. if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_RECORDED))) - Random(); + AdvanceRandom(); SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); @@ -3271,6 +3285,7 @@ const u8* FaintClearSetData(u32 battler) gProtectStructs[battler].quash = FALSE; gProtectStructs[battler].obstructed = FALSE; gProtectStructs[battler].silkTrapped = FALSE; + gProtectStructs[battler].burningBulwarked = FALSE; gProtectStructs[battler].endured = FALSE; gProtectStructs[battler].noValidMoves = FALSE; gProtectStructs[battler].helpingHand = FALSE; @@ -5681,6 +5696,13 @@ void SetTypeBeforeUsingMove(u32 move, u32 battlerAtk) { gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type2 | F_DYNAMIC_TYPE_SET; } + else if (gBattleMoves[move].effect == EFFECT_IVY_CUDGEL + && (gBattleMons[battlerAtk].species == SPECIES_OGERPON_WELLSPRING_MASK || gBattleMons[battlerAtk].species == SPECIES_OGERPON_WELLSPRING_MASK_TERA + || gBattleMons[battlerAtk].species == SPECIES_OGERPON_HEARTHFLAME_MASK || gBattleMons[battlerAtk].species == SPECIES_OGERPON_HEARTHFLAME_MASK_TERA + || gBattleMons[battlerAtk].species == SPECIES_OGERPON_CORNERSTONE_MASK || gBattleMons[battlerAtk].species == SPECIES_OGERPON_CORNERSTONE_MASK_TERA )) + { + gBattleStruct->dynamicMoveType = gBattleMons[battlerAtk].type2 | F_DYNAMIC_TYPE_SET; + } else if (gBattleMoves[move].effect == EFFECT_NATURAL_GIFT) { if (ItemId_GetPocket(gBattleMons[battlerAtk].item) == POCKET_BERRIES) diff --git a/src/battle_message.c b/src/battle_message.c index cb649595624f..685790f30b95 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -833,9 +833,13 @@ static const u8 sText_HurtByTheSeaOfFire[] = _("{B_ATK_TEAM1} {B_ATK_NAME_WITH_P static const u8 sText_TheSeaOfFireDisappeared[] = _("The sea of fire around {B_ATK_TEAM2}\nteam disappeared!"); static const u8 sText_SwampEnvelopedSide[] = _("A swamp enveloped\n{B_DEF_TEAM2} team!"); static const u8 sText_TheSwampDisappeared[] = _("The swamp around {B_ATK_TEAM2}\nteam disappeared!"); +static const u8 sText_HospitalityRestoration[] = _("The {B_ATK_PARTNER_NAME} drank down all\nthe matcha that Sinistcha made!"); +static const u8 sText_ElectroShockCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nelectricity!"); const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = { + [STRINGID_ELECTROSHOCKCHARGING - BATTLESTRINGS_TABLE_START] = sText_ElectroShockCharging, + [STRINGID_HOSPITALITYRESTORATION - BATTLESTRINGS_TABLE_START] = sText_HospitalityRestoration, [STRINGID_THESWAMPDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheSwampDisappeared, [STRINGID_SWAMPENVELOPEDSIDE - BATTLESTRINGS_TABLE_START] = sText_SwampEnvelopedSide, [STRINGID_THESEAOFFIREDISAPPEARED - BATTLESTRINGS_TABLE_START] = sText_TheSeaOfFireDisappeared, @@ -1762,6 +1766,7 @@ const u16 gFirstTurnOfTwoStringIds[] = [B_MSG_TURN1_FREEZE_SHOCK] = STRINGID_CLOAKEDINAFREEZINGLIGHT, [B_MSG_TURN1_SKY_DROP] = STRINGID_PKMNTOOKTARGETHIGH, [B_MSG_TURN1_METEOR_BEAM] = STRINGID_METEORBEAMCHARGING, + [B_MSG_TURN1_ELECTRO_SHOCK] = STRINGID_ELECTROSHOCKCHARGING, }; // Index copied from move's index in sTrappingMoves @@ -2919,7 +2924,7 @@ void BufferStringBattle(u16 stringID, u32 battler) } } break; - case STRINGID_USEDMOVE: // pokemon used a move msg + case STRINGID_USEDMOVE: // Pokémon used a move msg if (gBattleStruct->zmove.active && gBattleStruct->zmove.activeCategory != BATTLE_CATEGORY_STATUS) StringCopy(gBattleTextBuff3, GetZMoveName(gBattleMsgDataPtr->currentMove)); else if (IsMaxMove(gBattleMsgDataPtr->currentMove)) @@ -3209,19 +3214,19 @@ static const u8 *BattleStringGetOpponentClassByTrainerId(u16 trainerId) const u8 *toCpy; if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE) - toCpy = gTrainerClassNames[GetSecretBaseTrainerClass()]; + toCpy = gTrainerClasses[GetSecretBaseTrainerClass()].name; else if (trainerId == TRAINER_UNION_ROOM) - toCpy = gTrainerClassNames[GetUnionRoomTrainerClass()]; + toCpy = gTrainerClasses[GetUnionRoomTrainerClass()].name; else if (trainerId == TRAINER_FRONTIER_BRAIN) - toCpy = gTrainerClassNames[GetFrontierBrainTrainerClass()]; + toCpy = gTrainerClasses[GetFrontierBrainTrainerClass()].name; else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) - toCpy = gTrainerClassNames[GetFrontierOpponentClass(trainerId)]; + toCpy = gTrainerClasses[GetFrontierOpponentClass(trainerId)].name; else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL) - toCpy = gTrainerClassNames[GetTrainerHillOpponentClass(trainerId)]; + toCpy = gTrainerClasses[GetTrainerHillOpponentClass(trainerId)].name; else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) - toCpy = gTrainerClassNames[GetEreaderTrainerClassId()]; + toCpy = gTrainerClasses[GetEreaderTrainerClassId()].name; else - toCpy = gTrainerClassNames[gTrainers[trainerId].trainerClass]; + toCpy = gTrainerClasses[gTrainers[trainerId].trainerClass].name; return toCpy; } @@ -3234,7 +3239,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) { u32 dstID = 0; // if they used dstID, why not use srcID as well? const u8 *toCpy = NULL; - // This buffer may hold either the name of a trainer, pokemon, or item. + // This buffer may hold either the name of a trainer, Pokémon, or item. u8 text[max(max(max(32, TRAINER_NAME_LENGTH + 1), POKEMON_NAME_LENGTH + 1), ITEM_NAME_LENGTH)]; u8 multiplayerId; @@ -3405,19 +3410,19 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) } break; case B_TXT_LAST_ABILITY: // last used ability - toCpy = gAbilityNames[gLastUsedAbility]; + toCpy = gAbilities[gLastUsedAbility].name; break; case B_TXT_ATK_ABILITY: // attacker ability - toCpy = gAbilityNames[sBattlerAbilities[gBattlerAttacker]]; + toCpy = gAbilities[sBattlerAbilities[gBattlerAttacker]].name; break; case B_TXT_DEF_ABILITY: // target ability - toCpy = gAbilityNames[sBattlerAbilities[gBattlerTarget]]; + toCpy = gAbilities[sBattlerAbilities[gBattlerTarget]].name; break; case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability - toCpy = gAbilityNames[sBattlerAbilities[gBattleScripting.battler]]; + toCpy = gAbilities[sBattlerAbilities[gBattleScripting.battler]].name; break; case B_TXT_EFF_ABILITY: // effect battler ability - toCpy = gAbilityNames[sBattlerAbilities[gEffectBattler]]; + toCpy = gAbilities[sBattlerAbilities[gEffectBattler]].name; break; case B_TXT_TRAINER1_CLASS: // trainer class name toCpy = BattleStringGetOpponentClassByTrainerId(gTrainerBattleOpponent_A); @@ -3570,7 +3575,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) } break; case B_TXT_PARTNER_CLASS: - toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)]; + toCpy = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name; break; case B_TXT_PARTNER_NAME: toCpy = BattleStringGetPlayerName(text, GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)); @@ -3583,7 +3588,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) { case B_POSITION_PLAYER_RIGHT: if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) - toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)]; + toCpy = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name; break; case B_POSITION_OPPONENT_LEFT: toCpy = BattleStringGetOpponentClassByTrainerId(gTrainerBattleOpponent_A); @@ -3779,7 +3784,7 @@ void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) srcID += 2; break; case B_BUFF_ABILITY: // ability names - StringAppend(dst, gAbilityNames[T1_READ_16(&src[srcID + 1])]); + StringAppend(dst, gAbilities[T1_READ_16(&src[srcID + 1])].name); srcID += 3; break; case B_BUFF_ITEM: // item name diff --git a/src/battle_pike.c b/src/battle_pike.c index 4a2065be4487..3869531d2090 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -1268,7 +1268,7 @@ static void TryHealMons(u8 healCount) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) indices[i] = i; - // Only 'healCount' number of pokemon will be healed. + // Only 'healCount' number of Pokémon will be healed. // The order in which they're (attempted to be) healed is random, Shuffle(indices, FRONTIER_PARTY_SIZE, sizeof(indices[0])); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 3b6f76cac5ae..fd80a1472668 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -544,7 +544,7 @@ static void Cmd_setsafeguard(void); static void Cmd_magnitudedamagecalculation(void); static void Cmd_jumpifnopursuitswitchdmg(void); static void Cmd_setsunny(void); -static void Cmd_maxattackhalvehp(void); +static void Cmd_halvehp(void); static void Cmd_copyfoestats(void); static void Cmd_rapidspinfree(void); static void Cmd_setdefensecurlbit(void); @@ -803,7 +803,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = Cmd_magnitudedamagecalculation, //0xB9 Cmd_jumpifnopursuitswitchdmg, //0xBA Cmd_setsunny, //0xBB - Cmd_maxattackhalvehp, //0xBC + Cmd_halvehp, //0xBC Cmd_copyfoestats, //0xBD Cmd_rapidspinfree, //0xBE Cmd_setdefensecurlbit, //0xBF @@ -1548,7 +1548,7 @@ static bool32 AccuracyCalcHelper(u16 move) return TRUE; } // If the attacker has the ability No Guard and they aren't targeting a Pokemon involved in a Sky Drop with the move Sky Drop, move hits. - else if (GetBattlerAbility(gBattlerAttacker) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) + else if (GetBattlerAbility(gBattlerTarget) == ABILITY_NO_GUARD && (move != MOVE_SKY_DROP || gBattleStruct->skyDropTargets[gBattlerTarget] == 0xFF)) { if (!JumpIfMoveFailed(7, move)) RecordAbilityBattle(gBattlerAttacker, ABILITY_NO_GUARD); @@ -1639,7 +1639,8 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u gPotentialItemEffectBattler = battlerDef; accStage = gBattleMons[battlerAtk].statStages[STAT_ACC]; evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION]; - if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && atkAbility == ABILITY_ILLUMINATE)) + if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || atkAbility == ABILITY_MINDS_EYE + || (B_ILLUMINATE_EFFECT >= GEN_9 && atkAbility == ABILITY_ILLUMINATE)) evasionStage = DEFAULT_STAT_STAGE; if (gBattleMoves[move].ignoresTargetDefenseEvasionStages) evasionStage = DEFAULT_STAT_STAGE; @@ -2935,12 +2936,27 @@ void SetMoveEffect(bool32 primary, u32 certain) RESET_RETURN } + if (B_STATUS_TYPE_IMMUNITY == GEN_1) + { + u8 moveType = 0; + GET_MOVE_TYPE(gCurrentMove, moveType); + if (primary == FALSE && certain != MOVE_EFFECT_CERTAIN && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) + break; + } + if (!CanBeBurned(gEffectBattler)) break; statusChanged = TRUE; break; case STATUS1_FREEZE: + if (B_STATUS_TYPE_IMMUNITY == GEN_1) + { + u8 moveType = 0; + GET_MOVE_TYPE(gCurrentMove, moveType); + if (primary == FALSE && certain != MOVE_EFFECT_CERTAIN && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) + break; + } if (!CanBeFrozen(gEffectBattler)) break; @@ -2974,6 +2990,13 @@ void SetMoveEffect(bool32 primary, u32 certain) else break; } + if (B_STATUS_TYPE_IMMUNITY == GEN_1) + { + u8 moveType = 0; + GET_MOVE_TYPE(gCurrentMove, moveType); + if (primary == FALSE && certain != MOVE_EFFECT_CERTAIN && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) + break; + } if (!CanParalyzeType(gBattleScripting.battler, gEffectBattler) && (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT) && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)) @@ -3038,6 +3061,13 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case STATUS1_FROSTBITE: + if (B_STATUS_TYPE_IMMUNITY == GEN_1) + { + u8 moveType = 0; + GET_MOVE_TYPE(gCurrentMove, moveType); + if (primary == FALSE && certain != MOVE_EFFECT_CERTAIN && IS_BATTLER_OF_TYPE(gEffectBattler, moveType)) + break; + } if (!CanGetFrostbite(gEffectBattler)) break; @@ -3107,6 +3137,9 @@ void SetMoveEffect(bool32 primary, u32 certain) switch (gBattleScripting.moveEffect) { case MOVE_EFFECT_CONFUSION: + if (gCurrentMove == MOVE_ALLURING_VOICE && !gProtectStructs[gEffectBattler].statRaised) + break; + if (!CanBeConfused(gEffectBattler)) { gBattlescriptCurrInstr++; @@ -3501,6 +3534,7 @@ void SetMoveEffect(bool32 primary, u32 certain) gProtectStructs[gBattlerTarget].banefulBunkered = FALSE; gProtectStructs[gBattlerTarget].obstructed = FALSE; gProtectStructs[gBattlerTarget].silkTrapped = FALSE; + gProtectStructs[gBattlerAttacker].burningBulwarked = FALSE; BattleScriptPush(gBattlescriptCurrInstr + 1); if (gCurrentMove == MOVE_HYPERSPACE_FURY) gBattlescriptCurrInstr = BattleScript_HyperspaceFuryRemoveProtect; @@ -4224,7 +4258,7 @@ static void Cmd_getexp(void) if (IsTradedMon(&gPlayerParty[*expMonId])) { - // check if the pokemon doesn't belong to the player + // check if the Pokémon doesn't belong to the player if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && *expMonId >= 3) i = STRINGID_EMPTYSTRING4; else @@ -5092,7 +5126,7 @@ static void Cmd_playstatchangeanimation(void) && ability != ABILITY_CLEAR_BODY && ability != ABILITY_FULL_METAL_BODY && ability != ABILITY_WHITE_SMOKE - && !(ability == ABILITY_KEEN_EYE && currStat == STAT_ACC) + && !((ability == ABILITY_KEEN_EYE || ability == ABILITY_MINDS_EYE) && currStat == STAT_ACC) && !(B_ILLUMINATE_EFFECT >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC) && !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK) && !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF)) @@ -5304,6 +5338,15 @@ static void Cmd_moveend(void) gBattlescriptCurrInstr = BattleScript_KingsShieldEffect; effect = 1; } + else if (gProtectStructs[gBattlerTarget].burningBulwarked) + { + gProtectStructs[gBattlerAttacker].touchedProtectLike = FALSE; + gBattleScripting.moveEffect = MOVE_EFFECT_BURN | MOVE_EFFECT_AFFECTS_USER; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_BURNING_BULWARK); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BanefulBunkerEffect; + effect = 1; + } // Not strictly a protect effect, but works the same way else if (gProtectStructs[gBattlerTarget].beakBlastCharge && CanBeBurned(gBattlerAttacker) @@ -5728,7 +5771,7 @@ static void Cmd_moveend(void) } gBattleScripting.moveendState++; break; - case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokemon. + case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokémon. { u16 moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove); // Set a flag if move hits either target (for throat spray that can't check damage) @@ -6178,6 +6221,35 @@ static void Cmd_switchindataupdate(void) for (i = 0; i < sizeof(struct BattlePokemon); i++) monData[i] = gBattleResources->bufferB[battler][4 + i]; + // Edge case: the sent out pokemon has 0 HP. This should never happen. + if (gBattleMons[battler].hp == 0) + { + // If it's a test, mark it as invalid. + if (gTestRunnerEnabled) + { + TestRunner_Battle_InvalidNoHPMon(battler, gBattlerPartyIndexes[battler]); + } + // Handle in-game scenario. + else + { + struct Pokemon *party = GetBattlerParty(battler); + // Find the first possible replacement for the not valid pokemon. + for (i = 0; i < PARTY_SIZE; i++) + { + if (IsValidForBattle(&party[i])) + break; + } + // There is valid replacement. + if (i != PARTY_SIZE) + { + gBattlerPartyIndexes[battler] = gBattleStruct->monToSwitchIntoId[battler] = i; + BtlController_EmitGetMonData(battler, BUFFER_A, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[battler]]); + MarkBattlerForControllerExec(battler); + return; + } + } + } + gBattleMons[battler].type1 = gSpeciesInfo[gBattleMons[battler].species].types[0]; gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].types[1]; gBattleMons[battler].type3 = TYPE_MYSTERY; @@ -7302,9 +7374,9 @@ static void Cmd_hitanimation(void) static u32 GetTrainerMoneyToGive(u16 trainerId) { - u32 i = 0; u32 lastMonLevel = 0; u32 moneyReward; + u8 trainerMoney; if (trainerId == TRAINER_SECRET_BASE) { @@ -7314,19 +7386,14 @@ static u32 GetTrainerMoneyToGive(u16 trainerId) { const struct TrainerMon *party = gTrainers[trainerId].party; lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; - - for (; gTrainerMoneyTable[i].classId != 0xFF; i++) - { - if (gTrainerMoneyTable[i].classId == gTrainers[trainerId].trainerClass) - break; - } + trainerMoney = gTrainerClasses[gTrainers[trainerId].trainerClass].money; if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) - moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value; + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * trainerMoney; else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * 2 * gTrainerMoneyTable[i].value; + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * 2 * trainerMoney; else - moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value; + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * trainerMoney; } return moneyReward; @@ -9150,28 +9217,14 @@ static void Cmd_various(void) i = GetBattlerAbility(gBattlerAbility); if (IsBattlerAlive(gBattlerAbility) && (i == ABILITY_RECEIVER || i == ABILITY_POWER_OF_ALCHEMY) - && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD) - { - switch (gBattleMons[battler].ability) - { // Can't copy these abilities. - case ABILITY_POWER_OF_ALCHEMY: case ABILITY_RECEIVER: - case ABILITY_FORECAST: case ABILITY_MULTITYPE: - case ABILITY_FLOWER_GIFT: case ABILITY_ILLUSION: - case ABILITY_WONDER_GUARD: case ABILITY_ZEN_MODE: - case ABILITY_STANCE_CHANGE: case ABILITY_IMPOSTER: - case ABILITY_POWER_CONSTRUCT: case ABILITY_BATTLE_BOND: - case ABILITY_SCHOOLING: case ABILITY_COMATOSE: - case ABILITY_SHIELDS_DOWN: case ABILITY_DISGUISE: - case ABILITY_RKS_SYSTEM: case ABILITY_TRACE: - case ABILITY_ZERO_TO_HERO: - break; - default: - gBattleStruct->tracedAbility[gBattlerAbility] = gBattleMons[battler].ability; // re-using the variable for trace - gBattleScripting.battler = battler; - BattleScriptPush(cmd->nextInstr); - gBattlescriptCurrInstr = BattleScript_ReceiverActivates; - return; - } + && GetBattlerHoldEffect(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD + && !gAbilities[gBattleMons[battler].ability].cantBeCopied) + { + gBattleStruct->tracedAbility[gBattlerAbility] = gBattleMons[battler].ability; // re-using the variable for trace + gBattleScripting.battler = battler; + BattleScriptPush(cmd->nextInstr); + gBattlescriptCurrInstr = BattleScript_ReceiverActivates; + return; } break; } @@ -9269,7 +9322,7 @@ static void Cmd_various(void) case VARIOUS_SET_SIMPLE_BEAM: { VARIOUS_ARGS(const u8 *failInstr); - if (IsEntrainmentTargetOrSimpleBeamBannedAbility(gBattleMons[gBattlerTarget].ability) + if (gAbilities[gBattleMons[gBattlerTarget].ability].cantBeOverwritten || gBattleMons[gBattlerTarget].ability == ABILITY_SIMPLE) { RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); @@ -9293,8 +9346,8 @@ static void Cmd_various(void) case VARIOUS_TRY_ENTRAINMENT: { VARIOUS_ARGS(const u8 *failInstr); - if (IsEntrainmentBannedAbilityAttacker(gBattleMons[gBattlerAttacker].ability) - || IsEntrainmentTargetOrSimpleBeamBannedAbility(gBattleMons[gBattlerTarget].ability)) + if (gAbilities[gBattleMons[gBattlerAttacker].ability].cantBeCopied + || gAbilities[gBattleMons[gBattlerTarget].ability].cantBeOverwritten) { RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); gBattlescriptCurrInstr = cmd->failInstr; @@ -10673,6 +10726,11 @@ static void Cmd_setprotectlike(void) gProtectStructs[gBattlerAttacker].silkTrapped = TRUE; gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; } + else if (gCurrentMove == MOVE_BURNING_BULWARK) + { + gProtectStructs[gBattlerAttacker].burningBulwarked = TRUE; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PROTECTED_ITSELF; + } gDisableStructs[gBattlerAttacker].protectUses++; fail = FALSE; @@ -11362,7 +11420,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr return STAT_CHANGE_DIDNT_WORK; } else if (!certain - && ((battlerAbility == ABILITY_KEEN_EYE && statId == STAT_ACC) + && (((battlerAbility == ABILITY_KEEN_EYE || battlerAbility == ABILITY_MINDS_EYE) && statId == STAT_ACC) || (B_ILLUMINATE_EFFECT >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC) || (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK) || (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF))) @@ -11755,7 +11813,7 @@ static void Cmd_forcerandomswitch(void) { firstMonId = 0; lastMonId = PARTY_SIZE; - battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles + battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one Pokémon out in single battles battler1PartyId = gBattlerPartyIndexes[gBattlerTarget]; } @@ -12256,7 +12314,7 @@ static void Cmd_transformdataexecution(void) gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE; gDisableStructs[gBattlerAttacker].disableTimer = 0; gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality; - gDisableStructs[gBattlerAttacker].transformedMonOtId = gBattleMons[gBattlerTarget].otId; + gDisableStructs[gBattlerAttacker].transformedMonShininess = gBattleMons[gBattlerTarget].isShiny; gDisableStructs[gBattlerAttacker].mimickedMoves = 0; gDisableStructs[gBattlerAttacker].usedMoves = 0; @@ -12305,7 +12363,7 @@ static void Cmd_setsubstitute(void) } else { - gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games) + gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 4; // one bit value will only work for Pokémon which max hp can go to 1020(which is more than possible in games) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13270,8 +13328,8 @@ static void Cmd_setsunny(void) gBattlescriptCurrInstr = cmd->nextInstr; } -// Belly Drum -static void Cmd_maxattackhalvehp(void) +// Belly Drum, Fillet Away +static void Cmd_halvehp(void) { CMD_ARGS(const u8 *failInstr); @@ -13280,11 +13338,8 @@ static void Cmd_maxattackhalvehp(void) if (!(GetNonDynamaxMaxHP(gBattlerAttacker) / 2)) halfHp = 1; - // Belly Drum fails if the user's current HP is less than half its maximum, or if the user's Attack is already at +6 (even if the user has Contrary). - if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] < MAX_STAT_STAGE - && gBattleMons[gBattlerAttacker].hp > halfHp) + if (gBattleMons[gBattlerAttacker].hp > halfHp) { - gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = MAX_STAT_STAGE; gBattleMoveDamage = GetNonDynamaxMaxHP(gBattlerAttacker) / 2; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -13804,7 +13859,7 @@ static void Cmd_tryswapitems(void) { gBattlescriptCurrInstr = cmd->failInstr; } - // can't swap if two pokemon don't have an item + // can't swap if two Pokémon don't have an item // or if either of them is an enigma berry or a mail else if ((gBattleMons[gBattlerAttacker].item == ITEM_NONE && gBattleMons[gBattlerTarget].item == ITEM_NONE) || !CanBattlerGetOrLoseItem(gBattlerAttacker, gBattleMons[gBattlerAttacker].item) @@ -13879,24 +13934,26 @@ static void Cmd_tryswapitems(void) } } -// Role Play +// Role Play, Doodle static void Cmd_trycopyability(void) { - CMD_ARGS(const u8 *failInstr); + CMD_ARGS(u8 battler, const u8 *failInstr); + u32 battler = GetBattlerForBattleScript(cmd->battler); u16 defAbility = gBattleMons[gBattlerTarget].ability; - if (gBattleMons[gBattlerAttacker].ability == defAbility + if (gBattleMons[battler].ability == defAbility || defAbility == ABILITY_NONE - || IsRolePlayBannedAbilityAtk(gBattleMons[gBattlerAttacker].ability) - || IsRolePlayBannedAbility(defAbility)) + || gAbilities[gBattleMons[battler].ability].cantBeSuppressed + || gAbilities[gBattleMons[BATTLE_PARTNER(battler)].ability].cantBeSuppressed + || gAbilities[defAbility].cantBeCopied) { gBattlescriptCurrInstr = cmd->failInstr; } else { - gBattleScripting.abilityPopupOverwrite = gBattleMons[gBattlerAttacker].ability; - gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = defAbility; + gBattleScripting.abilityPopupOverwrite = gBattleMons[battler].ability; + gBattleMons[battler].ability = gBattleStruct->overwrittenAbilities[battler] = defAbility; gLastUsedAbility = defAbility; gBattlescriptCurrInstr = cmd->nextInstr; } @@ -13965,7 +14022,7 @@ static void Cmd_setgastroacid(void) { CMD_ARGS(const u8 *failInstr); - if (IsGastroAcidBannedAbility(gBattleMons[gBattlerTarget].ability)) + if (gAbilities[gBattleMons[gBattlerTarget].ability].cantBeSuppressed) { gBattlescriptCurrInstr = cmd->failInstr; } @@ -14065,8 +14122,8 @@ static void Cmd_tryswapabilities(void) { CMD_ARGS(const u8 *failInstr); - if (IsSkillSwapBannedAbility(gBattleMons[gBattlerAttacker].ability) - || IsSkillSwapBannedAbility(gBattleMons[gBattlerTarget].ability)) + if (gAbilities[gBattleMons[gBattlerAttacker].ability].cantBeSwapped + || gAbilities[gBattleMons[gBattlerTarget].ability].cantBeSwapped) { RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); gBattlescriptCurrInstr = cmd->failInstr; @@ -15115,10 +15172,11 @@ static void Cmd_displaydexinfo(void) case 1: if (!gPaletteFade.active) { + struct Pokemon *mon = &gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]]; FreeAllWindowBuffers(); gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species, - gBattleMons[GetCatchingBattler()].otId, - gBattleMons[GetCatchingBattler()].personality); + GetMonData(mon, MON_DATA_IS_SHINY), + GetMonData(mon, MON_DATA_PERSONALITY)); gBattleCommunication[0]++; } break; @@ -15424,7 +15482,8 @@ static void Cmd_tryworryseed(void) { CMD_ARGS(const u8 *failInstr); - if (IsWorrySeedBannedAbility(gBattleMons[gBattlerTarget].ability)) + if (gAbilities[gBattleMons[gBattlerTarget].ability].cantBeOverwritten + || gBattleMons[gBattlerTarget].ability == ABILITY_INSOMNIA) { RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -16521,7 +16580,9 @@ void BS_AllySwitchFailChance(void) gDisableStructs[gBattlerAttacker].protectUses++; } } + gBattlescriptCurrInstr = cmd->nextInstr; } + void BS_SetPhotonGeyserCategory(void) { NATIVE_ARGS(); diff --git a/src/battle_setup.c b/src/battle_setup.c index b699405c5084..6281b0283138 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -111,7 +111,7 @@ EWRAM_DATA static u8 *sTrainerBBattleScriptRetAddr = NULL; EWRAM_DATA static bool8 sShouldCheckTrainerBScript = FALSE; EWRAM_DATA static u8 sNoOfPossibleTrainerRetScripts = 0; -// The first transition is used if the enemy pokemon are lower level than our pokemon. +// The first transition is used if the enemy Pokémon are lower level than our Pokémon. // Otherwise, the second transition is used. static const u8 sBattleTransitionTable_Wild[][2] = { @@ -908,7 +908,7 @@ u8 GetTrainerBattleTransition(void) return B_TRANSITION_AQUA; if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE) - minPartyCount = 2; // double battles always at least have 2 pokemon. + minPartyCount = 2; // double battles always at least have 2 Pokémon. else minPartyCount = 1; diff --git a/src/battle_tent.c b/src/battle_tent.c index b7a9daecba4c..c003affebe9f 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -309,7 +309,7 @@ static void GenerateInitialRentalMons(void) i = 0; while (i != PARTY_SIZE) { - // Cannot have two pokemon of the same species. + // Cannot have two Pokémon of the same species. monSetId = Random() % NUM_SLATEPORT_TENT_MONS; for (j = firstMonId; j < firstMonId + i; j++) { @@ -390,7 +390,7 @@ static void GenerateOpponentMons(void) { sRandMonId = monSet[Random() % numMons]; - // Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player + // Ensure none of the opponent's Pokémon are the same as the potential rental Pokémon for the player for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++) { if (gFacilityTrainerMons[sRandMonId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species) diff --git a/src/battle_tower.c b/src/battle_tower.c index 22419feed6e8..6a049e0d2eac 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1676,8 +1676,8 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) } // Regular battle frontier trainer. - // Attempt to fill the trainer's party with random Pokemon until 3 have been - // successfully chosen. The trainer's party may not have duplicate pokemon species + // Attempt to fill the trainer's party with random Pokémon until 3 have been + // successfully chosen. The trainer's party may not have duplicate Pokémon species // or duplicate held items. for (bfMonCount = 0; monSet[bfMonCount] != 0xFFFF; bfMonCount++) ; @@ -1687,12 +1687,12 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) { u16 monId = monSet[Random() % bfMonCount]; - // "High tier" pokemon are only allowed on open level mode + // "High tier" Pokémon are only allowed on open level mode // 20 is not a possible value for level here if ((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER) continue; - // Ensure this pokemon species isn't a duplicate. + // Ensure this Pokémon species isn't a duplicate. for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monId].species) @@ -1711,7 +1711,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) if (j != i + firstMonId) continue; - // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary + // Ensure this exact Pokémon index isn't a duplicate. This check doesn't seem necessary // because the species and held items were already checked directly above. for (j = 0; j < i; j++) { @@ -1723,7 +1723,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) chosenMonIndices[i] = monId; - // Place the chosen pokemon into the trainer's party. + // Place the chosen Pokémon into the trainer's party. CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].species, level, @@ -1733,7 +1733,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) otID); friendship = MAX_FRIENDSHIP; - // Give the chosen pokemon its specified moves. + // Give the chosen Pokémon its specified moves. for (j = 0; j < MAX_MON_MOVES; j++) { SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); @@ -1744,7 +1744,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount) SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); - // The pokemon was successfully added to the trainer's party, so it's safe to move on to + // The Pokémon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. i++; } @@ -1800,7 +1800,7 @@ u16 GetRandomFrontierMonFromSet(u16 trainerId) do { - // "High tier" pokemon are only allowed on open level mode + // "High tier" Pokémon are only allowed on open level mode // 20 is not a possible value for level here monId = monSet[Random() % numMons]; } while((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER); @@ -2481,8 +2481,8 @@ static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId) // These partners can be an NPC or a former/record-mixed Apprentice // When talked to, their response consists of: // PARTNER_MSGID_INTRO - A greeting -// PARTNER_MSGID_MON1 - Naming one pokemon on their team, and a move it has -// PARTNER_MSGID_MON2_ASK - Naming a second pokemon on their team, a move it has, and asking if they'd like to be their partner +// PARTNER_MSGID_MON1 - Naming one Pokémon on their team, and a move it has +// PARTNER_MSGID_MON2_ASK - Naming a second Pokémon on their team, a move it has, and asking if they'd like to be their partner // PARTNER_MSGID_ACCEPT - If the player agrees to be their partner // PARTNER_MSGID_REJECT - If the player declines to be their partner static void ShowPartnerCandidateMessage(void) @@ -2800,7 +2800,7 @@ static void AwardBattleTowerRibbons(void) #ifdef BUGFIX struct RibbonCounter ribbons[MAX_FRONTIER_PARTY_SIZE]; #else - struct RibbonCounter ribbons[3]; // BUG: 4 Pokemon can receive ribbons in a double battle mode. + struct RibbonCounter ribbons[3]; // BUG: 4 Pokémon can receive ribbons in a double battle mode. #endif u8 ribbonType = 0; u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode; @@ -3053,21 +3053,17 @@ static void FillPartnerParty(u16 trainerId) else otID = ((firstIdPart % 72) * 1000) + ((secondIdPart % 23) * 10) + (thirdIdPart % 37) % 65536; - do - { - personality = Random32(); - } while (IsShinyOtIdPersonality(otID, personality)); - + personality = Random32(); if (partyData[i].gender == TRAINER_MON_MALE) personality = (personality & 0xFFFFFF00) | GeneratePersonalityForGender(MON_MALE, partyData[i].species); else if (partyData[i].gender == TRAINER_MON_FEMALE) personality = (personality & 0xFFFFFF00) | GeneratePersonalityForGender(MON_FEMALE, partyData[i].species); if (partyData[i].nature != 0) ModifyPersonalityForNature(&personality, partyData[i].nature - 1); - if (partyData[i].isShiny) - otID ^= GET_SHINY_VALUE(otID, personality) << 16; CreateMon(&gPlayerParty[i + 3], partyData[i].species, partyData[i].lvl, 0, TRUE, personality, OT_ID_PRESET, otID); + j = partyData[i].isShiny; + SetMonData(&gPlayerParty[i + 3], MON_DATA_IS_SHINY, &j); SetMonData(&gPlayerParty[i + 3], MON_DATA_HELD_ITEM, &partyData[i].heldItem); CustomTrainerPartyAssignMoves(&gPlayerParty[i + 3], &partyData[i]); @@ -3525,7 +3521,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) { u16 monId = monSet[Random() % bfMonCount]; - // Ensure this pokemon species isn't a duplicate. + // Ensure this Pokémon species isn't a duplicate. for (j = 0; j < i + firstMonId; j++) { if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monId].species) @@ -3544,7 +3540,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) if (j != i + firstMonId) continue; - // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary + // Ensure this exact Pokémon index isn't a duplicate. This check doesn't seem necessary // because the species and held items were already checked directly above. for (j = 0; j < i; j++) { @@ -3556,7 +3552,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) chosenMonIndices[i] = monId; - // Place the chosen pokemon into the trainer's party. + // Place the chosen Pokémon into the trainer's party. CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].species, level, @@ -3566,7 +3562,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) otID); friendship = MAX_FRIENDSHIP; - // Give the chosen pokemon its specified moves. + // Give the chosen Pokémon its specified moves. for (j = 0; j < MAX_MON_MOVES; j++) { SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j); @@ -3577,7 +3573,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount) SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship); SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]); - // The pokemon was successfully added to the trainer's party, so it's safe to move on to + // The Pokémon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. i++; } diff --git a/src/battle_tv.c b/src/battle_tv.c index 439c69908986..61edb4330a73 100644 --- a/src/battle_tv.c +++ b/src/battle_tv.c @@ -699,7 +699,7 @@ static const u16 *const sPointsArray[] = }; // Points will always be calculated for these messages -// even if current pokemon does not have corresponding move +// even if current Pokémon does not have corresponding move static const u16 sSpecialBattleStrings[] = { STRINGID_PKMNPERISHCOUNTFELL, STRINGID_PKMNWISHCAMETRUE, STRINGID_PKMNLOSTPPGRUDGE, diff --git a/src/battle_util.c b/src/battle_util.c index 8ec394e537e8..9a71a196efae 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -94,140 +94,6 @@ static const u8 sPkblToEscapeFactor[][3] = { static const u8 sGoNearCounterToCatchFactor[] = {4, 3, 2, 1}; static const u8 sGoNearCounterToEscapeFactor[] = {4, 4, 4, 4}; -static const u16 sSkillSwapBannedAbilities[] = -{ - ABILITY_WONDER_GUARD, - ABILITY_MULTITYPE, - ABILITY_ILLUSION, - ABILITY_STANCE_CHANGE, - ABILITY_SCHOOLING, - ABILITY_COMATOSE, - ABILITY_SHIELDS_DOWN, - ABILITY_DISGUISE, - ABILITY_RKS_SYSTEM, - ABILITY_BATTLE_BOND, - ABILITY_POWER_CONSTRUCT, - ABILITY_NEUTRALIZING_GAS, - ABILITY_ICE_FACE, - ABILITY_HUNGER_SWITCH, - ABILITY_GULP_MISSILE, - ABILITY_ZERO_TO_HERO, -}; - -static const u16 sRolePlayBannedAbilities[] = -{ - ABILITY_TRACE, - ABILITY_WONDER_GUARD, - ABILITY_FORECAST, - ABILITY_FLOWER_GIFT, - ABILITY_MULTITYPE, - ABILITY_ILLUSION, - ABILITY_ZEN_MODE, - ABILITY_IMPOSTER, - ABILITY_STANCE_CHANGE, - ABILITY_POWER_OF_ALCHEMY, - ABILITY_RECEIVER, - ABILITY_SCHOOLING, - ABILITY_COMATOSE, - ABILITY_SHIELDS_DOWN, - ABILITY_DISGUISE, - ABILITY_RKS_SYSTEM, - ABILITY_BATTLE_BOND, - ABILITY_POWER_CONSTRUCT, - ABILITY_ICE_FACE, - ABILITY_HUNGER_SWITCH, - ABILITY_GULP_MISSILE, - ABILITY_ZERO_TO_HERO, -}; - -static const u16 sRolePlayBannedAttackerAbilities[] = -{ - ABILITY_MULTITYPE, - ABILITY_ZEN_MODE, - ABILITY_STANCE_CHANGE, - ABILITY_SCHOOLING, - ABILITY_COMATOSE, - ABILITY_SHIELDS_DOWN, - ABILITY_DISGUISE, - ABILITY_RKS_SYSTEM, - ABILITY_BATTLE_BOND, - ABILITY_POWER_CONSTRUCT, - ABILITY_ICE_FACE, - ABILITY_GULP_MISSILE, - ABILITY_ZERO_TO_HERO, -}; - -static const u16 sWorrySeedBannedAbilities[] = -{ - ABILITY_MULTITYPE, - ABILITY_STANCE_CHANGE, - ABILITY_SCHOOLING, - ABILITY_COMATOSE, - ABILITY_SHIELDS_DOWN, - ABILITY_DISGUISE, - ABILITY_RKS_SYSTEM, - ABILITY_BATTLE_BOND, - ABILITY_POWER_CONSTRUCT, - ABILITY_TRUANT, - ABILITY_ICE_FACE, - ABILITY_GULP_MISSILE, - ABILITY_ZERO_TO_HERO, -}; - -static const u16 sGastroAcidBannedAbilities[] = -{ - ABILITY_AS_ONE_ICE_RIDER, - ABILITY_AS_ONE_SHADOW_RIDER, - ABILITY_BATTLE_BOND, - ABILITY_COMATOSE, - ABILITY_DISGUISE, - ABILITY_GULP_MISSILE, - ABILITY_ICE_FACE, - ABILITY_MULTITYPE, - ABILITY_POWER_CONSTRUCT, - ABILITY_RKS_SYSTEM, - ABILITY_SCHOOLING, - ABILITY_SHIELDS_DOWN, - ABILITY_STANCE_CHANGE, - ABILITY_ZEN_MODE, - ABILITY_ZERO_TO_HERO, -}; - -static const u16 sEntrainmentBannedAttackerAbilities[] = -{ - ABILITY_TRACE, - ABILITY_FORECAST, - ABILITY_FLOWER_GIFT, - ABILITY_ZEN_MODE, - ABILITY_ILLUSION, - ABILITY_IMPOSTER, - ABILITY_POWER_OF_ALCHEMY, - ABILITY_RECEIVER, - ABILITY_DISGUISE, - ABILITY_POWER_CONSTRUCT, - ABILITY_NEUTRALIZING_GAS, - ABILITY_ICE_FACE, - ABILITY_HUNGER_SWITCH, - ABILITY_GULP_MISSILE, - ABILITY_ZERO_TO_HERO, -}; - -static const u16 sEntrainmentTargetSimpleBeamBannedAbilities[] = -{ - ABILITY_TRUANT, - ABILITY_MULTITYPE, - ABILITY_STANCE_CHANGE, - ABILITY_SCHOOLING, - ABILITY_COMATOSE, - ABILITY_SHIELDS_DOWN, - ABILITY_DISGUISE, - ABILITY_RKS_SYSTEM, - ABILITY_BATTLE_BOND, - ABILITY_ICE_FACE, - ABILITY_GULP_MISSILE, - ABILITY_ZERO_TO_HERO, -}; - static u8 CalcBeatUpPower(void) { u8 basePower; @@ -901,112 +767,6 @@ void HandleAction_ActionFinished(void) } } -static const u8 sAbilitiesAffectedByMoldBreaker[] = -{ - [ABILITY_BATTLE_ARMOR] = 1, - [ABILITY_CLEAR_BODY] = 1, - [ABILITY_DAMP] = 1, - [ABILITY_DRY_SKIN] = 1, - [ABILITY_FILTER] = 1, - [ABILITY_FLASH_FIRE] = 1, - [ABILITY_FLOWER_GIFT] = 1, - [ABILITY_HEATPROOF] = 1, - [ABILITY_HYPER_CUTTER] = 1, - [ABILITY_IMMUNITY] = 1, - [ABILITY_INNER_FOCUS] = 1, - [ABILITY_INSOMNIA] = 1, - [ABILITY_KEEN_EYE] = 1, - [ABILITY_LEAF_GUARD] = 1, - [ABILITY_LEVITATE] = 1, - [ABILITY_LIGHTNING_ROD] = 1, - [ABILITY_LIMBER] = 1, - [ABILITY_MAGMA_ARMOR] = 1, - [ABILITY_MARVEL_SCALE] = 1, - [ABILITY_MOTOR_DRIVE] = 1, - [ABILITY_OBLIVIOUS] = 1, - [ABILITY_OWN_TEMPO] = 1, - [ABILITY_SAND_VEIL] = 1, - [ABILITY_SHELL_ARMOR] = 1, - [ABILITY_SHIELD_DUST] = 1, - [ABILITY_SIMPLE] = 1, - [ABILITY_SNOW_CLOAK] = 1, - [ABILITY_SOLID_ROCK] = 1, - [ABILITY_SOUNDPROOF] = 1, - [ABILITY_STICKY_HOLD] = 1, - [ABILITY_STORM_DRAIN] = 1, - [ABILITY_STURDY] = 1, - [ABILITY_SUCTION_CUPS] = 1, - [ABILITY_TANGLED_FEET] = 1, - [ABILITY_THICK_FAT] = 1, - [ABILITY_UNAWARE] = 1, - [ABILITY_VITAL_SPIRIT] = 1, - [ABILITY_VOLT_ABSORB] = 1, - [ABILITY_WATER_ABSORB] = 1, - [ABILITY_WATER_VEIL] = 1, - [ABILITY_WHITE_SMOKE] = 1, - [ABILITY_WONDER_GUARD] = 1, - [ABILITY_BIG_PECKS] = 1, - [ABILITY_CONTRARY] = 1, - [ABILITY_FRIEND_GUARD] = 1, - [ABILITY_HEAVY_METAL] = 1, - [ABILITY_LIGHT_METAL] = 1, - [ABILITY_MAGIC_BOUNCE] = 1, - [ABILITY_MULTISCALE] = 1, - [ABILITY_SAP_SIPPER] = 1, - [ABILITY_TELEPATHY] = 1, - [ABILITY_WONDER_SKIN] = 1, - [ABILITY_AROMA_VEIL] = 1, - [ABILITY_BULLETPROOF] = 1, - [ABILITY_FLOWER_VEIL] = 1, - [ABILITY_FUR_COAT] = 1, - [ABILITY_OVERCOAT] = 1, - [ABILITY_SWEET_VEIL] = 1, - [ABILITY_DAZZLING] = 1, - [ABILITY_DISGUISE] = 1, - [ABILITY_FLUFFY] = 1, - [ABILITY_QUEENLY_MAJESTY] = 1, - [ABILITY_WATER_BUBBLE] = 1, - [ABILITY_MIRROR_ARMOR] = 1, - [ABILITY_PUNK_ROCK] = 1, - [ABILITY_ICE_SCALES] = 1, - [ABILITY_ICE_FACE] = 1, - [ABILITY_PASTEL_VEIL] = 1, - [ABILITY_ARMOR_TAIL] = 1, - [ABILITY_EARTH_EATER] = 1, - [ABILITY_GOOD_AS_GOLD] = 1, - [ABILITY_PURIFYING_SALT] = 1, - [ABILITY_WELL_BAKED_BODY] = 1, -}; - -static const u8 sAbilitiesNotTraced[ABILITIES_COUNT] = -{ - [ABILITY_AS_ONE_ICE_RIDER] = 1, - [ABILITY_AS_ONE_SHADOW_RIDER] = 1, - [ABILITY_BATTLE_BOND] = 1, - [ABILITY_COMATOSE] = 1, - [ABILITY_DISGUISE] = 1, - [ABILITY_FLOWER_GIFT] = 1, - [ABILITY_FORECAST] = 1, - [ABILITY_GULP_MISSILE] = 1, - [ABILITY_HUNGER_SWITCH] = 1, - [ABILITY_ICE_FACE] = 1, - [ABILITY_ILLUSION] = 1, - [ABILITY_IMPOSTER] = 1, - [ABILITY_MULTITYPE] = 1, - [ABILITY_NEUTRALIZING_GAS] = 1, - [ABILITY_NONE] = 1, - [ABILITY_POWER_CONSTRUCT] = 1, - [ABILITY_POWER_OF_ALCHEMY] = 1, - [ABILITY_RECEIVER] = 1, - [ABILITY_RKS_SYSTEM] = 1, - [ABILITY_SCHOOLING] = 1, - [ABILITY_SHIELDS_DOWN] = 1, - [ABILITY_STANCE_CHANGE] = 1, - [ABILITY_TRACE] = 1, - [ABILITY_ZEN_MODE] = 1, - [ABILITY_ZERO_TO_HERO] = 1, -}; - static const u8 sHoldEffectToType[][2] = { {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, @@ -2784,7 +2544,7 @@ u8 DoBattlerEndTurnEffects(void) { MAGIC_GUARD_CHECK; // R/S does not perform this sleep check, which causes the nightmare effect to - // persist even after the affected Pokemon has been awakened by Shed Skin. + // persist even after the affected Pokémon has been awakened by Shed Skin. if (gBattleMons[battler].status1 & STATUS1_SLEEP) { gBattleMoveDamage = GetNonDynamaxMaxHP(battler) / 4; @@ -2873,7 +2633,7 @@ u8 DoBattlerEndTurnEffects(void) } if (gBattlerAttacker != gBattlersCount) { - effect = 2; // a pokemon was awaken + effect = 2; // a Pokémon was awaken break; } else @@ -2937,7 +2697,7 @@ u8 DoBattlerEndTurnEffects(void) if (gDisableStructs[battler].disabledMove == gBattleMons[battler].moves[i]) break; } - if (i == MAX_MON_MOVES) // pokemon does not have the disabled move anymore + if (i == MAX_MON_MOVES) // Pokémon does not have the disabled move anymore { gDisableStructs[battler].disabledMove = 0; gDisableStructs[battler].disableTimer = 0; @@ -2954,7 +2714,7 @@ u8 DoBattlerEndTurnEffects(void) case ENDTURN_ENCORE: // encore if (gDisableStructs[battler].encoreTimer != 0) { - if (gBattleMons[battler].moves[gDisableStructs[battler].encoredMovePos] != gDisableStructs[battler].encoredMove) // pokemon does not have the encored move anymore + if (gBattleMons[battler].moves[gDisableStructs[battler].encoredMovePos] != gDisableStructs[battler].encoredMove) // Pokémon does not have the encored move anymore { gDisableStructs[battler].encoredMove = 0; gDisableStructs[battler].encoreTimer = 0; @@ -4229,6 +3989,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 u32 moveType, move; u32 side; u32 i, j; + u32 partner; struct Pokemon *mon; if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) @@ -4715,6 +4476,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN) && !(gBattleStruct->intrepidSwordBoost[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]])) { + gBattleScripting.savedBattler = gBattlerAttacker; gBattlerAttacker = battler; if (B_INTREPID_SWORD == GEN_9) gBattleStruct->intrepidSwordBoost[GetBattlerSide(battler)] |= gBitTable[gBattlerPartyIndexes[battler]]; @@ -4728,6 +4490,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN) && !(gBattleStruct->dauntlessShieldBoost[GetBattlerSide(battler)] & gBitTable[gBattlerPartyIndexes[battler]])) { + gBattleScripting.savedBattler = gBattlerAttacker; gBattlerAttacker = battler; if (B_DAUNTLESS_SHIELD == GEN_9) gBattleStruct->dauntlessShieldBoost[GetBattlerSide(battler)] |= gBitTable[gBattlerPartyIndexes[battler]]; @@ -4838,6 +4601,46 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 effect++; } break; + case ABILITY_HOSPITALITY: + partner = BATTLE_PARTNER(battler); + + if (!gSpecialStatuses[battler].switchInAbilityDone && IsDoubleBattle() && gBattleMons[partner].hp < gBattleMons[partner].maxHP) + { + gBattlerTarget = partner; + gSpecialStatuses[battler].switchInAbilityDone = TRUE; + gBattleMoveDamage = (GetNonDynamaxMaxHP(partner) / 4) * -1; + BattleScriptPushCursorAndCallback(BattleScript_HospitalityActivates); + effect++; + } + break; + case ABILITY_EMBODY_ASPECT_TEAL: + case ABILITY_EMBODY_ASPECT_HEARTHFLAME: + case ABILITY_EMBODY_ASPECT_WELLSPRING: + case ABILITY_EMBODY_ASPECT_CORNERSTONE: + if (!gSpecialStatuses[battler].switchInAbilityDone) + { + u32 stat = STAT_SPATK; + + if (gLastUsedAbility == ABILITY_EMBODY_ASPECT_TEAL) + stat = STAT_SPATK; + else if (gLastUsedAbility == ABILITY_EMBODY_ASPECT_HEARTHFLAME) + stat = STAT_ATK; + else if (gLastUsedAbility == ABILITY_EMBODY_ASPECT_WELLSPRING) + stat = STAT_SPDEF; + else if (gLastUsedAbility == ABILITY_EMBODY_ASPECT_CORNERSTONE) + stat = STAT_DEF; + + if (CompareStat(battler, stat, MAX_STAT_STAGE, CMP_EQUAL)) + break; + + gBattleScripting.savedBattler = gBattlerAttacker; + gBattlerAttacker = battler; + gSpecialStatuses[battler].switchInAbilityDone = TRUE; + SET_STATCHANGER(stat, 1, FALSE); + BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); + effect++; + } + break; } break; case ABILITYEFFECT_ENDTURN: // 1 @@ -5330,34 +5133,22 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED && IsMoveMakingContact(move, gBattlerAttacker) - && gBattleStruct->overwrittenAbilities[gBattlerAttacker] != GetBattlerAbility(gBattlerTarget)) - { - switch (gBattleMons[gBattlerAttacker].ability) - { - case ABILITY_MUMMY: - case ABILITY_BATTLE_BOND: - case ABILITY_COMATOSE: - case ABILITY_DISGUISE: - case ABILITY_MULTITYPE: - case ABILITY_POWER_CONSTRUCT: - case ABILITY_RKS_SYSTEM: - case ABILITY_SCHOOLING: - case ABILITY_SHIELDS_DOWN: - case ABILITY_STANCE_CHANGE: - break; - default: - if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) - { - RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD); - break; - } - - gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_MummyActivates; - effect++; + && gBattleStruct->overwrittenAbilities[gBattlerAttacker] != GetBattlerAbility(gBattlerTarget) + && gBattleMons[gBattlerTarget].ability != ABILITY_MUMMY + && gBattleMons[gBattlerTarget].ability != ABILITY_LINGERING_AROMA + && !gAbilities[gBattleMons[gBattlerTarget].ability].cantBeSuppressed) + { + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) + { + RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD); break; } + + gLastUsedAbility = gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MummyActivates; + effect++; + break; } break; case ABILITY_WANDERING_SPIRIT: @@ -5365,40 +5156,22 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 && IsBattlerAlive(gBattlerAttacker) && TARGET_TURN_DAMAGED && IsMoveMakingContact(move, gBattlerAttacker) - && !IsDynamaxed(gBattlerTarget)) - { - switch (gBattleMons[gBattlerAttacker].ability) - { - case ABILITY_DISGUISE: - case ABILITY_FLOWER_GIFT: - case ABILITY_GULP_MISSILE: - case ABILITY_HUNGER_SWITCH: - case ABILITY_ICE_FACE: - case ABILITY_ILLUSION: - case ABILITY_IMPOSTER: - case ABILITY_RECEIVER: - case ABILITY_RKS_SYSTEM: - case ABILITY_SCHOOLING: - case ABILITY_STANCE_CHANGE: - case ABILITY_WONDER_GUARD: - case ABILITY_ZEN_MODE: - case ABILITY_ZERO_TO_HERO: - break; - default: - if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) - { - RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD); - break; - } - - gLastUsedAbility = gBattleMons[gBattlerAttacker].ability; - gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; - gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gLastUsedAbility; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_WanderingSpiritActivates; - effect++; + && !IsDynamaxed(gBattlerTarget) + && !gAbilities[gBattleMons[gBattlerAttacker].ability].cantBeSwapped) + { + if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_ABILITY_SHIELD) + { + RecordItemEffectBattle(gBattlerAttacker, HOLD_EFFECT_ABILITY_SHIELD); break; } + + gLastUsedAbility = gBattleMons[gBattlerAttacker].ability; + gBattleMons[gBattlerAttacker].ability = gBattleStruct->overwrittenAbilities[gBattlerAttacker] = gBattleMons[gBattlerTarget].ability; + gBattleMons[gBattlerTarget].ability = gBattleStruct->overwrittenAbilities[gBattlerTarget] = gLastUsedAbility; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WanderingSpiritActivates; + effect++; + break; } break; case ABILITY_ANGER_POINT: @@ -6017,23 +5790,23 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 if (gBattleMons[i].ability == ABILITY_TRACE && (gBattleResources->flags->flags[i] & RESOURCE_FLAG_TRACED)) { u32 chosenTarget; - u32 side = (BATTLE_OPPOSITE(GetBattlerPosition(i))) & BIT_SIDE; // side of the opposing pokemon + u32 side = (BATTLE_OPPOSITE(GetBattlerPosition(i))) & BIT_SIDE; // side of the opposing Pokémon u32 target1 = GetBattlerAtPosition(side); u32 target2 = GetBattlerAtPosition(side + BIT_FLANK); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - if (!sAbilitiesNotTraced[gBattleMons[target1].ability] && gBattleMons[target1].hp != 0 - && !sAbilitiesNotTraced[gBattleMons[target2].ability] && gBattleMons[target2].hp != 0) + if (!gAbilities[gBattleMons[target1].ability].cantBeTraced && gBattleMons[target1].hp != 0 + && !gAbilities[gBattleMons[target2].ability].cantBeTraced && gBattleMons[target2].hp != 0) chosenTarget = GetBattlerAtPosition((RandomPercentage(RNG_TRACE, 50) * 2) | side), effect++; - else if (!sAbilitiesNotTraced[gBattleMons[target1].ability] && gBattleMons[target1].hp != 0) + else if (!gAbilities[gBattleMons[target1].ability].cantBeTraced && gBattleMons[target1].hp != 0) chosenTarget = target1, effect++; - else if (!sAbilitiesNotTraced[gBattleMons[target2].ability] && gBattleMons[target2].hp != 0) + else if (!gAbilities[gBattleMons[target2].ability].cantBeTraced && gBattleMons[target2].hp != 0) chosenTarget = target2, effect++; } else { - if (!sAbilitiesNotTraced[gBattleMons[target1].ability] && gBattleMons[target1].hp != 0) + if (!gAbilities[gBattleMons[target1].ability].cantBeTraced && gBattleMons[target1].hp != 0) chosenTarget = target1, effect++; } @@ -6195,30 +5968,6 @@ bool32 TryPrimalReversion(u32 battler) return FALSE; } -bool32 IsNeutralizingGasBannedAbility(u32 ability) -{ - switch (ability) - { - case ABILITY_MULTITYPE: - case ABILITY_ZEN_MODE: - case ABILITY_STANCE_CHANGE: - case ABILITY_POWER_CONSTRUCT: - case ABILITY_SCHOOLING: - case ABILITY_RKS_SYSTEM: - case ABILITY_SHIELDS_DOWN: - case ABILITY_COMATOSE: - case ABILITY_DISGUISE: - case ABILITY_GULP_MISSILE: - case ABILITY_ICE_FACE: - case ABILITY_AS_ONE_ICE_RIDER: - case ABILITY_AS_ONE_SHADOW_RIDER: - case ABILITY_ZERO_TO_HERO: - return TRUE; - default: - return FALSE; - } -} - bool32 IsNeutralizingGasOnField(void) { u32 i; @@ -6252,10 +6001,13 @@ bool32 IsMoldBreakerTypeAbility(u32 ability) u32 GetBattlerAbility(u32 battler) { + if (gAbilities[gBattleMons[battler].ability].cantBeSuppressed) + return gBattleMons[battler].ability; + if (gStatuses3[battler] & STATUS3_GASTRO_ACID) return ABILITY_NONE; - if (IsNeutralizingGasOnField() && !IsNeutralizingGasBannedAbility(gBattleMons[battler].ability)) + if (IsNeutralizingGasOnField() && gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS) return ABILITY_NONE; if (IsMyceliumMightOnField()) @@ -6264,7 +6016,7 @@ u32 GetBattlerAbility(u32 battler) if (((IsMoldBreakerTypeAbility(gBattleMons[gBattlerAttacker].ability) && !(gStatuses3[gBattlerAttacker] & STATUS3_GASTRO_ACID)) || gBattleMoves[gCurrentMove].ignoresTargetAbility) - && sAbilitiesAffectedByMoldBreaker[gBattleMons[battler].ability] + && gAbilities[gBattleMons[battler].ability].breakable && gBattlerByTurnOrder[gCurrentTurnActionNumber] == gBattlerAttacker && gActionsByTurnOrder[gBattlerByTurnOrder[gBattlerAttacker]] == B_ACTION_USE_MOVE && gCurrentTurnActionNumber < gBattlersCount) @@ -8362,6 +8114,8 @@ bool32 IsBattlerProtected(u32 battler, u32 move) return TRUE; else if (gProtectStructs[battler].banefulBunkered) return TRUE; + else if (gProtectStructs[battler].burningBulwarked) + return TRUE; else if ((gProtectStructs[battler].obstructed || gProtectStructs[battler].silkTrapped) && !IS_MOVE_STATUS(move)) return TRUE; else if (gProtectStructs[battler].spikyShielded) @@ -8868,6 +8622,10 @@ static inline u32 CalcMoveBasePower(u32 move, u32 battlerAtk, u32 battlerDef, u3 basePower += 50 * gBattleStruct->timesGotHit[GetBattlerSide(battlerAtk)][gBattlerPartyIndexes[battlerAtk]]; basePower = (basePower > 350) ? 350 : basePower; break; + case EFFECT_FICKLE_BEAM: + if (RandomPercentage(RNG_FICKLE_BEAM, 30)) + basePower *= 2; + break; } // Move-specific base power changes @@ -9988,6 +9746,7 @@ s32 CalculateMoveDamageVars(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveTy static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 moveType, u32 battlerDef, u32 defType, u32 battlerAtk, bool32 recordAbilities) { uq4_12_t mod = GetTypeModifier(moveType, defType); + u32 abilityAtk = GetBattlerAbility(battlerAtk); if (mod == UQ_4_12(0.0) && GetBattlerHoldEffect(battlerDef, TRUE) == HOLD_EFFECT_RING_TARGET) { @@ -9999,11 +9758,13 @@ static inline void MulByTypeEffectiveness(uq4_12_t *modifier, u32 move, u32 move { mod = UQ_4_12(1.0); } - else if ((moveType == TYPE_FIGHTING || moveType == TYPE_NORMAL) && defType == TYPE_GHOST && GetBattlerAbility(battlerAtk) == ABILITY_SCRAPPY && mod == UQ_4_12(0.0)) + else if ((moveType == TYPE_FIGHTING || moveType == TYPE_NORMAL) && defType == TYPE_GHOST + && (abilityAtk == ABILITY_SCRAPPY || abilityAtk == ABILITY_MINDS_EYE) + && mod == UQ_4_12(0.0)) { mod = UQ_4_12(1.0); if (recordAbilities) - RecordAbilityBattle(battlerAtk, ABILITY_SCRAPPY); + RecordAbilityBattle(battlerAtk, abilityAtk); } if (moveType == TYPE_PSYCHIC && defType == TYPE_DARK && gStatuses3[battlerDef] & STATUS3_MIRACLE_EYED && mod == UQ_4_12(0.0)) @@ -10422,6 +10183,7 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) u16 targetSpecies = SPECIES_NONE; u16 species = gBattleMons[battler].species; const struct FormChange *formChanges = GetSpeciesFormChanges(species); + struct Pokemon *mon = &GetBattlerParty(battler)[gBattlerPartyIndexes[battler]]; u16 heldItem; if (formChanges != NULL) @@ -10469,8 +10231,8 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method) } break; case FORM_CHANGE_BATTLE_GIGANTAMAX: - // TODO: check Gigantamax factor - targetSpecies = formChanges[i].targetSpecies; + if (GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) + targetSpecies = formChanges[i].targetSpecies; break; case FORM_CHANGE_BATTLE_WEATHER: // Check if there is a required ability and if the battler's ability does not match it @@ -10809,84 +10571,6 @@ bool32 CanFling(u32 battler) return TRUE; } -// Ability checks -bool32 IsRolePlayBannedAbilityAtk(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sRolePlayBannedAttackerAbilities); i++) - { - if (ability == sRolePlayBannedAttackerAbilities[i]) - return TRUE; - } - return FALSE; -} - -bool32 IsRolePlayBannedAbility(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sRolePlayBannedAbilities); i++) - { - if (ability == sRolePlayBannedAbilities[i]) - return TRUE; - } - return FALSE; -} - -bool32 IsSkillSwapBannedAbility(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sSkillSwapBannedAbilities); i++) - { - if (ability == sSkillSwapBannedAbilities[i]) - return TRUE; - } - return FALSE; -} - -bool32 IsWorrySeedBannedAbility(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sWorrySeedBannedAbilities); i++) - { - if (ability == sWorrySeedBannedAbilities[i]) - return TRUE; - } - return FALSE; -} - -bool32 IsGastroAcidBannedAbility(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sGastroAcidBannedAbilities); i++) - { - if (ability == sGastroAcidBannedAbilities[i]) - return TRUE; - } - return FALSE; -} - -bool32 IsEntrainmentBannedAbilityAttacker(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sEntrainmentBannedAttackerAbilities); i++) - { - if (ability == sEntrainmentBannedAttackerAbilities[i]) - return TRUE; - } - return FALSE; -} - -bool32 IsEntrainmentTargetOrSimpleBeamBannedAbility(u16 ability) -{ - u32 i; - for (i = 0; i < ARRAY_COUNT(sEntrainmentTargetSimpleBeamBannedAbilities); i++) - { - if (ability == sEntrainmentTargetSimpleBeamBannedAbilities[i]) - return TRUE; - } - return FALSE; -} - // Sort an array of battlers by speed // Useful for effects like pickpocket, eject button, red card, dancer void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast) diff --git a/src/berry.c b/src/berry.c index 20b7f08f9fa6..53a85f31ed93 100644 --- a/src/berry.c +++ b/src/berry.c @@ -9,13 +9,13 @@ #include "item_menu.h" #include "main.h" #include "random.h" +#include "script_pokemon_util.h" #include "string_util.h" #include "text.h" #include "constants/event_object_movement.h" #include "constants/items.h" static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry); -static bool32 BerryTreeGrow(struct BerryTree *tree); static u16 BerryTypeToItemId(u16 berry); static u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree); static u8 GetNumStagesWateredByBerryTreeId(u8 id); @@ -23,142 +23,34 @@ static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water); static u8 CalcBerryYield(struct BerryTree *tree); static u8 GetBerryCountByBerryTreeId(u8 id); static u16 GetStageDurationByBerryType(u8); - -//.rodata -static const u8 sBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); -static const u8 sBerryDescriptionPart2_Cheri[] = _("The bright red Berry is very spicy."); -static const u8 sBerryDescriptionPart1_Chesto[] = _("The Berry's thick skin and fruit are"); -static const u8 sBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); -static const u8 sBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); -static const u8 sBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); -static const u8 sBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); -static const u8 sBerryDescriptionPart2_Rawst[] = _("the Berry seems to grow very bitter."); -static const u8 sBerryDescriptionPart1_Aspear[] = _("The hard Berry is dense with a rich"); -static const u8 sBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); -static const u8 sBerryDescriptionPart1_Leppa[] = _("Grows slower than Cheri and others."); -static const u8 sBerryDescriptionPart2_Leppa[] = _("The smaller the Berry, the tastier."); -static const u8 sBerryDescriptionPart1_Oran[] = _("A peculiar Berry with a mix of flavors."); -static const u8 sBerryDescriptionPart2_Oran[] = _("Berries grow in half a day."); -static const u8 sBerryDescriptionPart1_Persim[] = _("Loves sunlight. The Berry's color"); -static const u8 sBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); -static const u8 sBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); -static const u8 sBerryDescriptionPart2_Lum[] = _("care, it may grow two Berries."); -static const u8 sBerryDescriptionPart1_Sitrus[] = _("Closely related to Oran. The large"); -static const u8 sBerryDescriptionPart2_Sitrus[] = _("Berry has a well-rounded flavor."); -static const u8 sBerryDescriptionPart1_Figy[] = _("The Berry, which looks chewed up,"); -static const u8 sBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); -static const u8 sBerryDescriptionPart1_Wiki[] = _("The Berry is said to have grown lumpy"); -static const u8 sBerryDescriptionPart2_Wiki[] = _("to help Pokémon grip it."); -static const u8 sBerryDescriptionPart1_Mago[] = _("The Berry turns curvy as it grows."); -static const u8 sBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); -static const u8 sBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); -static const u8 sBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); -static const u8 sBerryDescriptionPart1_Iapapa[] = _("The Berry is very big and sour."); -static const u8 sBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); -static const u8 sBerryDescriptionPart1_Razz[] = _("The red Berry tastes slightly spicy."); -static const u8 sBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); -static const u8 sBerryDescriptionPart1_Bluk[] = _("The Berry is blue on the outside, but"); -static const u8 sBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); -static const u8 sBerryDescriptionPart1_Nanab[] = _("This Berry was the seventh"); -static const u8 sBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); -static const u8 sBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); -static const u8 sBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); -static const u8 sBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); -static const u8 sBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); -static const u8 sBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); -static const u8 sBerryDescriptionPart2_Pomeg[] = _("it only grows up to six Berries."); -static const u8 sBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); -static const u8 sBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); -static const u8 sBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); -static const u8 sBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); -static const u8 sBerryDescriptionPart1_Hondew[] = _("A Berry that is very valuable and"); -static const u8 sBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); -static const u8 sBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); -static const u8 sBerryDescriptionPart2_Grepa[] = _("shape, the Berry is unimaginably sour."); -static const u8 sBerryDescriptionPart1_Tamato[] = _("The Berry is lip-bendingly spicy."); -static const u8 sBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); -static const u8 sBerryDescriptionPart1_Cornn[] = _("A Berry from an ancient era. May not"); -static const u8 sBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); -static const u8 sBerryDescriptionPart1_Magost[] = _("A Berry that is widely said to have"); -static const u8 sBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); -static const u8 sBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); -static const u8 sBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); -static const u8 sBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); -static const u8 sBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); -static const u8 sBerryDescriptionPart1_Spelon[] = _("The vividly red Berry is very spicy."); -static const u8 sBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); -static const u8 sBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); -static const u8 sBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); -static const u8 sBerryDescriptionPart1_Watmel[] = _("A huge Berry, with some over 20"); -static const u8 sBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); -static const u8 sBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); -static const u8 sBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); -static const u8 sBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); -static const u8 sBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); -static const u8 sBerryDescriptionPart1_Chilan[] = _("It can be made into a whistle that"); -static const u8 sBerryDescriptionPart2_Chilan[] = _("produces an indescribable sound."); -static const u8 sBerryDescriptionPart1_Occa[] = _("Said to grow in the tropics once,"); -static const u8 sBerryDescriptionPart2_Occa[] = _("it boasts an intensely hot spiciness."); -static const u8 sBerryDescriptionPart1_Passho[] = _("Its flesh is dotted with many tiny"); -static const u8 sBerryDescriptionPart2_Passho[] = _("bubbles that keep it afloat in water."); -static const u8 sBerryDescriptionPart1_Wacan[] = _("Energy drawn from lightning strikes"); -static const u8 sBerryDescriptionPart2_Wacan[] = _("makes this Berry grow big and rich."); -static const u8 sBerryDescriptionPart1_Rindo[] = _("This berry has a vegetable-like flavor,"); -static const u8 sBerryDescriptionPart2_Rindo[] = _("but is rich in health-promoting fiber."); -static const u8 sBerryDescriptionPart1_Yache[] = _("This Berry has a refreshing dry and"); -static const u8 sBerryDescriptionPart2_Yache[] = _("sour flavor. Tastes better chilled."); -static const u8 sBerryDescriptionPart1_Chople[] = _("Contains a substance that generates"); -static const u8 sBerryDescriptionPart2_Chople[] = _("heat. Can even fire up a chilly heart."); -static const u8 sBerryDescriptionPart1_Kebia[] = _("Brilliant green on the outside, inside"); -static const u8 sBerryDescriptionPart2_Kebia[] = _("it is packed with black-colored flesh."); -static const u8 sBerryDescriptionPart1_Shuca[] = _("The sweet pulp has just the hint of a"); -static const u8 sBerryDescriptionPart2_Shuca[] = _("a hard-edged and fragrant bite to it."); -static const u8 sBerryDescriptionPart1_Coba[] = _("This Berry is said to be a cross of"); -static const u8 sBerryDescriptionPart2_Coba[] = _("two Berries blown in from far away."); -static const u8 sBerryDescriptionPart1_Payapa[] = _("Said to sense human emotions, it swells"); -static const u8 sBerryDescriptionPart2_Payapa[] = _("roundly when a person approaches."); -static const u8 sBerryDescriptionPart1_Tanga[] = _("It grows a flower at the tip that lures"); -static const u8 sBerryDescriptionPart2_Tanga[] = _("Bug Pokémon with its stringy petals."); -static const u8 sBerryDescriptionPart1_Charti[] = _("Often used for pickles because of its"); -static const u8 sBerryDescriptionPart2_Charti[] = _("dry flavor. Sometimes eaten raw."); -static const u8 sBerryDescriptionPart1_Kasib[] = _("Old superstitions say it has an odd"); -static const u8 sBerryDescriptionPart2_Kasib[] = _("power. A popular good-luck charm."); -static const u8 sBerryDescriptionPart1_Haban[] = _("Less bitter if enough of this Berry"); -static const u8 sBerryDescriptionPart2_Haban[] = _("is boiled down. Makes a good jam."); -static const u8 sBerryDescriptionPart1_Colbur[] = _("Tiny hooks on the surface latch onto"); -static const u8 sBerryDescriptionPart2_Colbur[] = _("Pokémon to reach far-off places."); -static const u8 sBerryDescriptionPart1_Babiri[] = _("Very tough with a strong flavor. It"); -static const u8 sBerryDescriptionPart2_Babiri[] = _("was used to make medicine in the past."); -static const u8 sBerryDescriptionPart1_Roseli[] = _("In nature, they grow in wide rings"); -static const u8 sBerryDescriptionPart2_Roseli[] = _("for reasons that are still unknown."); -static const u8 sBerryDescriptionPart1_Liechi[] = _("A mysterious Berry. It is rumored to"); -static const u8 sBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); -static const u8 sBerryDescriptionPart1_Ganlon[] = _("A mysterious Berry. It is rumored to"); -static const u8 sBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); -static const u8 sBerryDescriptionPart1_Salac[] = _("A mysterious Berry. It is rumored to"); -static const u8 sBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); -static const u8 sBerryDescriptionPart1_Petaya[] = _("A mysterious Berry. It is rumored to"); -static const u8 sBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); -static const u8 sBerryDescriptionPart1_Apicot[] = _("A very mystifying Berry. No telling"); -static const u8 sBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); -static const u8 sBerryDescriptionPart1_Lansat[] = _("Said to be a legendary Berry."); -static const u8 sBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); -static const u8 sBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); -static const u8 sBerryDescriptionPart2_Starf[] = _("world's edge. Considered a mirage."); -static const u8 sBerryDescriptionPart1_Enigma[] = _("A completely enigmatic Berry."); -static const u8 sBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); -static const u8 sBerryDescriptionPart1_Micle[] = _("It makes other food eaten at the"); -static const u8 sBerryDescriptionPart2_Micle[] = _("same time taste sweet."); -static const u8 sBerryDescriptionPart1_Custap[] = _("The flesh underneath the Custap"); -static const u8 sBerryDescriptionPart2_Custap[] = _("Berry's skin is sweet and creamy soft."); -static const u8 sBerryDescriptionPart1_Jaboca[] = _("The drupelets that make up this berry"); -static const u8 sBerryDescriptionPart2_Jaboca[] = _("pop rythmically if handled roughly."); -static const u8 sBerryDescriptionPart1_Rowap[] = _("People once worked top-shaped pieces"); -static const u8 sBerryDescriptionPart2_Rowap[] = _("of this berry free to use as toys."); -static const u8 sBerryDescriptionPart1_Kee[] = _("A berry that is incredibly spicy at"); -static const u8 sBerryDescriptionPart2_Kee[] = _("first, then extremely bitter."); -static const u8 sBerryDescriptionPart1_Maranga[] = _("Its outside is very bitter, but its"); -static const u8 sBerryDescriptionPart2_Maranga[] = _("inside tastes like a sweet drink."); +static u8 GetDrainRateByBerryType(u8); +static u8 GetWaterBonusByBerryType(u8); +static u8 GetWeedingBonusByBerryType(u8); +static u8 GetPestsBonusByBerryType(u8); +static void SetTreeMutations(u8 id, u8 berry); +static u8 GetTreeMutationValue(u8 id); +static u16 GetBerryPestSpecies(u8 berryId); +static void TryForWeeds(struct BerryTree *tree); +static void TryForPests(struct BerryTree *tree); +static void AddTreeBonus(struct BerryTree *tree, u8 bonus); + +// Check include/config/overworld.h configs and throw an error if illegal +#if OW_BERRY_GROWTH_RATE < GEN_3 || (OW_BERRY_GROWTH_RATE > GEN_7 && OW_BERRY_GROWTH_RATE != GEN_6_ORAS) +#error "OW_BERRY_GROWTH_RATE must be between GEN_3 and GEN_7!" +#endif + +#if OW_BERRY_YIELD_RATE < GEN_3 || (OW_BERRY_YIELD_RATE > GEN_6 && OW_BERRY_GROWTH_RATE != GEN_6_ORAS) +#error "OW_BERRY_YIELD_RATE must be between GEN_3 and GEN_6!" +#elif OW_BERRY_YIELD_RATE == GEN_5 +#error "OW_BERRY_YIELD_RATE can not be GEN_5!" +#endif + +#if OW_BERRY_MOISTURE && OW_BERRY_DRAIN_RATE != GEN_4 && OW_BERRY_DRAIN_RATE != GEN_6_XY && OW_BERRY_DRAIN_RATE != GEN_6_ORAS +#error "OW_BERRY_DRAIN_RATE must be GEN_5, GEN_6_XY or GEN_6_ORAS!" +#endif + +#define GROWTH_DURATION(g3, g4, g5, xy, oras, g7) OW_BERRY_GROWTH_RATE == GEN_3 ? g3 : OW_BERRY_GROWTH_RATE == GEN_4 ? g4 : OW_BERRY_GROWTH_RATE == GEN_5 ? g5 : OW_BERRY_GROWTH_RATE == GEN_6_XY ? xy : OW_BERRY_GROWTH_RATE == GEN_6_ORAS ? oras : g7 +#define YIELD_RATE(g3, g4, xy, oras) GROWTH_DURATION(g3, g4, 0, xy, oras, 0) const struct Berry gBerries[] = { @@ -166,1224 +58,1564 @@ const struct Berry gBerries[] = { .name = _("Cheri"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 20, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Cheri, - .description2 = sBerryDescriptionPart2_Cheri, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("Blooms with delicate pretty flowers."), + .description2 = COMPOUND_STRING("The bright red Berry is very spicy."), + .growthDuration = GROWTH_DURATION(12, 12, 18, 24, 16, 24), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_CHESTO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Chesto"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_PURPLE, .size = 80, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Chesto, - .description2 = sBerryDescriptionPart2_Chesto, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("The Berry's thick skin and fruit are"), + .description2 = COMPOUND_STRING("very tough. It is dry-tasting all over."), + .growthDuration = GROWTH_DURATION(12, 12, 18, 24, 16, 24), .spicy = 0, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_PECHA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pecha"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_PINK, .size = 40, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Pecha, - .description2 = sBerryDescriptionPart2_Pecha, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("Very sweet and delicious."), + .description2 = COMPOUND_STRING("Also very tender - handle with care."), + .growthDuration = GROWTH_DURATION(12, 12, 18, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 4, + .pestsBonus = 6, }, [ITEM_RAWST_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rawst"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 32, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Rawst, - .description2 = sBerryDescriptionPart2_Rawst, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("If the leaves grow long and curly,"), + .description2 = COMPOUND_STRING("the Berry seems to grow very bitter."), + .growthDuration = GROWTH_DURATION(12, 12, 18, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 10, .sour = 0, .smoothness = 25, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_ASPEAR_BERRY - FIRST_BERRY_INDEX] = { .name = _("Aspear"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_YELLOW, .size = 50, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Aspear, - .description2 = sBerryDescriptionPart2_Aspear, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("The hard Berry is dense with a rich"), + .description2 = COMPOUND_STRING("juice. It is quite sour."), + .growthDuration = GROWTH_DURATION(12, 12, 18, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 0, .sour = 10, .smoothness = 25, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_LEPPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Leppa"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 28, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Leppa, - .description2 = sBerryDescriptionPart2_Leppa, - .stageDuration = 4, + .maxYield = YIELD_RATE(3, 5, 15, 22), + .minYield = YIELD_RATE(2, 2, 2, 2), + .description1 = COMPOUND_STRING("Grows slower than Cheri and others."), + .description2 = COMPOUND_STRING("The smaller the Berry, the tastier."), + .growthDuration = GROWTH_DURATION(16, 16, 24, 24, 16, 24), .spicy = 10, .dry = 0, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 15, + .waterBonus = 15, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_ORAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Oran"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_BLUE, .size = 35, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Oran, - .description2 = sBerryDescriptionPart2_Oran, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("A peculiar Berry with a mix of flavors."), + .description2 = COMPOUND_STRING("Berries grow in half a day."), + .growthDuration = GROWTH_DURATION(12, 16, 24, 24, 16, 24), .spicy = 10, .dry = 10, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 4, + .pestsBonus = 6, }, [ITEM_PERSIM_BERRY - FIRST_BERRY_INDEX] = { .name = _("Persim"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 47, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Persim, - .description2 = sBerryDescriptionPart2_Persim, - .stageDuration = 3, + .maxYield = YIELD_RATE(3, 5, 15, 20), + .minYield = YIELD_RATE(2, 2, 4, 4), + .description1 = COMPOUND_STRING("Loves sunlight. The Berry's color"), + .description2 = COMPOUND_STRING("grows vivid when exposed to the sun."), + .growthDuration = GROWTH_DURATION(12, 16, 24, 24, 16, 24), .spicy = 10, .dry = 10, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 15, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_LUM_BERRY - FIRST_BERRY_INDEX] = { .name = _("Lum"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 34, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Lum, - .description2 = sBerryDescriptionPart2_Lum, - .stageDuration = 12, + .maxYield = YIELD_RATE(2, 5, 20, 18), + .minYield = YIELD_RATE(1, 2, 3, 2), + .description1 = COMPOUND_STRING("Slow to grow. If raised with loving"), + .description2 = COMPOUND_STRING("care, it may grow two Berries."), + .growthDuration = GROWTH_DURATION(48, 48, 72, 48, 32, 48), .spicy = 10, .dry = 10, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 8, + .waterBonus = 12, + .weedsBonus = 1, + .pestsBonus = 6, }, [ITEM_SITRUS_BERRY - FIRST_BERRY_INDEX] = { .name = _("Sitrus"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_YELLOW, .size = 95, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Sitrus, - .description2 = sBerryDescriptionPart2_Sitrus, - .stageDuration = 6, + .maxYield = YIELD_RATE(3, 5, 20, 27), + .minYield = YIELD_RATE(2, 2, 3, 3), + .description1 = COMPOUND_STRING("Closely related to Oran. The large"), + .description2 = COMPOUND_STRING("Berry has a well-rounded flavor."), + .growthDuration = GROWTH_DURATION(24, 32, 48, 48, 32, 48), .spicy = 10, .dry = 10, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 7, + .waterBonus = 12, + .weedsBonus = 1, + .pestsBonus = 6, }, [ITEM_FIGY_BERRY - FIRST_BERRY_INDEX] = { .name = _("Figy"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 100, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Figy, - .description2 = sBerryDescriptionPart2_Figy, - .stageDuration = 6, + .maxYield = YIELD_RATE(3, 5, 15, 15), + .minYield = YIELD_RATE(2, 1, 3, 3), + .description1 = COMPOUND_STRING("The Berry, which looks chewed up,"), + .description2 = COMPOUND_STRING("brims with spicy substances."), + .growthDuration = GROWTH_DURATION(24, 20, 30, 24, 16, 24), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 10, + .waterBonus = 15, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_WIKI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Wiki"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 115, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Wiki, - .description2 = sBerryDescriptionPart2_Wiki, - .stageDuration = 6, + .maxYield = YIELD_RATE(3, 5, 15, 15), + .minYield = YIELD_RATE(2, 1, 3, 3), + .description1 = COMPOUND_STRING("The Berry is said to have grown lumpy"), + .description2 = COMPOUND_STRING("to help Pokémon grip it."), + .growthDuration = GROWTH_DURATION(24, 20, 30, 24, 16, 24), .spicy = 0, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 10, + .waterBonus = 15, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_MAGO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Mago"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 126, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Mago, - .description2 = sBerryDescriptionPart2_Mago, - .stageDuration = 6, + .maxYield = YIELD_RATE(3, 5, 15, 15), + .minYield = YIELD_RATE(2, 1, 3, 3), + .description1 = COMPOUND_STRING("The Berry turns curvy as it grows."), + .description2 = COMPOUND_STRING("The curvier, the sweeter and tastier."), + .growthDuration = GROWTH_DURATION(24, 20, 30, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 25, + .drainRate = 10, + .waterBonus = 15, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_AGUAV_BERRY - FIRST_BERRY_INDEX] = { .name = _("Aguav"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 64, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Aguav, - .description2 = sBerryDescriptionPart2_Aguav, - .stageDuration = 6, + .maxYield = YIELD_RATE(3, 5, 15, 15), + .minYield = YIELD_RATE(2, 1, 3, 3), + .description1 = COMPOUND_STRING("The flower is dainty. It is rare in its"), + .description2 = COMPOUND_STRING("ability to grow without light."), + .growthDuration = GROWTH_DURATION(24, 20, 30, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 10, .sour = 0, .smoothness = 25, + .drainRate = 10, + .waterBonus = 15, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_IAPAPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Iapapa"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 223, - .maxYield = 3, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Iapapa, - .description2 = sBerryDescriptionPart2_Iapapa, - .stageDuration = 6, + .maxYield = YIELD_RATE(3, 5, 15, 15), + .minYield = YIELD_RATE(2, 1, 3, 3), + .description1 = COMPOUND_STRING("The Berry is very big and sour."), + .description2 = COMPOUND_STRING("It takes at least a day to grow."), + .growthDuration = GROWTH_DURATION(24, 20, 30, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 0, .sour = 10, .smoothness = 25, + .drainRate = 10, + .waterBonus = 15, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_RAZZ_BERRY - FIRST_BERRY_INDEX] = { .name = _("Razz"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 120, - .maxYield = 6, - .minYield = 3, - .description1 = sBerryDescriptionPart1_Razz, - .description2 = sBerryDescriptionPart2_Razz, - .stageDuration = 1, + .maxYield = YIELD_RATE(6, 10, 15, 20), + .minYield = YIELD_RATE(3, 2, 3, 4), + .description1 = COMPOUND_STRING("The red Berry tastes slightly spicy."), + .description2 = COMPOUND_STRING("It grows quickly in just four hours."), + .growthDuration = GROWTH_DURATION(4, 8, 12, 24, 16, 24), .spicy = 10, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 20, + .drainRate = 35, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_BLUK_BERRY - FIRST_BERRY_INDEX] = { .name = _("Bluk"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 108, - .maxYield = 6, - .minYield = 3, - .description1 = sBerryDescriptionPart1_Bluk, - .description2 = sBerryDescriptionPart2_Bluk, - .stageDuration = 1, + .maxYield = YIELD_RATE(6, 10, 15, 20), + .minYield = YIELD_RATE(3, 2, 3, 4), + .description1 = COMPOUND_STRING("The Berry is blue on the outside, but"), + .description2 = COMPOUND_STRING("it blackens the mouth when eaten."), + .growthDuration = GROWTH_DURATION(4, 8, 12, 24, 16, 24), .spicy = 0, .dry = 10, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 20, + .drainRate = 35, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_NANAB_BERRY - FIRST_BERRY_INDEX] = { .name = _("Nanab"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_PINK, .size = 77, - .maxYield = 6, - .minYield = 3, - .description1 = sBerryDescriptionPart1_Nanab, - .description2 = sBerryDescriptionPart2_Nanab, - .stageDuration = 1, + .maxYield = YIELD_RATE(6, 10, 15, 20), + .minYield = YIELD_RATE(3, 2, 3, 4), + .description1 = COMPOUND_STRING("This Berry was the seventh"), + .description2 = COMPOUND_STRING("discovered in the world. It is sweet."), + .growthDuration = GROWTH_DURATION(4, 8, 12, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 10, .bitter = 10, .sour = 0, .smoothness = 20, + .drainRate = 35, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_WEPEAR_BERRY - FIRST_BERRY_INDEX] = { .name = _("Wepear"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 74, - .maxYield = 6, - .minYield = 3, - .description1 = sBerryDescriptionPart1_Wepear, - .description2 = sBerryDescriptionPart2_Wepear, - .stageDuration = 1, + .maxYield = YIELD_RATE(6, 10, 15, 20), + .minYield = YIELD_RATE(3, 2, 3, 4), + .description1 = COMPOUND_STRING("The flower is small and white. It has a"), + .description2 = COMPOUND_STRING("delicate balance of bitter and sour."), + .growthDuration = GROWTH_DURATION(4, 8, 12, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 35, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_PINAP_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pinap"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_YELLOW, .size = 80, - .maxYield = 6, - .minYield = 3, - .description1 = sBerryDescriptionPart1_Pinap, - .description2 = sBerryDescriptionPart2_Pinap, - .stageDuration = 1, + .maxYield = YIELD_RATE(6, 10, 15, 20), + .minYield = YIELD_RATE(3, 2, 3, 4), + .description1 = COMPOUND_STRING("Weak against wind and cold."), + .description2 = COMPOUND_STRING("The fruit is spicy and the skin, sour."), + .growthDuration = GROWTH_DURATION(4, 8, 12, 24, 16, 24), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 0, .sour = 10, .smoothness = 20, + .drainRate = 35, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_POMEG_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pomeg"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 135, - .maxYield = 6, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Pomeg, - .description2 = sBerryDescriptionPart2_Pomeg, - .stageDuration = 3, + .maxYield = YIELD_RATE(6, 5, 20, 26), + .minYield = YIELD_RATE(2, 1, 1, 2), + .description1 = COMPOUND_STRING("However much it is watered,"), + .description2 = COMPOUND_STRING("it only grows up to six Berries."), + .growthDuration = GROWTH_DURATION(12, 32, 48, 48, 32, 48), .spicy = 10, .dry = 0, .sweet = 10, .bitter = 10, .sour = 0, .smoothness = 20, + .drainRate = 8, + .waterBonus = 5, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_KELPSY_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kelpsy"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_BLUE, .size = 150, - .maxYield = 6, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Kelpsy, - .description2 = sBerryDescriptionPart2_Kelpsy, - .stageDuration = 3, + .maxYield = YIELD_RATE(6, 5, 20, 26), + .minYield = YIELD_RATE(2, 1, 1, 2), + .description1 = COMPOUND_STRING("A rare variety shaped like a root."), + .description2 = COMPOUND_STRING("Grows a very large flower."), + .growthDuration = GROWTH_DURATION(12, 32, 48, 48, 32, 48), .spicy = 0, .dry = 10, .sweet = 0, .bitter = 10, .sour = 10, .smoothness = 20, + .drainRate = 8, + .waterBonus = 5, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_QUALOT_BERRY - FIRST_BERRY_INDEX] = { .name = _("Qualot"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_YELLOW, .size = 110, - .maxYield = 6, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Qualot, - .description2 = sBerryDescriptionPart2_Qualot, - .stageDuration = 3, + .maxYield = YIELD_RATE(6, 5, 20, 26), + .minYield = YIELD_RATE(2, 1, 1, 2), + .description1 = COMPOUND_STRING("Loves water. Grows strong even in"), + .description2 = COMPOUND_STRING("locations with constant rainfall."), + .growthDuration = GROWTH_DURATION(12, 32, 48, 48, 32, 48), .spicy = 10, .dry = 0, .sweet = 10, .bitter = 0, .sour = 10, .smoothness = 20, + .drainRate = 8, + .waterBonus = 5, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_HONDEW_BERRY - FIRST_BERRY_INDEX] = { .name = _("Hondew"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 162, - .maxYield = 6, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Hondew, - .description2 = sBerryDescriptionPart2_Hondew, - .stageDuration = 3, + .maxYield = YIELD_RATE(6, 5, 20, 26), + .minYield = YIELD_RATE(2, 1, 1, 2), + .description1 = COMPOUND_STRING("A Berry that is very valuable and"), + .description2 = COMPOUND_STRING("rarely seen. It is very delicious."), + .growthDuration = GROWTH_DURATION(12, 32, 48, 48, 32, 48), .spicy = 10, .dry = 10, .sweet = 0, .bitter = 10, .sour = 0, .smoothness = 20, + .drainRate = 8, + .waterBonus = 5, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_GREPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Grepa"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 149, - .maxYield = 6, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Grepa, - .description2 = sBerryDescriptionPart2_Grepa, - .stageDuration = 3, + .maxYield = YIELD_RATE(6, 5, 20, 26), + .minYield = YIELD_RATE(2, 1, 1, 2), + .description1 = COMPOUND_STRING("Despite its tenderness and round"), + .description2 = COMPOUND_STRING("shape, the Berry is unimaginably sour."), + .growthDuration = GROWTH_DURATION(12, 32, 48, 48, 32, 48), .spicy = 0, .dry = 10, .sweet = 10, .bitter = 0, .sour = 10, .smoothness = 20, + .drainRate = 8, + .waterBonus = 5, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_TAMATO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Tamato"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 200, - .maxYield = 4, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Tamato, - .description2 = sBerryDescriptionPart2_Tamato, - .stageDuration = 6, + .maxYield = YIELD_RATE(4, 5, 20, 26), + .minYield = YIELD_RATE(2, 1, 1, 2), + .description1 = COMPOUND_STRING("The Berry is lip-bendingly spicy."), + .description2 = COMPOUND_STRING("It takes time to grow."), + .growthDuration = GROWTH_DURATION(24, 32, 48, 48, 32, 48), .spicy = 20, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 8, + .waterBonus = 5, + .weedsBonus = 3, + .pestsBonus = 6, }, [ITEM_CORNN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Cornn"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 75, - .maxYield = 4, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Cornn, - .description2 = sBerryDescriptionPart2_Cornn, - .stageDuration = 6, + .maxYield = YIELD_RATE(4, 10, 15, 15), + .minYield = YIELD_RATE(2, 2, 3, 3), + .description1 = COMPOUND_STRING("A Berry from an ancient era. May not"), + .description2 = COMPOUND_STRING("grow unless planted in quantity."), + .growthDuration = GROWTH_DURATION(24, 24, 36, 24, 16, 24), .spicy = 0, .dry = 20, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 10, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_MAGOST_BERRY - FIRST_BERRY_INDEX] = { .name = _("Magost"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 140, - .maxYield = 4, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Magost, - .description2 = sBerryDescriptionPart2_Magost, - .stageDuration = 6, + .maxYield = YIELD_RATE(4, 10, 15, 15), + .minYield = YIELD_RATE(2, 2, 3, 3), + .description1 = COMPOUND_STRING("A Berry that is widely said to have"), + .description2 = COMPOUND_STRING("a finely balanced flavor."), + .growthDuration = GROWTH_DURATION(24, 24, 36, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 20, .bitter = 10, .sour = 0, .smoothness = 30, + .drainRate = 10, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_RABUTA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rabuta"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_GREEN, .size = 226, - .maxYield = 4, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Rabuta, - .description2 = sBerryDescriptionPart2_Rabuta, - .stageDuration = 6, + .maxYield = YIELD_RATE(4, 10, 15, 15), + .minYield = YIELD_RATE(2, 2, 3, 3), + .description1 = COMPOUND_STRING("A rare variety that is overgrown with"), + .description2 = COMPOUND_STRING("hair. It is quite bitter."), + .growthDuration = GROWTH_DURATION(24, 24, 36, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 20, .sour = 10, .smoothness = 30, + .drainRate = 10, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_NOMEL_BERRY - FIRST_BERRY_INDEX] = { .name = _("Nomel"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_YELLOW, .size = 285, - .maxYield = 4, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Nomel, - .description2 = sBerryDescriptionPart2_Nomel, - .stageDuration = 6, + .maxYield = YIELD_RATE(4, 10, 15, 15), + .minYield = YIELD_RATE(2, 2, 3, 3), + .description1 = COMPOUND_STRING("Quite sour. Just one bite makes it"), + .description2 = COMPOUND_STRING("impossible to taste for three days."), + .growthDuration = GROWTH_DURATION(24, 24, 36, 24, 16, 24), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 0, .sour = 20, .smoothness = 30, + .drainRate = 10, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_SPELON_BERRY - FIRST_BERRY_INDEX] = { .name = _("Spelon"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 133, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Spelon, - .description2 = sBerryDescriptionPart2_Spelon, - .stageDuration = 18, + .maxYield = YIELD_RATE(2, 15, 15, 15), + .minYield = YIELD_RATE(1, 2, 3, 3), + .description1 = COMPOUND_STRING("The vividly red Berry is very spicy."), + .description2 = COMPOUND_STRING("Its warts secrete a spicy substance."), + .growthDuration = GROWTH_DURATION(72, 60, 90, 24, 16, 24), .spicy = 40, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 70, + .drainRate = 8, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_PAMTRE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Pamtre"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 244, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Pamtre, - .description2 = sBerryDescriptionPart2_Pamtre, - .stageDuration = 18, + .maxYield = YIELD_RATE(2, 15, 15, 15), + .minYield = YIELD_RATE(1, 3, 3, 3), + .description1 = COMPOUND_STRING("Drifts on the sea from somewhere."), + .description2 = COMPOUND_STRING("It is thought to grow elsewhere."), + .growthDuration = GROWTH_DURATION(72, 60, 90, 24, 16, 24), .spicy = 0, .dry = 40, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 70, + .drainRate = 8, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_WATMEL_BERRY - FIRST_BERRY_INDEX] = { .name = _("Watmel"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_PINK, .size = 250, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Watmel, - .description2 = sBerryDescriptionPart2_Watmel, - .stageDuration = 18, + .maxYield = YIELD_RATE(2, 15, 15, 15), + .minYield = YIELD_RATE(1, 2, 3, 3), + .description1 = COMPOUND_STRING("A huge Berry, with some over 20"), + .description2 = COMPOUND_STRING("inches discovered. Exceedingly sweet."), + .growthDuration = GROWTH_DURATION(72, 60, 90, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 40, .bitter = 10, .sour = 0, .smoothness = 70, + .drainRate = 8, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_DURIN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Durin"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 280, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Durin, - .description2 = sBerryDescriptionPart2_Durin, - .stageDuration = 18, + .maxYield = YIELD_RATE(2, 15, 15, 15), + .minYield = YIELD_RATE(1, 3, 3, 3), + .description1 = COMPOUND_STRING("Bitter to even look at. It is so"), + .description2 = COMPOUND_STRING("bitter, no one has ever eaten it as is."), + .growthDuration = GROWTH_DURATION(72, 60, 90, 24, 16, 24), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 40, .sour = 10, .smoothness = 70, + .drainRate = 8, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_BELUE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Belue"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 300, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Belue, - .description2 = sBerryDescriptionPart2_Belue, - .stageDuration = 18, + .maxYield = YIELD_RATE(2, 15, 15, 15), + .minYield = YIELD_RATE(1, 2, 3, 3), + .description1 = COMPOUND_STRING("It is glossy and looks delicious, but"), + .description2 = COMPOUND_STRING("it is awfully sour. Takes time to grow."), + .growthDuration = GROWTH_DURATION(72, 60, 90, 24, 16, 24), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 0, .sour = 40, .smoothness = 70, + .drainRate = 8, + .waterBonus = 10, + .weedsBonus = 2, + .pestsBonus = 6, }, [ITEM_CHILAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Chilan"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 34, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Chilan, - .description2 = sBerryDescriptionPart2_Chilan, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("It can be made into a whistle that"), + .description2 = COMPOUND_STRING("produces an indescribable sound."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 25, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_OCCA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Occa"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_RED, .size = 90, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Occa, - .description2 = sBerryDescriptionPart2_Occa, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Said to grow in the tropics once,"), + .description2 = COMPOUND_STRING("it boasts an intensely hot spiciness."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 15, .dry = 0, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_PASSHO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Passho"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_BLUE, .size = 33, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Passho, - .description2 = sBerryDescriptionPart2_Passho, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Its flesh is dotted with many tiny"), + .description2 = COMPOUND_STRING("bubbles that keep it afloat in water."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 15, .sweet = 0, .bitter = 10, .sour = 0, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_WACAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Wacan"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 250, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Wacan, - .description2 = sBerryDescriptionPart2_Wacan, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Energy drawn from lightning strikes"), + .description2 = COMPOUND_STRING("makes this Berry grow big and rich."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 0, .sweet = 15, .bitter = 0, .sour = 10, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_RINDO_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rindo"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_GREEN, .size = 156, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Rindo, - .description2 = sBerryDescriptionPart2_Rindo, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("This berry has a vegetable-like flavor,"), + .description2 = COMPOUND_STRING("but is rich in health-promoting fiber."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 15, .sour = 0, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_YACHE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Yache"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_BLUE, .size = 135, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Yache, - .description2 = sBerryDescriptionPart2_Yache, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("This Berry has a refreshing dry and"), + .description2 = COMPOUND_STRING("sour flavor. Tastes better chilled."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 10, .sweet = 0, .bitter = 0, .sour = 15, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_CHOPLE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Chople"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 77, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Chople, - .description2 = sBerryDescriptionPart2_Chople, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Contains a substance that generates"), + .description2 = COMPOUND_STRING("heat. Can even fire up a chilly heart."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 15, .dry = 0, .sweet = 0, .bitter = 10, .sour = 0, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_KEBIA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kebia"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_GREEN, .size = 90, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Kebia, - .description2 = sBerryDescriptionPart2_Kebia, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Brilliant green on the outside, inside"), + .description2 = COMPOUND_STRING("it is packed with black-colored flesh."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 15, .sweet = 0, .bitter = 0, .sour = 10, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_SHUCA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Shuca"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 42, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Shuca, - .description2 = sBerryDescriptionPart2_Shuca, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("The sweet pulp has just the hint of a"), + .description2 = COMPOUND_STRING("a hard-edged and fragrant bite to it."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 10, .dry = 0, .sweet = 15, .bitter = 0, .sour = 0, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_COBA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Coba"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_BLUE, .size = 278, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Coba, - .description2 = sBerryDescriptionPart2_Coba, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("This Berry is said to be a cross of"), + .description2 = COMPOUND_STRING("two Berries blown in from far away."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 10, .sweet = 0, .bitter = 15, .sour = 0, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_PAYAPA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Payapa"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_PURPLE, .size = 252, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Payapa, - .description2 = sBerryDescriptionPart2_Payapa, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Said to sense human emotions, it swells"), + .description2 = COMPOUND_STRING("roundly when a person approaches."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 0, .sweet = 10, .bitter = 0, .sour = 15, .smoothness = 30, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_TANGA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Tanga"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_GREEN, .size = 42, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Tanga, - .description2 = sBerryDescriptionPart2_Tanga, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("It grows a flower at the tip that lures"), + .description2 = COMPOUND_STRING("Bug Pokémon with its stringy petals."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 20, .dry = 0, .sweet = 0, .bitter = 0, .sour = 10, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_CHARTI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Charti"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 28, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Charti, - .description2 = sBerryDescriptionPart2_Charti, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Often used for pickles because of its"), + .description2 = COMPOUND_STRING("dry flavor. Sometimes eaten raw."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 10, .dry = 20, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_KASIB_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kasib"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 144, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Kasib, - .description2 = sBerryDescriptionPart2_Kasib, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Old superstitions say it has an odd"), + .description2 = COMPOUND_STRING("power. A popular good-luck charm."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 10, .sweet = 20, .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_HABAN_BERRY - FIRST_BERRY_INDEX] = { .name = _("Haban"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 23, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Haban, - .description2 = sBerryDescriptionPart2_Haban, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Less bitter if enough of this Berry"), + .description2 = COMPOUND_STRING("is boiled down. Makes a good jam."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 0, .sweet = 10, .bitter = 20, .sour = 0, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_COLBUR_BERRY - FIRST_BERRY_INDEX] = { .name = _("Colbur"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_PURPLE, .size = 39, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Colbur, - .description2 = sBerryDescriptionPart2_Colbur, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Tiny hooks on the surface latch onto"), + .description2 = COMPOUND_STRING("Pokémon to reach far-off places."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 10, .sour = 20, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_BABIRI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Babiri"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 265, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Babiri, - .description2 = sBerryDescriptionPart2_Babiri, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("Very tough with a strong flavor. It"), + .description2 = COMPOUND_STRING("was used to make medicine in the past."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 25, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_ROSELI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Roseli"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PINK, .size = 35, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Roseli, - .description2 = sBerryDescriptionPart2_Roseli, - .stageDuration = 18, + .maxYield = YIELD_RATE(5, 5, 20, 10), + .minYield = YIELD_RATE(2, 1, 3, 2), + .description1 = COMPOUND_STRING("In nature, they grow in wide rings"), + .description2 = COMPOUND_STRING("for reasons that are still unknown."), + .growthDuration = GROWTH_DURATION(84, 72, 108, 48, 32, 48), .spicy = 0, .dry = 0, .sweet = 25, .bitter = 10, .sour = 0, .smoothness = 35, + .drainRate = 6, + .waterBonus = 10, + .weedsBonus = 1, + .pestsBonus = 4, }, [ITEM_LIECHI_BERRY - FIRST_BERRY_INDEX] = { .name = _("Liechi"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_RED, .size = 111, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Liechi, - .description2 = sBerryDescriptionPart2_Liechi, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("A mysterious Berry. It is rumored to"), + .description2 = COMPOUND_STRING("contain the power of the sea."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 40, .dry = 0, .sweet = 40, .bitter = 0, .sour = 10, .smoothness = 80, + .drainRate = 4, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_GANLON_BERRY - FIRST_BERRY_INDEX] = { .name = _("Ganlon"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_PURPLE, .size = 33, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Ganlon, - .description2 = sBerryDescriptionPart2_Ganlon, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("A mysterious Berry. It is rumored to"), + .description2 = COMPOUND_STRING("contain the power of the land."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 0, .dry = 40, .sweet = 0, .bitter = 40, .sour = 0, .smoothness = 80, + .drainRate = 4, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_SALAC_BERRY - FIRST_BERRY_INDEX] = { .name = _("Salac"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_GREEN, .size = 95, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Salac, - .description2 = sBerryDescriptionPart2_Salac, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("A mysterious Berry. It is rumored to"), + .description2 = COMPOUND_STRING("contain the power of the sky."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 0, .dry = 0, .sweet = 40, .bitter = 0, .sour = 40, .smoothness = 80, + .drainRate = 4, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_PETAYA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Petaya"), .firmness = BERRY_FIRMNESS_VERY_HARD, + .color = BERRY_COLOR_PINK, .size = 237, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Petaya, - .description2 = sBerryDescriptionPart2_Petaya, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("A mysterious Berry. It is rumored to"), + .description2 = COMPOUND_STRING("contain the power of all living things."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 40, .dry = 0, .sweet = 0, .bitter = 40, .sour = 0, .smoothness = 80, + .drainRate = 4, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_APICOT_BERRY - FIRST_BERRY_INDEX] = { .name = _("Apicot"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_BLUE, .size = 75, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Apicot, - .description2 = sBerryDescriptionPart2_Apicot, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("A very mystifying Berry. No telling"), + .description2 = COMPOUND_STRING("what may happen or how it can be used."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 0, .dry = 40, .sweet = 0, .bitter = 0, .sour = 40, .smoothness = 80, + .drainRate = 4, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_LANSAT_BERRY - FIRST_BERRY_INDEX] = { .name = _("Lansat"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_RED, .size = 97, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Lansat, - .description2 = sBerryDescriptionPart2_Lansat, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 7), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("Said to be a legendary Berry."), + .description2 = COMPOUND_STRING("Holding it supposedly brings joy."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 120, 48, 72), .spicy = 10, .dry = 10, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 30, + .drainRate = 4, + .waterBonus = 1, + .weedsBonus = 0, + .pestsBonus = 1, }, [ITEM_STARF_BERRY - FIRST_BERRY_INDEX] = { .name = _("Starf"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_GREEN, .size = 153, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Starf, - .description2 = sBerryDescriptionPart2_Starf, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 7), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("So strong, it was abandoned at the"), + .description2 = COMPOUND_STRING("world's edge. Considered a mirage."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 120, 48, 72), .spicy = 10, .dry = 10, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 30, + .drainRate = 4, + .waterBonus = 1, + .weedsBonus = 0, + .pestsBonus = 1, }, [ITEM_ENIGMA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Enigma"), .firmness = BERRY_FIRMNESS_HARD, + .color = BERRY_COLOR_PURPLE, .size = 155, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Enigma, - .description2 = sBerryDescriptionPart2_Enigma, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 13), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("A completely enigmatic Berry."), + .description2 = COMPOUND_STRING("Appears to have the power of stars."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 72, 48, 72), .spicy = 40, .dry = 10, .sweet = 0, .bitter = 0, .sour = 0, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 0, }, [ITEM_MICLE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Micle"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_GREEN, .size = 41, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Micle, - .description2 = sBerryDescriptionPart2_Micle, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 13), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("It makes other food eaten at the"), + .description2 = COMPOUND_STRING("same time taste sweet."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 72, 48, 72), .spicy = 0, .dry = 40, .sweet = 10, .bitter = 0, .sour = 0, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 0, }, [ITEM_CUSTAP_BERRY - FIRST_BERRY_INDEX] = { .name = _("Custap"), .firmness = BERRY_FIRMNESS_SUPER_HARD, + .color = BERRY_COLOR_RED, .size = 267, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Custap, - .description2 = sBerryDescriptionPart2_Custap, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 13), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("The flesh underneath the Custap"), + .description2 = COMPOUND_STRING("Berry's skin is sweet and creamy soft."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 72, 48, 72), .spicy = 0, .dry = 0, .sweet = 40, .bitter = 10, .sour = 0, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 0, }, [ITEM_JABOCA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Jaboca"), .firmness = BERRY_FIRMNESS_SOFT, + .color = BERRY_COLOR_YELLOW, .size = 33, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Jaboca, - .description2 = sBerryDescriptionPart2_Jaboca, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 13), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("The drupelets that make up this berry"), + .description2 = COMPOUND_STRING("pop rythmically if handled roughly."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 72, 48, 72), .spicy = 0, .dry = 0, .sweet = 0, .bitter = 40, .sour = 10, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 0, }, [ITEM_ROWAP_BERRY - FIRST_BERRY_INDEX] = { .name = _("Rowap"), .firmness = BERRY_FIRMNESS_VERY_SOFT, + .color = BERRY_COLOR_BLUE, .size = 52, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Rowap, - .description2 = sBerryDescriptionPart2_Rowap, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 13), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("People once worked top-shaped pieces"), + .description2 = COMPOUND_STRING("of this berry free to use as toys."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 72, 48, 72), .spicy = 10, .dry = 0, .sweet = 0, .bitter = 0, .sour = 40, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 0, }, [ITEM_KEE_BERRY - FIRST_BERRY_INDEX] = { .name = _("Kee"), .firmness = BERRY_FIRMNESS_UNKNOWN, + .color = BERRY_COLOR_YELLOW, .size = 0, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Kee, - .description2 = sBerryDescriptionPart2_Kee, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("A berry that is incredibly spicy at"), + .description2 = COMPOUND_STRING("first, then extremely bitter."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 30, .dry = 30, .sweet = 10, .bitter = 10, .sour = 10, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_MARANGA_BERRY - FIRST_BERRY_INDEX] = { .name = _("Marnga"), // "Maranga" is too long .firmness = BERRY_FIRMNESS_UNKNOWN, + .color = BERRY_COLOR_BLUE, .size = 0, - .maxYield = 5, - .minYield = 2, - .description1 = sBerryDescriptionPart1_Maranga, - .description2 = sBerryDescriptionPart2_Maranga, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 10, 13), + .minYield = YIELD_RATE(1, 1, 1, 2), + .description1 = COMPOUND_STRING("Its outside is very bitter, but its"), + .description2 = COMPOUND_STRING("inside tastes like a sweet drink."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 96, 48, 72), .spicy = 10, .dry = 10, .sweet = 30, .bitter = 30, .sour = 10, .smoothness = 60, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 2, }, [ITEM_ENIGMA_BERRY_E_READER - FIRST_BERRY_INDEX] = { .name = _("Enigma"), .firmness = BERRY_FIRMNESS_UNKNOWN, + .color = BERRY_COLOR_PURPLE, .size = 0, - .maxYield = 2, - .minYield = 1, - .description1 = sBerryDescriptionPart1_Enigma, - .description2 = sBerryDescriptionPart2_Enigma, - .stageDuration = 24, + .maxYield = YIELD_RATE(2, 5, 5, 13), + .minYield = YIELD_RATE(1, 1, 1, 1), + .description1 = COMPOUND_STRING("A completely enigmatic Berry."), + .description2 = COMPOUND_STRING("Appears to have the power of stars."), + .growthDuration = GROWTH_DURATION(96, 96, 144, 72, 48, 72), .spicy = 40, .dry = 40, .sweet = 40, .bitter = 40, .sour = 40, .smoothness = 40, + .drainRate = 7, + .waterBonus = 2, + .weedsBonus = 0, + .pestsBonus = 0, }, }; @@ -1435,14 +1667,6 @@ const struct BerryCrushBerryData gBerryCrush_BerryData[] = { const struct BerryTree gBlankBerryTree = {}; -// unused -void ClearEnigmaBerries(void) -{ - #ifndef FREE_ENIGMA_BERRY - CpuFill16(0, &gSaveBlock1Ptr->enigmaBerry, sizeof(gSaveBlock1Ptr->enigmaBerry)); - #endif -} - void SetEnigmaBerry(u8 *src) { #ifndef FREE_ENIGMA_BERRY @@ -1475,7 +1699,7 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) bool32 IsEnigmaBerryValid(void) { #ifndef FREE_ENIGMA_BERRY - if (!gSaveBlock1Ptr->enigmaBerry.berry.stageDuration) + if (!gSaveBlock1Ptr->enigmaBerry.berry.growthDuration) return FALSE; if (!gSaveBlock1Ptr->enigmaBerry.berry.maxYield) return FALSE; @@ -1512,19 +1736,31 @@ bool32 ObjectEventInteractionWaterBerryTree(void) { struct BerryTree *tree = GetBerryTreeInfo(GetObjectEventBerryTreeId(gSelectedObjectEvent)); + if (OW_BERRY_MOISTURE) + { + tree->moistureLevel = 100; + if (OW_BERRY_ALWAYS_WATERABLE) + { + return TRUE; + } + AddTreeBonus(tree, GetWaterBonusByBerryType(tree->berry)); + } + switch (tree->stage) { case BERRY_STAGE_PLANTED: - tree->watered1 = TRUE; + tree->watered |= (1 << 0); break; case BERRY_STAGE_SPROUTED: - tree->watered2 = TRUE; + tree->watered |= (1 << 1); break; case BERRY_STAGE_TALLER: - tree->watered3 = TRUE; + case BERRY_STAGE_TRUNK: + case BERRY_STAGE_BUDDING: + tree->watered |= (1 << 2); break; case BERRY_STAGE_FLOWERING: - tree->watered4 = TRUE; + tree->watered |= (1 << 3); break; default: return FALSE; @@ -1557,7 +1793,7 @@ void ClearBerryTrees(void) gSaveBlock1Ptr->berryTrees[i] = gBlankBerryTree; } -static bool32 BerryTreeGrow(struct BerryTree *tree) +bool32 BerryTreeGrow(struct BerryTree *tree) { if (tree->stopGrowth) return FALSE; @@ -1570,26 +1806,46 @@ static bool32 BerryTreeGrow(struct BerryTree *tree) tree->berryYield = CalcBerryYield(tree); case BERRY_STAGE_PLANTED: case BERRY_STAGE_SPROUTED: - case BERRY_STAGE_TALLER: + case BERRY_STAGE_TRUNK: tree->stage++; break; + case BERRY_STAGE_TALLER: + if (OW_BERRY_SIX_STAGES) + tree->stage = BERRY_STAGE_TRUNK; + else + tree->stage++; + break; + case BERRY_STAGE_BUDDING: + tree->berryYield = CalcBerryYield(tree); + tree->stage = BERRY_STAGE_BERRIES; + break; case BERRY_STAGE_BERRIES: - tree->watered1 = 0; - tree->watered2 = 0; - tree->watered3 = 0; - tree->watered4 = 0; + tree->watered = 0; tree->berryYield = 0; tree->stage = BERRY_STAGE_SPROUTED; - if (++tree->regrowthCount == 10) + tree->moistureLevel = 100; + if (++tree->regrowthCount == ((tree->mulch == ITEM_TO_MULCH(ITEM_GOOEY_MULCH)) ? 15 : 10)) *tree = gBlankBerryTree; break; } return TRUE; } +static u16 GetMulchAffectedGrowthRate(u16 berryDuration, u8 mulch, u8 stage) +{ + if (stage == BERRY_STAGE_BERRIES) + return berryDuration; + if (mulch == ITEM_TO_MULCH(ITEM_GROWTH_MULCH)) + return berryDuration / 4 * 3; + if (mulch == ITEM_TO_MULCH(ITEM_DAMP_MULCH)) + return berryDuration / 2 * 3; + return berryDuration; +} + void BerryTreeTimeUpdate(s32 minutes) { int i; + u8 drainVal; struct BerryTree *tree; for (i = 0; i < BERRY_TREES_COUNT; i++) @@ -1606,6 +1862,51 @@ void BerryTreeTimeUpdate(s32 minutes) { s32 time = minutes; + // Check moisture gradient, pests and weeds + while (time > 0 && tree->stage != BERRY_STAGE_BERRIES) + { + tree->moistureClock += 1; + time -= 1; + if (tree->moistureClock % 60 == 0) + { + if (OW_BERRY_MOISTURE) + { + drainVal = (OW_BERRY_DRAIN_RATE == GEN_4) ? GetDrainRateByBerryType(tree->berry) : (OW_BERRY_DRAIN_RATE == GEN_6_XY) ? 4 : 25; + if (OW_BERRY_MULCH_USAGE) + { + if (tree->mulch == ITEM_TO_MULCH(ITEM_GROWTH_MULCH)) + drainVal *= 2; + if (tree->mulch == ITEM_TO_MULCH(ITEM_DAMP_MULCH)) + drainVal /= 2; + if (tree->mulch == ITEM_TO_MULCH(ITEM_BOOST_MULCH) || tree->mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH)) + drainVal = 25; + } + if (OW_BERRY_ALWAYS_WATERABLE && tree->moistureLevel == 0) + { + if (tree->berryYield > GetBerryInfo(tree->berry)->minYield + GetBerryInfo(tree->berry)->maxYield / 5) + tree->berryYield -= GetBerryInfo(tree->berry)->maxYield / 5; + else + tree->berryYield = GetBerryInfo(tree->berry)->minYield; + } + else if (tree->moistureLevel <= drainVal) + tree->moistureLevel = 0; + else + tree->moistureLevel -= drainVal; + if (OW_BERRY_DRAIN_RATE == GEN_6_XY && tree->moistureLevel <= 4) // Without variable drain rate (and without mulches), this needs to trigger after 24 hours, hence the extra check + tree->moistureLevel = 0; + } + if (tree->moistureClock == 120) + { + TryForWeeds(tree); + TryForPests(tree); + tree->moistureClock = 0; + } + } + } + + // Check Berry growth + time = minutes; + while (time != 0) { if (tree->minutesUntilNextStage > time) @@ -1614,11 +1915,11 @@ void BerryTreeTimeUpdate(s32 minutes) break; } time -= tree->minutesUntilNextStage; - tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); + tree->minutesUntilNextStage = GetMulchAffectedGrowthRate(GetStageDurationByBerryType(tree->berry), tree->mulch, tree->stage); if (!BerryTreeGrow(tree)) break; if (tree->stage == BERRY_STAGE_BERRIES) - tree->minutesUntilNextStage *= 4; + tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry) * ((tree->mulch == ITEM_TO_MULCH(ITEM_STABLE_MULCH)) ? 6 : 4); } } } @@ -1629,20 +1930,24 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 allowGrowth) { struct BerryTree *tree = GetBerryTreeInfo(id); - *tree = gBlankBerryTree; tree->berry = berry; - tree->minutesUntilNextStage = GetStageDurationByBerryType(berry); + tree->minutesUntilNextStage = GetMulchAffectedGrowthRate(GetStageDurationByBerryType(berry), tree->mulch, stage); tree->stage = stage; + tree->moistureLevel = 100; + if (OW_BERRY_ALWAYS_WATERABLE) + tree->berryYield = GetBerryInfo(berry)->maxYield; if (stage == BERRY_STAGE_BERRIES) { tree->berryYield = CalcBerryYield(tree); - tree->minutesUntilNextStage *= 4; + tree->minutesUntilNextStage *= ((tree->mulch == ITEM_TO_MULCH(ITEM_STABLE_MULCH)) ? 6 : 4); } // Stop growth, to keep tree at this stage until the player has seen it // allowGrowth is always true for berry trees the player has planted if (!allowGrowth) tree->stopGrowth = TRUE; + + SetTreeMutations(id, berry); } void RemoveBerryTree(u8 id) @@ -1660,6 +1965,11 @@ u8 GetStageByBerryTreeId(u8 id) return gSaveBlock1Ptr->berryTrees[id].stage; } +u8 GetMulchByBerryTreeId(u8 id) +{ + return gSaveBlock1Ptr->berryTrees[id].mulch; +} + u8 ItemIdToBerryType(u16 item) { u16 berry = item - FIRST_BERRY_INDEX; @@ -1700,13 +2010,13 @@ static u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) { u8 count = 0; - if (tree->watered1) + if (tree->watered & (1 << 0)) count++; - if (tree->watered2) + if (tree->watered & (1 << 1)) count++; - if (tree->watered3) + if (tree->watered & (1 << 2)) count++; - if (tree->watered4) + if (tree->watered & (1 << 3)) count++; return count; } @@ -1732,7 +2042,7 @@ static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) u32 rand; u32 extraYield; - if (water == 0) + if (water == 0 || OW_BERRY_MOISTURE) return min; else { @@ -1752,10 +2062,19 @@ static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) static u8 CalcBerryYield(struct BerryTree *tree) { const struct Berry *berry = GetBerryInfo(tree->berry); - u8 min = berry->minYield; + u8 min = tree->berryYield; u8 max = berry->maxYield; + u8 result; + if (OW_BERRY_MULCH_USAGE && (tree->mulch == ITEM_TO_MULCH(ITEM_RICH_MULCH) || tree->mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) + min += 2; + if (!(OW_BERRY_MOISTURE && OW_BERRY_ALWAYS_WATERABLE)) + min += berry->minYield; + if (min >= max) + result = max; + else + result = CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); - return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); + return result; } static u8 GetBerryCountByBerryTreeId(u8 id) @@ -1765,7 +2084,36 @@ static u8 GetBerryCountByBerryTreeId(u8 id) static u16 GetStageDurationByBerryType(u8 berry) { - return GetBerryInfo(berry)->stageDuration * 60; + return GetBerryInfo(berry)->growthDuration * 60 / (OW_BERRY_SIX_STAGES ? 6 : 4); +} + +static u8 GetDrainRateByBerryType(u8 berry) +{ + return GetBerryInfo(berry)->drainRate; +} + +static u8 GetWaterBonusByBerryType(u8 berry) +{ + return GetBerryInfo(berry)->waterBonus; +} + +static u8 GetWeedingBonusByBerryType(u8 berry) +{ + u8 bonus = GetBerryInfo(berry)->weedsBonus; + return (bonus == 0) ? 1 : bonus * 5; +} + +static u8 GetPestsBonusByBerryType(u8 berry) +{ + u8 bonus = GetBerryInfo(berry)->pestsBonus; + return (bonus == 0) ? 2 : bonus * 5; +} + +bool8 CanWaterBerryPlot(void) +{ + if (!OW_BERRY_MOISTURE || OW_BERRY_ALWAYS_WATERABLE) + return TRUE; + return (gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].moistureLevel == 0); } void ObjectEventInteractionGetBerryTreeData(void) @@ -1803,6 +2151,15 @@ void ObjectEventInteractionGetBerryCountString(void) u8 berry = GetBerryTypeByBerryTreeId(treeId); u8 count = GetBerryCountByBerryTreeId(treeId); GetBerryCountStringByBerryType(berry, gStringVar1, count); + berry = GetTreeMutationValue(treeId); + if (berry > 0) + { + count = 1; + GetBerryCountStringByBerryType(berry, gStringVar3, count); + gSpecialVar_Result = TRUE; + } + else + gSpecialVar_Result = FALSE; } void Bag_ChooseBerry(void) @@ -1810,6 +2167,11 @@ void Bag_ChooseBerry(void) SetMainCallback2(CB2_ChooseBerry); } +void Bag_ChooseMulch(void) +{ + SetMainCallback2(CB2_ChooseMulch); +} + void ObjectEventInteractionPlantBerryTree(void) { u8 berry = ItemIdToBerryType(gSpecialVar_ItemId); @@ -1818,12 +2180,31 @@ void ObjectEventInteractionPlantBerryTree(void) ObjectEventInteractionGetBerryTreeData(); } +void ObjectEventInteractionApplyMulch(void) +{ + u8 mulch = ITEM_TO_MULCH(gSpecialVar_ItemId); + + gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].mulch = mulch; + StringExpandPlaceholders(gStringVar1, gItems[gSpecialVar_ItemId].name); +} + void ObjectEventInteractionPickBerryTree(void) { u8 id = GetObjectEventBerryTreeId(gSelectedObjectEvent); u8 berry = GetBerryTypeByBerryTreeId(id); + u8 mutation = GetTreeMutationValue(id); - gSpecialVar_0x8004 = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id)); + if (!OW_BERRY_MUTATIONS || mutation == 0) + { + gSpecialVar_0x8004 = AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id)); + return; + } + gSpecialVar_0x8004 = (CheckBagHasSpace(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id)) && CheckBagHasSpace(BerryTypeToItemId(mutation), 1)) + 2; + if (gSpecialVar_0x8004 == 3) + { + AddBagItem(BerryTypeToItemId(berry), GetBerryCountByBerryTreeId(id)); + AddBagItem(BerryTypeToItemId(mutation), 1); + } } void ObjectEventInteractionRemoveBerryTree(void) @@ -1832,11 +2213,43 @@ void ObjectEventInteractionRemoveBerryTree(void) SetBerryTreeJustPicked(gSpecialVar_LastTalked, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); } +void ObjectEventInteractionPullBerryWeed(void) +{ + struct BerryTree *tree = GetBerryTreeInfo(GetObjectEventBerryTreeId(gSelectedObjectEvent)); + tree->weeds = FALSE; + AddTreeBonus(tree, GetWeedingBonusByBerryType(tree->berry)); +} + +void ObjectEventInteractionClearBerryPests(void) +{ + struct BerryTree *tree = GetBerryTreeInfo(GetObjectEventBerryTreeId(gSelectedObjectEvent)); + tree->pests = FALSE; + AddTreeBonus(tree, GetPestsBonusByBerryType(tree->berry)); +} + bool8 PlayerHasBerries(void) { return IsBagPocketNonEmpty(POCKET_BERRIES); } +bool8 ObjectEventInteractionBerryHasWeed(void) +{ + return gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].weeds; +} + +bool8 ObjectEventInteractionBerryHasPests(void) +{ + u16 species; + if (!OW_BERRY_PESTS || !gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].pests) + return FALSE; + species = GetBerryPestSpecies(gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].berry); + if (species == SPECIES_NONE) + return FALSE; + CreateScriptedWildMon(species, 14 + Random() % 3, ITEM_NONE); + gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(gSelectedObjectEvent)].pests = FALSE; + return TRUE; +} + // Berry tree growth is frozen at their initial stage (usually, fully grown) until the player has seen the tree // For all berry trees on screen, allow normal growth void SetBerryTreesSeen(void) @@ -1865,3 +2278,210 @@ void SetBerryTreesSeen(void) } } } + +bool8 PlayerHasMulch(void) +{ + if (!OW_BERRY_MULCH_USAGE) + return FALSE; + if (CheckBagHasItem(ITEM_GROWTH_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_DAMP_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_STABLE_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_GOOEY_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_RICH_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_SURPRISE_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_BOOST_MULCH, 1)) + return TRUE; + if (CheckBagHasItem(ITEM_AMAZE_MULCH, 1)) + return TRUE; + return FALSE; +} + +#if OW_BERRY_MUTATIONS == TRUE +#define BERRY_MUTATION_CHANCE 25 + +static const u8 sBerryMutations[][3] = { + {ITEM_TO_BERRY(ITEM_IAPAPA_BERRY), ITEM_TO_BERRY(ITEM_MAGO_BERRY), ITEM_TO_BERRY(ITEM_POMEG_BERRY)}, + {ITEM_TO_BERRY(ITEM_CHESTO_BERRY), ITEM_TO_BERRY(ITEM_PERSIM_BERRY), ITEM_TO_BERRY(ITEM_KELPSY_BERRY)}, + {ITEM_TO_BERRY(ITEM_ORAN_BERRY), ITEM_TO_BERRY(ITEM_PECHA_BERRY), ITEM_TO_BERRY(ITEM_QUALOT_BERRY)}, + {ITEM_TO_BERRY(ITEM_CHESTO_BERRY), ITEM_TO_BERRY(ITEM_PERSIM_BERRY), ITEM_TO_BERRY(ITEM_KELPSY_BERRY)}, + {ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), ITEM_TO_BERRY(ITEM_LEPPA_BERRY), ITEM_TO_BERRY(ITEM_HONDEW_BERRY)}, + {ITEM_TO_BERRY(ITEM_AGUAV_BERRY), ITEM_TO_BERRY(ITEM_FIGY_BERRY), ITEM_TO_BERRY(ITEM_GREPA_BERRY)}, + {ITEM_TO_BERRY(ITEM_LUM_BERRY), ITEM_TO_BERRY(ITEM_SITRUS_BERRY), ITEM_TO_BERRY(ITEM_TAMATO_BERRY)}, + {ITEM_TO_BERRY(ITEM_HONDEW_BERRY), ITEM_TO_BERRY(ITEM_YACHE_BERRY), ITEM_TO_BERRY(ITEM_LIECHI_BERRY)}, + {ITEM_TO_BERRY(ITEM_QUALOT_BERRY), ITEM_TO_BERRY(ITEM_TANGA_BERRY), ITEM_TO_BERRY(ITEM_GANLON_BERRY)}, + {ITEM_TO_BERRY(ITEM_GREPA_BERRY), ITEM_TO_BERRY(ITEM_ROSELI_BERRY), ITEM_TO_BERRY(ITEM_SALAC_BERRY)}, + {ITEM_TO_BERRY(ITEM_POMEG_BERRY), ITEM_TO_BERRY(ITEM_KASIB_BERRY), ITEM_TO_BERRY(ITEM_PETAYA_BERRY)}, + {ITEM_TO_BERRY(ITEM_KELPSY_BERRY), ITEM_TO_BERRY(ITEM_WACAN_BERRY), ITEM_TO_BERRY(ITEM_APICOT_BERRY)}, + {ITEM_TO_BERRY(ITEM_GANLON_BERRY), ITEM_TO_BERRY(ITEM_LIECHI_BERRY), ITEM_TO_BERRY(ITEM_KEE_BERRY)}, + {ITEM_TO_BERRY(ITEM_SALAC_BERRY), ITEM_TO_BERRY(ITEM_PETAYA_BERRY), ITEM_TO_BERRY(ITEM_MARANGA_BERRY)}, + // Up to one more Mutation can be added here for a total of 15 (only 4 bits are allocated) +}; + +static u8 GetMutationOutcome(u8 berry1, u8 berry2) +{ + u8 i; + for(i = 0; i < ARRAY_COUNT(sBerryMutations); i++) + { + if ((sBerryMutations[i][0] == berry1 && sBerryMutations[i][1] == berry2) + ||(sBerryMutations[i][0] == berry2 && sBerryMutations[i][1] == berry1)) + return (i + 1); + } + return 0; +} + +static u8 TryForMutation(u8 berryTreeId, u8 berry) +{ + u8 i, j, mulch; + s16 x1, x2, y1, y2; + + // Get location of current tree + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].trainerRange_berryTreeId == berryTreeId && gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) + break; + } + if (i == OBJECT_EVENTS_COUNT) + return 0; + + x1 = gObjectEvents[i].currentCoords.x; + y1 = gObjectEvents[i].currentCoords.y; + + mulch = GetMulchByBerryTreeId(GetObjectEventBerryTreeId(i)); + + // Try mutation for each adjacent tree + for (j = 0; j < OBJECT_EVENTS_COUNT; j++) + { + if (gObjectEvents[j].active && gObjectEvents[j].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH && GetStageByBerryTreeId(GetObjectEventBerryTreeId(j)) != BERRY_STAGE_NO_BERRY && j != i) + { + x2 = gObjectEvents[j].currentCoords.x; + y2 = gObjectEvents[j].currentCoords.y; + if (Random() % 100 < (BERRY_MUTATION_CHANCE * (mulch == ITEM_TO_MULCH(ITEM_SURPRISE_MULCH) || mulch == ITEM_TO_MULCH(ITEM_AMAZE_MULCH))) && ( + (x1 == x2 && y1 == y2 - 1) || + (x1 == x2 && y1 == y2 + 1) || + (x1 == x2 - 1 && y1 == y2) || + (x1 == x2 + 1 && y1 == y2))) + return GetMutationOutcome(berry, gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(j)].berry); + } + } + return 0; +} +#endif + +struct TreeMutationBitfield { + u8 a: 2; + u8 b: 2; + u8 unused: 4; +}; + +union TreeMutation { + u8 value; + struct TreeMutationBitfield asField; +}; + +static u8 GetTreeMutationValue(u8 id) +{ +#if OW_BERRY_MUTATIONS + struct BerryTree *tree = GetBerryTreeInfo(id); + union TreeMutation myMutation; + if (tree->stopGrowth) // Pre-generated trees shouldn't have mutations + return 0; + myMutation.asField.a = tree->mutationA; + myMutation.asField.b = tree->mutationB; + return sBerryMutations[myMutation.value - 1][2]; +#else + return 0; +#endif +} + +static void SetTreeMutations(u8 id, u8 berry) +{ +#if OW_BERRY_MUTATIONS == TRUE + struct BerryTree *tree = GetBerryTreeInfo(id); + union TreeMutation myMutation; + + myMutation.value = TryForMutation(id, berry); + tree->mutationA = myMutation.asField.a; + tree->mutationB = myMutation.asField.b; +#endif +} + +static u16 GetBerryPestSpecies(u8 berryId) +{ +#if OW_BERRY_PESTS == TRUE + const struct Berry *berry = GetBerryInfo(berryId); + switch(berry->color) + { + case BERRY_COLOR_RED: + return P_FAMILY_LEDYBA ? SPECIES_LEDYBA : SPECIES_NONE; + break; + case BERRY_COLOR_BLUE: + return P_FAMILY_VOLBEAT_ILLUMISE ? SPECIES_VOLBEAT : SPECIES_NONE; + break; + case BERRY_COLOR_PURPLE: + return P_FAMILY_VOLBEAT_ILLUMISE ? SPECIES_ILLUMISE : SPECIES_NONE; + break; + case BERRY_COLOR_GREEN: + return P_FAMILY_BURMY ? SPECIES_BURMY_PLANT_CLOAK : SPECIES_NONE; + break; + case BERRY_COLOR_YELLOW: + return P_FAMILY_COMBEE ? SPECIES_COMBEE : SPECIES_NONE; + break; + case BERRY_COLOR_PINK: + return P_FAMILY_SCATTERBUG ? SPECIES_SPEWPA : SPECIES_NONE; + break; + } +#endif + return SPECIES_NONE; +} + +#define BERRY_WEEDS_CHANCE 15 +#define BERRY_PESTS_CHANCE 15 + +static void TryForWeeds(struct BerryTree *tree) +{ + if (!OW_BERRY_WEEDS) + return; + if (tree->weeds == TRUE) + return; + if (Random() % 100 < BERRY_WEEDS_CHANCE) + tree->weeds = TRUE; +} + +static void TryForPests(struct BerryTree *tree) +{ + if (!OW_BERRY_WEEDS) + return; + if (tree->pests == TRUE) + return; + if (Random() % 100 < BERRY_PESTS_CHANCE && tree->stage > BERRY_STAGE_PLANTED) + tree->pests = TRUE; +} + +static void AddTreeBonus(struct BerryTree *tree, u8 bonus) +{ + if (OW_BERRY_MOISTURE) // use watered field to save track of intermediate bonuses + { + tree->watered += bonus; + while (tree->watered > 10) + { + tree->watered -= 10; + bonus = tree->berryYield + 1; + if (bonus > GetBerryInfo(tree->berry)->maxYield) + bonus = GetBerryInfo(tree->berry)->maxYield; + tree->berryYield = bonus; + } + } + else + { + bonus = tree->berryYield + bonus / 10; + if (bonus > GetBerryInfo(tree->berry)->maxYield) + bonus = GetBerryInfo(tree->berry)->maxYield; + tree->berryYield = bonus; + } +} diff --git a/src/contest.c b/src/contest.c index 19a2a71445a6..13fc85b23d6d 100644 --- a/src/contest.c +++ b/src/contest.c @@ -98,7 +98,7 @@ static void PrintContestantMonName(u8); static void PrintContestantMonNameWithColor(u8, u8); static u8 CreateJudgeSprite(void); static u8 CreateJudgeSpeechBubbleSprite(void); -static u8 CreateContestantSprite(u16, u32, u32, u32); +static u8 CreateContestantSprite(u16, bool8, u32, u32); static void PrintContestMoveDescription(u16); static u16 SanitizeSpecies(u16); static void ContestClearGeneralTextWindow(void); @@ -194,7 +194,7 @@ static void SwapMoveDescAndContestTilemaps(void); #define CONTESTANT_TEXT_COLOR_START 10 enum { -// The "{Pokemon Name} / {Trainer Name}" windows. +// The "{Pokémon Name} / {Trainer Name}" windows. WIN_CONTESTANT0_NAME, WIN_CONTESTANT1_NAME, WIN_CONTESTANT2_NAME, @@ -358,7 +358,7 @@ EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0; EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0; // IWRAM common vars. -u32 gContestRngValue; +rng_value_t gContestRngValue; extern const u8 gText_LinkStandby4[]; extern const u8 gText_BDot[]; @@ -1709,7 +1709,7 @@ static void Task_AppealSetup(u8 taskId) if (++gTasks[taskId].data[0] > 19) { eContest.turnNumber = 0; - eContest.unusedRng = gRngValue; + eContest.unusedRng = 0; if ((gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) && IsPlayerLinkLeader()) { s32 i; @@ -1781,7 +1781,7 @@ static void Task_DoAppeals(u8 taskId) SetMoveAnimAttackerData(eContest.currentContestant); spriteId = CreateContestantSprite( gContestMons[eContest.currentContestant].species, - gContestMons[eContest.currentContestant].otId, + gContestMons[eContest.currentContestant].isShiny, gContestMons[eContest.currentContestant].personality, eContest.currentContestant); gSprites[spriteId].x2 = 120; @@ -2811,6 +2811,7 @@ void CreateContestMonFromParty(u8 partyIndex) gContestMons[gContestPlayerMonIndex].moves[3] = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MOVE4); gContestMons[gContestPlayerMonIndex].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY); gContestMons[gContestPlayerMonIndex].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID); + gContestMons[gContestPlayerMonIndex].isShiny = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_SHINY); heldItem = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HELD_ITEM); cool = gContestMons[gContestPlayerMonIndex].cool; @@ -3114,14 +3115,17 @@ static u8 CreateJudgeSpeechBubbleSprite(void) return spriteId; } -static u8 CreateContestantSprite(u16 species, u32 otId, u32 personality, u32 index) +static u8 CreateContestantSprite(u16 species, bool8 isShiny, u32 personality, u32 index) { u8 spriteId; species = SanitizeSpecies(species); HandleLoadSpecialPokePic(FALSE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_PLAYER_LEFT], species, personality); - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20, personality); + if (!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), 0x120, 0x20, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_PLAYER_LEFT); spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30); @@ -3428,11 +3432,11 @@ static void RankContestants(void) // For each contestant, find the best rank with their point total. // Normally, each point total is different, and this will output the - // rankings as expected. However, if two pokemon are tied, then they + // rankings as expected. However, if two Pokémon are tied, then they // both get the best rank for that point total. // // For example if the point totals are [100, 80, 80, 50], the ranks will - // be [1, 2, 2, 4]. The pokemon with a point total of 80 stop looking + // be [1, 2, 2, 4]. The Pokémon with a point total of 80 stop looking // when they see the first 80 in the array, so they both share the '2' // rank. for (i = 0; i < CONTESTANT_COUNT; i++) @@ -4584,10 +4588,10 @@ void MakeContestantNervous(u8 p) // ContestantStatus::nextTurnOrder field of each contestant. The remaining // turns are assigned such that the turn order will reverse. // -// For example, if no pokemon have a defined nextTurnOrder, then the 4th +// For example, if no Pokémon have a defined nextTurnOrder, then the 4th // will become 1st, the 3rd will become 2nd, etc. // -// Note: This function assumes that multiple pokemon cannot have the same +// Note: This function assumes that multiple Pokémon cannot have the same // nextTurnOrder value. static void ApplyNextTurnOrder(void) { @@ -5354,6 +5358,7 @@ static void SetMoveAnimAttackerData(u8 contestant) gContestResources->moveAnim->species = SanitizeSpecies(gContestMons[contestant].species); gContestResources->moveAnim->personality = gContestMons[contestant].personality; gContestResources->moveAnim->otId = gContestMons[contestant].otId; + gContestResources->moveAnim->isShiny = gContestMons[contestant].isShiny; } static void CreateInvisibleBattleTargetSprite(void) @@ -5565,6 +5570,7 @@ bool8 SaveContestWinner(u8 rank) { // Set the most recent winner so the artist can show the player their painting gCurContestWinner.personality = gContestMons[i].personality; + gCurContestWinner.isShiny = gContestMons[i].isShiny; gCurContestWinner.trainerId = gContestMons[i].otId; gCurContestWinner.species = gContestMons[i].species; StringCopy(gCurContestWinner.monName, gContestMons[i].nickname); @@ -6109,4 +6115,3 @@ void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 langua name[PLAYER_NAME_LENGTH] = EOS; } } - diff --git a/src/contest_painting.c b/src/contest_painting.c index ac65fa7f3b2e..b874ed2f439a 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -363,11 +363,11 @@ static void VBlankCB_ContestPainting(void) static void InitContestMonPixels(u16 species, bool8 backPic) { - bool8 isShiny = IsShinyOtIdPersonality(gContestPaintingWinner->trainerId, gContestPaintingWinner->personality); - const void *pal = GetMonSpritePalFromSpeciesAndPersonality(species, gContestPaintingWinner->trainerId, gContestPaintingWinner->personality); + + const void *pal = GetMonSpritePalFromSpeciesAndPersonality(species, gContestPaintingWinner->isShiny, gContestPaintingWinner->personality); LZDecompressVram(pal, gContestPaintingMonPalette); - if (!isShiny) + if (!gContestPaintingWinner->isShiny) HueShiftMonPalette(gContestPaintingMonPalette, gContestPaintingWinner->personality); if (!backPic) diff --git a/src/contest_util.c b/src/contest_util.c index d0743326caf2..d9e2d0c57393 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -879,7 +879,7 @@ static void Task_ShowWinnerMonBanner(u8 taskId) int i; u8 spriteId; u16 species; - u32 otId; + bool8 isShiny; u32 personality; switch (gTasks[taskId].tState) @@ -891,13 +891,18 @@ static void Task_ShowWinnerMonBanner(u8 taskId) GET_CONTEST_WINNER_ID(i); species = gContestMons[i].species; personality = gContestMons[i].personality; - otId = gContestMons[i].otId; + isShiny = gContestMons[i].isShiny; HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); - LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), personality, species); + + if(!isShiny) + LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), personality, species); + else + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); + SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.paletteTag = species; spriteId = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH + 32, DISPLAY_HEIGHT / 2, 10); @@ -2558,11 +2563,12 @@ bool8 IsContestDebugActive(void) void ShowContestEntryMonPic(void) { - u32 personality, otId; + u32 personality; u16 species; u8 spriteId; u8 taskId; u8 left, top; + bool32 isShiny; if (FindTaskIdByFunc(Task_ShowContestEntryMonPic) == TASK_NONE) { @@ -2571,13 +2577,16 @@ void ShowContestEntryMonPic(void) top = 3; species = gContestMons[gSpecialVar_0x8006].species; personality = gContestMons[gSpecialVar_0x8006].personality; - otId = gContestMons[gSpecialVar_0x8006].otId; + isShiny = gContestMons[gSpecialVar_0x8006].isShiny; taskId = CreateTask(Task_ShowContestEntryMonPic, 0x50); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; HandleLoadSpecialPokePic(TRUE, gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], species, personality); - LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), personality, species); + if(!isShiny) + LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), personality, species); + else + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.paletteTag = species; spriteId = CreateSprite(&gMultiuseSpriteTemplate, (left + 1) * 8 + 32, (top * 8) + 40, 0); @@ -2661,8 +2670,7 @@ void GenerateContestRand(void) if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_LINK) { - gContestRngValue = ISO_RANDOMIZE1(gContestRngValue); - random = gContestRngValue >> 16; + random = LocalRandom(&gContestRngValue); result = &gSpecialVar_Result; } else @@ -2675,8 +2683,7 @@ void GenerateContestRand(void) u16 GetContestRand(void) { - gContestRngValue = ISO_RANDOMIZE1(gContestRngValue); - return gContestRngValue >> 16; + return LocalRandom(&gContestRngValue); } bool8 LinkContestWaitForConnection(void) diff --git a/src/credits.c b/src/credits.c index 2b4d919bdcc6..5d5a80cf78ed 100644 --- a/src/credits.c +++ b/src/credits.c @@ -64,12 +64,12 @@ enum { struct CreditsData { - u16 monToShow[NUM_MON_SLIDES]; // List of Pokemon species ids that will show during the credits + u16 monToShow[NUM_MON_SLIDES]; // List of Pokémon species ids that will show during the credits u16 imgCounter; //how many mon images have been shown u16 nextImgPos; //if the next image spawns left/center/right u16 currShownMon; //index into monToShow - u16 numMonToShow; //number of pokemon to show, always NUM_MON_SLIDES after determine function - u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught pokemon + u16 numMonToShow; //number of Pokémon to show, always NUM_MON_SLIDES after determine function + u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught Pokémon u16 numCaughtMon; //count of filled spaces in caughtMonIds u16 unused[7]; }; @@ -1556,8 +1556,8 @@ static void DeterminePokemonToShow(void) u16 dexNum; u16 j; - // Go through the Pokedex, and anything that has gotten caught we put into our massive array. - // This basically packs all of the caught pokemon into the front of the array + // Go through the Pokédex, and anything that has gotten caught we put into our massive array. + // This basically packs all of the caught Pokémon into the front of the array for (dexNum = 1, j = 0; dexNum < NATIONAL_DEX_COUNT; dexNum++) { if (GetSetPokedexFlag(dexNum, FLAG_GET_CAUGHT)) @@ -1571,14 +1571,14 @@ static void DeterminePokemonToShow(void) for (dexNum = j; dexNum < NATIONAL_DEX_COUNT; dexNum++) sCreditsData->caughtMonIds[dexNum] = NATIONAL_DEX_NONE; - // Cap the number of pokemon we care about to NUM_MON_SLIDES, the max we show in the credits scene (-1 for the starter) + // Cap the number of Pokémon we care about to NUM_MON_SLIDES, the max we show in the credits scene (-1 for the starter) sCreditsData->numCaughtMon = j; if (sCreditsData->numCaughtMon < NUM_MON_SLIDES) sCreditsData->numMonToShow = j; else sCreditsData->numMonToShow = NUM_MON_SLIDES; - // Loop through our list of caught pokemon and select randomly from it to fill the images to show + // Loop through our list of caught Pokémon and select randomly from it to fill the images to show j = 0; do { @@ -1599,7 +1599,7 @@ static void DeterminePokemonToShow(void) } while (sCreditsData->numCaughtMon != 0 && j < NUM_MON_SLIDES); - // If we don't have enough pokemon in the dex to fill everything, copy the selected mon into the end of the array, so it loops + // If we don't have enough Pokémon in the dex to fill everything, copy the selected mon into the end of the array, so it loops if (sCreditsData->numMonToShow < NUM_MON_SLIDES) { for (j = sCreditsData->numMonToShow, page = 0; j < NUM_MON_SLIDES; j++) @@ -1610,7 +1610,7 @@ static void DeterminePokemonToShow(void) if (page == sCreditsData->numMonToShow) page = 0; } - // Ensure the last pokemon is our starter + // Ensure the last Pokémon is our starter sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter; } else @@ -1618,7 +1618,7 @@ static void DeterminePokemonToShow(void) // Check to see if our starter has already appeared in this list, break if it has for (dexNum = 0; sCreditsData->monToShow[dexNum] != starter && dexNum < NUM_MON_SLIDES; dexNum++); - // If it has, swap it with the last pokemon, to ensure our starter is the last image + // If it has, swap it with the last Pokémon, to ensure our starter is the last image if (dexNum < sCreditsData->numMonToShow - 1) { sCreditsData->monToShow[dexNum] = sCreditsData->monToShow[NUM_MON_SLIDES-1]; @@ -1626,7 +1626,7 @@ static void DeterminePokemonToShow(void) } else { - // Ensure the last pokemon is our starter + // Ensure the last Pokémon is our starter sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter; } } diff --git a/src/crt0.s b/src/crt0.s index 580814722018..af6ea0bc9549 100644 --- a/src/crt0.s +++ b/src/crt0.s @@ -6,22 +6,28 @@ .align 2, 0 Init:: +@ Set up location for IRQ stack mov r0, #PSR_IRQ_MODE msr cpsr_cf, r0 ldr sp, sp_irq +@ Set up location for system stack mov r0, #PSR_SYS_MODE msr cpsr_cf, r0 ldr sp, sp_sys +@ Prepare for interrupt handling ldr r1, =INTR_VECTOR adr r0, IntrMain str r0, [r1] - .if MODERN +@ Dispatch memory reset request to hardware mov r0, #255 @ RESET_ALL svc #1 << 16 - .endif @ MODERN +@ Fill RAM areas with appropriate data + bl InitializeWorkingMemory +@ Jump to AgbMain ldr r1, =AgbMain + 1 mov lr, pc bx r1 +@ Re-init if AgbMain exits b Init .align 2, 0 @@ -124,3 +130,54 @@ IntrMain_RetAddr: .pool .align 2, 0 @ Don't pad with nop. + +@ Fills initialized IWRAM and EWRAM sections in RAM from LMA areas in ROM +InitializeWorkingMemory: + push {r0-r3,lr} + ldr r0, =__iwram_lma + ldr r1, =__iwram_start + ldr r2, =__iwram_end + cmp r1, r2 + beq skip_iwram_copy + bl CopyMemory_DMA +skip_iwram_copy: + ldr r0, =__ewram_lma + ldr r1, =__ewram_start + ldr r2, =__ewram_end + cmp r1, r2 + beq skip_ewram_copy + bl CopyMemory_DMA +skip_ewram_copy: + pop {r0-r3,lr} + bx lr + +@ Uses a DMA transfer to load from r0 into r1 until r2 +CopyMemory_DMA: + subs r2, r2, r1 + lsr r2, r2, #2 + mov r4, #0x80000000 + orr r4, r4, #(1 << 26) + orr r2, r2, r4 + ldr r3, =REG_DMA3 + stmia r3, {r0, r1, r2} + bx lr + +.thumb +@ Called from C code to reinitialize working memory after a link connection failure +ReInitializeEWRAM:: + ldr r0, =__ewram_lma + ldr r1, =__ewram_start + ldr r2, =__ewram_end + cmp r1, r2 + beq EndReinitializeEWRAM + subs r2, r1 + movs r3, #1 + lsls r3, r3, #26 + orrs r2, r2, r3 + swi 0x0B +EndReinitializeEWRAM: + bx lr + + .pool + + .align 2, 0 @ Don't pad with nop. diff --git a/src/data.c b/src/data.c index 78e754ca4287..35e7e1fd406b 100644 --- a/src/data.c +++ b/src/data.c @@ -47,79 +47,13 @@ const struct SpriteFrameImage gBattlerPicTable_OpponentRight[] = {BATTLER_OFFSET(15), MON_PIC_SIZE}, }; -const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] = -{ - {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_May[] = -{ - {gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_Red[] = -{ - {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] = -{ - {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] = -{ - {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] = -{ - {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_Wally[] = -{ - {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, -}; - -const struct SpriteFrameImage gTrainerBackPicTable_Steven[] = -{ - {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, - {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, -}; - const union AnimCmd sAnim_GeneralFrame0[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END, }; -static const union AnimCmd sAnim_GeneralFrame3[] = +const union AnimCmd sAnim_GeneralFrame3[] = { ANIMCMD_FRAME(3, 0), ANIMCMD_END, @@ -290,13 +224,7 @@ const union AnimCmd *const gAnims_MonPic[MAX_MON_PIC_FRAMES] = #include "data/object_events/follower_palette_table.h" -#include "data/trainer_graphics/front_pic_anims.h" -#include "data/trainer_graphics/front_pic_tables.h" -#include "data/trainer_graphics/back_pic_anims.h" -#include "data/trainer_graphics/back_pic_tables.h" - #include "data/trainer_parties.h" -#include "data/text/trainer_class_names.h" #include "data/trainers.h" #include "data/text/move_names.h" #include "data/text/follower_messages.h" diff --git a/src/data/abilities.h b/src/data/abilities.h new file mode 100644 index 000000000000..81bfc995a364 --- /dev/null +++ b/src/data/abilities.h @@ -0,0 +1,2602 @@ +const struct Ability gAbilities[ABILITIES_COUNT] = +{ + [ABILITY_NONE] = + { + .name = _("-------"), + .description = COMPOUND_STRING("No special ability."), + .aiRating = 0, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_STENCH] = + { + .name = _("Stench"), + .description = COMPOUND_STRING("May cause a foe to flinch."), + .aiRating = 1, + }, + + [ABILITY_DRIZZLE] = + { + .name = _("Drizzle"), + .description = COMPOUND_STRING("Summons rain in battle."), + .aiRating = 9, + }, + + [ABILITY_SPEED_BOOST] = + { + .name = _("Speed Boost"), + .description = COMPOUND_STRING("Gradually boosts Speed."), + .aiRating = 9, + }, + + [ABILITY_BATTLE_ARMOR] = + { + .name = _("Battle Armor"), + .description = COMPOUND_STRING("Blocks critical hits."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_STURDY] = + { + .name = _("Sturdy"), + .description = COMPOUND_STRING("Negates 1-hit KO attacks."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_DAMP] = + { + .name = _("Damp"), + .description = COMPOUND_STRING("Prevents self-destruction."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_LIMBER] = + { + .name = _("Limber"), + .description = COMPOUND_STRING("Prevents paralysis."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_SAND_VEIL] = + { + .name = _("Sand Veil"), + .description = COMPOUND_STRING("Ups evasion in a sandstorm."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_STATIC] = + { + .name = _("Static"), + .description = COMPOUND_STRING("Paralyzes on contact."), + .aiRating = 4, + }, + + [ABILITY_VOLT_ABSORB] = + { + .name = _("Volt Absorb"), + .description = COMPOUND_STRING("Turns electricity into HP."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_WATER_ABSORB] = + { + .name = _("Water Absorb"), + .description = COMPOUND_STRING("Changes water into HP."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_OBLIVIOUS] = + { + .name = _("Oblivious"), + .description = COMPOUND_STRING("Prevents attraction."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_CLOUD_NINE] = + { + .name = _("Cloud Nine"), + .description = COMPOUND_STRING("Negates weather effects."), + .aiRating = 5, + }, + + [ABILITY_COMPOUND_EYES] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Compound Eyes"), + #else + .name = _("CompoundEyes"), + #endif + .description = COMPOUND_STRING("Raises accuracy."), + .aiRating = 7, + }, + + [ABILITY_INSOMNIA] = + { + .name = _("Insomnia"), + .description = COMPOUND_STRING("Prevents sleep."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_COLOR_CHANGE] = + { + .name = _("Color Change"), + .description = COMPOUND_STRING("Changes type to foe's move."), + .aiRating = 2, + }, + + [ABILITY_IMMUNITY] = + { + .name = _("Immunity"), + .description = COMPOUND_STRING("Prevents poisoning."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_FLASH_FIRE] = + { + .name = _("Flash Fire"), + .description = COMPOUND_STRING("Powers up if hit by fire."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_SHIELD_DUST] = + { + .name = _("Shield Dust"), + .description = COMPOUND_STRING("Prevents added effects."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_OWN_TEMPO] = + { + .name = _("Own Tempo"), + .description = COMPOUND_STRING("Prevents confusion."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_SUCTION_CUPS] = + { + .name = _("Suction Cups"), + .description = COMPOUND_STRING("Firmly anchors the body."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_INTIMIDATE] = + { + .name = _("Intimidate"), + .description = COMPOUND_STRING("Lowers the foe's Attack."), + .aiRating = 7, + }, + + [ABILITY_SHADOW_TAG] = + { + .name = _("Shadow Tag"), + .description = COMPOUND_STRING("Prevents the foe's escape."), + .aiRating = 10, + }, + + [ABILITY_ROUGH_SKIN] = + { + .name = _("Rough Skin"), + .description = COMPOUND_STRING("Hurts to touch."), + .aiRating = 6, + }, + + [ABILITY_WONDER_GUARD] = + { + .name = _("Wonder Guard"), + .description = COMPOUND_STRING("“Supereffective” hits."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .breakable = TRUE, + }, + + [ABILITY_LEVITATE] = + { + .name = _("Levitate"), + .description = COMPOUND_STRING("Not hit by Ground attacks."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_EFFECT_SPORE] = + { + .name = _("Effect Spore"), + .description = COMPOUND_STRING("Leaves spores on contact."), + .aiRating = 4, + }, + + [ABILITY_SYNCHRONIZE] = + { + .name = _("Synchronize"), + .description = COMPOUND_STRING("Passes on status problems."), + .aiRating = 4, + }, + + [ABILITY_CLEAR_BODY] = + { + .name = _("Clear Body"), + .description = COMPOUND_STRING("Prevents ability reduction."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_NATURAL_CURE] = + { + .name = _("Natural Cure"), + .description = COMPOUND_STRING("Heals upon switching out."), + .aiRating = 7, + }, + + [ABILITY_LIGHTNING_ROD] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Lightning Rod"), + #else + .name = _("LightningRod"), + #endif + .description = COMPOUND_STRING("Draws electrical moves."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_SERENE_GRACE] = + { + .name = _("Serene Grace"), + .description = COMPOUND_STRING("Promotes added effects."), + .aiRating = 8, + }, + + [ABILITY_SWIFT_SWIM] = + { + .name = _("Swift Swim"), + .description = COMPOUND_STRING("Raises Speed in rain."), + .aiRating = 6, + }, + + [ABILITY_CHLOROPHYLL] = + { + .name = _("Chlorophyll"), + .description = COMPOUND_STRING("Raises Speed in sunshine."), + .aiRating = 6, + }, + + [ABILITY_ILLUMINATE] = + { + .name = _("Illuminate"), + .description = COMPOUND_STRING("Encounter rate increases."), + .aiRating = 0, + .breakable = TRUE, + }, + + [ABILITY_TRACE] = + { + .name = _("Trace"), + .description = COMPOUND_STRING("Copies special ability."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_HUGE_POWER] = + { + .name = _("Huge Power"), + .description = COMPOUND_STRING("Raises Attack."), + .aiRating = 10, + }, + + [ABILITY_POISON_POINT] = + { + .name = _("Poison Point"), + .description = COMPOUND_STRING("Poisons foe on contact."), + .aiRating = 4, + }, + + [ABILITY_INNER_FOCUS] = + { + .name = _("Inner Focus"), + .description = COMPOUND_STRING("Prevents flinching."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_MAGMA_ARMOR] = + { + .name = _("Magma Armor"), + .description = COMPOUND_STRING("Prevents freezing."), + .aiRating = 1, + .breakable = TRUE, + }, + + [ABILITY_WATER_VEIL] = + { + .name = _("Water Veil"), + .description = COMPOUND_STRING("Prevents burns."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_MAGNET_PULL] = + { + .name = _("Magnet Pull"), + .description = COMPOUND_STRING("Traps Steel-type Pokémon."), + .aiRating = 9, + }, + + [ABILITY_SOUNDPROOF] = + { + .name = _("Soundproof"), + .description = COMPOUND_STRING("Avoids sound-based moves."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_RAIN_DISH] = + { + .name = _("Rain Dish"), + .description = COMPOUND_STRING("Slight HP recovery in rain."), + .aiRating = 3, + }, + + [ABILITY_SAND_STREAM] = + { + .name = _("Sand Stream"), + .description = COMPOUND_STRING("Summons a sandstorm."), + .aiRating = 9, + }, + + [ABILITY_PRESSURE] = + { + .name = _("Pressure"), + .description = COMPOUND_STRING("Raises foe's PP usage."), + .aiRating = 5, + }, + + [ABILITY_THICK_FAT] = + { + .name = _("Thick Fat"), + .description = COMPOUND_STRING("Heat-and-cold protection."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_EARLY_BIRD] = + { + .name = _("Early Bird"), + .description = COMPOUND_STRING("Awakens quickly from sleep."), + .aiRating = 4, + }, + + [ABILITY_FLAME_BODY] = + { + .name = _("Flame Body"), + .description = COMPOUND_STRING("Burns the foe on contact."), + .aiRating = 4, + }, + + [ABILITY_RUN_AWAY] = + { + .name = _("Run Away"), + .description = COMPOUND_STRING("Makes escaping easier."), + .aiRating = 0, + }, + + [ABILITY_KEEN_EYE] = + { + .name = _("Keen Eye"), + .description = COMPOUND_STRING("Prevents loss of accuracy."), + .aiRating = 1, + .breakable = TRUE, + }, + + [ABILITY_HYPER_CUTTER] = + { + .name = _("Hyper Cutter"), + .description = COMPOUND_STRING("Prevents Attack reduction."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_PICKUP] = + { + .name = _("Pickup"), + .description = COMPOUND_STRING("May pick up items."), + .aiRating = 1, + }, + + [ABILITY_TRUANT] = + { + .name = _("Truant"), + .description = COMPOUND_STRING("Moves only every two turns."), + .aiRating = -2, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_HUSTLE] = + { + .name = _("Hustle"), + .description = COMPOUND_STRING("Trades accuracy for power."), + .aiRating = 7, + }, + + [ABILITY_CUTE_CHARM] = + { + .name = _("Cute Charm"), + .description = COMPOUND_STRING("Infatuates on contact."), + .aiRating = 2, + }, + + [ABILITY_PLUS] = + { + .name = _("Plus"), + .description = COMPOUND_STRING("Powers up with Minus."), + .aiRating = 0, + }, + + [ABILITY_MINUS] = + { + .name = _("Minus"), + .description = COMPOUND_STRING("Powers up with Plus."), + .aiRating = 0, + }, + + [ABILITY_FORECAST] = + { + .name = _("Forecast"), + .description = COMPOUND_STRING("Changes with the weather."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_STICKY_HOLD] = + { + .name = _("Sticky Hold"), + .description = COMPOUND_STRING("Prevents item theft."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_SHED_SKIN] = + { + .name = _("Shed Skin"), + .description = COMPOUND_STRING("Heals the body by shedding."), + .aiRating = 7, + }, + + [ABILITY_GUTS] = + { + .name = _("Guts"), + .description = COMPOUND_STRING("Ups Attack if suffering."), + .aiRating = 6, + }, + + [ABILITY_MARVEL_SCALE] = + { + .name = _("Marvel Scale"), + .description = COMPOUND_STRING("Ups Defense if suffering."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_LIQUID_OOZE] = + { + .name = _("Liquid Ooze"), + .description = COMPOUND_STRING("Draining causes injury."), + .aiRating = 3, + }, + + [ABILITY_OVERGROW] = + { + .name = _("Overgrow"), + .description = COMPOUND_STRING("Ups Grass moves in a pinch."), + .aiRating = 5, + }, + + [ABILITY_BLAZE] = + { + .name = _("Blaze"), + .description = COMPOUND_STRING("Ups Fire moves in a pinch."), + .aiRating = 5, + }, + + [ABILITY_TORRENT] = + { + .name = _("Torrent"), + .description = COMPOUND_STRING("Ups Water moves in a pinch."), + .aiRating = 5, + }, + + [ABILITY_SWARM] = + { + .name = _("Swarm"), + .description = COMPOUND_STRING("Ups Bug moves in a pinch."), + .aiRating = 5, + }, + + [ABILITY_ROCK_HEAD] = + { + .name = _("Rock Head"), + .description = COMPOUND_STRING("Prevents recoil damage."), + .aiRating = 5, + }, + + [ABILITY_DROUGHT] = + { + .name = _("Drought"), + .description = COMPOUND_STRING("Summons sunlight in battle."), + .aiRating = 9, + }, + + [ABILITY_ARENA_TRAP] = + { + .name = _("Arena Trap"), + .description = COMPOUND_STRING("Prevents fleeing."), + .aiRating = 9, + }, + + [ABILITY_VITAL_SPIRIT] = + { + .name = _("Vital Spirit"), + .description = COMPOUND_STRING("Prevents sleep."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_WHITE_SMOKE] = + { + .name = _("White Smoke"), + .description = COMPOUND_STRING("Prevents ability reduction."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_PURE_POWER] = + { + .name = _("Pure Power"), + .description = COMPOUND_STRING("Raises Attack."), + .aiRating = 10, + }, + + [ABILITY_SHELL_ARMOR] = + { + .name = _("Shell Armor"), + .description = COMPOUND_STRING("Blocks critical hits."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_AIR_LOCK] = + { + .name = _("Air Lock"), + .description = COMPOUND_STRING("Negates weather effects."), + .aiRating = 5, + }, + + [ABILITY_TANGLED_FEET] = + { + .name = _("Tangled Feet"), + .description = COMPOUND_STRING("Ups evasion if confused."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_MOTOR_DRIVE] = + { + .name = _("Motor Drive"), + .description = COMPOUND_STRING("Electricity raises Speed."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_RIVALRY] = + { + .name = _("Rivalry"), + .description = COMPOUND_STRING("Powers up against rivals."), + .aiRating = 1, + }, + + [ABILITY_STEADFAST] = + { + .name = _("Steadfast"), + .description = COMPOUND_STRING("Flinching raises Speed."), + .aiRating = 2, + }, + + [ABILITY_SNOW_CLOAK] = + { + .name = _("Snow Cloak"), + .description = COMPOUND_STRING("Ups evasion in Hail or Snow."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_GLUTTONY] = + { + .name = _("Gluttony"), + .description = COMPOUND_STRING("Eats Berries early."), + .aiRating = 3, + }, + + [ABILITY_ANGER_POINT] = + { + .name = _("Anger Point"), + .description = COMPOUND_STRING("Critical hits raise Attack."), + .aiRating = 4, + }, + + [ABILITY_UNBURDEN] = + { + .name = _("Unburden"), + .description = COMPOUND_STRING("Using a hold item ups Speed."), + .aiRating = 7, + }, + + [ABILITY_HEATPROOF] = + { + .name = _("Heatproof"), + .description = COMPOUND_STRING("Heat and burn protection."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_SIMPLE] = + { + .name = _("Simple"), + .description = COMPOUND_STRING("Prone to wild stat changes."), + .aiRating = 8, + .breakable = TRUE, + }, + + [ABILITY_DRY_SKIN] = + { + .name = _("Dry Skin"), + .description = COMPOUND_STRING("Prefers moisture to heat."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_DOWNLOAD] = + { + .name = _("Download"), + .description = COMPOUND_STRING("Adjusts power favorably."), + .aiRating = 7, + }, + + [ABILITY_IRON_FIST] = + { + .name = _("Iron Fist"), + .description = COMPOUND_STRING("Boosts punching moves."), + .aiRating = 6, + }, + + [ABILITY_POISON_HEAL] = + { + .name = _("Poison Heal"), + .description = COMPOUND_STRING("Restores HP if poisoned."), + .aiRating = 8, + }, + + [ABILITY_ADAPTABILITY] = + { + .name = _("Adaptability"), + .description = COMPOUND_STRING("Boosts same type attacks."), + .aiRating = 8, + }, + + [ABILITY_SKILL_LINK] = + { + .name = _("Skill Link"), + .description = COMPOUND_STRING("Multi-hit moves hit 5 times."), + .aiRating = 7, + }, + + [ABILITY_HYDRATION] = + { + .name = _("Hydration"), + .description = COMPOUND_STRING("Cures status in rain."), + .aiRating = 4, + }, + + [ABILITY_SOLAR_POWER] = + { + .name = _("Solar Power"), + .description = COMPOUND_STRING("Powers up in sunshine."), + .aiRating = 3, + }, + + [ABILITY_QUICK_FEET] = + { + .name = _("Quick Feet"), + .description = COMPOUND_STRING("Ups Speed if suffering."), + .aiRating = 5, + }, + + [ABILITY_NORMALIZE] = + { + .name = _("Normalize"), + .description = COMPOUND_STRING("Moves become Normal-type."), + .aiRating = -1, + }, + + [ABILITY_SNIPER] = + { + .name = _("Sniper"), + .description = COMPOUND_STRING("Boosts critical hits."), + .aiRating = 3, + }, + + [ABILITY_MAGIC_GUARD] = + { + .name = _("Magic Guard"), + .description = COMPOUND_STRING("Only damaged by attacks."), + .aiRating = 9, + }, + + [ABILITY_NO_GUARD] = + { + .name = _("No Guard"), + .description = COMPOUND_STRING("Ensures that all moves hit."), + .aiRating = 8, + }, + + [ABILITY_STALL] = + { + .name = _("Stall"), + .description = COMPOUND_STRING("Always moves last."), + .aiRating = -1, + }, + + [ABILITY_TECHNICIAN] = + { + .name = _("Technician"), + .description = COMPOUND_STRING("Boosts weaker moves."), + .aiRating = 8, + }, + + [ABILITY_LEAF_GUARD] = + { + .name = _("Leaf Guard"), + .description = COMPOUND_STRING("Blocks status in sunshine."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_KLUTZ] = + { + .name = _("Klutz"), + .description = COMPOUND_STRING("Can't use hold items."), + .aiRating = -1, + }, + + [ABILITY_MOLD_BREAKER] = + { + .name = _("Mold Breaker"), + .description = COMPOUND_STRING("Moves hit through abilities."), + .aiRating = 7, + }, + + [ABILITY_SUPER_LUCK] = + { + .name = _("Super Luck"), + .description = COMPOUND_STRING("Critical hits land often."), + .aiRating = 3, + }, + + [ABILITY_AFTERMATH] = + { + .name = _("Aftermath"), + .description = COMPOUND_STRING("Fainting damages the foe."), + .aiRating = 5, + }, + + [ABILITY_ANTICIPATION] = + { + .name = _("Anticipation"), + .description = COMPOUND_STRING("Senses dangerous moves."), + .aiRating = 2, + }, + + [ABILITY_FOREWARN] = + { + .name = _("Forewarn"), + .description = COMPOUND_STRING("Determines a foe's move."), + .aiRating = 2, + }, + + [ABILITY_UNAWARE] = + { + .name = _("Unaware"), + .description = COMPOUND_STRING("Ignores stat changes."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_TINTED_LENS] = + { + .name = _("Tinted Lens"), + .description = COMPOUND_STRING("Ups “not very effective”."), + .aiRating = 7, + }, + + [ABILITY_FILTER] = + { + .name = _("Filter"), + .description = COMPOUND_STRING("Weakens “supereffective”."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_SLOW_START] = + { + .name = _("Slow Start"), + .description = COMPOUND_STRING("Takes a while to get going."), + .aiRating = -2, + }, + + [ABILITY_SCRAPPY] = + { + .name = _("Scrappy"), + .description = COMPOUND_STRING("Hits Ghost-type Pokémon."), + .aiRating = 6, + }, + + [ABILITY_STORM_DRAIN] = + { + .name = _("Storm Drain"), + .description = COMPOUND_STRING("Draws in Water moves."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_ICE_BODY] = + { + .name = _("Ice Body"), + .description = COMPOUND_STRING("HP recovery in Hail or Snow."), + .aiRating = 3, + }, + + [ABILITY_SOLID_ROCK] = + { + .name = _("Solid Rock"), + .description = COMPOUND_STRING("Weakens “supereffective”."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_SNOW_WARNING] = + { + .name = _("Snow Warning"), + .description = COMPOUND_STRING("Summons a Hailstorm."), + .aiRating = 8, + }, + + [ABILITY_HONEY_GATHER] = + { + .name = _("Honey Gather"), + .description = COMPOUND_STRING("May gather Honey."), + .aiRating = 0, + }, + + [ABILITY_FRISK] = + { + .name = _("Frisk"), + .description = COMPOUND_STRING("Checks a foe's item."), + .aiRating = 3, + }, + + [ABILITY_RECKLESS] = + { + .name = _("Reckless"), + .description = COMPOUND_STRING("Boosts moves with recoil."), + .aiRating = 6, + }, + + [ABILITY_MULTITYPE] = + { + .name = _("Multitype"), + .description = COMPOUND_STRING("Changes type to its Plate."), + .aiRating = 8, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_FLOWER_GIFT] = + { + .name = _("Flower Gift"), + .description = COMPOUND_STRING("Allies power up in sunshine."), + .aiRating = 4, + .cantBeCopied = TRUE, + .cantBeTraced = TRUE, + .breakable = TRUE, + }, + + [ABILITY_BAD_DREAMS] = + { + .name = _("Bad Dreams"), + .description = COMPOUND_STRING("Damages sleeping Pokémon."), + .aiRating = 4, + }, + + [ABILITY_PICKPOCKET] = + { + .name = _("Pickpocket"), + .description = COMPOUND_STRING("Steals the foe's held item."), + .aiRating = 3, + }, + + [ABILITY_SHEER_FORCE] = + { + .name = _("Sheer Force"), + .description = COMPOUND_STRING("Trades effects for power."), + .aiRating = 8, + }, + + [ABILITY_CONTRARY] = + { + .name = _("Contrary"), + .description = COMPOUND_STRING("Inverts stat changes."), + .aiRating = 8, + .breakable = TRUE, + }, + + [ABILITY_UNNERVE] = + { + .name = _("Unnerve"), + .description = COMPOUND_STRING("Foes can't eat Berries."), + .aiRating = 3, + }, + + [ABILITY_DEFIANT] = + { + .name = _("Defiant"), + .description = COMPOUND_STRING("Lowered stats up Attack."), + .aiRating = 5, + }, + + [ABILITY_DEFEATIST] = + { + .name = _("Defeatist"), + .description = COMPOUND_STRING("Gives up at half HP."), + .aiRating = -1, + }, + + [ABILITY_CURSED_BODY] = + { + .name = _("Cursed Body"), + .description = COMPOUND_STRING("Disables moves on contact."), + .aiRating = 4, + }, + + [ABILITY_HEALER] = + { + .name = _("Healer"), + .description = COMPOUND_STRING("Heals partner Pokémon."), + .aiRating = 0, + }, + + [ABILITY_FRIEND_GUARD] = + { + .name = _("Friend Guard"), + .description = COMPOUND_STRING("Lowers damage to partner."), + .aiRating = 0, + .breakable = TRUE, + }, + + [ABILITY_WEAK_ARMOR] = + { + .name = _("Weak Armor"), + .description = COMPOUND_STRING("Its stats change when hit."), + .aiRating = 2, + }, + + [ABILITY_HEAVY_METAL] = + { + .name = _("Heavy Metal"), + .description = COMPOUND_STRING("Doubles weight."), + .aiRating = -1, + .breakable = TRUE, + }, + + [ABILITY_LIGHT_METAL] = + { + .name = _("Light Metal"), + .description = COMPOUND_STRING("Halves weight."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_MULTISCALE] = + { + .name = _("Multiscale"), + .description = COMPOUND_STRING("Halves damage at full HP."), + .aiRating = 8, + .breakable = TRUE, + }, + + [ABILITY_TOXIC_BOOST] = + { + .name = _("Toxic Boost"), + .description = COMPOUND_STRING("Ups Attack if poisoned."), + .aiRating = 6, + }, + + [ABILITY_FLARE_BOOST] = + { + .name = _("Flare Boost"), + .description = COMPOUND_STRING("Ups Sp. Atk if burned."), + .aiRating = 5, + }, + + [ABILITY_HARVEST] = + { + .name = _("Harvest"), + .description = COMPOUND_STRING("May recycle a used Berry."), + .aiRating = 5, + }, + + [ABILITY_TELEPATHY] = + { + .name = _("Telepathy"), + .description = COMPOUND_STRING("Can't be damaged by an ally."), + .aiRating = 0, + .breakable = TRUE, + }, + + [ABILITY_MOODY] = + { + .name = _("Moody"), + .description = COMPOUND_STRING("Stats change gradually."), + .aiRating = 10, + }, + + [ABILITY_OVERCOAT] = + { + .name = _("Overcoat"), + .description = COMPOUND_STRING("Blocks weather and powder."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_POISON_TOUCH] = + { + .name = _("Poison Touch"), + .description = COMPOUND_STRING("Poisons foe on contact."), + .aiRating = 4, + }, + + [ABILITY_REGENERATOR] = + { + .name = _("Regenerator"), + .description = COMPOUND_STRING("Heals upon switching out."), + .aiRating = 8, + }, + + [ABILITY_BIG_PECKS] = + { + .name = _("Big Pecks"), + .description = COMPOUND_STRING("Prevents Defense loss."), + .aiRating = 1, + .breakable = TRUE, + }, + + [ABILITY_SAND_RUSH] = + { + .name = _("Sand Rush"), + .description = COMPOUND_STRING("Ups Speed in a sandstorm."), + .aiRating = 6, + }, + + [ABILITY_WONDER_SKIN] = + { + .name = _("Wonder Skin"), + .description = COMPOUND_STRING("May avoid status problems."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_ANALYTIC] = + { + .name = _("Analytic"), + .description = COMPOUND_STRING("Moving last boosts power."), + .aiRating = 5, + }, + + [ABILITY_ILLUSION] = + { + .name = _("Illusion"), + .description = COMPOUND_STRING("Appears as a partner."), + .aiRating = 8, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_IMPOSTER] = + { + .name = _("Imposter"), + .description = COMPOUND_STRING("Transforms into the foe."), + .aiRating = 9, + .cantBeCopied = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_INFILTRATOR] = + { + .name = _("Infiltrator"), + .description = COMPOUND_STRING("Passes through barriers."), + .aiRating = 6, + }, + + [ABILITY_MUMMY] = + { + .name = _("Mummy"), + .description = COMPOUND_STRING("Spreads with contact."), + .aiRating = 5, + }, + + [ABILITY_MOXIE] = + { + .name = _("Moxie"), + .description = COMPOUND_STRING("KOs raise Attack."), + .aiRating = 7, + }, + + [ABILITY_JUSTIFIED] = + { + .name = _("Justified"), + .description = COMPOUND_STRING("Dark hits raise Attack."), + .aiRating = 4, + }, + + [ABILITY_RATTLED] = + { + .name = _("Rattled"), + .description = COMPOUND_STRING("Raises Speed when scared."), + .aiRating = 3, + }, + + [ABILITY_MAGIC_BOUNCE] = + { + .name = _("Magic Bounce"), + .description = COMPOUND_STRING("Reflects status moves."), + .aiRating = 9, + .breakable = TRUE, + }, + + [ABILITY_SAP_SIPPER] = + { + .name = _("Sap Sipper"), + .description = COMPOUND_STRING("Grass increases Attack."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_PRANKSTER] = + { + .name = _("Prankster"), + .description = COMPOUND_STRING("Status moves go first."), + .aiRating = 8, + }, + + [ABILITY_SAND_FORCE] = + { + .name = _("Sand Force"), + .description = COMPOUND_STRING("Powers up in a sandstorm."), + .aiRating = 4, + }, + + [ABILITY_IRON_BARBS] = + { + .name = _("Iron Barbs"), + .description = COMPOUND_STRING("Hurts to touch."), + .aiRating = 6, + }, + + [ABILITY_ZEN_MODE] = + { + .name = _("Zen Mode"), + .description = COMPOUND_STRING("Transforms at half HP."), + .aiRating = -1, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = B_UPDATED_ABILITY_DATA >= GEN_7, + }, + + [ABILITY_VICTORY_STAR] = + { + .name = _("Victory Star"), + .description = COMPOUND_STRING("Raises party accuracy."), + .aiRating = 6, + }, + + [ABILITY_TURBOBLAZE] = + { + .name = _("Turboblaze"), + .description = COMPOUND_STRING("Moves hit through abilities."), + .aiRating = 7, + }, + + [ABILITY_TERAVOLT] = + { + .name = _("Teravolt"), + .description = COMPOUND_STRING("Moves hit through abilities."), + .aiRating = 7, + }, + + [ABILITY_AROMA_VEIL] = + { + .name = _("Aroma Veil"), + .description = COMPOUND_STRING("Prevents limiting of moves."), + .aiRating = 3, + .breakable = TRUE, + }, + + [ABILITY_FLOWER_VEIL] = + { + .name = _("Flower Veil"), + .description = COMPOUND_STRING("Protects Grass-types."), + .aiRating = 0, + }, + + [ABILITY_CHEEK_POUCH] = + { + .name = _("Cheek Pouch"), + .description = COMPOUND_STRING("Eating Berries restores HP."), + .aiRating = 4, + }, + + [ABILITY_PROTEAN] = + { + .name = _("Protean"), + .description = COMPOUND_STRING("Changes type to used move."), + .aiRating = 8, + }, + + [ABILITY_FUR_COAT] = + { + .name = _("Fur Coat"), + .description = COMPOUND_STRING("Raises Defense."), + .aiRating = 7, + }, + + [ABILITY_MAGICIAN] = + { + .name = _("Magician"), + .description = COMPOUND_STRING("Steals the foe's held item."), + .aiRating = 3, + }, + + [ABILITY_BULLETPROOF] = + { + .name = _("Bulletproof"), + .description = COMPOUND_STRING("Avoids some projectiles."), + .aiRating = 7, + }, + + [ABILITY_COMPETITIVE] = + { + .name = _("Competitive"), + .description = COMPOUND_STRING("Lowered stats up Sp. Atk."), + .aiRating = 5, + }, + + [ABILITY_STRONG_JAW] = + { + .name = _("Strong Jaw"), + .description = COMPOUND_STRING("Boosts biting moves."), + .aiRating = 6, + }, + + [ABILITY_REFRIGERATE] = + { + .name = _("Refrigerate"), + .description = COMPOUND_STRING("Normal moves become Ice."), + .aiRating = 8, + }, + + [ABILITY_SWEET_VEIL] = + { + .name = _("Sweet Veil"), + .description = COMPOUND_STRING("Prevents party from sleep."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_STANCE_CHANGE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Stance Change"), + #else + .name = _("StanceChange"), + #endif + .description = COMPOUND_STRING("Transforms as it battles."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_GALE_WINGS] = + { + .name = _("Gale Wings"), + .description = COMPOUND_STRING("Flying moves go first."), + .aiRating = 6, + }, + + [ABILITY_MEGA_LAUNCHER] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Mega Launcher"), + #else + .name = _("MegaLauncher"), + #endif + .description = COMPOUND_STRING("Boosts pulse moves."), + .aiRating = 7, + }, + + [ABILITY_GRASS_PELT] = + { + .name = _("Grass Pelt"), + .description = COMPOUND_STRING("Ups Defense in grass."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_SYMBIOSIS] = + { + .name = _("Symbiosis"), + .description = COMPOUND_STRING("Passes its item to an ally."), + .aiRating = 0, + }, + + [ABILITY_TOUGH_CLAWS] = + { + .name = _("Tough Claws"), + .description = COMPOUND_STRING("Boosts contact moves."), + .aiRating = 7, + }, + + [ABILITY_PIXILATE] = + { + .name = _("Pixilate"), + .description = COMPOUND_STRING("Normal moves become Fairy."), + .aiRating = 8, + }, + + [ABILITY_GOOEY] = + { + .name = _("Gooey"), + .description = COMPOUND_STRING("Lowers Speed on contact."), + .aiRating = 5, + }, + + [ABILITY_AERILATE] = + { + .name = _("Aerilate"), + .description = COMPOUND_STRING("Normal moves become Flying."), + .aiRating = 8, + }, + + [ABILITY_PARENTAL_BOND] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Parental Bond"), + #else + .name = _("ParentalBond"), + #endif + .description = COMPOUND_STRING("Moves hit twice."), + .aiRating = 10, + }, + + [ABILITY_DARK_AURA] = + { + .name = _("Dark Aura"), + .description = COMPOUND_STRING("Boosts Dark moves."), + .aiRating = 6, + }, + + [ABILITY_FAIRY_AURA] = + { + .name = _("Fairy Aura"), + .description = COMPOUND_STRING("Boosts Fairy moves."), + .aiRating = 6, + }, + + [ABILITY_AURA_BREAK] = + { + .name = _("Aura Break"), + .description = COMPOUND_STRING("Reverse aura abilities."), + .aiRating = 3, + }, + + [ABILITY_PRIMORDIAL_SEA] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Primordial Sea"), + #else + .name = _("PrimrdialSea"), + #endif + .description = COMPOUND_STRING("Summons heavy rain."), + .aiRating = 10, + }, + + [ABILITY_DESOLATE_LAND] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Desolate Land"), + #else + .name = _("DesolateLand"), + #endif + .description = COMPOUND_STRING("Summons intense sunlight."), + .aiRating = 10, + }, + + [ABILITY_DELTA_STREAM] = + { + .name = _("Delta Stream"), + .description = COMPOUND_STRING("Summons strong winds."), + .aiRating = 10, + }, + + [ABILITY_STAMINA] = + { + .name = _("Stamina"), + .description = COMPOUND_STRING("Boosts Defense when hit."), + .aiRating = 6, + }, + + [ABILITY_WIMP_OUT] = + { + .name = _("Wimp Out"), + .description = COMPOUND_STRING("Flees at half HP."), + .aiRating = 3, + }, + + [ABILITY_EMERGENCY_EXIT] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Emergency Exit"), + #else + .name = _("EmergncyExit"), + #endif + .description = COMPOUND_STRING("Flees at half HP."), + .aiRating = 3, + }, + + [ABILITY_WATER_COMPACTION] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Water Compaction"), + #else + .name = _("WtrCmpaction"), + #endif + .description = COMPOUND_STRING("Water boosts Defense."), + .aiRating = 4, + }, + + [ABILITY_MERCILESS] = + { + .name = _("Merciless"), + .description = COMPOUND_STRING("Criticals poisoned foes."), + .aiRating = 4, + }, + + [ABILITY_SHIELDS_DOWN] = + { + .name = _("Shields Down"), + .description = COMPOUND_STRING("Shell breaks at half HP."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_STAKEOUT] = + { + .name = _("Stakeout"), + .description = COMPOUND_STRING("Stronger as foes switch in."), + .aiRating = 6, + }, + + [ABILITY_WATER_BUBBLE] = + { + .name = _("Water Bubble"), + .description = COMPOUND_STRING("Guards from fire and burns."), + .aiRating = 8, + }, + + [ABILITY_STEELWORKER] = + { + .name = _("Steelworker"), + .description = COMPOUND_STRING("Powers up Steel moves."), + .aiRating = 6, + }, + + [ABILITY_BERSERK] = + { + .name = _("Berserk"), + .description = COMPOUND_STRING("Boosts Sp. Atk at low HP."), + .aiRating = 5, + }, + + [ABILITY_SLUSH_RUSH] = + { + .name = _("Slush Rush"), + .description = COMPOUND_STRING("Raises Speed in Hail or Snow."), + .aiRating = 5, + }, + + [ABILITY_LONG_REACH] = + { + .name = _("Long Reach"), + .description = COMPOUND_STRING("Never makes contact."), + .aiRating = 3, + }, + + [ABILITY_LIQUID_VOICE] = + { + .name = _("Liquid Voice"), + .description = COMPOUND_STRING("Makes sound moves Water."), + .aiRating = 5, + }, + + [ABILITY_TRIAGE] = + { + .name = _("Triage"), + .description = COMPOUND_STRING("Healing moves go first."), + .aiRating = 7, + }, + + [ABILITY_GALVANIZE] = + { + .name = _("Galvanize"), + .description = COMPOUND_STRING("Normal moves turn Electric."), + .aiRating = 8, + }, + + [ABILITY_SURGE_SURFER] = + { + .name = _("Surge Surfer"), + .description = COMPOUND_STRING("Faster on electricity."), + .aiRating = 4, + }, + + [ABILITY_SCHOOLING] = + { + .name = _("Schooling"), + .description = COMPOUND_STRING("Forms a school when strong."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_DISGUISE] = + { + .name = _("Disguise"), + .description = COMPOUND_STRING("Decoy protects it once."), + .aiRating = 8, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_BATTLE_BOND] = + { + .name = _("Battle Bond"), + .description = COMPOUND_STRING("Changes form after a KO."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_POWER_CONSTRUCT] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Power Construct"), + #else + .name = _("PwrConstruct"), + #endif + .description = COMPOUND_STRING("Cells aid it when weakened."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_CORROSION] = + { + .name = _("Corrosion"), + .description = COMPOUND_STRING("Poisons any type."), + .aiRating = 5, + }, + + [ABILITY_COMATOSE] = + { + .name = _("Comatose"), + .description = COMPOUND_STRING("Always drowsing."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_QUEENLY_MAJESTY] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Queenly Majesty"), + #else + .name = _("QueenlyMjsty"), + #endif + .description = COMPOUND_STRING("Protects from priority."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_INNARDS_OUT] = + { + .name = _("Innards Out"), + .description = COMPOUND_STRING("Hurts foe when defeated."), + .aiRating = 5, + }, + + [ABILITY_DANCER] = + { + .name = _("Dancer"), + .description = COMPOUND_STRING("Dances along with others."), + .aiRating = 5, + }, + + [ABILITY_BATTERY] = + { + .name = _("Battery"), + .description = COMPOUND_STRING("Boosts ally's Sp. Atk."), + .aiRating = 0, + }, + + [ABILITY_FLUFFY] = + { + .name = _("Fluffy"), + .description = COMPOUND_STRING("Tougher but flammable."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_DAZZLING] = + { + .name = _("Dazzling"), + .description = COMPOUND_STRING("Protects from priority."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_SOUL_HEART] = + { + .name = _("Soul-Heart"), + .description = COMPOUND_STRING("KOs raise Sp. Atk."), + .aiRating = 7, + }, + + [ABILITY_TANGLING_HAIR] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Tangling Hair"), + #else + .name = _("TanglingHair"), + #endif + .description = COMPOUND_STRING("Lowers Speed on contact."), + .aiRating = 5, + }, + + [ABILITY_RECEIVER] = + { + .name = _("Receiver"), + .description = COMPOUND_STRING("Copies ally's ability."), + .aiRating = 0, + .cantBeCopied = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_POWER_OF_ALCHEMY] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Power Of Alchemy"), + #else + .name = _("PwrOfAlchemy"), + #endif + .description = COMPOUND_STRING("Copies ally's ability."), + .aiRating = 0, + .cantBeCopied = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_BEAST_BOOST] = + { + .name = _("Beast Boost"), + .description = COMPOUND_STRING("KOs boost best stat."), + .aiRating = 7, + }, + + [ABILITY_RKS_SYSTEM] = + { + .name = _("RKS System"), + .description = COMPOUND_STRING("Memories change its type."), + .aiRating = 8, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_ELECTRIC_SURGE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Electric Surge"), + #else + .name = _("ElectrcSurge"), + #endif + .description = COMPOUND_STRING("Field becomes Electric."), + .aiRating = 8, + }, + + [ABILITY_PSYCHIC_SURGE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Psychic Surge"), + #else + .name = _("PsychicSurge"), + #endif + .description = COMPOUND_STRING("Field becomes weird."), + .aiRating = 8, + }, + + [ABILITY_MISTY_SURGE] = + { + .name = _("Misty Surge"), + .description = COMPOUND_STRING("Field becomes misty."), + .aiRating = 8, + }, + + [ABILITY_GRASSY_SURGE] = + { + .name = _("Grassy Surge"), + .description = COMPOUND_STRING("Field becomes grassy."), + .aiRating = 8, + }, + + [ABILITY_FULL_METAL_BODY] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Full Metal Body"), + #else + .name = _("FullMetalBdy"), + #endif + .description = COMPOUND_STRING("Prevents stat reduction."), + .aiRating = 4, + }, + + [ABILITY_SHADOW_SHIELD] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Shadow Shield"), + #else + .name = _("ShadowShield"), + #endif + .description = COMPOUND_STRING("Halves damage at full HP."), + .aiRating = 8, + }, + + [ABILITY_PRISM_ARMOR] = + { + .name = _("Prism Armor"), + .description = COMPOUND_STRING("Weakens “supereffective”."), + .aiRating = 6, + }, + + [ABILITY_NEUROFORCE] = + { + .name = _("Neuroforce"), + .description = COMPOUND_STRING("Ups “supereffective”."), + .aiRating = 6, + }, + + [ABILITY_INTREPID_SWORD] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Intrepid Sword"), + #else + .name = _("IntrepidSwrd"), + #endif + .description = COMPOUND_STRING("Ups Attack on entry."), + .aiRating = 3, + }, + + [ABILITY_DAUNTLESS_SHIELD] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Dauntless Shield"), + #else + .name = _("DauntlssShld"), + #endif + .description = COMPOUND_STRING("Ups Defense on entry."), + .aiRating = 3, + }, + + [ABILITY_LIBERO] = + { + .name = _("Libero"), + .description = COMPOUND_STRING("Changes type to move's."), + }, + + [ABILITY_BALL_FETCH] = + { + .name = _("Ball Fetch"), + .description = COMPOUND_STRING("Fetches failed Poké Ball."), + .aiRating = 0, + }, + + [ABILITY_COTTON_DOWN] = + { + .name = _("Cotton Down"), + .description = COMPOUND_STRING("Lower Speed of all when hit."), + .aiRating = 3, + }, + + [ABILITY_PROPELLER_TAIL] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Propeller Tail"), + #else + .name = _("PropellrTail"), + #endif + .description = COMPOUND_STRING("Ignores foe's redirection."), + .aiRating = 2, + }, + + [ABILITY_MIRROR_ARMOR] = + { + .name = _("Mirror Armor"), + .description = COMPOUND_STRING("Reflect stat decreases."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_GULP_MISSILE] = + { + .name = _("Gulp Missile"), + .description = COMPOUND_STRING("If hit, spits prey from sea."), + .aiRating = 3, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_STALWART] = + { + .name = _("Stalwart"), + .description = COMPOUND_STRING("Ignores foe's redirection."), + .aiRating = 2, + }, + + [ABILITY_STEAM_ENGINE] = + { + .name = _("Steam Engine"), + .description = COMPOUND_STRING("Fire or Water hits up Speed."), + .aiRating = 3, + }, + + [ABILITY_PUNK_ROCK] = + { + .name = _("Punk Rock"), + .description = COMPOUND_STRING("Ups and resists sound."), + .aiRating = 2, + .breakable = TRUE, + }, + + [ABILITY_SAND_SPIT] = + { + .name = _("Sand Spit"), + .description = COMPOUND_STRING("Creates a sandstorm if hit."), + .aiRating = 5, + }, + + [ABILITY_ICE_SCALES] = + { + .name = _("Ice Scales"), + .description = COMPOUND_STRING("Halves special damage."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_RIPEN] = + { + .name = _("Ripen"), + .description = COMPOUND_STRING("Doubles effect of Berries."), + .aiRating = 4, + }, + + [ABILITY_ICE_FACE] = + { + .name = _("Ice Face"), + .description = COMPOUND_STRING("Hail or Snow renew free hit."), + .aiRating = 4, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + .breakable = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_POWER_SPOT] = + { + .name = _("Power Spot"), + .description = COMPOUND_STRING("Powers up ally moves."), + .aiRating = 2, + }, + + [ABILITY_MIMICRY] = + { + .name = _("Mimicry"), + .description = COMPOUND_STRING("Changes type on terrain."), + .aiRating = 2, + }, + + [ABILITY_SCREEN_CLEANER] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Screen Cleaner"), + #else + .name = _("ScreenCleanr"), + #endif + .description = COMPOUND_STRING("Removes walls of light."), + .aiRating = 3, + }, + + [ABILITY_STEELY_SPIRIT] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Steely Spirit"), + #else + .name = _("SteelySpirit"), + #endif + .description = COMPOUND_STRING("Boosts ally's Steel moves."), + .aiRating = 2, + }, + + [ABILITY_PERISH_BODY] = + { + .name = _("Perish Body"), + .description = COMPOUND_STRING("Foe faints in 3 turns if hit."), + .aiRating = -1, + }, + + [ABILITY_WANDERING_SPIRIT] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Wandering Spirit"), + #else + .name = _("WandrngSprit"), + #endif + .description = COMPOUND_STRING("Trade abilities on contact."), + .aiRating = 2, + }, + + [ABILITY_GORILLA_TACTICS] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Gorilla Tactics"), + #else + .name = _("GorillaTacti"), + #endif + .description = COMPOUND_STRING("Ups Attack and locks move."), + .aiRating = 4, + }, + + [ABILITY_NEUTRALIZING_GAS] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Neutralizing Gas"), + #else + .name = _("NeutrlzngGas"), + #endif + .description = COMPOUND_STRING("All Abilities are nullified."), + .aiRating = 5, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_PASTEL_VEIL] = + { + .name = _("Pastel Veil"), + .description = COMPOUND_STRING("Protects team from poison."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_HUNGER_SWITCH] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Hunger Switch"), + #else + .name = _("HungerSwitch"), + #endif + .description = COMPOUND_STRING("Changes form each turn."), + .aiRating = 2, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_QUICK_DRAW] = + { + .name = _("Quick Draw"), + .description = COMPOUND_STRING("Moves first occasionally."), + .aiRating = 4, + }, + + [ABILITY_UNSEEN_FIST] = + { + .name = _("Unseen Fist"), + .description = COMPOUND_STRING("Contact evades protection."), + .aiRating = 6, + }, + + [ABILITY_CURIOUS_MEDICINE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Curious Medicine"), + #else + .name = _("CuriusMedicn"), + #endif + .description = COMPOUND_STRING("Remove ally's stat changes."), + .aiRating = 3, + }, + + [ABILITY_TRANSISTOR] = + { + .name = _("Transistor"), + .description = COMPOUND_STRING("Ups Electric-type moves."), + .aiRating = 6, + }, + + [ABILITY_DRAGONS_MAW] = + { + .name = _("Dragon's Maw"), + .description = COMPOUND_STRING("Ups Dragon-type moves."), + .aiRating = 6, + }, + + [ABILITY_CHILLING_NEIGH] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Chilling Neigh"), + #else + .name = _("ChillngNeigh"), + #endif + .description = COMPOUND_STRING("KOs boost Attack stat."), + .aiRating = 7, + }, + + [ABILITY_GRIM_NEIGH] = + { + .name = _("Grim Neigh"), + .description = COMPOUND_STRING("KOs boost Sp. Atk stat."), + .aiRating = 7, + }, + + [ABILITY_AS_ONE_ICE_RIDER] = + { + .name = _("As One"), + .description = COMPOUND_STRING("Unnerve and Chilling Neigh."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_AS_ONE_SHADOW_RIDER] = + { + .name = _("As One"), + .description = COMPOUND_STRING("Unnerve and Grim Neigh."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + }, + + [ABILITY_LINGERING_AROMA] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Lingering Aroma"), + #else + .name = _("LngerngAroma"), + #endif + .description = COMPOUND_STRING("Spreads with contact."), + .aiRating = 5, + }, + + [ABILITY_SEED_SOWER] = + { + .name = _("Seed Sower"), + .description = COMPOUND_STRING("Affects terrain when hit."), + .aiRating = 5, + }, + + [ABILITY_THERMAL_EXCHANGE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Thermal Exchange"), + #else + .name = _("ThrmlExchnge"), + #endif + .description = COMPOUND_STRING("Fire hits up Attack."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_ANGER_SHELL] = + { + .name = _("Anger Shell"), + .description = COMPOUND_STRING("Gets angry at half HP."), + .aiRating = 3, + }, + + [ABILITY_PURIFYING_SALT] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Purifying Salt"), + #else + .name = _("PurfyingSalt"), + #endif + .description = COMPOUND_STRING("Protected by pure salts."), + .aiRating = 6, + .breakable = TRUE, + }, + + [ABILITY_WELL_BAKED_BODY] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Well-Baked Body"), + #else + .name = _("WellBakedBdy"), + #endif + .description = COMPOUND_STRING("Strengthened by Fire."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_WIND_RIDER] = + { + .name = _("Wind Rider"), + .description = COMPOUND_STRING("Ups Attack if hit by wind."), + .aiRating = 4, + .breakable = TRUE, + }, + + [ABILITY_GUARD_DOG] = + { + .name = _("Guard Dog"), + .description = COMPOUND_STRING("Cannot be intimidated."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_ROCKY_PAYLOAD] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Rocky Payload"), + #else + .name = _("RockyPayload"), + #endif + .description = COMPOUND_STRING("Powers up Rock moves."), + .aiRating = 6, + }, + + [ABILITY_WIND_POWER] = + { + .name = _("Wind Power"), + .description = COMPOUND_STRING("Gets charged by wind."), + .aiRating = 4, + }, + + [ABILITY_ZERO_TO_HERO] = + { + .name = _("Zero to Hero"), + .description = COMPOUND_STRING("Changes form on switch out."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_COMMANDER] = + { + .name = _("Commander"), + .description = COMPOUND_STRING("Commands from Dondozo."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_ELECTROMORPHOSIS] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Electromorphosis"), + #else + .name = _("Elecmrphosis"), + #endif + .description = COMPOUND_STRING("Gets Charged when hit."), + .aiRating = 5, + }, + + [ABILITY_PROTOSYNTHESIS] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Protosynthesis"), + #else + .name = _("Protosnthsis"), + #endif + .description = COMPOUND_STRING("Sun boosts best stat."), + .aiRating = 7, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_QUARK_DRIVE] = + { + .name = _("Quark Drive"), + .description = COMPOUND_STRING("Elec. field ups best stat."), + .aiRating = 7, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_GOOD_AS_GOLD] = + { + .name = _("Good as Gold"), + .description = COMPOUND_STRING("Avoids status problems."), + .aiRating = 8, + .breakable = TRUE, + }, + + [ABILITY_VESSEL_OF_RUIN] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Vessel of Ruin"), + #else + .name = _("VesselOfRuin"), + #endif + .description = COMPOUND_STRING("Lowers foes' sp. damage."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_SWORD_OF_RUIN] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Sword of Ruin"), + #else + .name = _("SwordOfRuin"), + #endif + .description = COMPOUND_STRING("Lowers foes' Defense."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_TABLETS_OF_RUIN] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Tablets of Ruin"), + #else + .name = _("TabltsOfRuin"), + #endif + .description = COMPOUND_STRING("Lowers foes' damage."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_BEADS_OF_RUIN] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Beads of Ruin"), + #else + .name = _("BeadsOfRuin"), + #endif + .description = COMPOUND_STRING("Lowers foes' Sp. Defense."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_ORICHALCUM_PULSE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Orichalcum Pulse"), + #else + .name = _("OrchlcumPlse"), + #endif + .description = COMPOUND_STRING("Summons sunlight in battle."), + .aiRating = 8, + }, + + [ABILITY_HADRON_ENGINE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Hadron Engine"), + #else + .name = _("HadronEngine"), + #endif + .description = COMPOUND_STRING("Field becomes Electric."), + .aiRating = 8, + }, + + [ABILITY_OPPORTUNIST] = + { + .name = _("Opportunist"), + .description = COMPOUND_STRING("Copies foe's stat change."), + .aiRating = 5, + }, + + [ABILITY_CUD_CHEW] = + { + .name = _("Cud Chew"), + .description = COMPOUND_STRING("Eats a used berry again."), + .aiRating = 4, + }, + + [ABILITY_SHARPNESS] = + { + .name = _("Sharpness"), + .description = COMPOUND_STRING("Strengthens slicing moves."), + .aiRating = 7, + }, + + [ABILITY_SUPREME_OVERLORD] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Supreme Overlord"), + #else + .name = _("SuprmeOvrlrd"), + #endif + .description = COMPOUND_STRING("Inherits fallen's strength."), + .aiRating = 6, + }, + + [ABILITY_COSTAR] = + { + .name = _("Costar"), + .description = COMPOUND_STRING("Copies ally's stat changes."), + .aiRating = 5, + }, + + [ABILITY_TOXIC_DEBRIS] = + { + .name = _("Toxic Debris"), + .description = COMPOUND_STRING("Throws poison spikes if hit."), + .aiRating = 4, + }, + + [ABILITY_ARMOR_TAIL] = + { + .name = _("Armor Tail"), + .description = COMPOUND_STRING("Protects from priority."), + .aiRating = 5, + .breakable = TRUE, + }, + + [ABILITY_EARTH_EATER] = + { + .name = _("Earth Eater"), + .description = COMPOUND_STRING("Eats ground to heal HP."), + .aiRating = 7, + .breakable = TRUE, + }, + + [ABILITY_MYCELIUM_MIGHT] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Mycelium Might"), + #else + .name = _("MceliumMight"), + #endif + .description = COMPOUND_STRING("Status moves never fail."), + .aiRating = 2, + }, + + [ABILITY_HOSPITALITY] = + { + .name = _("Hospitality"), + .description = COMPOUND_STRING("Restores ally's HP."), + .aiRating = 5, + }, + + [ABILITY_MINDS_EYE] = + { + .name = _("Mind's Eye"), + .description = COMPOUND_STRING("Keen Eye and Scrappy."), + .aiRating = 8, + .breakable = TRUE, + }, + + [ABILITY_EMBODY_ASPECT_TEAL] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Embody Aspect"), + #else + .name = _("EmbodyAspect"), + #endif + .description = COMPOUND_STRING("Raises Speed."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Embody Aspect"), + #else + .name = _("EmbodyAspect"), + #endif + .description = COMPOUND_STRING("Raises Attack."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_EMBODY_ASPECT_WELLSPRING] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Embody Aspect"), + #else + .name = _("EmbodyAspect"), + #endif + .description = COMPOUND_STRING("Raises Sp. Def."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_EMBODY_ASPECT_CORNERSTONE] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Embody Aspect"), + #else + .name = _("EmbodyAspect"), + #endif + .description = COMPOUND_STRING("Raises Defense."), + .aiRating = 6, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_TOXIC_CHAIN] = + { + .name = _("Toxic Chain"), + .description = COMPOUND_STRING("Moves can poison."), + .aiRating = 8, + }, + + [ABILITY_SUPERSWEET_SYRUP] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Supersweet Syrup"), + #else + .name = _("SuprswtSyrup"), + #endif + .description = COMPOUND_STRING("Lowers the foe's Speed."), + .aiRating = 5, + }, + + [ABILITY_TERA_SHIFT] = + { + .name = _("Tera Shift"), + .description = COMPOUND_STRING("Terasteralizes upon entry."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .cantBeSuppressed = TRUE, + .cantBeOverwritten = TRUE, + .failsOnImposter = TRUE, + }, + + [ABILITY_TERA_SHELL] = + { + .name = _("Tera Shell"), + .description = COMPOUND_STRING("Resistant to types at full HP."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + .breakable = TRUE, + }, + + [ABILITY_TERAFORM_ZERO] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Teraform Zero"), + #else + .name = _("TeraformZero"), + #endif + .description = COMPOUND_STRING("Removes weather and terrain."), + .aiRating = 10, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + }, + + [ABILITY_POISON_PUPPETEER] = + { + #if B_EXPANDED_ABILITY_NAMES == TRUE + .name = _("Poison Puppeteer"), + #else + .name = _("PoisnPuppter"), + #endif + .description = COMPOUND_STRING("Confuses poisoned foes."), + .aiRating = 8, + .cantBeCopied = TRUE, + .cantBeSwapped = TRUE, + .cantBeTraced = TRUE, + }, +}; diff --git a/src/data/battle_frontier/battle_frontier_trainer_mons.h b/src/data/battle_frontier/battle_frontier_trainer_mons.h index 625a602658c5..f0a203d56d90 100644 --- a/src/data/battle_frontier/battle_frontier_trainer_mons.h +++ b/src/data/battle_frontier/battle_frontier_trainer_mons.h @@ -4172,7 +4172,7 @@ FRONTIER_MON_##lastmon##_10,\ -1 -// The strong Psychic M/F trainers all use the below pokemon +// The strong Psychic M/F trainers all use the below Pokémon // Additionally they use 1 of 3 legendary trios, and Latios or Latias depending on gender #define FRONTIER_MONS_PSYCHIC_2(lati, legend1, legend2, legend3) \ FRONTIER_MON_WOBBUFFET_1, \ diff --git a/src/data/battle_moves.h b/src/data/battle_moves.h index 16d0bc947234..1462f86262bc 100644 --- a/src/data/battle_moves.h +++ b/src/data/battle_moves.h @@ -13277,13 +13277,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_DOODLE] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_DOODLE + .effect = EFFECT_DOODLE, .power = 0, .type = TYPE_NORMAL, .accuracy = 100, .pp = 10, .secondaryEffectChance = 0, - .target = MOVE_TARGET_BOTH, + .target = MOVE_TARGET_SELECTED, .priority = 0, .category = BATTLE_CATEGORY_STATUS, .ignoresProtect = TRUE, @@ -13293,7 +13293,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_FILLET_AWAY] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_FILLET_AWAY + .effect = EFFECT_FILLET_AWAY, .power = 0, .type = TYPE_NORMAL, .accuracy = 0, @@ -13887,7 +13887,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_IVY_CUDGEL] = { - .effect = EFFECT_CHANGE_TYPE_ON_ITEM, + .effect = EFFECT_IVY_CUDGEL, .power = 100, .type = TYPE_GRASS, .accuracy = 100, @@ -13897,13 +13897,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_SELECTED, .priority = 0, .category = BATTLE_CATEGORY_PHYSICAL, - .argument = HOLD_EFFECT_MASK, .metronomeBanned = TRUE, }, [MOVE_ELECTRO_SHOT] = { - .effect = EFFECT_PLACEHOLDER, //EFFECT_ELECTRO_SHOT + .effect = EFFECT_METEOR_BEAM, .power = 130, .type = TYPE_ELECTRIC, .accuracy = 100, @@ -13934,7 +13933,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_FICKLE_BEAM] = { - .effect = EFFECT_PLACEHOLDER, //EFFECT_FICKLE_BEAM + .effect = EFFECT_FICKLE_BEAM, .power = 80, .type = TYPE_DRAGON, .accuracy = 100, @@ -13947,7 +13946,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_BURNING_BULWARK] = { - .effect = EFFECT_PLACEHOLDER, // EFFECT_PROTECT with effects + .effect = EFFECT_PROTECT, .power = 0, .type = TYPE_FIRE, .accuracy = 0, @@ -13956,7 +13955,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = .target = MOVE_TARGET_USER, .priority = 4, .category = BATTLE_CATEGORY_STATUS, - .zMove = {.effect = Z_EFFECT_DEF_UP_1}, + .zMove = { .effect = Z_EFFECT_RESET_STATS }, .protectionMove = TRUE, .ignoresProtect = TRUE, .mirrorMoveBanned = TRUE, @@ -14038,16 +14037,17 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] = [MOVE_ALLURING_VOICE] = { - .effect = EFFECT_PLACEHOLDER, //EFFECT_ALLURING_VOICE + .effect = EFFECT_CONFUSE_HIT, .power = 80, .type = TYPE_FAIRY, .accuracy = 100, .pp = 10, - .secondaryEffectChance = 0, + .secondaryEffectChance = 100, .target = MOVE_TARGET_SELECTED, .priority = 0, .category = BATTLE_CATEGORY_SPECIAL, .soundMove = TRUE, + .sheerForceBoost = TRUE, .ignoresSubstitute = TRUE, }, diff --git a/src/data/graphics/items.h b/src/data/graphics/items.h index f628b37d910e..7c18d72d0aad 100644 --- a/src/data/graphics/items.h +++ b/src/data/graphics/items.h @@ -663,6 +663,9 @@ const u32 gItemIconPalette_UnremarkableTeacup[] = INCBIN_U32("graphics/items/ico const u32 gItemIcon_MasterpieceTeacup[] = INCBIN_U32("graphics/items/icons/masterpiece_teacup.4bpp.lz"); const u32 gItemIconPalette_MasterpieceTeacup[] = INCBIN_U32("graphics/items/icon_palettes/masterpiece_teacup.gbapal.lz"); +const u32 gItemIcon_MetalAlloy[] = INCBIN_U32("graphics/items/icons/metal_alloy.4bpp.lz"); +const u32 gItemIconPalette_MetalAlloy[] = INCBIN_U32("graphics/items/icon_palettes/metal_alloy.gbapal.lz"); + // Nectars const u32 gItemIcon_RedNectar[] = INCBIN_U32("graphics/items/icons/red_nectar.4bpp.lz"); diff --git a/src/data/graphics/pokemon.h b/src/data/graphics/pokemon.h index 998e43c218c9..1d6240b1e799 100644 --- a/src/data/graphics/pokemon.h +++ b/src/data/graphics/pokemon.h @@ -3,7 +3,9 @@ const u32 gMonBackPic_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/quest const u32 gMonPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/normal.gbapal.lz"); const u32 gMonShinyPalette_CircledQuestionMark[] = INCBIN_U32("graphics/pokemon/question_mark/circled/shiny.gbapal.lz"); const u8 gMonIcon_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mark/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_FAMILY_BULBASAUR const u32 gMonFrontPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/anim_front.4bpp.lz"); @@ -11,21 +13,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/back.4bpp.lz"); const u32 gMonShinyPalette_Bulbasaur[] = INCBIN_U32("graphics/pokemon/bulbasaur/shiny.gbapal.lz"); const u8 gMonIcon_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bulbasaur[] = INCBIN_U8("graphics/pokemon/bulbasaur/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/anim_front.4bpp.lz"); const u32 gMonPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/normal.gbapal.lz"); const u32 gMonBackPic_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/back.4bpp.lz"); const u32 gMonShinyPalette_Ivysaur[] = INCBIN_U32("graphics/pokemon/ivysaur/shiny.gbapal.lz"); const u8 gMonIcon_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ivysaur[] = INCBIN_U8("graphics/pokemon/ivysaur/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/anim_front.4bpp.lz"); const u32 gMonPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/normal.gbapal.lz"); const u32 gMonBackPic_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/back.4bpp.lz"); const u32 gMonShinyPalette_Venusaur[] = INCBIN_U32("graphics/pokemon/venusaur/shiny.gbapal.lz"); const u8 gMonIcon_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Venusaur[] = INCBIN_U8("graphics/pokemon/venusaur/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/anim_frontf.4bpp.lz"); const u32 gMonBackPic_VenusaurF[] = INCBIN_U32("graphics/pokemon/venusaur/backf.4bpp.lz"); @@ -53,21 +61,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/back.4bpp.lz"); const u32 gMonShinyPalette_Charmander[] = INCBIN_U32("graphics/pokemon/charmander/shiny.gbapal.lz"); const u8 gMonIcon_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Charmander[] = INCBIN_U8("graphics/pokemon/charmander/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/anim_front.4bpp.lz"); const u32 gMonPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/normal.gbapal.lz"); const u32 gMonBackPic_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/back.4bpp.lz"); const u32 gMonShinyPalette_Charmeleon[] = INCBIN_U32("graphics/pokemon/charmeleon/shiny.gbapal.lz"); const u8 gMonIcon_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Charmeleon[] = INCBIN_U8("graphics/pokemon/charmeleon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/anim_front.4bpp.lz"); const u32 gMonPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/normal.gbapal.lz"); const u32 gMonBackPic_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/back.4bpp.lz"); const u32 gMonShinyPalette_Charizard[] = INCBIN_U32("graphics/pokemon/charizard/shiny.gbapal.lz"); const u8 gMonIcon_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Charizard[] = INCBIN_U8("graphics/pokemon/charizard/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_CharizardMegaX[] = INCBIN_U32("graphics/pokemon/charizard/mega_x/front.4bpp.lz"); @@ -98,21 +112,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/back.4bpp.lz"); const u32 gMonShinyPalette_Squirtle[] = INCBIN_U32("graphics/pokemon/squirtle/shiny.gbapal.lz"); const u8 gMonIcon_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Squirtle[] = INCBIN_U8("graphics/pokemon/squirtle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/anim_front.4bpp.lz"); const u32 gMonPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/normal.gbapal.lz"); const u32 gMonBackPic_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/back.4bpp.lz"); const u32 gMonShinyPalette_Wartortle[] = INCBIN_U32("graphics/pokemon/wartortle/shiny.gbapal.lz"); const u8 gMonIcon_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wartortle[] = INCBIN_U8("graphics/pokemon/wartortle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/anim_front.4bpp.lz"); const u32 gMonPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/normal.gbapal.lz"); const u32 gMonBackPic_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/back.4bpp.lz"); const u32 gMonShinyPalette_Blastoise[] = INCBIN_U32("graphics/pokemon/blastoise/shiny.gbapal.lz"); const u8 gMonIcon_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Blastoise[] = INCBIN_U8("graphics/pokemon/blastoise/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BlastoiseMega[] = INCBIN_U32("graphics/pokemon/blastoise/mega/front.4bpp.lz"); @@ -137,21 +157,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/back.4bpp.lz"); const u32 gMonShinyPalette_Caterpie[] = INCBIN_U32("graphics/pokemon/caterpie/shiny.gbapal.lz"); const u8 gMonIcon_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Caterpie[] = INCBIN_U8("graphics/pokemon/caterpie/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/anim_front.4bpp.lz"); const u32 gMonPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/normal.gbapal.lz"); const u32 gMonBackPic_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/back.4bpp.lz"); const u32 gMonShinyPalette_Metapod[] = INCBIN_U32("graphics/pokemon/metapod/shiny.gbapal.lz"); const u8 gMonIcon_Metapod[] = INCBIN_U8( "graphics/pokemon/metapod/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Metapod[] = INCBIN_U8("graphics/pokemon/metapod/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/anim_front.4bpp.lz"); const u32 gMonPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/normal.gbapal.lz"); const u32 gMonBackPic_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/back.4bpp.lz"); const u32 gMonShinyPalette_Butterfree[] = INCBIN_U32("graphics/pokemon/butterfree/shiny.gbapal.lz"); const u8 gMonIcon_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Butterfree[] = INCBIN_U8("graphics/pokemon/butterfree/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ButterfreeF[] = INCBIN_U32("graphics/pokemon/butterfree/backf.4bpp.lz"); @@ -171,21 +197,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/back.4bpp.lz"); const u32 gMonShinyPalette_Weedle[] = INCBIN_U32("graphics/pokemon/weedle/shiny.gbapal.lz"); const u8 gMonIcon_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Weedle[] = INCBIN_U8("graphics/pokemon/weedle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/anim_front.4bpp.lz"); const u32 gMonPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/normal.gbapal.lz"); const u32 gMonBackPic_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/back.4bpp.lz"); const u32 gMonShinyPalette_Kakuna[] = INCBIN_U32("graphics/pokemon/kakuna/shiny.gbapal.lz"); const u8 gMonIcon_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kakuna[] = INCBIN_U8("graphics/pokemon/kakuna/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/anim_front.4bpp.lz"); const u32 gMonPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/normal.gbapal.lz"); const u32 gMonBackPic_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/back.4bpp.lz"); const u32 gMonShinyPalette_Beedrill[] = INCBIN_U32("graphics/pokemon/beedrill/shiny.gbapal.lz"); const u8 gMonIcon_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Beedrill[] = INCBIN_U8("graphics/pokemon/beedrill/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BeedrillMega[] = INCBIN_U32("graphics/pokemon/beedrill/mega/front.4bpp.lz"); @@ -202,21 +234,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/back.4bpp.lz"); const u32 gMonShinyPalette_Pidgey[] = INCBIN_U32("graphics/pokemon/pidgey/shiny.gbapal.lz"); const u8 gMonIcon_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pidgey[] = INCBIN_U8("graphics/pokemon/pidgey/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/anim_front.4bpp.lz"); const u32 gMonPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/normal.gbapal.lz"); const u32 gMonBackPic_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/back.4bpp.lz"); const u32 gMonShinyPalette_Pidgeotto[] = INCBIN_U32("graphics/pokemon/pidgeotto/shiny.gbapal.lz"); const u8 gMonIcon_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pidgeotto[] = INCBIN_U8("graphics/pokemon/pidgeotto/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/anim_front.4bpp.lz"); const u32 gMonPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/normal.gbapal.lz"); const u32 gMonBackPic_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/back.4bpp.lz"); const u32 gMonShinyPalette_Pidgeot[] = INCBIN_U32("graphics/pokemon/pidgeot/shiny.gbapal.lz"); const u8 gMonIcon_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pidgeot[] = INCBIN_U8("graphics/pokemon/pidgeot/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_PidgeotMega[] = INCBIN_U32("graphics/pokemon/pidgeot/mega/front.4bpp.lz"); @@ -233,7 +271,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/back.4bpp.lz"); const u32 gMonShinyPalette_Rattata[] = INCBIN_U32("graphics/pokemon/rattata/shiny.gbapal.lz"); const u8 gMonIcon_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rattata[] = INCBIN_U8("graphics/pokemon/rattata/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RattataF[] = INCBIN_U32("graphics/pokemon/rattata/backf.4bpp.lz"); @@ -243,7 +283,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/back.4bpp.lz"); const u32 gMonShinyPalette_Raticate[] = INCBIN_U32("graphics/pokemon/raticate/shiny.gbapal.lz"); const u8 gMonIcon_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Raticate[] = INCBIN_U8("graphics/pokemon/raticate/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RaticateF[] = INCBIN_U32("graphics/pokemon/raticate/backf.4bpp.lz"); @@ -269,14 +311,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/back.4bpp.lz"); const u32 gMonShinyPalette_Spearow[] = INCBIN_U32("graphics/pokemon/spearow/shiny.gbapal.lz"); const u8 gMonIcon_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spearow[] = INCBIN_U8("graphics/pokemon/spearow/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/anim_front.4bpp.lz"); const u32 gMonPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/normal.gbapal.lz"); const u32 gMonBackPic_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/back.4bpp.lz"); const u32 gMonShinyPalette_Fearow[] = INCBIN_U32("graphics/pokemon/fearow/shiny.gbapal.lz"); const u8 gMonIcon_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Fearow[] = INCBIN_U8("graphics/pokemon/fearow/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPEAROW #if P_FAMILY_EKANS @@ -285,14 +331,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/back.4bpp.lz"); const u32 gMonShinyPalette_Ekans[] = INCBIN_U32("graphics/pokemon/ekans/shiny.gbapal.lz"); const u8 gMonIcon_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ekans[] = INCBIN_U8("graphics/pokemon/ekans/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/anim_front.4bpp.lz"); const u32 gMonPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/normal.gbapal.lz"); const u32 gMonBackPic_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/back.4bpp.lz"); const u32 gMonShinyPalette_Arbok[] = INCBIN_U32("graphics/pokemon/arbok/shiny.gbapal.lz"); const u8 gMonIcon_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Arbok[] = INCBIN_U8("graphics/pokemon/arbok/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_EKANS #if P_FAMILY_PIKACHU @@ -302,7 +352,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/back.4bpp.lz"); const u32 gMonShinyPalette_Pichu[] = INCBIN_U32("graphics/pokemon/pichu/shiny.gbapal.lz"); const u8 gMonIcon_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pichu[] = INCBIN_U8("graphics/pokemon/pichu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/anim_front.4bpp.lz"); const u32 gMonPalette_PichuSpikyEared[] = INCBIN_U32("graphics/pokemon/pichu/spiky_eared/normal.gbapal.lz"); @@ -316,7 +368,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/back.4bpp.lz"); const u32 gMonShinyPalette_Pikachu[] = INCBIN_U32("graphics/pokemon/pikachu/shiny.gbapal.lz"); const u8 gMonIcon_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pikachu[] = INCBIN_U8("graphics/pokemon/pikachu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PikachuF[] = INCBIN_U32("graphics/pokemon/pikachu/anim_frontf.4bpp.lz"); const u32 gMonBackPic_PikachuF[] = INCBIN_U32("graphics/pokemon/pikachu/backf.4bpp.lz"); @@ -425,7 +479,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/back.4bpp.lz"); const u32 gMonShinyPalette_Raichu[] = INCBIN_U32("graphics/pokemon/raichu/shiny.gbapal.lz"); const u8 gMonIcon_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Raichu[] = INCBIN_U8("graphics/pokemon/raichu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RaichuF[] = INCBIN_U32("graphics/pokemon/raichu/anim_frontf.4bpp.lz"); @@ -444,14 +500,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/back.4bpp.lz"); const u32 gMonShinyPalette_Sandshrew[] = INCBIN_U32("graphics/pokemon/sandshrew/shiny.gbapal.lz"); const u8 gMonIcon_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sandshrew[] = INCBIN_U8("graphics/pokemon/sandshrew/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/anim_front.4bpp.lz"); const u32 gMonPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/normal.gbapal.lz"); const u32 gMonBackPic_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/back.4bpp.lz"); const u32 gMonShinyPalette_Sandslash[] = INCBIN_U32("graphics/pokemon/sandslash/shiny.gbapal.lz"); const u8 gMonIcon_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sandslash[] = INCBIN_U8("graphics/pokemon/sandslash/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_SandshrewAlolan[] = INCBIN_U32("graphics/pokemon/sandshrew/alolan/front.4bpp.lz"); @@ -474,42 +534,54 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/back.4bpp.lz"); const u32 gMonShinyPalette_NidoranF[] = INCBIN_U32("graphics/pokemon/nidoran_f/shiny.gbapal.lz"); const u8 gMonIcon_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_NidoranF[] = INCBIN_U8("graphics/pokemon/nidoran_f/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/anim_front.4bpp.lz"); const u32 gMonPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/normal.gbapal.lz"); const u32 gMonBackPic_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/back.4bpp.lz"); const u32 gMonShinyPalette_Nidorina[] = INCBIN_U32("graphics/pokemon/nidorina/shiny.gbapal.lz"); const u8 gMonIcon_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nidorina[] = INCBIN_U8("graphics/pokemon/nidorina/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/anim_front.4bpp.lz"); const u32 gMonPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/normal.gbapal.lz"); const u32 gMonBackPic_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/back.4bpp.lz"); const u32 gMonShinyPalette_Nidoqueen[] = INCBIN_U32("graphics/pokemon/nidoqueen/shiny.gbapal.lz"); const u8 gMonIcon_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nidoqueen[] = INCBIN_U8("graphics/pokemon/nidoqueen/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/anim_front.4bpp.lz"); const u32 gMonPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/normal.gbapal.lz"); const u32 gMonBackPic_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/back.4bpp.lz"); const u32 gMonShinyPalette_NidoranM[] = INCBIN_U32("graphics/pokemon/nidoran_m/shiny.gbapal.lz"); const u8 gMonIcon_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_NidoranM[] = INCBIN_U8("graphics/pokemon/nidoran_m/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/anim_front.4bpp.lz"); const u32 gMonPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/normal.gbapal.lz"); const u32 gMonBackPic_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/back.4bpp.lz"); const u32 gMonShinyPalette_Nidorino[] = INCBIN_U32("graphics/pokemon/nidorino/shiny.gbapal.lz"); const u8 gMonIcon_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nidorino[] = INCBIN_U8("graphics/pokemon/nidorino/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/anim_front.4bpp.lz"); const u32 gMonPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/normal.gbapal.lz"); const u32 gMonBackPic_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/back.4bpp.lz"); const u32 gMonShinyPalette_Nidoking[] = INCBIN_U32("graphics/pokemon/nidoking/shiny.gbapal.lz"); const u8 gMonIcon_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nidoking[] = INCBIN_U8("graphics/pokemon/nidoking/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NIDORAN #if P_FAMILY_CLEFAIRY @@ -519,7 +591,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/back.4bpp.lz"); const u32 gMonShinyPalette_Cleffa[] = INCBIN_U32("graphics/pokemon/cleffa/shiny.gbapal.lz"); const u8 gMonIcon_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cleffa[] = INCBIN_U8("graphics/pokemon/cleffa/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/anim_front.4bpp.lz"); @@ -527,14 +601,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/back.4bpp.lz"); const u32 gMonShinyPalette_Clefairy[] = INCBIN_U32("graphics/pokemon/clefairy/shiny.gbapal.lz"); const u8 gMonIcon_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Clefairy[] = INCBIN_U8("graphics/pokemon/clefairy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/anim_front.4bpp.lz"); const u32 gMonPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/normal.gbapal.lz"); const u32 gMonBackPic_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/back.4bpp.lz"); const u32 gMonShinyPalette_Clefable[] = INCBIN_U32("graphics/pokemon/clefable/shiny.gbapal.lz"); const u8 gMonIcon_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Clefable[] = INCBIN_U8("graphics/pokemon/clefable/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CLEFAIRY #if P_FAMILY_VULPIX @@ -543,14 +621,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/back.4bpp.lz"); const u32 gMonShinyPalette_Vulpix[] = INCBIN_U32("graphics/pokemon/vulpix/shiny.gbapal.lz"); const u8 gMonIcon_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vulpix[] = INCBIN_U8("graphics/pokemon/vulpix/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/anim_front.4bpp.lz"); const u32 gMonPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/normal.gbapal.lz"); const u32 gMonBackPic_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/back.4bpp.lz"); const u32 gMonShinyPalette_Ninetales[] = INCBIN_U32("graphics/pokemon/ninetales/shiny.gbapal.lz"); const u8 gMonIcon_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ninetales[] = INCBIN_U8("graphics/pokemon/ninetales/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_VulpixAlolan[] = INCBIN_U32("graphics/pokemon/vulpix/alolan/front.4bpp.lz"); @@ -574,7 +656,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/back.4bpp.lz"); const u32 gMonShinyPalette_Igglybuff[] = INCBIN_U32("graphics/pokemon/igglybuff/shiny.gbapal.lz"); const u8 gMonIcon_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Igglybuff[] = INCBIN_U8("graphics/pokemon/igglybuff/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/anim_front.4bpp.lz"); @@ -582,14 +666,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/back.4bpp.lz"); const u32 gMonShinyPalette_Jigglypuff[] = INCBIN_U32("graphics/pokemon/jigglypuff/shiny.gbapal.lz"); const u8 gMonIcon_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Jigglypuff[] = INCBIN_U8("graphics/pokemon/jigglypuff/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/anim_front.4bpp.lz"); const u32 gMonPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/normal.gbapal.lz"); const u32 gMonBackPic_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/back.4bpp.lz"); const u32 gMonShinyPalette_Wigglytuff[] = INCBIN_U32("graphics/pokemon/wigglytuff/shiny.gbapal.lz"); const u8 gMonIcon_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wigglytuff[] = INCBIN_U8("graphics/pokemon/wigglytuff/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_JIGGLYPUFF #if P_FAMILY_ZUBAT @@ -598,7 +686,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/back.4bpp.lz"); const u32 gMonShinyPalette_Zubat[] = INCBIN_U32("graphics/pokemon/zubat/shiny.gbapal.lz"); const u8 gMonIcon_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zubat[] = INCBIN_U8("graphics/pokemon/zubat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ZubatF[] = INCBIN_U32("graphics/pokemon/zubat/backf.4bpp.lz"); @@ -608,7 +698,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/back.4bpp.lz"); const u32 gMonShinyPalette_Golbat[] = INCBIN_U32("graphics/pokemon/golbat/shiny.gbapal.lz"); const u8 gMonIcon_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Golbat[] = INCBIN_U8("graphics/pokemon/golbat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GolbatF[] = INCBIN_U32("graphics/pokemon/golbat/backf.4bpp.lz"); @@ -619,7 +711,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/back.4bpp.lz"); const u32 gMonShinyPalette_Crobat[] = INCBIN_U32("graphics/pokemon/crobat/shiny.gbapal.lz"); const u8 gMonIcon_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Crobat[] = INCBIN_U8("graphics/pokemon/crobat/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ZUBAT @@ -629,14 +723,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/back.4bpp.lz"); const u32 gMonShinyPalette_Oddish[] = INCBIN_U32("graphics/pokemon/oddish/shiny.gbapal.lz"); const u8 gMonIcon_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Oddish[] = INCBIN_U8("graphics/pokemon/oddish/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/anim_front.4bpp.lz"); const u32 gMonPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/normal.gbapal.lz"); const u32 gMonBackPic_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/back.4bpp.lz"); const u32 gMonShinyPalette_Gloom[] = INCBIN_U32("graphics/pokemon/gloom/shiny.gbapal.lz"); const u8 gMonIcon_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gloom[] = INCBIN_U8("graphics/pokemon/gloom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GloomF[] = INCBIN_U32("graphics/pokemon/gloom/backf.4bpp.lz"); @@ -646,7 +744,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/back.4bpp.lz"); const u32 gMonShinyPalette_Vileplume[] = INCBIN_U32("graphics/pokemon/vileplume/shiny.gbapal.lz"); const u8 gMonIcon_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vileplume[] = INCBIN_U8("graphics/pokemon/vileplume/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/anim_frontf.4bpp.lz"); const u32 gMonBackPic_VileplumeF[] = INCBIN_U32("graphics/pokemon/vileplume/backf.4bpp.lz"); @@ -657,7 +757,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/back.4bpp.lz"); const u32 gMonShinyPalette_Bellossom[] = INCBIN_U32("graphics/pokemon/bellossom/shiny.gbapal.lz"); const u8 gMonIcon_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bellossom[] = INCBIN_U8("graphics/pokemon/bellossom/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_ODDISH @@ -667,14 +769,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Paras[] = INCBIN_U32("graphics/pokemon/paras/back.4bpp.lz"); const u32 gMonShinyPalette_Paras[] = INCBIN_U32("graphics/pokemon/paras/shiny.gbapal.lz"); const u8 gMonIcon_Paras[] = INCBIN_U8("graphics/pokemon/paras/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Paras[] = INCBIN_U8("graphics/pokemon/paras/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/anim_front.4bpp.lz"); const u32 gMonPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/normal.gbapal.lz"); const u32 gMonBackPic_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/back.4bpp.lz"); const u32 gMonShinyPalette_Parasect[] = INCBIN_U32("graphics/pokemon/parasect/shiny.gbapal.lz"); const u8 gMonIcon_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Parasect[] = INCBIN_U8("graphics/pokemon/parasect/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PARAS #if P_FAMILY_VENONAT @@ -683,14 +789,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/back.4bpp.lz"); const u32 gMonShinyPalette_Venonat[] = INCBIN_U32("graphics/pokemon/venonat/shiny.gbapal.lz"); const u8 gMonIcon_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Venonat[] = INCBIN_U8("graphics/pokemon/venonat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/anim_front.4bpp.lz"); const u32 gMonPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/normal.gbapal.lz"); const u32 gMonBackPic_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/back.4bpp.lz"); const u32 gMonShinyPalette_Venomoth[] = INCBIN_U32("graphics/pokemon/venomoth/shiny.gbapal.lz"); const u8 gMonIcon_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Venomoth[] = INCBIN_U8("graphics/pokemon/venomoth/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VENONAT #if P_FAMILY_DIGLETT @@ -699,14 +809,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/back.4bpp.lz"); const u32 gMonShinyPalette_Diglett[] = INCBIN_U32("graphics/pokemon/diglett/shiny.gbapal.lz"); const u8 gMonIcon_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Diglett[] = INCBIN_U8("graphics/pokemon/diglett/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/anim_front.4bpp.lz"); const u32 gMonPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/normal.gbapal.lz"); const u32 gMonBackPic_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/back.4bpp.lz"); const u32 gMonShinyPalette_Dugtrio[] = INCBIN_U32("graphics/pokemon/dugtrio/shiny.gbapal.lz"); const u8 gMonIcon_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dugtrio[] = INCBIN_U8("graphics/pokemon/dugtrio/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_DiglettAlolan[] = INCBIN_U32("graphics/pokemon/diglett/alolan/front.4bpp.lz"); @@ -729,14 +843,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/back.4bpp.lz"); const u32 gMonShinyPalette_Meowth[] = INCBIN_U32("graphics/pokemon/meowth/shiny.gbapal.lz"); const u8 gMonIcon_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Meowth[] = INCBIN_U8("graphics/pokemon/meowth/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/anim_front.4bpp.lz"); const u32 gMonPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/normal.gbapal.lz"); const u32 gMonBackPic_Persian[] = INCBIN_U32("graphics/pokemon/persian/back.4bpp.lz"); const u32 gMonShinyPalette_Persian[] = INCBIN_U32("graphics/pokemon/persian/shiny.gbapal.lz"); const u8 gMonIcon_Persian[] = INCBIN_U8("graphics/pokemon/persian/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Persian[] = INCBIN_U8("graphics/pokemon/persian/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_MeowthAlolan[] = INCBIN_U32("graphics/pokemon/meowth/alolan/front.4bpp.lz"); @@ -764,7 +882,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/back.4bpp.lz"); const u32 gMonShinyPalette_Perrserker[] = INCBIN_U32("graphics/pokemon/perrserker/shiny.gbapal.lz"); const u8 gMonIcon_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Perrserker[] = INCBIN_U8("graphics/pokemon/perrserker/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GALARIAN_FORMS #if P_GIGANTAMAX_FORMS @@ -782,14 +902,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/back.4bpp.lz"); const u32 gMonShinyPalette_Psyduck[] = INCBIN_U32("graphics/pokemon/psyduck/shiny.gbapal.lz"); const u8 gMonIcon_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Psyduck[] = INCBIN_U8("graphics/pokemon/psyduck/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/anim_front.4bpp.lz"); const u32 gMonPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/normal.gbapal.lz"); const u32 gMonBackPic_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/back.4bpp.lz"); const u32 gMonShinyPalette_Golduck[] = INCBIN_U32("graphics/pokemon/golduck/shiny.gbapal.lz"); const u8 gMonIcon_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Golduck[] = INCBIN_U8("graphics/pokemon/golduck/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PSYDUCK #if P_FAMILY_MANKEY @@ -798,14 +922,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/back.4bpp.lz"); const u32 gMonShinyPalette_Mankey[] = INCBIN_U32("graphics/pokemon/mankey/shiny.gbapal.lz"); const u8 gMonIcon_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mankey[] = INCBIN_U8("graphics/pokemon/mankey/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/anim_front.4bpp.lz"); const u32 gMonPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/normal.gbapal.lz"); const u32 gMonBackPic_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/back.4bpp.lz"); const u32 gMonShinyPalette_Primeape[] = INCBIN_U32("graphics/pokemon/primeape/shiny.gbapal.lz"); const u8 gMonIcon_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Primeape[] = INCBIN_U8("graphics/pokemon/primeape/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/front.4bpp.lz"); @@ -813,7 +941,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/back.4bpp.lz"); const u32 gMonShinyPalette_Annihilape[] = INCBIN_U32("graphics/pokemon/annihilape/shiny.gbapal.lz"); const u8 gMonIcon_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Annihilape[] = INCBIN_U8("graphics/pokemon/annihilape/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_MANKEY @@ -823,14 +953,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/back.4bpp.lz"); const u32 gMonShinyPalette_Growlithe[] = INCBIN_U32("graphics/pokemon/growlithe/shiny.gbapal.lz"); const u8 gMonIcon_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Growlithe[] = INCBIN_U8("graphics/pokemon/growlithe/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/anim_front.4bpp.lz"); const u32 gMonPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/normal.gbapal.lz"); const u32 gMonBackPic_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/back.4bpp.lz"); const u32 gMonShinyPalette_Arcanine[] = INCBIN_U32("graphics/pokemon/arcanine/shiny.gbapal.lz"); const u8 gMonIcon_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Arcanine[] = INCBIN_U8("graphics/pokemon/arcanine/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_GrowlitheHisuian[] = INCBIN_U32("graphics/pokemon/growlithe/hisuian/front.4bpp.lz"); @@ -853,21 +987,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/back.4bpp.lz"); const u32 gMonShinyPalette_Poliwag[] = INCBIN_U32("graphics/pokemon/poliwag/shiny.gbapal.lz"); const u8 gMonIcon_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Poliwag[] = INCBIN_U8("graphics/pokemon/poliwag/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/anim_front.4bpp.lz"); const u32 gMonPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/normal.gbapal.lz"); const u32 gMonBackPic_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/back.4bpp.lz"); const u32 gMonShinyPalette_Poliwhirl[] = INCBIN_U32("graphics/pokemon/poliwhirl/shiny.gbapal.lz"); const u8 gMonIcon_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Poliwhirl[] = INCBIN_U8("graphics/pokemon/poliwhirl/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/anim_front.4bpp.lz"); const u32 gMonPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/normal.gbapal.lz"); const u32 gMonBackPic_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/back.4bpp.lz"); const u32 gMonShinyPalette_Poliwrath[] = INCBIN_U32("graphics/pokemon/poliwrath/shiny.gbapal.lz"); const u8 gMonIcon_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Poliwrath[] = INCBIN_U8("graphics/pokemon/poliwrath/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/anim_front.4bpp.lz"); @@ -875,7 +1015,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/back.4bpp.lz"); const u32 gMonShinyPalette_Politoed[] = INCBIN_U32("graphics/pokemon/politoed/shiny.gbapal.lz"); const u8 gMonIcon_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Politoed[] = INCBIN_U8("graphics/pokemon/politoed/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/anim_frontf.4bpp.lz"); const u32 gMonBackPic_PolitoedF[] = INCBIN_U32("graphics/pokemon/politoed/backf.4bpp.lz"); @@ -888,14 +1030,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Abra[] = INCBIN_U32("graphics/pokemon/abra/back.4bpp.lz"); const u32 gMonShinyPalette_Abra[] = INCBIN_U32("graphics/pokemon/abra/shiny.gbapal.lz"); const u8 gMonIcon_Abra[] = INCBIN_U8("graphics/pokemon/abra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Abra[] = INCBIN_U8("graphics/pokemon/abra/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/anim_front.4bpp.lz"); const u32 gMonPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/normal.gbapal.lz"); const u32 gMonBackPic_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/back.4bpp.lz"); const u32 gMonShinyPalette_Kadabra[] = INCBIN_U32("graphics/pokemon/kadabra/shiny.gbapal.lz"); const u8 gMonIcon_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kadabra[] = INCBIN_U8("graphics/pokemon/kadabra/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/anim_frontf.4bpp.lz"); const u32 gMonBackPic_KadabraF[] = INCBIN_U32("graphics/pokemon/kadabra/backf.4bpp.lz"); @@ -905,7 +1051,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/back.4bpp.lz"); const u32 gMonShinyPalette_Alakazam[] = INCBIN_U32("graphics/pokemon/alakazam/shiny.gbapal.lz"); const u8 gMonIcon_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Alakazam[] = INCBIN_U8("graphics/pokemon/alakazam/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/anim_frontf.4bpp.lz"); const u32 gMonBackPic_AlakazamF[] = INCBIN_U32("graphics/pokemon/alakazam/backf.4bpp.lz"); @@ -925,21 +1073,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Machop[] = INCBIN_U32("graphics/pokemon/machop/back.4bpp.lz"); const u32 gMonShinyPalette_Machop[] = INCBIN_U32("graphics/pokemon/machop/shiny.gbapal.lz"); const u8 gMonIcon_Machop[] = INCBIN_U8("graphics/pokemon/machop/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Machop[] = INCBIN_U8("graphics/pokemon/machop/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/anim_front.4bpp.lz"); const u32 gMonPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/normal.gbapal.lz"); const u32 gMonBackPic_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/back.4bpp.lz"); const u32 gMonShinyPalette_Machoke[] = INCBIN_U32("graphics/pokemon/machoke/shiny.gbapal.lz"); const u8 gMonIcon_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Machoke[] = INCBIN_U8("graphics/pokemon/machoke/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/anim_front.4bpp.lz"); const u32 gMonPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/normal.gbapal.lz"); const u32 gMonBackPic_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/back.4bpp.lz"); const u32 gMonShinyPalette_Machamp[] = INCBIN_U32("graphics/pokemon/machamp/shiny.gbapal.lz"); const u8 gMonIcon_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Machamp[] = INCBIN_U8("graphics/pokemon/machamp/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MachampGigantamax[] = INCBIN_U32("graphics/pokemon/machamp/gigantamax/front.4bpp.lz"); @@ -956,21 +1110,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/back.4bpp.lz"); const u32 gMonShinyPalette_Bellsprout[] = INCBIN_U32("graphics/pokemon/bellsprout/shiny.gbapal.lz"); const u8 gMonIcon_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bellsprout[] = INCBIN_U8("graphics/pokemon/bellsprout/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/anim_front.4bpp.lz"); const u32 gMonPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/normal.gbapal.lz"); const u32 gMonBackPic_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/back.4bpp.lz"); const u32 gMonShinyPalette_Weepinbell[] = INCBIN_U32("graphics/pokemon/weepinbell/shiny.gbapal.lz"); const u8 gMonIcon_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Weepinbell[] = INCBIN_U8("graphics/pokemon/weepinbell/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/anim_front.4bpp.lz"); const u32 gMonPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/normal.gbapal.lz"); const u32 gMonBackPic_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/back.4bpp.lz"); const u32 gMonShinyPalette_Victreebel[] = INCBIN_U32("graphics/pokemon/victreebel/shiny.gbapal.lz"); const u8 gMonIcon_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Victreebel[] = INCBIN_U8("graphics/pokemon/victreebel/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BELLSPROUT #if P_FAMILY_TENTACOOL @@ -979,14 +1139,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/back.4bpp.lz"); const u32 gMonShinyPalette_Tentacool[] = INCBIN_U32("graphics/pokemon/tentacool/shiny.gbapal.lz"); const u8 gMonIcon_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tentacool[] = INCBIN_U8("graphics/pokemon/tentacool/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/anim_front.4bpp.lz"); const u32 gMonPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/normal.gbapal.lz"); const u32 gMonBackPic_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/back.4bpp.lz"); const u32 gMonShinyPalette_Tentacruel[] = INCBIN_U32("graphics/pokemon/tentacruel/shiny.gbapal.lz"); const u8 gMonIcon_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tentacruel[] = INCBIN_U8("graphics/pokemon/tentacruel/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TENTACOOL #if P_FAMILY_GEODUDE @@ -995,21 +1159,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/back.4bpp.lz"); const u32 gMonShinyPalette_Geodude[] = INCBIN_U32("graphics/pokemon/geodude/shiny.gbapal.lz"); const u8 gMonIcon_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Geodude[] = INCBIN_U8("graphics/pokemon/geodude/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/anim_front.4bpp.lz"); const u32 gMonPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/normal.gbapal.lz"); const u32 gMonBackPic_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/back.4bpp.lz"); const u32 gMonShinyPalette_Graveler[] = INCBIN_U32("graphics/pokemon/graveler/shiny.gbapal.lz"); const u8 gMonIcon_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Graveler[] = INCBIN_U8("graphics/pokemon/graveler/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/anim_front.4bpp.lz"); const u32 gMonPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/normal.gbapal.lz"); const u32 gMonBackPic_Golem[] = INCBIN_U32("graphics/pokemon/golem/back.4bpp.lz"); const u32 gMonShinyPalette_Golem[] = INCBIN_U32("graphics/pokemon/golem/shiny.gbapal.lz"); const u8 gMonIcon_Golem[] = INCBIN_U8("graphics/pokemon/golem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Golem[] = INCBIN_U8("graphics/pokemon/golem/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_GeodudeAlolan[] = INCBIN_U32("graphics/pokemon/geodude/alolan/front.4bpp.lz"); @@ -1038,14 +1208,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/back.4bpp.lz"); const u32 gMonShinyPalette_Ponyta[] = INCBIN_U32("graphics/pokemon/ponyta/shiny.gbapal.lz"); const u8 gMonIcon_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ponyta[] = INCBIN_U8("graphics/pokemon/ponyta/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/anim_front.4bpp.lz"); const u32 gMonPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/normal.gbapal.lz"); const u32 gMonBackPic_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/back.4bpp.lz"); const u32 gMonShinyPalette_Rapidash[] = INCBIN_U32("graphics/pokemon/rapidash/shiny.gbapal.lz"); const u8 gMonIcon_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rapidash[] = INCBIN_U8("graphics/pokemon/rapidash/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_PonytaGalarian[] = INCBIN_U32("graphics/pokemon/ponyta/galarian/front.4bpp.lz"); @@ -1068,14 +1242,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/back.4bpp.lz"); const u32 gMonShinyPalette_Slowpoke[] = INCBIN_U32("graphics/pokemon/slowpoke/shiny.gbapal.lz"); const u8 gMonIcon_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slowpoke[] = INCBIN_U8("graphics/pokemon/slowpoke/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/anim_front.4bpp.lz"); const u32 gMonPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/normal.gbapal.lz"); const u32 gMonBackPic_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/back.4bpp.lz"); const u32 gMonShinyPalette_Slowbro[] = INCBIN_U32("graphics/pokemon/slowbro/shiny.gbapal.lz"); const u8 gMonIcon_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slowbro[] = INCBIN_U8("graphics/pokemon/slowbro/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/anim_front.4bpp.lz"); @@ -1083,7 +1261,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/back.4bpp.lz"); const u32 gMonShinyPalette_Slowking[] = INCBIN_U32("graphics/pokemon/slowking/shiny.gbapal.lz"); const u8 gMonIcon_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slowking[] = INCBIN_U8("graphics/pokemon/slowking/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #if P_MEGA_EVOLUTIONS @@ -1123,14 +1303,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/back.4bpp.lz"); const u32 gMonShinyPalette_Magnemite[] = INCBIN_U32("graphics/pokemon/magnemite/shiny.gbapal.lz"); const u8 gMonIcon_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magnemite[] = INCBIN_U8("graphics/pokemon/magnemite/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/anim_front.4bpp.lz"); const u32 gMonPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/normal.gbapal.lz"); const u32 gMonBackPic_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/back.4bpp.lz"); const u32 gMonShinyPalette_Magneton[] = INCBIN_U32("graphics/pokemon/magneton/shiny.gbapal.lz"); const u8 gMonIcon_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magneton[] = INCBIN_U8("graphics/pokemon/magneton/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/anim_front.4bpp.lz"); @@ -1138,7 +1322,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/back.4bpp.lz"); const u32 gMonShinyPalette_Magnezone[] = INCBIN_U32("graphics/pokemon/magnezone/shiny.gbapal.lz"); const u8 gMonIcon_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magnezone[] = INCBIN_U8("graphics/pokemon/magnezone/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGNEMITE @@ -1148,7 +1334,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/back.4bpp.lz"); const u32 gMonShinyPalette_Farfetchd[] = INCBIN_U32("graphics/pokemon/farfetchd/shiny.gbapal.lz"); const u8 gMonIcon_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Farfetchd[] = INCBIN_U8("graphics/pokemon/farfetchd/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_FarfetchdGalarian[] = INCBIN_U32("graphics/pokemon/farfetchd/galarian/front.4bpp.lz"); @@ -1162,7 +1350,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/back.4bpp.lz"); const u32 gMonShinyPalette_Sirfetchd[] = INCBIN_U32("graphics/pokemon/sirfetchd/shiny.gbapal.lz"); const u8 gMonIcon_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sirfetchd[] = INCBIN_U8("graphics/pokemon/sirfetchd/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_FARFETCHD @@ -1172,7 +1362,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/back.4bpp.lz"); const u32 gMonShinyPalette_Doduo[] = INCBIN_U32("graphics/pokemon/doduo/shiny.gbapal.lz"); const u8 gMonIcon_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Doduo[] = INCBIN_U8("graphics/pokemon/doduo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DoduoF[] = INCBIN_U32("graphics/pokemon/doduo/backf.4bpp.lz"); @@ -1182,7 +1374,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/back.4bpp.lz"); const u32 gMonShinyPalette_Dodrio[] = INCBIN_U32("graphics/pokemon/dodrio/shiny.gbapal.lz"); const u8 gMonIcon_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dodrio[] = INCBIN_U8("graphics/pokemon/dodrio/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DodrioF[] = INCBIN_U32("graphics/pokemon/dodrio/backf.4bpp.lz"); @@ -1194,14 +1388,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Seel[] = INCBIN_U32("graphics/pokemon/seel/back.4bpp.lz"); const u32 gMonShinyPalette_Seel[] = INCBIN_U32("graphics/pokemon/seel/shiny.gbapal.lz"); const u8 gMonIcon_Seel[] = INCBIN_U8("graphics/pokemon/seel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Seel[] = INCBIN_U8("graphics/pokemon/seel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/anim_front.4bpp.lz"); const u32 gMonPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/normal.gbapal.lz"); const u32 gMonBackPic_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/back.4bpp.lz"); const u32 gMonShinyPalette_Dewgong[] = INCBIN_U32("graphics/pokemon/dewgong/shiny.gbapal.lz"); const u8 gMonIcon_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dewgong[] = INCBIN_U8("graphics/pokemon/dewgong/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SEEL #if P_FAMILY_GRIMER @@ -1210,14 +1408,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/back.4bpp.lz"); const u32 gMonShinyPalette_Grimer[] = INCBIN_U32("graphics/pokemon/grimer/shiny.gbapal.lz"); const u8 gMonIcon_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grimer[] = INCBIN_U8("graphics/pokemon/grimer/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/anim_front.4bpp.lz"); const u32 gMonPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/normal.gbapal.lz"); const u32 gMonBackPic_Muk[] = INCBIN_U32("graphics/pokemon/muk/back.4bpp.lz"); const u32 gMonShinyPalette_Muk[] = INCBIN_U32("graphics/pokemon/muk/shiny.gbapal.lz"); const u8 gMonIcon_Muk[] = INCBIN_U8("graphics/pokemon/muk/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Muk[] = INCBIN_U8("graphics/pokemon/muk/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_GrimerAlolan[] = INCBIN_U32("graphics/pokemon/grimer/alolan/front.4bpp.lz"); @@ -1240,14 +1442,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/back.4bpp.lz"); const u32 gMonShinyPalette_Shellder[] = INCBIN_U32("graphics/pokemon/shellder/shiny.gbapal.lz"); const u8 gMonIcon_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shellder[] = INCBIN_U8("graphics/pokemon/shellder/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/anim_front.4bpp.lz"); const u32 gMonPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/normal.gbapal.lz"); const u32 gMonBackPic_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/back.4bpp.lz"); const u32 gMonShinyPalette_Cloyster[] = INCBIN_U32("graphics/pokemon/cloyster/shiny.gbapal.lz"); const u8 gMonIcon_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cloyster[] = INCBIN_U8("graphics/pokemon/cloyster/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SHELLDER #if P_FAMILY_GASTLY @@ -1256,21 +1462,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/back.4bpp.lz"); const u32 gMonShinyPalette_Gastly[] = INCBIN_U32("graphics/pokemon/gastly/shiny.gbapal.lz"); const u8 gMonIcon_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gastly[] = INCBIN_U8("graphics/pokemon/gastly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/anim_front.4bpp.lz"); const u32 gMonPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/normal.gbapal.lz"); const u32 gMonBackPic_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/back.4bpp.lz"); const u32 gMonShinyPalette_Haunter[] = INCBIN_U32("graphics/pokemon/haunter/shiny.gbapal.lz"); const u8 gMonIcon_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Haunter[] = INCBIN_U8("graphics/pokemon/haunter/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/anim_front.4bpp.lz"); const u32 gMonPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/normal.gbapal.lz"); const u32 gMonBackPic_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/back.4bpp.lz"); const u32 gMonShinyPalette_Gengar[] = INCBIN_U32("graphics/pokemon/gengar/shiny.gbapal.lz"); const u8 gMonIcon_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gengar[] = INCBIN_U8("graphics/pokemon/gengar/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GengarMega[] = INCBIN_U32("graphics/pokemon/gengar/mega/front.4bpp.lz"); @@ -1295,7 +1507,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Onix[] = INCBIN_U32("graphics/pokemon/onix/back.4bpp.lz"); const u32 gMonShinyPalette_Onix[] = INCBIN_U32("graphics/pokemon/onix/shiny.gbapal.lz"); const u8 gMonIcon_Onix[] = INCBIN_U8("graphics/pokemon/onix/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Onix[] = INCBIN_U8("graphics/pokemon/onix/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/anim_front.4bpp.lz"); @@ -1303,7 +1517,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/back.4bpp.lz"); const u32 gMonShinyPalette_Steelix[] = INCBIN_U32("graphics/pokemon/steelix/shiny.gbapal.lz"); const u8 gMonIcon_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Steelix[] = INCBIN_U8("graphics/pokemon/steelix/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SteelixF[] = INCBIN_U32("graphics/pokemon/steelix/backf.4bpp.lz"); @@ -1324,14 +1540,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/back.4bpp.lz"); const u32 gMonShinyPalette_Drowzee[] = INCBIN_U32("graphics/pokemon/drowzee/shiny.gbapal.lz"); const u8 gMonIcon_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drowzee[] = INCBIN_U8("graphics/pokemon/drowzee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/anim_front.4bpp.lz"); const u32 gMonPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/normal.gbapal.lz"); const u32 gMonBackPic_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/back.4bpp.lz"); const u32 gMonShinyPalette_Hypno[] = INCBIN_U32("graphics/pokemon/hypno/shiny.gbapal.lz"); const u8 gMonIcon_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hypno[] = INCBIN_U8("graphics/pokemon/hypno/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/anim_frontf.4bpp.lz"); const u32 gMonBackPic_HypnoF[] = INCBIN_U32("graphics/pokemon/hypno/backf.4bpp.lz"); @@ -1343,14 +1563,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/back.4bpp.lz"); const u32 gMonShinyPalette_Krabby[] = INCBIN_U32("graphics/pokemon/krabby/shiny.gbapal.lz"); const u8 gMonIcon_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Krabby[] = INCBIN_U8("graphics/pokemon/krabby/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/anim_front.4bpp.lz"); const u32 gMonPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/normal.gbapal.lz"); const u32 gMonBackPic_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/back.4bpp.lz"); const u32 gMonShinyPalette_Kingler[] = INCBIN_U32("graphics/pokemon/kingler/shiny.gbapal.lz"); const u8 gMonIcon_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kingler[] = INCBIN_U8("graphics/pokemon/kingler/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_KinglerGigantamax[] = INCBIN_U32("graphics/pokemon/kingler/gigantamax/front.4bpp.lz"); @@ -1367,14 +1591,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/back.4bpp.lz"); const u32 gMonShinyPalette_Voltorb[] = INCBIN_U32("graphics/pokemon/voltorb/shiny.gbapal.lz"); const u8 gMonIcon_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Voltorb[] = INCBIN_U8("graphics/pokemon/voltorb/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/anim_front.4bpp.lz"); const u32 gMonPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/normal.gbapal.lz"); const u32 gMonBackPic_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/back.4bpp.lz"); const u32 gMonShinyPalette_Electrode[] = INCBIN_U32("graphics/pokemon/electrode/shiny.gbapal.lz"); const u8 gMonIcon_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Electrode[] = INCBIN_U8("graphics/pokemon/electrode/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_VoltorbHisuian[] = INCBIN_U32("graphics/pokemon/voltorb/hisuian/front.4bpp.lz"); @@ -1397,14 +1625,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/back.4bpp.lz"); const u32 gMonShinyPalette_Exeggcute[] = INCBIN_U32("graphics/pokemon/exeggcute/shiny.gbapal.lz"); const u8 gMonIcon_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Exeggcute[] = INCBIN_U8("graphics/pokemon/exeggcute/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/anim_front.4bpp.lz"); const u32 gMonPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/normal.gbapal.lz"); const u32 gMonBackPic_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/back.4bpp.lz"); const u32 gMonShinyPalette_Exeggutor[] = INCBIN_U32("graphics/pokemon/exeggutor/shiny.gbapal.lz"); const u8 gMonIcon_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Exeggutor[] = INCBIN_U8("graphics/pokemon/exeggutor/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_ExeggutorAlolan[] = INCBIN_U32("graphics/pokemon/exeggutor/alolan/anim_front.4bpp.lz"); @@ -1421,14 +1653,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/back.4bpp.lz"); const u32 gMonShinyPalette_Cubone[] = INCBIN_U32("graphics/pokemon/cubone/shiny.gbapal.lz"); const u8 gMonIcon_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cubone[] = INCBIN_U8("graphics/pokemon/cubone/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/anim_front.4bpp.lz"); const u32 gMonPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/normal.gbapal.lz"); const u32 gMonBackPic_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/back.4bpp.lz"); const u32 gMonShinyPalette_Marowak[] = INCBIN_U32("graphics/pokemon/marowak/shiny.gbapal.lz"); const u8 gMonIcon_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Marowak[] = INCBIN_U8("graphics/pokemon/marowak/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_ALOLAN_FORMS const u32 gMonFrontPic_MarowakAlolan[] = INCBIN_U32("graphics/pokemon/marowak/alolan/front.4bpp.lz"); @@ -1446,7 +1682,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/back.4bpp.lz"); const u32 gMonShinyPalette_Tyrogue[] = INCBIN_U32("graphics/pokemon/tyrogue/shiny.gbapal.lz"); const u8 gMonIcon_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tyrogue[] = INCBIN_U8("graphics/pokemon/tyrogue/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/anim_front.4bpp.lz"); @@ -1454,14 +1692,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/back.4bpp.lz"); const u32 gMonShinyPalette_Hitmonlee[] = INCBIN_U32("graphics/pokemon/hitmonlee/shiny.gbapal.lz"); const u8 gMonIcon_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hitmonlee[] = INCBIN_U8("graphics/pokemon/hitmonlee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/anim_front.4bpp.lz"); const u32 gMonPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/normal.gbapal.lz"); const u32 gMonBackPic_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/back.4bpp.lz"); const u32 gMonShinyPalette_Hitmonchan[] = INCBIN_U32("graphics/pokemon/hitmonchan/shiny.gbapal.lz"); const u8 gMonIcon_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hitmonchan[] = INCBIN_U8("graphics/pokemon/hitmonchan/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/anim_front.4bpp.lz"); @@ -1469,7 +1711,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/back.4bpp.lz"); const u32 gMonShinyPalette_Hitmontop[] = INCBIN_U32("graphics/pokemon/hitmontop/shiny.gbapal.lz"); const u8 gMonIcon_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hitmontop[] = INCBIN_U8("graphics/pokemon/hitmontop/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HITMONS @@ -1479,7 +1723,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/back.4bpp.lz"); const u32 gMonShinyPalette_Lickitung[] = INCBIN_U32("graphics/pokemon/lickitung/shiny.gbapal.lz"); const u8 gMonIcon_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lickitung[] = INCBIN_U8("graphics/pokemon/lickitung/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/anim_front.4bpp.lz"); @@ -1487,7 +1733,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/back.4bpp.lz"); const u32 gMonShinyPalette_Lickilicky[] = INCBIN_U32("graphics/pokemon/lickilicky/shiny.gbapal.lz"); const u8 gMonIcon_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lickilicky[] = INCBIN_U8("graphics/pokemon/lickilicky/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_LICKITUNG @@ -1497,14 +1745,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/back.4bpp.lz"); const u32 gMonShinyPalette_Koffing[] = INCBIN_U32("graphics/pokemon/koffing/shiny.gbapal.lz"); const u8 gMonIcon_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Koffing[] = INCBIN_U8("graphics/pokemon/koffing/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/anim_front.4bpp.lz"); const u32 gMonPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/normal.gbapal.lz"); const u32 gMonBackPic_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/back.4bpp.lz"); const u32 gMonShinyPalette_Weezing[] = INCBIN_U32("graphics/pokemon/weezing/shiny.gbapal.lz"); const u8 gMonIcon_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Weezing[] = INCBIN_U8("graphics/pokemon/weezing/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_WeezingGalarian[] = INCBIN_U32("graphics/pokemon/weezing/galarian/front.4bpp.lz"); @@ -1521,7 +1773,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/back.4bpp.lz"); const u32 gMonShinyPalette_Rhyhorn[] = INCBIN_U32("graphics/pokemon/rhyhorn/shiny.gbapal.lz"); const u8 gMonIcon_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rhyhorn[] = INCBIN_U8("graphics/pokemon/rhyhorn/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RhyhornF[] = INCBIN_U32("graphics/pokemon/rhyhorn/backf.4bpp.lz"); @@ -1531,7 +1785,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/back.4bpp.lz"); const u32 gMonShinyPalette_Rhydon[] = INCBIN_U32("graphics/pokemon/rhydon/shiny.gbapal.lz"); const u8 gMonIcon_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rhydon[] = INCBIN_U8("graphics/pokemon/rhydon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RhydonF[] = INCBIN_U32("graphics/pokemon/rhydon/backf.4bpp.lz"); @@ -1542,7 +1798,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/back.4bpp.lz"); const u32 gMonShinyPalette_Rhyperior[] = INCBIN_U32("graphics/pokemon/rhyperior/shiny.gbapal.lz"); const u8 gMonIcon_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rhyperior[] = INCBIN_U8("graphics/pokemon/rhyperior/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RhyperiorF[] = INCBIN_U32("graphics/pokemon/rhyperior/backf.4bpp.lz"); @@ -1556,7 +1814,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/back.4bpp.lz"); const u32 gMonShinyPalette_Happiny[] = INCBIN_U32("graphics/pokemon/happiny/shiny.gbapal.lz"); const u8 gMonIcon_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Happiny[] = INCBIN_U8("graphics/pokemon/happiny/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/anim_front.4bpp.lz"); @@ -1564,7 +1824,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/back.4bpp.lz"); const u32 gMonShinyPalette_Chansey[] = INCBIN_U32("graphics/pokemon/chansey/shiny.gbapal.lz"); const u8 gMonIcon_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chansey[] = INCBIN_U8("graphics/pokemon/chansey/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/anim_front.4bpp.lz"); @@ -1572,7 +1834,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/back.4bpp.lz"); const u32 gMonShinyPalette_Blissey[] = INCBIN_U32("graphics/pokemon/blissey/shiny.gbapal.lz"); const u8 gMonIcon_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Blissey[] = INCBIN_U8("graphics/pokemon/blissey/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_CHANSEY @@ -1582,7 +1846,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/back.4bpp.lz"); const u32 gMonShinyPalette_Tangela[] = INCBIN_U32("graphics/pokemon/tangela/shiny.gbapal.lz"); const u8 gMonIcon_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tangela[] = INCBIN_U8("graphics/pokemon/tangela/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_front.4bpp.lz"); @@ -1590,7 +1856,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/back.4bpp.lz"); const u32 gMonShinyPalette_Tangrowth[] = INCBIN_U32("graphics/pokemon/tangrowth/shiny.gbapal.lz"); const u8 gMonIcon_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tangrowth[] = INCBIN_U8("graphics/pokemon/tangrowth/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_TangrowthF[] = INCBIN_U32("graphics/pokemon/tangrowth/anim_frontf.4bpp.lz"); #endif //P_GEN_4_CROSS_EVOS @@ -1602,7 +1870,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/back.4bpp.lz"); const u32 gMonShinyPalette_Kangaskhan[] = INCBIN_U32("graphics/pokemon/kangaskhan/shiny.gbapal.lz"); const u8 gMonIcon_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kangaskhan[] = INCBIN_U8("graphics/pokemon/kangaskhan/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_KangaskhanMega[] = INCBIN_U32("graphics/pokemon/kangaskhan/mega/front.4bpp.lz"); @@ -1619,14 +1889,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/back.4bpp.lz"); const u32 gMonShinyPalette_Horsea[] = INCBIN_U32("graphics/pokemon/horsea/shiny.gbapal.lz"); const u8 gMonIcon_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Horsea[] = INCBIN_U8("graphics/pokemon/horsea/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/anim_front.4bpp.lz"); const u32 gMonPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/normal.gbapal.lz"); const u32 gMonBackPic_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/back.4bpp.lz"); const u32 gMonShinyPalette_Seadra[] = INCBIN_U32("graphics/pokemon/seadra/shiny.gbapal.lz"); const u8 gMonIcon_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Seadra[] = INCBIN_U8("graphics/pokemon/seadra/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/anim_front.4bpp.lz"); @@ -1634,7 +1908,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/back.4bpp.lz"); const u32 gMonShinyPalette_Kingdra[] = INCBIN_U32("graphics/pokemon/kingdra/shiny.gbapal.lz"); const u8 gMonIcon_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kingdra[] = INCBIN_U8("graphics/pokemon/kingdra/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_HORSEA @@ -1644,7 +1920,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/back.4bpp.lz"); const u32 gMonShinyPalette_Goldeen[] = INCBIN_U32("graphics/pokemon/goldeen/shiny.gbapal.lz"); const u8 gMonIcon_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Goldeen[] = INCBIN_U8("graphics/pokemon/goldeen/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GoldeenF[] = INCBIN_U32("graphics/pokemon/goldeen/backf.4bpp.lz"); @@ -1654,7 +1932,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/back.4bpp.lz"); const u32 gMonShinyPalette_Seaking[] = INCBIN_U32("graphics/pokemon/seaking/shiny.gbapal.lz"); const u8 gMonIcon_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Seaking[] = INCBIN_U8("graphics/pokemon/seaking/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SeakingF[] = INCBIN_U32("graphics/pokemon/seaking/backf.4bpp.lz"); @@ -1666,14 +1946,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/back.4bpp.lz"); const u32 gMonShinyPalette_Staryu[] = INCBIN_U32("graphics/pokemon/staryu/shiny.gbapal.lz"); const u8 gMonIcon_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Staryu[] = INCBIN_U8("graphics/pokemon/staryu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/anim_front.4bpp.lz"); const u32 gMonPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/normal.gbapal.lz"); const u32 gMonBackPic_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/back.4bpp.lz"); const u32 gMonShinyPalette_Starmie[] = INCBIN_U32("graphics/pokemon/starmie/shiny.gbapal.lz"); const u8 gMonIcon_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Starmie[] = INCBIN_U8("graphics/pokemon/starmie/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_STARYU #if P_FAMILY_MR_MIME @@ -1683,7 +1967,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/back.4bpp.lz"); const u32 gMonShinyPalette_MimeJr[] = INCBIN_U32("graphics/pokemon/mime_jr/shiny.gbapal.lz"); const u8 gMonIcon_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_MimeJr[] = INCBIN_U8("graphics/pokemon/mime_jr/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/anim_front.4bpp.lz"); @@ -1691,7 +1977,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/back.4bpp.lz"); const u32 gMonShinyPalette_MrMime[] = INCBIN_U32("graphics/pokemon/mr_mime/shiny.gbapal.lz"); const u8 gMonIcon_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_MrMime[] = INCBIN_U8("graphics/pokemon/mr_mime/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MrMimeGalarian[] = INCBIN_U32("graphics/pokemon/mr_mime/galarian/front.4bpp.lz"); @@ -1705,7 +1993,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/back.4bpp.lz"); const u32 gMonShinyPalette_MrRime[] = INCBIN_U32("graphics/pokemon/mr_rime/shiny.gbapal.lz"); const u8 gMonIcon_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_MrRime[] = INCBIN_U8("graphics/pokemon/mr_rime/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_MR_MIME @@ -1715,7 +2005,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/back.4bpp.lz"); const u32 gMonShinyPalette_Scyther[] = INCBIN_U32("graphics/pokemon/scyther/shiny.gbapal.lz"); const u8 gMonIcon_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scyther[] = INCBIN_U8("graphics/pokemon/scyther/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ScytherF[] = INCBIN_U32("graphics/pokemon/scyther/anim_frontf.4bpp.lz"); @@ -1725,7 +2017,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/back.4bpp.lz"); const u32 gMonShinyPalette_Scizor[] = INCBIN_U32("graphics/pokemon/scizor/shiny.gbapal.lz"); const u8 gMonIcon_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scizor[] = INCBIN_U8("graphics/pokemon/scizor/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ScizorF[] = INCBIN_U32("graphics/pokemon/scizor/anim_frontf.4bpp.lz"); @@ -1744,7 +2038,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/back.4bpp.lz"); const u32 gMonShinyPalette_Kleavor[] = INCBIN_U32("graphics/pokemon/kleavor/shiny.gbapal.lz"); const u8 gMonIcon_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Kleavor[] = INCBIN_U8("graphics/pokemon/kleavor/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_SCYTHER @@ -1755,7 +2051,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/back.4bpp.lz"); const u32 gMonShinyPalette_Smoochum[] = INCBIN_U32("graphics/pokemon/smoochum/shiny.gbapal.lz"); const u8 gMonIcon_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Smoochum[] = INCBIN_U8("graphics/pokemon/smoochum/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/anim_front.4bpp.lz"); @@ -1763,7 +2061,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/back.4bpp.lz"); const u32 gMonShinyPalette_Jynx[] = INCBIN_U32("graphics/pokemon/jynx/shiny.gbapal.lz"); const u8 gMonIcon_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Jynx[] = INCBIN_U8("graphics/pokemon/jynx/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_JYNX #if P_FAMILY_ELECTABUZZ @@ -1773,7 +2073,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/back.4bpp.lz"); const u32 gMonShinyPalette_Elekid[] = INCBIN_U32("graphics/pokemon/elekid/shiny.gbapal.lz"); const u8 gMonIcon_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Elekid[] = INCBIN_U8("graphics/pokemon/elekid/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/anim_front.4bpp.lz"); @@ -1781,7 +2083,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/back.4bpp.lz"); const u32 gMonShinyPalette_Electabuzz[] = INCBIN_U32("graphics/pokemon/electabuzz/shiny.gbapal.lz"); const u8 gMonIcon_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Electabuzz[] = INCBIN_U8("graphics/pokemon/electabuzz/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/anim_front.4bpp.lz"); @@ -1789,7 +2093,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/back.4bpp.lz"); const u32 gMonShinyPalette_Electivire[] = INCBIN_U32("graphics/pokemon/electivire/shiny.gbapal.lz"); const u8 gMonIcon_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Electivire[] = INCBIN_U8("graphics/pokemon/electivire/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_ELECTABUZZ @@ -1800,7 +2106,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magby[] = INCBIN_U32("graphics/pokemon/magby/back.4bpp.lz"); const u32 gMonShinyPalette_Magby[] = INCBIN_U32("graphics/pokemon/magby/shiny.gbapal.lz"); const u8 gMonIcon_Magby[] = INCBIN_U8("graphics/pokemon/magby/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magby[] = INCBIN_U8("graphics/pokemon/magby/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/anim_front.4bpp.lz"); @@ -1808,7 +2116,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/back.4bpp.lz"); const u32 gMonShinyPalette_Magmar[] = INCBIN_U32("graphics/pokemon/magmar/shiny.gbapal.lz"); const u8 gMonIcon_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magmar[] = INCBIN_U8("graphics/pokemon/magmar/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/anim_front.4bpp.lz"); @@ -1816,7 +2126,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/back.4bpp.lz"); const u32 gMonShinyPalette_Magmortar[] = INCBIN_U32("graphics/pokemon/magmortar/shiny.gbapal.lz"); const u8 gMonIcon_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magmortar[] = INCBIN_U8("graphics/pokemon/magmortar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MAGMAR @@ -1826,7 +2138,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/back.4bpp.lz"); const u32 gMonShinyPalette_Pinsir[] = INCBIN_U32("graphics/pokemon/pinsir/shiny.gbapal.lz"); const u8 gMonIcon_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pinsir[] = INCBIN_U8("graphics/pokemon/pinsir/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_PinsirMega[] = INCBIN_U32("graphics/pokemon/pinsir/mega/front.4bpp.lz"); @@ -1843,7 +2157,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/back.4bpp.lz"); const u32 gMonShinyPalette_Tauros[] = INCBIN_U32("graphics/pokemon/tauros/shiny.gbapal.lz"); const u8 gMonIcon_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tauros[] = INCBIN_U8("graphics/pokemon/tauros/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_PALDEAN_FORMS const u32 gMonFrontPic_TaurosPaldeanCombatBreed[] = INCBIN_U32("graphics/pokemon/tauros/paldean_combat_breed/front.4bpp.lz"); @@ -1872,7 +2188,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/back.4bpp.lz"); const u32 gMonShinyPalette_Magikarp[] = INCBIN_U32("graphics/pokemon/magikarp/shiny.gbapal.lz"); const u8 gMonIcon_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magikarp[] = INCBIN_U8("graphics/pokemon/magikarp/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MagikarpF[] = INCBIN_U32("graphics/pokemon/magikarp/backf.4bpp.lz"); @@ -1882,7 +2200,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/back.4bpp.lz"); const u32 gMonShinyPalette_Gyarados[] = INCBIN_U32("graphics/pokemon/gyarados/shiny.gbapal.lz"); const u8 gMonIcon_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gyarados[] = INCBIN_U8("graphics/pokemon/gyarados/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GyaradosF[] = INCBIN_U32("graphics/pokemon/gyarados/backf.4bpp.lz"); @@ -1902,7 +2222,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/back.4bpp.lz"); const u32 gMonShinyPalette_Lapras[] = INCBIN_U32("graphics/pokemon/lapras/shiny.gbapal.lz"); const u8 gMonIcon_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lapras[] = INCBIN_U8("graphics/pokemon/lapras/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_LaprasGigantamax[] = INCBIN_U32("graphics/pokemon/lapras/gigantamax/front.4bpp.lz"); @@ -1919,7 +2241,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/back.4bpp.lz"); const u32 gMonShinyPalette_Ditto[] = INCBIN_U32("graphics/pokemon/ditto/shiny.gbapal.lz"); const u8 gMonIcon_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ditto[] = INCBIN_U8("graphics/pokemon/ditto/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DITTO #if P_FAMILY_EEVEE @@ -1928,7 +2252,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/back.4bpp.lz"); const u32 gMonShinyPalette_Eevee[] = INCBIN_U32("graphics/pokemon/eevee/shiny.gbapal.lz"); const u8 gMonIcon_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Eevee[] = INCBIN_U8("graphics/pokemon/eevee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/anim_frontf.4bpp.lz"); const u32 gMonBackPic_EeveeF[] = INCBIN_U32("graphics/pokemon/eevee/backf.4bpp.lz"); @@ -1946,21 +2272,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/back.4bpp.lz"); const u32 gMonShinyPalette_Vaporeon[] = INCBIN_U32("graphics/pokemon/vaporeon/shiny.gbapal.lz"); const u8 gMonIcon_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vaporeon[] = INCBIN_U8("graphics/pokemon/vaporeon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/anim_front.4bpp.lz"); const u32 gMonPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/normal.gbapal.lz"); const u32 gMonBackPic_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/back.4bpp.lz"); const u32 gMonShinyPalette_Jolteon[] = INCBIN_U32("graphics/pokemon/jolteon/shiny.gbapal.lz"); const u8 gMonIcon_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Jolteon[] = INCBIN_U8("graphics/pokemon/jolteon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/anim_front.4bpp.lz"); const u32 gMonPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/normal.gbapal.lz"); const u32 gMonBackPic_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/back.4bpp.lz"); const u32 gMonShinyPalette_Flareon[] = INCBIN_U32("graphics/pokemon/flareon/shiny.gbapal.lz"); const u8 gMonIcon_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Flareon[] = INCBIN_U8("graphics/pokemon/flareon/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/anim_front.4bpp.lz"); @@ -1968,14 +2300,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/back.4bpp.lz"); const u32 gMonShinyPalette_Espeon[] = INCBIN_U32("graphics/pokemon/espeon/shiny.gbapal.lz"); const u8 gMonIcon_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Espeon[] = INCBIN_U8("graphics/pokemon/espeon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/anim_front.4bpp.lz"); const u32 gMonPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/normal.gbapal.lz"); const u32 gMonBackPic_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/back.4bpp.lz"); const u32 gMonShinyPalette_Umbreon[] = INCBIN_U32("graphics/pokemon/umbreon/shiny.gbapal.lz"); const u8 gMonIcon_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Umbreon[] = INCBIN_U8("graphics/pokemon/umbreon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_2_CROSS_EVOS #if P_GEN_4_CROSS_EVOS @@ -1984,14 +2320,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/back.4bpp.lz"); const u32 gMonShinyPalette_Leafeon[] = INCBIN_U32("graphics/pokemon/leafeon/shiny.gbapal.lz"); const u8 gMonIcon_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Leafeon[] = INCBIN_U8("graphics/pokemon/leafeon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/anim_front.4bpp.lz"); const u32 gMonPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/normal.gbapal.lz"); const u32 gMonBackPic_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/back.4bpp.lz"); const u32 gMonShinyPalette_Glaceon[] = INCBIN_U32("graphics/pokemon/glaceon/shiny.gbapal.lz"); const u8 gMonIcon_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Glaceon[] = INCBIN_U8("graphics/pokemon/glaceon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #if P_GEN_6_CROSS_EVOS @@ -2000,7 +2340,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/back.4bpp.lz"); const u32 gMonShinyPalette_Sylveon[] = INCBIN_U32("graphics/pokemon/sylveon/shiny.gbapal.lz"); const u8 gMonIcon_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sylveon[] = INCBIN_U8("graphics/pokemon/sylveon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_6_CROSS_EVOS #endif //P_FAMILY_EEVEE @@ -2010,7 +2352,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/back.4bpp.lz"); const u32 gMonShinyPalette_Porygon[] = INCBIN_U32("graphics/pokemon/porygon/shiny.gbapal.lz"); const u8 gMonIcon_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Porygon[] = INCBIN_U8("graphics/pokemon/porygon/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_2_CROSS_EVOS const u32 gMonFrontPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/anim_front.4bpp.lz"); @@ -2018,7 +2362,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/back.4bpp.lz"); const u32 gMonShinyPalette_Porygon2[] = INCBIN_U32("graphics/pokemon/porygon2/shiny.gbapal.lz"); const u8 gMonIcon_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Porygon2[] = INCBIN_U8("graphics/pokemon/porygon2/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/anim_front.4bpp.lz"); @@ -2026,7 +2372,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/back.4bpp.lz"); const u32 gMonShinyPalette_PorygonZ[] = INCBIN_U32("graphics/pokemon/porygon_z/shiny.gbapal.lz"); const u8 gMonIcon_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_PorygonZ[] = INCBIN_U8("graphics/pokemon/porygon_z/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_GEN_2_CROSS_EVOS #endif //P_FAMILY_PORYGON @@ -2037,14 +2385,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/back.4bpp.lz"); const u32 gMonShinyPalette_Omanyte[] = INCBIN_U32("graphics/pokemon/omanyte/shiny.gbapal.lz"); const u8 gMonIcon_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Omanyte[] = INCBIN_U8("graphics/pokemon/omanyte/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/anim_front.4bpp.lz"); const u32 gMonPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/normal.gbapal.lz"); const u32 gMonBackPic_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/back.4bpp.lz"); const u32 gMonShinyPalette_Omastar[] = INCBIN_U32("graphics/pokemon/omastar/shiny.gbapal.lz"); const u8 gMonIcon_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Omastar[] = INCBIN_U8("graphics/pokemon/omastar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_OMANYTE #if P_FAMILY_KABUTO @@ -2053,14 +2405,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/back.4bpp.lz"); const u32 gMonShinyPalette_Kabuto[] = INCBIN_U32("graphics/pokemon/kabuto/shiny.gbapal.lz"); const u8 gMonIcon_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kabuto[] = INCBIN_U8("graphics/pokemon/kabuto/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/anim_front.4bpp.lz"); const u32 gMonPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/normal.gbapal.lz"); const u32 gMonBackPic_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/back.4bpp.lz"); const u32 gMonShinyPalette_Kabutops[] = INCBIN_U32("graphics/pokemon/kabutops/shiny.gbapal.lz"); const u8 gMonIcon_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kabutops[] = INCBIN_U8("graphics/pokemon/kabutops/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KABUTO #if P_FAMILY_AERODACTYL @@ -2069,7 +2425,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/back.4bpp.lz"); const u32 gMonShinyPalette_Aerodactyl[] = INCBIN_U32("graphics/pokemon/aerodactyl/shiny.gbapal.lz"); const u8 gMonIcon_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aerodactyl[] = INCBIN_U8("graphics/pokemon/aerodactyl/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AerodactylMega[] = INCBIN_U32("graphics/pokemon/aerodactyl/mega/front.4bpp.lz"); @@ -2087,7 +2445,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/back.4bpp.lz"); const u32 gMonShinyPalette_Munchlax[] = INCBIN_U32("graphics/pokemon/munchlax/shiny.gbapal.lz"); const u8 gMonIcon_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Munchlax[] = INCBIN_U8("graphics/pokemon/munchlax/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/anim_front.4bpp.lz"); @@ -2095,7 +2455,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/back.4bpp.lz"); const u32 gMonShinyPalette_Snorlax[] = INCBIN_U32("graphics/pokemon/snorlax/shiny.gbapal.lz"); const u8 gMonIcon_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Snorlax[] = INCBIN_U8("graphics/pokemon/snorlax/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_SnorlaxGigantamax[] = INCBIN_U32("graphics/pokemon/snorlax/gigantamax/front.4bpp.lz"); @@ -2112,7 +2474,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/back.4bpp.lz"); const u32 gMonShinyPalette_Articuno[] = INCBIN_U32("graphics/pokemon/articuno/shiny.gbapal.lz"); const u8 gMonIcon_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Articuno[] = INCBIN_U8("graphics/pokemon/articuno/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ArticunoGalarian[] = INCBIN_U32("graphics/pokemon/articuno/galarian/front.4bpp.lz"); @@ -2129,7 +2493,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/back.4bpp.lz"); const u32 gMonShinyPalette_Zapdos[] = INCBIN_U32("graphics/pokemon/zapdos/shiny.gbapal.lz"); const u8 gMonIcon_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zapdos[] = INCBIN_U8("graphics/pokemon/zapdos/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ZapdosGalarian[] = INCBIN_U32("graphics/pokemon/zapdos/galarian/front.4bpp.lz"); @@ -2146,7 +2512,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/back.4bpp.lz"); const u32 gMonShinyPalette_Moltres[] = INCBIN_U32("graphics/pokemon/moltres/shiny.gbapal.lz"); const u8 gMonIcon_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Moltres[] = INCBIN_U8("graphics/pokemon/moltres/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_MoltresGalarian[] = INCBIN_U32("graphics/pokemon/moltres/galarian/front.4bpp.lz"); @@ -2163,21 +2531,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/back.4bpp.lz"); const u32 gMonShinyPalette_Dratini[] = INCBIN_U32("graphics/pokemon/dratini/shiny.gbapal.lz"); const u8 gMonIcon_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dratini[] = INCBIN_U8("graphics/pokemon/dratini/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/anim_front.4bpp.lz"); const u32 gMonPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/normal.gbapal.lz"); const u32 gMonBackPic_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/back.4bpp.lz"); const u32 gMonShinyPalette_Dragonair[] = INCBIN_U32("graphics/pokemon/dragonair/shiny.gbapal.lz"); const u8 gMonIcon_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dragonair[] = INCBIN_U8("graphics/pokemon/dragonair/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/anim_front.4bpp.lz"); const u32 gMonPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/normal.gbapal.lz"); const u32 gMonBackPic_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/back.4bpp.lz"); const u32 gMonShinyPalette_Dragonite[] = INCBIN_U32("graphics/pokemon/dragonite/shiny.gbapal.lz"); const u8 gMonIcon_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dragonite[] = INCBIN_U8("graphics/pokemon/dragonite/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRATINI #if P_FAMILY_MEWTWO @@ -2186,7 +2560,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/back.4bpp.lz"); const u32 gMonShinyPalette_Mewtwo[] = INCBIN_U32("graphics/pokemon/mewtwo/shiny.gbapal.lz"); const u8 gMonIcon_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mewtwo[] = INCBIN_U8("graphics/pokemon/mewtwo/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MewtwoMegaX[] = INCBIN_U32("graphics/pokemon/mewtwo/mega_x/front.4bpp.lz"); @@ -2209,7 +2585,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mew[] = INCBIN_U32("graphics/pokemon/mew/back.4bpp.lz"); const u32 gMonShinyPalette_Mew[] = INCBIN_U32("graphics/pokemon/mew/shiny.gbapal.lz"); const u8 gMonIcon_Mew[] = INCBIN_U8("graphics/pokemon/mew/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mew[] = INCBIN_U8("graphics/pokemon/mew/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MEW #if P_FAMILY_CHIKORITA @@ -2218,21 +2596,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/back.4bpp.lz"); const u32 gMonShinyPalette_Chikorita[] = INCBIN_U32("graphics/pokemon/chikorita/shiny.gbapal.lz"); const u8 gMonIcon_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chikorita[] = INCBIN_U8("graphics/pokemon/chikorita/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/anim_front.4bpp.lz"); const u32 gMonPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/normal.gbapal.lz"); const u32 gMonBackPic_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/back.4bpp.lz"); const u32 gMonShinyPalette_Bayleef[] = INCBIN_U32("graphics/pokemon/bayleef/shiny.gbapal.lz"); const u8 gMonIcon_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bayleef[] = INCBIN_U8("graphics/pokemon/bayleef/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/anim_front.4bpp.lz"); const u32 gMonPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/normal.gbapal.lz"); const u32 gMonBackPic_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/back.4bpp.lz"); const u32 gMonShinyPalette_Meganium[] = INCBIN_U32("graphics/pokemon/meganium/shiny.gbapal.lz"); const u8 gMonIcon_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Meganium[] = INCBIN_U8("graphics/pokemon/meganium/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MeganiumF[] = INCBIN_U32("graphics/pokemon/meganium/backf.4bpp.lz"); @@ -2244,21 +2628,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/back.4bpp.lz"); const u32 gMonShinyPalette_Cyndaquil[] = INCBIN_U32("graphics/pokemon/cyndaquil/shiny.gbapal.lz"); const u8 gMonIcon_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cyndaquil[] = INCBIN_U8("graphics/pokemon/cyndaquil/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/anim_front.4bpp.lz"); const u32 gMonPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/normal.gbapal.lz"); const u32 gMonBackPic_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/back.4bpp.lz"); const u32 gMonShinyPalette_Quilava[] = INCBIN_U32("graphics/pokemon/quilava/shiny.gbapal.lz"); const u8 gMonIcon_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Quilava[] = INCBIN_U8("graphics/pokemon/quilava/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/anim_front.4bpp.lz"); const u32 gMonPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/normal.gbapal.lz"); const u32 gMonBackPic_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/back.4bpp.lz"); const u32 gMonShinyPalette_Typhlosion[] = INCBIN_U32("graphics/pokemon/typhlosion/shiny.gbapal.lz"); const u8 gMonIcon_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Typhlosion[] = INCBIN_U8("graphics/pokemon/typhlosion/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_TyphlosionHisuian[] = INCBIN_U32("graphics/pokemon/typhlosion/hisuian/front.4bpp.lz"); @@ -2275,21 +2665,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/back.4bpp.lz"); const u32 gMonShinyPalette_Totodile[] = INCBIN_U32("graphics/pokemon/totodile/shiny.gbapal.lz"); const u8 gMonIcon_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Totodile[] = INCBIN_U8("graphics/pokemon/totodile/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/anim_front.4bpp.lz"); const u32 gMonPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/normal.gbapal.lz"); const u32 gMonBackPic_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/back.4bpp.lz"); const u32 gMonShinyPalette_Croconaw[] = INCBIN_U32("graphics/pokemon/croconaw/shiny.gbapal.lz"); const u8 gMonIcon_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Croconaw[] = INCBIN_U8("graphics/pokemon/croconaw/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/anim_front.4bpp.lz"); const u32 gMonPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/normal.gbapal.lz"); const u32 gMonBackPic_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/back.4bpp.lz"); const u32 gMonShinyPalette_Feraligatr[] = INCBIN_U32("graphics/pokemon/feraligatr/shiny.gbapal.lz"); const u8 gMonIcon_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Feraligatr[] = INCBIN_U8("graphics/pokemon/feraligatr/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TOTODILE #if P_FAMILY_SENTRET @@ -2298,14 +2694,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/back.4bpp.lz"); const u32 gMonShinyPalette_Sentret[] = INCBIN_U32("graphics/pokemon/sentret/shiny.gbapal.lz"); const u8 gMonIcon_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sentret[] = INCBIN_U8("graphics/pokemon/sentret/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/anim_front.4bpp.lz"); const u32 gMonPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/normal.gbapal.lz"); const u32 gMonBackPic_Furret[] = INCBIN_U32("graphics/pokemon/furret/back.4bpp.lz"); const u32 gMonShinyPalette_Furret[] = INCBIN_U32("graphics/pokemon/furret/shiny.gbapal.lz"); const u8 gMonIcon_Furret[] = INCBIN_U8("graphics/pokemon/furret/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Furret[] = INCBIN_U8("graphics/pokemon/furret/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SENTRET #if P_FAMILY_HOOTHOOT @@ -2314,14 +2714,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/back.4bpp.lz"); const u32 gMonShinyPalette_Hoothoot[] = INCBIN_U32("graphics/pokemon/hoothoot/shiny.gbapal.lz"); const u8 gMonIcon_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hoothoot[] = INCBIN_U8("graphics/pokemon/hoothoot/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/anim_front.4bpp.lz"); const u32 gMonPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/normal.gbapal.lz"); const u32 gMonBackPic_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/back.4bpp.lz"); const u32 gMonShinyPalette_Noctowl[] = INCBIN_U32("graphics/pokemon/noctowl/shiny.gbapal.lz"); const u8 gMonIcon_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Noctowl[] = INCBIN_U8("graphics/pokemon/noctowl/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HOOTHOOT #if P_FAMILY_LEDYBA @@ -2330,7 +2734,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/back.4bpp.lz"); const u32 gMonShinyPalette_Ledyba[] = INCBIN_U32("graphics/pokemon/ledyba/shiny.gbapal.lz"); const u8 gMonIcon_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ledyba[] = INCBIN_U8("graphics/pokemon/ledyba/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LedybaF[] = INCBIN_U32("graphics/pokemon/ledyba/backf.4bpp.lz"); @@ -2340,7 +2746,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/back.4bpp.lz"); const u32 gMonShinyPalette_Ledian[] = INCBIN_U32("graphics/pokemon/ledian/shiny.gbapal.lz"); const u8 gMonIcon_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ledian[] = INCBIN_U8("graphics/pokemon/ledian/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LedianF[] = INCBIN_U32("graphics/pokemon/ledian/backf.4bpp.lz"); @@ -2352,14 +2760,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/back.4bpp.lz"); const u32 gMonShinyPalette_Spinarak[] = INCBIN_U32("graphics/pokemon/spinarak/shiny.gbapal.lz"); const u8 gMonIcon_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spinarak[] = INCBIN_U8("graphics/pokemon/spinarak/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/anim_front.4bpp.lz"); const u32 gMonPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/normal.gbapal.lz"); const u32 gMonBackPic_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/back.4bpp.lz"); const u32 gMonShinyPalette_Ariados[] = INCBIN_U32("graphics/pokemon/ariados/shiny.gbapal.lz"); const u8 gMonIcon_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ariados[] = INCBIN_U8("graphics/pokemon/ariados/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPINARAK #if P_FAMILY_CHINCHOU @@ -2368,14 +2780,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/back.4bpp.lz"); const u32 gMonShinyPalette_Chinchou[] = INCBIN_U32("graphics/pokemon/chinchou/shiny.gbapal.lz"); const u8 gMonIcon_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chinchou[] = INCBIN_U8("graphics/pokemon/chinchou/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/anim_front.4bpp.lz"); const u32 gMonPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/normal.gbapal.lz"); const u32 gMonBackPic_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/back.4bpp.lz"); const u32 gMonShinyPalette_Lanturn[] = INCBIN_U32("graphics/pokemon/lanturn/shiny.gbapal.lz"); const u8 gMonIcon_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lanturn[] = INCBIN_U8("graphics/pokemon/lanturn/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHINCHOU #if P_FAMILY_TOGEPI @@ -2384,14 +2800,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/back.4bpp.lz"); const u32 gMonShinyPalette_Togepi[] = INCBIN_U32("graphics/pokemon/togepi/shiny.gbapal.lz"); const u8 gMonIcon_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Togepi[] = INCBIN_U8("graphics/pokemon/togepi/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/anim_front.4bpp.lz"); const u32 gMonPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/normal.gbapal.lz"); const u32 gMonBackPic_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/back.4bpp.lz"); const u32 gMonShinyPalette_Togetic[] = INCBIN_U32("graphics/pokemon/togetic/shiny.gbapal.lz"); const u8 gMonIcon_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Togetic[] = INCBIN_U8("graphics/pokemon/togetic/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/anim_front.4bpp.lz"); @@ -2399,7 +2819,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/back.4bpp.lz"); const u32 gMonShinyPalette_Togekiss[] = INCBIN_U32("graphics/pokemon/togekiss/shiny.gbapal.lz"); const u8 gMonIcon_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Togekiss[] = INCBIN_U8("graphics/pokemon/togekiss/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_TOGEPI @@ -2409,14 +2831,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Natu[] = INCBIN_U32("graphics/pokemon/natu/back.4bpp.lz"); const u32 gMonShinyPalette_Natu[] = INCBIN_U32("graphics/pokemon/natu/shiny.gbapal.lz"); const u8 gMonIcon_Natu[] = INCBIN_U8("graphics/pokemon/natu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Natu[] = INCBIN_U8("graphics/pokemon/natu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/anim_front.4bpp.lz"); const u32 gMonPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/normal.gbapal.lz"); const u32 gMonBackPic_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/back.4bpp.lz"); const u32 gMonShinyPalette_Xatu[] = INCBIN_U32("graphics/pokemon/xatu/shiny.gbapal.lz"); const u8 gMonIcon_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Xatu[] = INCBIN_U8("graphics/pokemon/xatu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_XatuF[] = INCBIN_U32("graphics/pokemon/xatu/anim_frontf.4bpp.lz"); #endif //P_FAMILY_NATU @@ -2427,21 +2853,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/back.4bpp.lz"); const u32 gMonShinyPalette_Mareep[] = INCBIN_U32("graphics/pokemon/mareep/shiny.gbapal.lz"); const u8 gMonIcon_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mareep[] = INCBIN_U8("graphics/pokemon/mareep/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/anim_front.4bpp.lz"); const u32 gMonPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/normal.gbapal.lz"); const u32 gMonBackPic_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/back.4bpp.lz"); const u32 gMonShinyPalette_Flaaffy[] = INCBIN_U32("graphics/pokemon/flaaffy/shiny.gbapal.lz"); const u8 gMonIcon_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Flaaffy[] = INCBIN_U8("graphics/pokemon/flaaffy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/anim_front.4bpp.lz"); const u32 gMonPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/normal.gbapal.lz"); const u32 gMonBackPic_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/back.4bpp.lz"); const u32 gMonShinyPalette_Ampharos[] = INCBIN_U32("graphics/pokemon/ampharos/shiny.gbapal.lz"); const u8 gMonIcon_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ampharos[] = INCBIN_U8("graphics/pokemon/ampharos/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AmpharosMega[] = INCBIN_U32("graphics/pokemon/ampharos/mega/front.4bpp.lz"); @@ -2459,7 +2891,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/back.4bpp.lz"); const u32 gMonShinyPalette_Azurill[] = INCBIN_U32("graphics/pokemon/azurill/shiny.gbapal.lz"); const u8 gMonIcon_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Azurill[] = INCBIN_U8("graphics/pokemon/azurill/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_3_CROSS_EVOS const u32 gMonFrontPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/anim_front.4bpp.lz"); @@ -2467,14 +2901,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Marill[] = INCBIN_U32("graphics/pokemon/marill/back.4bpp.lz"); const u32 gMonShinyPalette_Marill[] = INCBIN_U32("graphics/pokemon/marill/shiny.gbapal.lz"); const u8 gMonIcon_Marill[] = INCBIN_U8("graphics/pokemon/marill/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Marill[] = INCBIN_U8("graphics/pokemon/marill/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/anim_front.4bpp.lz"); const u32 gMonPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/normal.gbapal.lz"); const u32 gMonBackPic_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/back.4bpp.lz"); const u32 gMonShinyPalette_Azumarill[] = INCBIN_U32("graphics/pokemon/azumarill/shiny.gbapal.lz"); const u8 gMonIcon_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Azumarill[] = INCBIN_U8("graphics/pokemon/azumarill/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MARILL #if P_FAMILY_SUDOWOODO @@ -2484,7 +2922,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/back.4bpp.lz"); const u32 gMonShinyPalette_Bonsly[] = INCBIN_U32("graphics/pokemon/bonsly/shiny.gbapal.lz"); const u8 gMonIcon_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bonsly[] = INCBIN_U8("graphics/pokemon/bonsly/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_front.4bpp.lz"); @@ -2492,7 +2932,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/back.4bpp.lz"); const u32 gMonShinyPalette_Sudowoodo[] = INCBIN_U32("graphics/pokemon/sudowoodo/shiny.gbapal.lz"); const u8 gMonIcon_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sudowoodo[] = INCBIN_U8("graphics/pokemon/sudowoodo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SudowoodoF[] = INCBIN_U32("graphics/pokemon/sudowoodo/backf.4bpp.lz"); @@ -2504,21 +2946,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/back.4bpp.lz"); const u32 gMonShinyPalette_Hoppip[] = INCBIN_U32("graphics/pokemon/hoppip/shiny.gbapal.lz"); const u8 gMonIcon_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hoppip[] = INCBIN_U8("graphics/pokemon/hoppip/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/anim_front.4bpp.lz"); const u32 gMonPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/normal.gbapal.lz"); const u32 gMonBackPic_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/back.4bpp.lz"); const u32 gMonShinyPalette_Skiploom[] = INCBIN_U32("graphics/pokemon/skiploom/shiny.gbapal.lz"); const u8 gMonIcon_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skiploom[] = INCBIN_U8("graphics/pokemon/skiploom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/anim_front.4bpp.lz"); const u32 gMonPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/normal.gbapal.lz"); const u32 gMonBackPic_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/back.4bpp.lz"); const u32 gMonShinyPalette_Jumpluff[] = INCBIN_U32("graphics/pokemon/jumpluff/shiny.gbapal.lz"); const u8 gMonIcon_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Jumpluff[] = INCBIN_U8("graphics/pokemon/jumpluff/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HOPPIP #if P_FAMILY_AIPOM @@ -2527,7 +2975,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/back.4bpp.lz"); const u32 gMonShinyPalette_Aipom[] = INCBIN_U32("graphics/pokemon/aipom/shiny.gbapal.lz"); const u8 gMonIcon_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aipom[] = INCBIN_U8("graphics/pokemon/aipom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_AipomF[] = INCBIN_U32("graphics/pokemon/aipom/backf.4bpp.lz"); @@ -2538,7 +2988,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/back.4bpp.lz"); const u32 gMonShinyPalette_Ambipom[] = INCBIN_U32("graphics/pokemon/ambipom/shiny.gbapal.lz"); const u8 gMonIcon_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ambipom[] = INCBIN_U8("graphics/pokemon/ambipom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_AmbipomF[] = INCBIN_U32("graphics/pokemon/ambipom/backf.4bpp.lz"); @@ -2551,14 +3003,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/back.4bpp.lz"); const u32 gMonShinyPalette_Sunkern[] = INCBIN_U32("graphics/pokemon/sunkern/shiny.gbapal.lz"); const u8 gMonIcon_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sunkern[] = INCBIN_U8("graphics/pokemon/sunkern/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/anim_front.4bpp.lz"); const u32 gMonPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/normal.gbapal.lz"); const u32 gMonBackPic_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/back.4bpp.lz"); const u32 gMonShinyPalette_Sunflora[] = INCBIN_U32("graphics/pokemon/sunflora/shiny.gbapal.lz"); const u8 gMonIcon_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sunflora[] = INCBIN_U8("graphics/pokemon/sunflora/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SUNKERN #if P_FAMILY_YANMA @@ -2567,7 +3023,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/back.4bpp.lz"); const u32 gMonShinyPalette_Yanma[] = INCBIN_U32("graphics/pokemon/yanma/shiny.gbapal.lz"); const u8 gMonIcon_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Yanma[] = INCBIN_U8("graphics/pokemon/yanma/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/anim_front.4bpp.lz"); @@ -2575,7 +3033,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/back.4bpp.lz"); const u32 gMonShinyPalette_Yanmega[] = INCBIN_U32("graphics/pokemon/yanmega/shiny.gbapal.lz"); const u8 gMonIcon_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Yanmega[] = INCBIN_U8("graphics/pokemon/yanmega/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_YANMA @@ -2585,7 +3045,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/back.4bpp.lz"); const u32 gMonShinyPalette_Wooper[] = INCBIN_U32("graphics/pokemon/wooper/shiny.gbapal.lz"); const u8 gMonIcon_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wooper[] = INCBIN_U8("graphics/pokemon/wooper/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/anim_frontf.4bpp.lz"); const u32 gMonBackPic_WooperF[] = INCBIN_U32("graphics/pokemon/wooper/backf.4bpp.lz"); @@ -2595,7 +3057,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/back.4bpp.lz"); const u32 gMonShinyPalette_Quagsire[] = INCBIN_U32("graphics/pokemon/quagsire/shiny.gbapal.lz"); const u8 gMonIcon_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Quagsire[] = INCBIN_U8("graphics/pokemon/quagsire/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/anim_frontf.4bpp.lz"); const u32 gMonBackPic_QuagsireF[] = INCBIN_U32("graphics/pokemon/quagsire/backf.4bpp.lz"); @@ -2612,7 +3076,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/back.4bpp.lz"); const u32 gMonShinyPalette_Clodsire[] = INCBIN_U32("graphics/pokemon/clodsire/shiny.gbapal.lz"); const u8 gMonIcon_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Clodsire[] = INCBIN_U8("graphics/pokemon/clodsire/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_PALDEAN_FORMS #endif //P_FAMILY_WOOPER @@ -2622,7 +3088,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/back.4bpp.lz"); const u32 gMonShinyPalette_Murkrow[] = INCBIN_U32("graphics/pokemon/murkrow/shiny.gbapal.lz"); const u8 gMonIcon_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Murkrow[] = INCBIN_U8("graphics/pokemon/murkrow/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MurkrowF[] = INCBIN_U32("graphics/pokemon/murkrow/backf.4bpp.lz"); @@ -2633,7 +3101,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/back.4bpp.lz"); const u32 gMonShinyPalette_Honchkrow[] = INCBIN_U32("graphics/pokemon/honchkrow/shiny.gbapal.lz"); const u8 gMonIcon_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Honchkrow[] = INCBIN_U8("graphics/pokemon/honchkrow/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MURKROW @@ -2643,7 +3113,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/back.4bpp.lz"); const u32 gMonShinyPalette_Misdreavus[] = INCBIN_U32("graphics/pokemon/misdreavus/shiny.gbapal.lz"); const u8 gMonIcon_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Misdreavus[] = INCBIN_U8("graphics/pokemon/misdreavus/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/anim_front.4bpp.lz"); @@ -2651,14 +3123,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/back.4bpp.lz"); const u32 gMonShinyPalette_Mismagius[] = INCBIN_U32("graphics/pokemon/mismagius/shiny.gbapal.lz"); const u8 gMonIcon_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mismagius[] = INCBIN_U8("graphics/pokemon/mismagius/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_MISDREAVUS #if P_FAMILY_UNOWN const u32 gMonPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/normal.gbapal.lz"); const u32 gMonShinyPalette_Unown[] = INCBIN_U32("graphics/pokemon/unown/shiny.gbapal.lz"); +#if P_FOOTPRINTS const u8 gMonFootprint_Unown[] = INCBIN_U8("graphics/pokemon/unown/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/anim_front.4bpp.lz"); const u32 gMonBackPic_UnownA[] = INCBIN_U32("graphics/pokemon/unown/back.4bpp.lz"); @@ -2780,7 +3256,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/back.4bpp.lz"); const u32 gMonShinyPalette_Wynaut[] = INCBIN_U32("graphics/pokemon/wynaut/shiny.gbapal.lz"); const u8 gMonIcon_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wynaut[] = INCBIN_U8("graphics/pokemon/wynaut/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_3_CROSS_EVOS const u32 gMonFrontPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_front.4bpp.lz"); @@ -2788,7 +3266,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/back.4bpp.lz"); const u32 gMonShinyPalette_Wobbuffet[] = INCBIN_U32("graphics/pokemon/wobbuffet/shiny.gbapal.lz"); const u8 gMonIcon_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wobbuffet[] = INCBIN_U8("graphics/pokemon/wobbuffet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_WobbuffetF[] = INCBIN_U32("graphics/pokemon/wobbuffet/anim_frontf.4bpp.lz"); const u32 gMonBackPic_WobbuffetF[] = INCBIN_U32("graphics/pokemon/wobbuffet/backf.4bpp.lz"); @@ -2804,7 +3284,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/back.4bpp.lz"); const u32 gMonShinyPalette_Girafarig[] = INCBIN_U32("graphics/pokemon/girafarig/shiny.gbapal.lz"); const u8 gMonIcon_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Girafarig[] = INCBIN_U8("graphics/pokemon/girafarig/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GirafarigF[] = INCBIN_U32("graphics/pokemon/girafarig/backf.4bpp.lz"); @@ -2815,7 +3297,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/back.4bpp.lz"); const u32 gMonShinyPalette_Farigiraf[] = INCBIN_U32("graphics/pokemon/farigiraf/shiny.gbapal.lz"); const u8 gMonIcon_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Farigiraf[] = INCBIN_U8("graphics/pokemon/farigiraf/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_GIRAFARIG @@ -2825,14 +3309,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/back.4bpp.lz"); const u32 gMonShinyPalette_Pineco[] = INCBIN_U32("graphics/pokemon/pineco/shiny.gbapal.lz"); const u8 gMonIcon_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pineco[] = INCBIN_U8("graphics/pokemon/pineco/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/anim_front.4bpp.lz"); const u32 gMonPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/normal.gbapal.lz"); const u32 gMonBackPic_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/back.4bpp.lz"); const u32 gMonShinyPalette_Forretress[] = INCBIN_U32("graphics/pokemon/forretress/shiny.gbapal.lz"); const u8 gMonIcon_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Forretress[] = INCBIN_U8("graphics/pokemon/forretress/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PINECO #if P_FAMILY_DUNSPARCE @@ -2841,13 +3329,17 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/back.4bpp.lz"); const u32 gMonShinyPalette_Dunsparce[] = INCBIN_U32("graphics/pokemon/dunsparce/shiny.gbapal.lz"); const u8 gMonIcon_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dunsparce[] = INCBIN_U8("graphics/pokemon/dunsparce/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_9_CROSS_EVOS const u32 gMonPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/normal.gbapal.lz"); const u32 gMonShinyPalette_Dudunsparce[] = INCBIN_U32("graphics/pokemon/dudunsparce/shiny.gbapal.lz"); const u8 gMonIcon_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Dudunsparce[] = INCBIN_U8("graphics/pokemon/dudunsparce/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/front.4bpp.lz"); const u32 gMonBackPic_DudunsparceTwoSegment[] = INCBIN_U32("graphics/pokemon/dudunsparce/back.4bpp.lz"); @@ -2863,7 +3355,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/back.4bpp.lz"); const u32 gMonShinyPalette_Gligar[] = INCBIN_U32("graphics/pokemon/gligar/shiny.gbapal.lz"); const u8 gMonIcon_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gligar[] = INCBIN_U8("graphics/pokemon/gligar/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GligarF[] = INCBIN_U32("graphics/pokemon/gligar/backf.4bpp.lz"); @@ -2874,7 +3368,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/back.4bpp.lz"); const u32 gMonShinyPalette_Gliscor[] = INCBIN_U32("graphics/pokemon/gliscor/shiny.gbapal.lz"); const u8 gMonIcon_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gliscor[] = INCBIN_U8("graphics/pokemon/gliscor/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_GLIGAR @@ -2884,14 +3380,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/back.4bpp.lz"); const u32 gMonShinyPalette_Snubbull[] = INCBIN_U32("graphics/pokemon/snubbull/shiny.gbapal.lz"); const u8 gMonIcon_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Snubbull[] = INCBIN_U8("graphics/pokemon/snubbull/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/anim_front.4bpp.lz"); const u32 gMonPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/normal.gbapal.lz"); const u32 gMonBackPic_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/back.4bpp.lz"); const u32 gMonShinyPalette_Granbull[] = INCBIN_U32("graphics/pokemon/granbull/shiny.gbapal.lz"); const u8 gMonIcon_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Granbull[] = INCBIN_U8("graphics/pokemon/granbull/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SNUBBULL #if P_FAMILY_QWILFISH @@ -2900,7 +3400,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/back.4bpp.lz"); const u32 gMonShinyPalette_Qwilfish[] = INCBIN_U32("graphics/pokemon/qwilfish/shiny.gbapal.lz"); const u8 gMonIcon_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Qwilfish[] = INCBIN_U8("graphics/pokemon/qwilfish/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_QwilfishHisuian[] = INCBIN_U32("graphics/pokemon/qwilfish/hisuian/front.4bpp.lz"); @@ -2914,7 +3416,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/back.4bpp.lz"); const u32 gMonShinyPalette_Overqwil[] = INCBIN_U32("graphics/pokemon/overqwil/shiny.gbapal.lz"); const u8 gMonIcon_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Overqwil[] = INCBIN_U8("graphics/pokemon/overqwil/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_QWILFISH @@ -2924,7 +3428,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/back.4bpp.lz"); const u32 gMonShinyPalette_Shuckle[] = INCBIN_U32("graphics/pokemon/shuckle/shiny.gbapal.lz"); const u8 gMonIcon_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shuckle[] = INCBIN_U8("graphics/pokemon/shuckle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SHUCKLE #if P_FAMILY_HERACROSS @@ -2933,7 +3439,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/back.4bpp.lz"); const u32 gMonShinyPalette_Heracross[] = INCBIN_U32("graphics/pokemon/heracross/shiny.gbapal.lz"); const u8 gMonIcon_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Heracross[] = INCBIN_U8("graphics/pokemon/heracross/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/anim_frontf.4bpp.lz"); const u32 gMonBackPic_HeracrossF[] = INCBIN_U32("graphics/pokemon/heracross/backf.4bpp.lz"); @@ -2953,7 +3461,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/back.4bpp.lz"); const u32 gMonShinyPalette_Sneasel[] = INCBIN_U32("graphics/pokemon/sneasel/shiny.gbapal.lz"); const u8 gMonIcon_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sneasel[] = INCBIN_U8("graphics/pokemon/sneasel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SneaselF[] = INCBIN_U32("graphics/pokemon/sneasel/backf.4bpp.lz"); @@ -2964,7 +3474,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/back.4bpp.lz"); const u32 gMonShinyPalette_Weavile[] = INCBIN_U32("graphics/pokemon/weavile/shiny.gbapal.lz"); const u8 gMonIcon_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Weavile[] = INCBIN_U8("graphics/pokemon/weavile/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/anim_frontf.4bpp.lz"); const u32 gMonBackPic_WeavileF[] = INCBIN_U32("graphics/pokemon/weavile/backf.4bpp.lz"); @@ -2985,7 +3497,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/back.4bpp.lz"); const u32 gMonShinyPalette_Sneasler[] = INCBIN_U32("graphics/pokemon/sneasler/shiny.gbapal.lz"); const u8 gMonIcon_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Sneasler[] = INCBIN_U8("graphics/pokemon/sneasler/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_HISUIAN_FORMS #endif //P_FAMILY_SNEASEL @@ -2995,14 +3509,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/back.4bpp.lz"); const u32 gMonShinyPalette_Teddiursa[] = INCBIN_U32("graphics/pokemon/teddiursa/shiny.gbapal.lz"); const u8 gMonIcon_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Teddiursa[] = INCBIN_U8("graphics/pokemon/teddiursa/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/anim_front.4bpp.lz"); const u32 gMonPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/normal.gbapal.lz"); const u32 gMonBackPic_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/back.4bpp.lz"); const u32 gMonShinyPalette_Ursaring[] = INCBIN_U32("graphics/pokemon/ursaring/shiny.gbapal.lz"); const u8 gMonIcon_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ursaring[] = INCBIN_U8("graphics/pokemon/ursaring/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/anim_frontf.4bpp.lz"); const u32 gMonBackPic_UrsaringF[] = INCBIN_U32("graphics/pokemon/ursaring/backf.4bpp.lz"); @@ -3013,7 +3531,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/back.4bpp.lz"); const u32 gMonShinyPalette_Ursaluna[] = INCBIN_U32("graphics/pokemon/ursaluna/shiny.gbapal.lz"); const u8 gMonIcon_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Ursaluna[] = INCBIN_U8("graphics/pokemon/ursaluna/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/front.4bpp.lz"); const u32 gMonPalette_UrsalunaBloodmoon[] = INCBIN_U32("graphics/pokemon/ursaluna/bloodmoon/normal.gbapal.lz"); @@ -3029,14 +3549,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/back.4bpp.lz"); const u32 gMonShinyPalette_Slugma[] = INCBIN_U32("graphics/pokemon/slugma/shiny.gbapal.lz"); const u8 gMonIcon_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slugma[] = INCBIN_U8("graphics/pokemon/slugma/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/anim_front.4bpp.lz"); const u32 gMonPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/normal.gbapal.lz"); const u32 gMonBackPic_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/back.4bpp.lz"); const u32 gMonShinyPalette_Magcargo[] = INCBIN_U32("graphics/pokemon/magcargo/shiny.gbapal.lz"); const u8 gMonIcon_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magcargo[] = INCBIN_U8("graphics/pokemon/magcargo/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SLUGMA #if P_FAMILY_SWINUB @@ -3045,14 +3569,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/back.4bpp.lz"); const u32 gMonShinyPalette_Swinub[] = INCBIN_U32("graphics/pokemon/swinub/shiny.gbapal.lz"); const u8 gMonIcon_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swinub[] = INCBIN_U8("graphics/pokemon/swinub/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/anim_front.4bpp.lz"); const u32 gMonPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/normal.gbapal.lz"); const u32 gMonBackPic_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/back.4bpp.lz"); const u32 gMonShinyPalette_Piloswine[] = INCBIN_U32("graphics/pokemon/piloswine/shiny.gbapal.lz"); const u8 gMonIcon_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Piloswine[] = INCBIN_U8("graphics/pokemon/piloswine/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/anim_frontf.4bpp.lz"); const u32 gMonBackPic_PiloswineF[] = INCBIN_U32("graphics/pokemon/piloswine/backf.4bpp.lz"); @@ -3063,7 +3591,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/back.4bpp.lz"); const u32 gMonShinyPalette_Mamoswine[] = INCBIN_U32("graphics/pokemon/mamoswine/shiny.gbapal.lz"); const u8 gMonIcon_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mamoswine[] = INCBIN_U8("graphics/pokemon/mamoswine/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MamoswineF[] = INCBIN_U32("graphics/pokemon/mamoswine/anim_frontf.4bpp.lz"); #endif //P_GEN_4_CROSS_EVOS @@ -3075,7 +3605,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/back.4bpp.lz"); const u32 gMonShinyPalette_Corsola[] = INCBIN_U32("graphics/pokemon/corsola/shiny.gbapal.lz"); const u8 gMonIcon_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Corsola[] = INCBIN_U8("graphics/pokemon/corsola/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_CorsolaGalarian[] = INCBIN_U32("graphics/pokemon/corsola/galarian/front.4bpp.lz"); @@ -3089,7 +3621,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/back.4bpp.lz"); const u32 gMonShinyPalette_Cursola[] = INCBIN_U32("graphics/pokemon/cursola/shiny.gbapal.lz"); const u8 gMonIcon_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cursola[] = INCBIN_U8("graphics/pokemon/cursola/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_CORSOLA @@ -3099,14 +3633,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/back.4bpp.lz"); const u32 gMonShinyPalette_Remoraid[] = INCBIN_U32("graphics/pokemon/remoraid/shiny.gbapal.lz"); const u8 gMonIcon_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Remoraid[] = INCBIN_U8("graphics/pokemon/remoraid/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/anim_front.4bpp.lz"); const u32 gMonPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/normal.gbapal.lz"); const u32 gMonBackPic_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/back.4bpp.lz"); const u32 gMonShinyPalette_Octillery[] = INCBIN_U32("graphics/pokemon/octillery/shiny.gbapal.lz"); const u8 gMonIcon_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Octillery[] = INCBIN_U8("graphics/pokemon/octillery/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/anim_frontf.4bpp.lz"); const u32 gMonBackPic_OctilleryF[] = INCBIN_U32("graphics/pokemon/octillery/backf.4bpp.lz"); @@ -3118,7 +3656,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/back.4bpp.lz"); const u32 gMonShinyPalette_Delibird[] = INCBIN_U32("graphics/pokemon/delibird/shiny.gbapal.lz"); const u8 gMonIcon_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Delibird[] = INCBIN_U8("graphics/pokemon/delibird/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DELIBIRD #if P_FAMILY_MANTINE @@ -3128,7 +3668,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/back.4bpp.lz"); const u32 gMonShinyPalette_Mantyke[] = INCBIN_U32("graphics/pokemon/mantyke/shiny.gbapal.lz"); const u8 gMonIcon_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mantyke[] = INCBIN_U8("graphics/pokemon/mantyke/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/anim_front.4bpp.lz"); @@ -3136,7 +3678,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/back.4bpp.lz"); const u32 gMonShinyPalette_Mantine[] = INCBIN_U32("graphics/pokemon/mantine/shiny.gbapal.lz"); const u8 gMonIcon_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mantine[] = INCBIN_U8("graphics/pokemon/mantine/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MANTINE #if P_FAMILY_SKARMORY @@ -3145,7 +3689,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/back.4bpp.lz"); const u32 gMonShinyPalette_Skarmory[] = INCBIN_U32("graphics/pokemon/skarmory/shiny.gbapal.lz"); const u8 gMonIcon_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skarmory[] = INCBIN_U8("graphics/pokemon/skarmory/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SKARMORY #if P_FAMILY_HOUNDOUR @@ -3154,14 +3700,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/back.4bpp.lz"); const u32 gMonShinyPalette_Houndour[] = INCBIN_U32("graphics/pokemon/houndour/shiny.gbapal.lz"); const u8 gMonIcon_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Houndour[] = INCBIN_U8("graphics/pokemon/houndour/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/anim_front.4bpp.lz"); const u32 gMonPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/normal.gbapal.lz"); const u32 gMonBackPic_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/back.4bpp.lz"); const u32 gMonShinyPalette_Houndoom[] = INCBIN_U32("graphics/pokemon/houndoom/shiny.gbapal.lz"); const u8 gMonIcon_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Houndoom[] = INCBIN_U8("graphics/pokemon/houndoom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/anim_frontf.4bpp.lz"); const u32 gMonBackPic_HoundoomF[] = INCBIN_U32("graphics/pokemon/houndoom/backf.4bpp.lz"); @@ -3181,14 +3731,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/back.4bpp.lz"); const u32 gMonShinyPalette_Phanpy[] = INCBIN_U32("graphics/pokemon/phanpy/shiny.gbapal.lz"); const u8 gMonIcon_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Phanpy[] = INCBIN_U8("graphics/pokemon/phanpy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/anim_front.4bpp.lz"); const u32 gMonPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/normal.gbapal.lz"); const u32 gMonBackPic_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/back.4bpp.lz"); const u32 gMonShinyPalette_Donphan[] = INCBIN_U32("graphics/pokemon/donphan/shiny.gbapal.lz"); const u8 gMonIcon_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Donphan[] = INCBIN_U8("graphics/pokemon/donphan/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DonphanF[] = INCBIN_U32("graphics/pokemon/donphan/backf.4bpp.lz"); @@ -3200,7 +3754,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/back.4bpp.lz"); const u32 gMonShinyPalette_Stantler[] = INCBIN_U32("graphics/pokemon/stantler/shiny.gbapal.lz"); const u8 gMonIcon_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stantler[] = INCBIN_U8("graphics/pokemon/stantler/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_8_CROSS_EVOS const u32 gMonFrontPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/front.4bpp.lz"); @@ -3208,7 +3764,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/back.4bpp.lz"); const u32 gMonShinyPalette_Wyrdeer[] = INCBIN_U32("graphics/pokemon/wyrdeer/shiny.gbapal.lz"); const u8 gMonIcon_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Wyrdeer[] = INCBIN_U8("graphics/pokemon/wyrdeer/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_8_CROSS_EVOS #endif //P_FAMILY_STANTLER @@ -3218,7 +3776,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/back.4bpp.lz"); const u32 gMonShinyPalette_Smeargle[] = INCBIN_U32("graphics/pokemon/smeargle/shiny.gbapal.lz"); const u8 gMonIcon_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Smeargle[] = INCBIN_U8("graphics/pokemon/smeargle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SMEARGLE #if P_FAMILY_MILTANK @@ -3227,7 +3787,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/back.4bpp.lz"); const u32 gMonShinyPalette_Miltank[] = INCBIN_U32("graphics/pokemon/miltank/shiny.gbapal.lz"); const u8 gMonIcon_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Miltank[] = INCBIN_U8("graphics/pokemon/miltank/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MILTANK #if P_FAMILY_RAIKOU @@ -3236,7 +3798,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/back.4bpp.lz"); const u32 gMonShinyPalette_Raikou[] = INCBIN_U32("graphics/pokemon/raikou/shiny.gbapal.lz"); const u8 gMonIcon_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Raikou[] = INCBIN_U8("graphics/pokemon/raikou/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_RAIKOU #if P_FAMILY_ENTEI @@ -3245,7 +3809,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Entei[] = INCBIN_U32("graphics/pokemon/entei/back.4bpp.lz"); const u32 gMonShinyPalette_Entei[] = INCBIN_U32("graphics/pokemon/entei/shiny.gbapal.lz"); const u8 gMonIcon_Entei[] = INCBIN_U8("graphics/pokemon/entei/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Entei[] = INCBIN_U8("graphics/pokemon/entei/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ENTEI #if P_FAMILY_SUICUNE @@ -3254,7 +3820,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/back.4bpp.lz"); const u32 gMonShinyPalette_Suicune[] = INCBIN_U32("graphics/pokemon/suicune/shiny.gbapal.lz"); const u8 gMonIcon_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Suicune[] = INCBIN_U8("graphics/pokemon/suicune/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SUICUNE #if P_FAMILY_LARVITAR @@ -3263,21 +3831,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/back.4bpp.lz"); const u32 gMonShinyPalette_Larvitar[] = INCBIN_U32("graphics/pokemon/larvitar/shiny.gbapal.lz"); const u8 gMonIcon_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Larvitar[] = INCBIN_U8("graphics/pokemon/larvitar/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/anim_front.4bpp.lz"); const u32 gMonPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/normal.gbapal.lz"); const u32 gMonBackPic_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/back.4bpp.lz"); const u32 gMonShinyPalette_Pupitar[] = INCBIN_U32("graphics/pokemon/pupitar/shiny.gbapal.lz"); const u8 gMonIcon_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pupitar[] = INCBIN_U8("graphics/pokemon/pupitar/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/anim_front.4bpp.lz"); const u32 gMonPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/normal.gbapal.lz"); const u32 gMonBackPic_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/back.4bpp.lz"); const u32 gMonShinyPalette_Tyranitar[] = INCBIN_U32("graphics/pokemon/tyranitar/shiny.gbapal.lz"); const u8 gMonIcon_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tyranitar[] = INCBIN_U8("graphics/pokemon/tyranitar/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_TyranitarMega[] = INCBIN_U32("graphics/pokemon/tyranitar/mega/front.4bpp.lz"); @@ -3294,7 +3868,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/back.4bpp.lz"); const u32 gMonShinyPalette_Lugia[] = INCBIN_U32("graphics/pokemon/lugia/shiny.gbapal.lz"); const u8 gMonIcon_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lugia[] = INCBIN_U8("graphics/pokemon/lugia/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LUGIA #if P_FAMILY_HO_OH @@ -3303,7 +3879,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/back.4bpp.lz"); const u32 gMonShinyPalette_HoOh[] = INCBIN_U32("graphics/pokemon/ho_oh/shiny.gbapal.lz"); const u8 gMonIcon_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_HoOh[] = INCBIN_U8("graphics/pokemon/ho_oh/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HO_OH #if P_FAMILY_CELEBI @@ -3312,7 +3890,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/back.4bpp.lz"); const u32 gMonShinyPalette_Celebi[] = INCBIN_U32("graphics/pokemon/celebi/shiny.gbapal.lz"); const u8 gMonIcon_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Celebi[] = INCBIN_U8("graphics/pokemon/celebi/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CELEBI #if P_FAMILY_TREECKO @@ -3321,21 +3901,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/back.4bpp.lz"); const u32 gMonShinyPalette_Treecko[] = INCBIN_U32("graphics/pokemon/treecko/shiny.gbapal.lz"); const u8 gMonIcon_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Treecko[] = INCBIN_U8("graphics/pokemon/treecko/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/anim_front.4bpp.lz"); const u32 gMonPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/normal.gbapal.lz"); const u32 gMonBackPic_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/back.4bpp.lz"); const u32 gMonShinyPalette_Grovyle[] = INCBIN_U32("graphics/pokemon/grovyle/shiny.gbapal.lz"); const u8 gMonIcon_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grovyle[] = INCBIN_U8("graphics/pokemon/grovyle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/anim_front.4bpp.lz"); const u32 gMonPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/normal.gbapal.lz"); const u32 gMonBackPic_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/back.4bpp.lz"); const u32 gMonShinyPalette_Sceptile[] = INCBIN_U32("graphics/pokemon/sceptile/shiny.gbapal.lz"); const u8 gMonIcon_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sceptile[] = INCBIN_U8("graphics/pokemon/sceptile/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SceptileMega[] = INCBIN_U32("graphics/pokemon/sceptile/mega/front.4bpp.lz"); @@ -3352,7 +3938,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/back.4bpp.lz"); const u32 gMonShinyPalette_Torchic[] = INCBIN_U32("graphics/pokemon/torchic/shiny.gbapal.lz"); const u8 gMonIcon_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Torchic[] = INCBIN_U8("graphics/pokemon/torchic/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonBackPic_TorchicF[] = INCBIN_U32("graphics/pokemon/torchic/backf.4bpp.lz"); @@ -3361,7 +3949,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/back.4bpp.lz"); const u32 gMonShinyPalette_Combusken[] = INCBIN_U32("graphics/pokemon/combusken/shiny.gbapal.lz"); const u8 gMonIcon_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Combusken[] = INCBIN_U8("graphics/pokemon/combusken/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/anim_frontf.4bpp.lz"); const u32 gMonBackPic_CombuskenF[] = INCBIN_U32("graphics/pokemon/combusken/backf.4bpp.lz"); @@ -3371,7 +3961,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/back.4bpp.lz"); const u32 gMonShinyPalette_Blaziken[] = INCBIN_U32("graphics/pokemon/blaziken/shiny.gbapal.lz"); const u8 gMonIcon_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Blaziken[] = INCBIN_U8("graphics/pokemon/blaziken/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/anim_frontf.4bpp.lz"); const u32 gMonBackPic_BlazikenF[] = INCBIN_U32("graphics/pokemon/blaziken/backf.4bpp.lz"); @@ -3391,21 +3983,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/back.4bpp.lz"); const u32 gMonShinyPalette_Mudkip[] = INCBIN_U32("graphics/pokemon/mudkip/shiny.gbapal.lz"); const u8 gMonIcon_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mudkip[] = INCBIN_U8("graphics/pokemon/mudkip/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/anim_front.4bpp.lz"); const u32 gMonPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/normal.gbapal.lz"); const u32 gMonBackPic_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/back.4bpp.lz"); const u32 gMonShinyPalette_Marshtomp[] = INCBIN_U32("graphics/pokemon/marshtomp/shiny.gbapal.lz"); const u8 gMonIcon_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Marshtomp[] = INCBIN_U8("graphics/pokemon/marshtomp/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/anim_front.4bpp.lz"); const u32 gMonPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/normal.gbapal.lz"); const u32 gMonBackPic_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/back.4bpp.lz"); const u32 gMonShinyPalette_Swampert[] = INCBIN_U32("graphics/pokemon/swampert/shiny.gbapal.lz"); const u8 gMonIcon_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swampert[] = INCBIN_U8("graphics/pokemon/swampert/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SwampertMega[] = INCBIN_U32("graphics/pokemon/swampert/mega/front.4bpp.lz"); @@ -3422,14 +4020,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/back.4bpp.lz"); const u32 gMonShinyPalette_Poochyena[] = INCBIN_U32("graphics/pokemon/poochyena/shiny.gbapal.lz"); const u8 gMonIcon_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Poochyena[] = INCBIN_U8("graphics/pokemon/poochyena/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/anim_front.4bpp.lz"); const u32 gMonPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/normal.gbapal.lz"); const u32 gMonBackPic_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/back.4bpp.lz"); const u32 gMonShinyPalette_Mightyena[] = INCBIN_U32("graphics/pokemon/mightyena/shiny.gbapal.lz"); const u8 gMonIcon_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mightyena[] = INCBIN_U8("graphics/pokemon/mightyena/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_POOCHYENA #if P_FAMILY_ZIGZAGOON @@ -3438,14 +4040,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/back.4bpp.lz"); const u32 gMonShinyPalette_Zigzagoon[] = INCBIN_U32("graphics/pokemon/zigzagoon/shiny.gbapal.lz"); const u8 gMonIcon_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zigzagoon[] = INCBIN_U8("graphics/pokemon/zigzagoon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/anim_front.4bpp.lz"); const u32 gMonPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/normal.gbapal.lz"); const u32 gMonBackPic_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/back.4bpp.lz"); const u32 gMonShinyPalette_Linoone[] = INCBIN_U32("graphics/pokemon/linoone/shiny.gbapal.lz"); const u8 gMonIcon_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Linoone[] = INCBIN_U8("graphics/pokemon/linoone/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_ZigzagoonGalarian[] = INCBIN_U32("graphics/pokemon/zigzagoon/galarian/front.4bpp.lz"); @@ -3465,7 +4071,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/back.4bpp.lz"); const u32 gMonShinyPalette_Obstagoon[] = INCBIN_U32("graphics/pokemon/obstagoon/shiny.gbapal.lz"); const u8 gMonIcon_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Obstagoon[] = INCBIN_U8("graphics/pokemon/obstagoon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_ZIGZAGOON @@ -3475,21 +4083,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/back.4bpp.lz"); const u32 gMonShinyPalette_Wurmple[] = INCBIN_U32("graphics/pokemon/wurmple/shiny.gbapal.lz"); const u8 gMonIcon_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wurmple[] = INCBIN_U8("graphics/pokemon/wurmple/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/anim_front.4bpp.lz"); const u32 gMonPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/normal.gbapal.lz"); const u32 gMonBackPic_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/back.4bpp.lz"); const u32 gMonShinyPalette_Silcoon[] = INCBIN_U32("graphics/pokemon/silcoon/shiny.gbapal.lz"); const u8 gMonIcon_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Silcoon[] = INCBIN_U8("graphics/pokemon/silcoon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/anim_front.4bpp.lz"); const u32 gMonPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/normal.gbapal.lz"); const u32 gMonBackPic_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/back.4bpp.lz"); const u32 gMonShinyPalette_Beautifly[] = INCBIN_U32("graphics/pokemon/beautifly/shiny.gbapal.lz"); const u8 gMonIcon_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Beautifly[] = INCBIN_U8("graphics/pokemon/beautifly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/anim_frontf.4bpp.lz"); const u32 gMonBackPic_BeautiflyF[] = INCBIN_U32("graphics/pokemon/beautifly/backf.4bpp.lz"); @@ -3499,14 +4113,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/back.4bpp.lz"); const u32 gMonShinyPalette_Cascoon[] = INCBIN_U32("graphics/pokemon/cascoon/shiny.gbapal.lz"); const u8 gMonIcon_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cascoon[] = INCBIN_U8("graphics/pokemon/cascoon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/anim_front.4bpp.lz"); const u32 gMonPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/normal.gbapal.lz"); const u32 gMonBackPic_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/back.4bpp.lz"); const u32 gMonShinyPalette_Dustox[] = INCBIN_U32("graphics/pokemon/dustox/shiny.gbapal.lz"); const u8 gMonIcon_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dustox[] = INCBIN_U8("graphics/pokemon/dustox/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/anim_frontf.4bpp.lz"); const u32 gMonBackPic_DustoxF[] = INCBIN_U32("graphics/pokemon/dustox/backf.4bpp.lz"); @@ -3518,21 +4136,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/back.4bpp.lz"); const u32 gMonShinyPalette_Lotad[] = INCBIN_U32("graphics/pokemon/lotad/shiny.gbapal.lz"); const u8 gMonIcon_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lotad[] = INCBIN_U8("graphics/pokemon/lotad/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/anim_front.4bpp.lz"); const u32 gMonPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/normal.gbapal.lz"); const u32 gMonBackPic_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/back.4bpp.lz"); const u32 gMonShinyPalette_Lombre[] = INCBIN_U32("graphics/pokemon/lombre/shiny.gbapal.lz"); const u8 gMonIcon_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lombre[] = INCBIN_U8("graphics/pokemon/lombre/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_front.4bpp.lz"); const u32 gMonPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/normal.gbapal.lz"); const u32 gMonBackPic_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/back.4bpp.lz"); const u32 gMonShinyPalette_Ludicolo[] = INCBIN_U32("graphics/pokemon/ludicolo/shiny.gbapal.lz"); const u8 gMonIcon_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ludicolo[] = INCBIN_U8("graphics/pokemon/ludicolo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LudicoloF[] = INCBIN_U32("graphics/pokemon/ludicolo/backf.4bpp.lz"); @@ -3544,14 +4168,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/back.4bpp.lz"); const u32 gMonShinyPalette_Seedot[] = INCBIN_U32("graphics/pokemon/seedot/shiny.gbapal.lz"); const u8 gMonIcon_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Seedot[] = INCBIN_U8("graphics/pokemon/seedot/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_front.4bpp.lz"); const u32 gMonPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/normal.gbapal.lz"); const u32 gMonBackPic_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/back.4bpp.lz"); const u32 gMonShinyPalette_Nuzleaf[] = INCBIN_U32("graphics/pokemon/nuzleaf/shiny.gbapal.lz"); const u8 gMonIcon_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nuzleaf[] = INCBIN_U8("graphics/pokemon/nuzleaf/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/anim_frontf.4bpp.lz"); const u32 gMonBackPic_NuzleafF[] = INCBIN_U32("graphics/pokemon/nuzleaf/backf.4bpp.lz"); @@ -3561,7 +4189,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/back.4bpp.lz"); const u32 gMonShinyPalette_Shiftry[] = INCBIN_U32("graphics/pokemon/shiftry/shiny.gbapal.lz"); const u8 gMonIcon_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shiftry[] = INCBIN_U8("graphics/pokemon/shiftry/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ShiftryF[] = INCBIN_U32("graphics/pokemon/shiftry/backf.4bpp.lz"); @@ -3573,14 +4203,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/back.4bpp.lz"); const u32 gMonShinyPalette_Taillow[] = INCBIN_U32("graphics/pokemon/taillow/shiny.gbapal.lz"); const u8 gMonIcon_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Taillow[] = INCBIN_U8("graphics/pokemon/taillow/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/anim_front.4bpp.lz"); const u32 gMonPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/normal.gbapal.lz"); const u32 gMonBackPic_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/back.4bpp.lz"); const u32 gMonShinyPalette_Swellow[] = INCBIN_U32("graphics/pokemon/swellow/shiny.gbapal.lz"); const u8 gMonIcon_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swellow[] = INCBIN_U8("graphics/pokemon/swellow/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TAILLOW #if P_FAMILY_WINGULL @@ -3589,14 +4223,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/back.4bpp.lz"); const u32 gMonShinyPalette_Wingull[] = INCBIN_U32("graphics/pokemon/wingull/shiny.gbapal.lz"); const u8 gMonIcon_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wingull[] = INCBIN_U8("graphics/pokemon/wingull/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/anim_front.4bpp.lz"); const u32 gMonPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/normal.gbapal.lz"); const u32 gMonBackPic_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/back.4bpp.lz"); const u32 gMonShinyPalette_Pelipper[] = INCBIN_U32("graphics/pokemon/pelipper/shiny.gbapal.lz"); const u8 gMonIcon_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pelipper[] = INCBIN_U8("graphics/pokemon/pelipper/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WINGULL #if P_FAMILY_RALTS @@ -3605,21 +4243,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/back.4bpp.lz"); const u32 gMonShinyPalette_Ralts[] = INCBIN_U32("graphics/pokemon/ralts/shiny.gbapal.lz"); const u8 gMonIcon_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ralts[] = INCBIN_U8("graphics/pokemon/ralts/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/anim_front.4bpp.lz"); const u32 gMonPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/normal.gbapal.lz"); const u32 gMonBackPic_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/back.4bpp.lz"); const u32 gMonShinyPalette_Kirlia[] = INCBIN_U32("graphics/pokemon/kirlia/shiny.gbapal.lz"); const u8 gMonIcon_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kirlia[] = INCBIN_U8("graphics/pokemon/kirlia/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/anim_front.4bpp.lz"); const u32 gMonPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/normal.gbapal.lz"); const u32 gMonBackPic_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/back.4bpp.lz"); const u32 gMonShinyPalette_Gardevoir[] = INCBIN_U32("graphics/pokemon/gardevoir/shiny.gbapal.lz"); const u8 gMonIcon_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gardevoir[] = INCBIN_U8("graphics/pokemon/gardevoir/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GardevoirMega[] = INCBIN_U32("graphics/pokemon/gardevoir/mega/front.4bpp.lz"); @@ -3635,7 +4279,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/back.4bpp.lz"); const u32 gMonShinyPalette_Gallade[] = INCBIN_U32("graphics/pokemon/gallade/shiny.gbapal.lz"); const u8 gMonIcon_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gallade[] = INCBIN_U8("graphics/pokemon/gallade/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GalladeMega[] = INCBIN_U32("graphics/pokemon/gallade/mega/front.4bpp.lz"); @@ -3653,14 +4299,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/back.4bpp.lz"); const u32 gMonShinyPalette_Surskit[] = INCBIN_U32("graphics/pokemon/surskit/shiny.gbapal.lz"); const u8 gMonIcon_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Surskit[] = INCBIN_U8("graphics/pokemon/surskit/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/anim_front.4bpp.lz"); const u32 gMonPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/normal.gbapal.lz"); const u32 gMonBackPic_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/back.4bpp.lz"); const u32 gMonShinyPalette_Masquerain[] = INCBIN_U32("graphics/pokemon/masquerain/shiny.gbapal.lz"); const u8 gMonIcon_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Masquerain[] = INCBIN_U8("graphics/pokemon/masquerain/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SURSKIT #if P_FAMILY_SHROOMISH @@ -3669,14 +4319,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/back.4bpp.lz"); const u32 gMonShinyPalette_Shroomish[] = INCBIN_U32("graphics/pokemon/shroomish/shiny.gbapal.lz"); const u8 gMonIcon_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shroomish[] = INCBIN_U8("graphics/pokemon/shroomish/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/anim_front.4bpp.lz"); const u32 gMonPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/normal.gbapal.lz"); const u32 gMonBackPic_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/back.4bpp.lz"); const u32 gMonShinyPalette_Breloom[] = INCBIN_U32("graphics/pokemon/breloom/shiny.gbapal.lz"); const u8 gMonIcon_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Breloom[] = INCBIN_U8("graphics/pokemon/breloom/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SHROOMISH #if P_FAMILY_SLAKOTH @@ -3685,21 +4339,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/back.4bpp.lz"); const u32 gMonShinyPalette_Slakoth[] = INCBIN_U32("graphics/pokemon/slakoth/shiny.gbapal.lz"); const u8 gMonIcon_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slakoth[] = INCBIN_U8("graphics/pokemon/slakoth/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/anim_front.4bpp.lz"); const u32 gMonPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/normal.gbapal.lz"); const u32 gMonBackPic_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/back.4bpp.lz"); const u32 gMonShinyPalette_Vigoroth[] = INCBIN_U32("graphics/pokemon/vigoroth/shiny.gbapal.lz"); const u8 gMonIcon_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vigoroth[] = INCBIN_U8("graphics/pokemon/vigoroth/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/anim_front.4bpp.lz"); const u32 gMonPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/normal.gbapal.lz"); const u32 gMonBackPic_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/back.4bpp.lz"); const u32 gMonShinyPalette_Slaking[] = INCBIN_U32("graphics/pokemon/slaking/shiny.gbapal.lz"); const u8 gMonIcon_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slaking[] = INCBIN_U8("graphics/pokemon/slaking/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SLAKOTH #if P_FAMILY_NINCADA @@ -3708,21 +4368,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/back.4bpp.lz"); const u32 gMonShinyPalette_Nincada[] = INCBIN_U32("graphics/pokemon/nincada/shiny.gbapal.lz"); const u8 gMonIcon_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nincada[] = INCBIN_U8("graphics/pokemon/nincada/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/anim_front.4bpp.lz"); const u32 gMonPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/normal.gbapal.lz"); const u32 gMonBackPic_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/back.4bpp.lz"); const u32 gMonShinyPalette_Ninjask[] = INCBIN_U32("graphics/pokemon/ninjask/shiny.gbapal.lz"); const u8 gMonIcon_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ninjask[] = INCBIN_U8("graphics/pokemon/ninjask/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/anim_front.4bpp.lz"); const u32 gMonPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/normal.gbapal.lz"); const u32 gMonBackPic_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/back.4bpp.lz"); const u32 gMonShinyPalette_Shedinja[] = INCBIN_U32("graphics/pokemon/shedinja/shiny.gbapal.lz"); const u8 gMonIcon_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shedinja[] = INCBIN_U8("graphics/pokemon/shedinja/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NINCADA #if P_FAMILY_WHISMUR @@ -3731,21 +4397,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/back.4bpp.lz"); const u32 gMonShinyPalette_Whismur[] = INCBIN_U32("graphics/pokemon/whismur/shiny.gbapal.lz"); const u8 gMonIcon_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Whismur[] = INCBIN_U8("graphics/pokemon/whismur/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/anim_front.4bpp.lz"); const u32 gMonPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/normal.gbapal.lz"); const u32 gMonBackPic_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/back.4bpp.lz"); const u32 gMonShinyPalette_Loudred[] = INCBIN_U32("graphics/pokemon/loudred/shiny.gbapal.lz"); const u8 gMonIcon_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Loudred[] = INCBIN_U8("graphics/pokemon/loudred/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/anim_front.4bpp.lz"); const u32 gMonPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/normal.gbapal.lz"); const u32 gMonBackPic_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/back.4bpp.lz"); const u32 gMonShinyPalette_Exploud[] = INCBIN_U32("graphics/pokemon/exploud/shiny.gbapal.lz"); const u8 gMonIcon_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Exploud[] = INCBIN_U8("graphics/pokemon/exploud/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WHISMUR #if P_FAMILY_MAKUHITA @@ -3754,14 +4426,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/back.4bpp.lz"); const u32 gMonShinyPalette_Makuhita[] = INCBIN_U32("graphics/pokemon/makuhita/shiny.gbapal.lz"); const u8 gMonIcon_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Makuhita[] = INCBIN_U8("graphics/pokemon/makuhita/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/anim_front.4bpp.lz"); const u32 gMonPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/normal.gbapal.lz"); const u32 gMonBackPic_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/back.4bpp.lz"); const u32 gMonShinyPalette_Hariyama[] = INCBIN_U32("graphics/pokemon/hariyama/shiny.gbapal.lz"); const u8 gMonIcon_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hariyama[] = INCBIN_U8("graphics/pokemon/hariyama/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MAKUHITA #if P_FAMILY_NOSEPASS @@ -3770,7 +4446,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/back.4bpp.lz"); const u32 gMonShinyPalette_Nosepass[] = INCBIN_U32("graphics/pokemon/nosepass/shiny.gbapal.lz"); const u8 gMonIcon_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nosepass[] = INCBIN_U8("graphics/pokemon/nosepass/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/anim_front.4bpp.lz"); @@ -3778,7 +4456,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/back.4bpp.lz"); const u32 gMonShinyPalette_Probopass[] = INCBIN_U32("graphics/pokemon/probopass/shiny.gbapal.lz"); const u8 gMonIcon_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Probopass[] = INCBIN_U8("graphics/pokemon/probopass/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_NOSEPASS @@ -3788,14 +4468,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/back.4bpp.lz"); const u32 gMonShinyPalette_Skitty[] = INCBIN_U32("graphics/pokemon/skitty/shiny.gbapal.lz"); const u8 gMonIcon_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skitty[] = INCBIN_U8("graphics/pokemon/skitty/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/anim_front.4bpp.lz"); const u32 gMonPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/normal.gbapal.lz"); const u32 gMonBackPic_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/back.4bpp.lz"); const u32 gMonShinyPalette_Delcatty[] = INCBIN_U32("graphics/pokemon/delcatty/shiny.gbapal.lz"); const u8 gMonIcon_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Delcatty[] = INCBIN_U8("graphics/pokemon/delcatty/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SKITTY #if P_FAMILY_SABLEYE @@ -3804,7 +4488,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/back.4bpp.lz"); const u32 gMonShinyPalette_Sableye[] = INCBIN_U32("graphics/pokemon/sableye/shiny.gbapal.lz"); const u8 gMonIcon_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sableye[] = INCBIN_U8("graphics/pokemon/sableye/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SableyeMega[] = INCBIN_U32("graphics/pokemon/sableye/mega/front.4bpp.lz"); @@ -3821,7 +4507,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/back.4bpp.lz"); const u32 gMonShinyPalette_Mawile[] = INCBIN_U32("graphics/pokemon/mawile/shiny.gbapal.lz"); const u8 gMonIcon_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mawile[] = INCBIN_U8("graphics/pokemon/mawile/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MawileMega[] = INCBIN_U32("graphics/pokemon/mawile/mega/front.4bpp.lz"); @@ -3838,21 +4526,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Aron[] = INCBIN_U32("graphics/pokemon/aron/back.4bpp.lz"); const u32 gMonShinyPalette_Aron[] = INCBIN_U32("graphics/pokemon/aron/shiny.gbapal.lz"); const u8 gMonIcon_Aron[] = INCBIN_U8("graphics/pokemon/aron/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aron[] = INCBIN_U8("graphics/pokemon/aron/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/anim_front.4bpp.lz"); const u32 gMonPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/normal.gbapal.lz"); const u32 gMonBackPic_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/back.4bpp.lz"); const u32 gMonShinyPalette_Lairon[] = INCBIN_U32("graphics/pokemon/lairon/shiny.gbapal.lz"); const u8 gMonIcon_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lairon[] = INCBIN_U8("graphics/pokemon/lairon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/anim_front.4bpp.lz"); const u32 gMonPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/normal.gbapal.lz"); const u32 gMonBackPic_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/back.4bpp.lz"); const u32 gMonShinyPalette_Aggron[] = INCBIN_U32("graphics/pokemon/aggron/shiny.gbapal.lz"); const u8 gMonIcon_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aggron[] = INCBIN_U8("graphics/pokemon/aggron/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AggronMega[] = INCBIN_U32("graphics/pokemon/aggron/mega/front.4bpp.lz"); @@ -3869,7 +4563,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/back.4bpp.lz"); const u32 gMonShinyPalette_Meditite[] = INCBIN_U32("graphics/pokemon/meditite/shiny.gbapal.lz"); const u8 gMonIcon_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Meditite[] = INCBIN_U8("graphics/pokemon/meditite/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MedititeF[] = INCBIN_U32("graphics/pokemon/meditite/backf.4bpp.lz"); @@ -3879,7 +4575,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/back.4bpp.lz"); const u32 gMonShinyPalette_Medicham[] = INCBIN_U32("graphics/pokemon/medicham/shiny.gbapal.lz"); const u8 gMonIcon_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Medicham[] = INCBIN_U8("graphics/pokemon/medicham/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MedichamF[] = INCBIN_U32("graphics/pokemon/medicham/backf.4bpp.lz"); @@ -3899,14 +4597,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/back.4bpp.lz"); const u32 gMonShinyPalette_Electrike[] = INCBIN_U32("graphics/pokemon/electrike/shiny.gbapal.lz"); const u8 gMonIcon_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Electrike[] = INCBIN_U8("graphics/pokemon/electrike/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/anim_front.4bpp.lz"); const u32 gMonPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/normal.gbapal.lz"); const u32 gMonBackPic_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/back.4bpp.lz"); const u32 gMonShinyPalette_Manectric[] = INCBIN_U32("graphics/pokemon/manectric/shiny.gbapal.lz"); const u8 gMonIcon_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Manectric[] = INCBIN_U8("graphics/pokemon/manectric/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_ManectricMega[] = INCBIN_U32("graphics/pokemon/manectric/mega/front.4bpp.lz"); @@ -3923,7 +4625,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/back.4bpp.lz"); const u32 gMonShinyPalette_Plusle[] = INCBIN_U32("graphics/pokemon/plusle/shiny.gbapal.lz"); const u8 gMonIcon_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Plusle[] = INCBIN_U8("graphics/pokemon/plusle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PLUSLE #if P_FAMILY_MINUN @@ -3932,7 +4636,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Minun[] = INCBIN_U32("graphics/pokemon/minun/back.4bpp.lz"); const u32 gMonShinyPalette_Minun[] = INCBIN_U32("graphics/pokemon/minun/shiny.gbapal.lz"); const u8 gMonIcon_Minun[] = INCBIN_U8("graphics/pokemon/minun/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Minun[] = INCBIN_U8("graphics/pokemon/minun/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MINUN #if P_FAMILY_VOLBEAT_ILLUMISE @@ -3941,14 +4647,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/back.4bpp.lz"); const u32 gMonShinyPalette_Volbeat[] = INCBIN_U32("graphics/pokemon/volbeat/shiny.gbapal.lz"); const u8 gMonIcon_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Volbeat[] = INCBIN_U8("graphics/pokemon/volbeat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/anim_front.4bpp.lz"); const u32 gMonPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/normal.gbapal.lz"); const u32 gMonBackPic_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/back.4bpp.lz"); const u32 gMonShinyPalette_Illumise[] = INCBIN_U32("graphics/pokemon/illumise/shiny.gbapal.lz"); const u8 gMonIcon_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Illumise[] = INCBIN_U8("graphics/pokemon/illumise/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VOLBEAT_ILLUMISE #if P_FAMILY_ROSELIA @@ -3958,7 +4668,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Budew[] = INCBIN_U32("graphics/pokemon/budew/back.4bpp.lz"); const u32 gMonShinyPalette_Budew[] = INCBIN_U32("graphics/pokemon/budew/shiny.gbapal.lz"); const u8 gMonIcon_Budew[] = INCBIN_U8("graphics/pokemon/budew/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Budew[] = INCBIN_U8("graphics/pokemon/budew/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/anim_front.4bpp.lz"); @@ -3966,7 +4678,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/back.4bpp.lz"); const u32 gMonShinyPalette_Roselia[] = INCBIN_U32("graphics/pokemon/roselia/shiny.gbapal.lz"); const u8 gMonIcon_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Roselia[] = INCBIN_U8("graphics/pokemon/roselia/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RoseliaF[] = INCBIN_U32("graphics/pokemon/roselia/backf.4bpp.lz"); @@ -3977,7 +4691,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/back.4bpp.lz"); const u32 gMonShinyPalette_Roserade[] = INCBIN_U32("graphics/pokemon/roserade/shiny.gbapal.lz"); const u8 gMonIcon_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Roserade[] = INCBIN_U8("graphics/pokemon/roserade/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RoseradeF[] = INCBIN_U32("graphics/pokemon/roserade/backf.4bpp.lz"); @@ -3990,7 +4706,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/back.4bpp.lz"); const u32 gMonShinyPalette_Gulpin[] = INCBIN_U32("graphics/pokemon/gulpin/shiny.gbapal.lz"); const u8 gMonIcon_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gulpin[] = INCBIN_U8("graphics/pokemon/gulpin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GulpinF[] = INCBIN_U32("graphics/pokemon/gulpin/backf.4bpp.lz"); @@ -4000,7 +4718,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/back.4bpp.lz"); const u32 gMonShinyPalette_Swalot[] = INCBIN_U32("graphics/pokemon/swalot/shiny.gbapal.lz"); const u8 gMonIcon_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swalot[] = INCBIN_U8("graphics/pokemon/swalot/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SwalotF[] = INCBIN_U32("graphics/pokemon/swalot/backf.4bpp.lz"); @@ -4012,14 +4732,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/back.4bpp.lz"); const u32 gMonShinyPalette_Carvanha[] = INCBIN_U32("graphics/pokemon/carvanha/shiny.gbapal.lz"); const u8 gMonIcon_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Carvanha[] = INCBIN_U8("graphics/pokemon/carvanha/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/anim_front.4bpp.lz"); const u32 gMonPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/normal.gbapal.lz"); const u32 gMonBackPic_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/back.4bpp.lz"); const u32 gMonShinyPalette_Sharpedo[] = INCBIN_U32("graphics/pokemon/sharpedo/shiny.gbapal.lz"); const u8 gMonIcon_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sharpedo[] = INCBIN_U8("graphics/pokemon/sharpedo/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SharpedoMega[] = INCBIN_U32("graphics/pokemon/sharpedo/mega/front.4bpp.lz"); @@ -4036,14 +4760,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/back.4bpp.lz"); const u32 gMonShinyPalette_Wailmer[] = INCBIN_U32("graphics/pokemon/wailmer/shiny.gbapal.lz"); const u8 gMonIcon_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wailmer[] = INCBIN_U8("graphics/pokemon/wailmer/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/anim_front.4bpp.lz"); const u32 gMonPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/normal.gbapal.lz"); const u32 gMonBackPic_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/back.4bpp.lz"); const u32 gMonShinyPalette_Wailord[] = INCBIN_U32("graphics/pokemon/wailord/shiny.gbapal.lz"); const u8 gMonIcon_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wailord[] = INCBIN_U8("graphics/pokemon/wailord/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WAILMER #if P_FAMILY_NUMEL @@ -4052,7 +4780,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Numel[] = INCBIN_U32("graphics/pokemon/numel/back.4bpp.lz"); const u32 gMonShinyPalette_Numel[] = INCBIN_U32("graphics/pokemon/numel/shiny.gbapal.lz"); const u8 gMonIcon_Numel[] = INCBIN_U8("graphics/pokemon/numel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Numel[] = INCBIN_U8("graphics/pokemon/numel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/anim_frontf.4bpp.lz"); const u32 gMonBackPic_NumelF[] = INCBIN_U32("graphics/pokemon/numel/backf.4bpp.lz"); @@ -4062,7 +4792,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/back.4bpp.lz"); const u32 gMonShinyPalette_Camerupt[] = INCBIN_U32("graphics/pokemon/camerupt/shiny.gbapal.lz"); const u8 gMonIcon_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Camerupt[] = INCBIN_U8("graphics/pokemon/camerupt/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/anim_frontf.4bpp.lz"); const u32 gMonBackPic_CameruptF[] = INCBIN_U32("graphics/pokemon/camerupt/backf.4bpp.lz"); @@ -4082,7 +4814,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/back.4bpp.lz"); const u32 gMonShinyPalette_Torkoal[] = INCBIN_U32("graphics/pokemon/torkoal/shiny.gbapal.lz"); const u8 gMonIcon_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Torkoal[] = INCBIN_U8("graphics/pokemon/torkoal/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TORKOAL #if P_FAMILY_SPOINK @@ -4091,14 +4825,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/back.4bpp.lz"); const u32 gMonShinyPalette_Spoink[] = INCBIN_U32("graphics/pokemon/spoink/shiny.gbapal.lz"); const u8 gMonIcon_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spoink[] = INCBIN_U8("graphics/pokemon/spoink/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/anim_front.4bpp.lz"); const u32 gMonPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/normal.gbapal.lz"); const u32 gMonBackPic_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/back.4bpp.lz"); const u32 gMonShinyPalette_Grumpig[] = INCBIN_U32("graphics/pokemon/grumpig/shiny.gbapal.lz"); const u8 gMonIcon_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grumpig[] = INCBIN_U8("graphics/pokemon/grumpig/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPOINK #if P_FAMILY_SPINDA @@ -4107,7 +4845,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/back.4bpp.lz"); const u32 gMonShinyPalette_Spinda[] = INCBIN_U32("graphics/pokemon/spinda/shiny.gbapal.lz"); const u8 gMonIcon_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spinda[] = INCBIN_U8("graphics/pokemon/spinda/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPINDA #if P_FAMILY_TRAPINCH @@ -4116,21 +4856,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/back.4bpp.lz"); const u32 gMonShinyPalette_Trapinch[] = INCBIN_U32("graphics/pokemon/trapinch/shiny.gbapal.lz"); const u8 gMonIcon_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Trapinch[] = INCBIN_U8("graphics/pokemon/trapinch/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/anim_front.4bpp.lz"); const u32 gMonPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/normal.gbapal.lz"); const u32 gMonBackPic_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/back.4bpp.lz"); const u32 gMonShinyPalette_Vibrava[] = INCBIN_U32("graphics/pokemon/vibrava/shiny.gbapal.lz"); const u8 gMonIcon_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vibrava[] = INCBIN_U8("graphics/pokemon/vibrava/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/anim_front.4bpp.lz"); const u32 gMonPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/normal.gbapal.lz"); const u32 gMonBackPic_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/back.4bpp.lz"); const u32 gMonShinyPalette_Flygon[] = INCBIN_U32("graphics/pokemon/flygon/shiny.gbapal.lz"); const u8 gMonIcon_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Flygon[] = INCBIN_U8("graphics/pokemon/flygon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TRAPINCH #if P_FAMILY_CACNEA @@ -4139,14 +4885,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/back.4bpp.lz"); const u32 gMonShinyPalette_Cacnea[] = INCBIN_U32("graphics/pokemon/cacnea/shiny.gbapal.lz"); const u8 gMonIcon_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cacnea[] = INCBIN_U8("graphics/pokemon/cacnea/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/anim_front.4bpp.lz"); const u32 gMonPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/normal.gbapal.lz"); const u32 gMonBackPic_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/back.4bpp.lz"); const u32 gMonShinyPalette_Cacturne[] = INCBIN_U32("graphics/pokemon/cacturne/shiny.gbapal.lz"); const u8 gMonIcon_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cacturne[] = INCBIN_U8("graphics/pokemon/cacturne/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CacturneF[] = INCBIN_U32("graphics/pokemon/cacturne/anim_frontf.4bpp.lz"); #endif //P_FAMILY_CACNEA @@ -4157,14 +4907,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/back.4bpp.lz"); const u32 gMonShinyPalette_Swablu[] = INCBIN_U32("graphics/pokemon/swablu/shiny.gbapal.lz"); const u8 gMonIcon_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swablu[] = INCBIN_U8("graphics/pokemon/swablu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/anim_front.4bpp.lz"); const u32 gMonPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/normal.gbapal.lz"); const u32 gMonBackPic_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/back.4bpp.lz"); const u32 gMonShinyPalette_Altaria[] = INCBIN_U32("graphics/pokemon/altaria/shiny.gbapal.lz"); const u8 gMonIcon_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Altaria[] = INCBIN_U8("graphics/pokemon/altaria/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AltariaMega[] = INCBIN_U32("graphics/pokemon/altaria/mega/front.4bpp.lz"); @@ -4181,7 +4935,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/back.4bpp.lz"); const u32 gMonShinyPalette_Zangoose[] = INCBIN_U32("graphics/pokemon/zangoose/shiny.gbapal.lz"); const u8 gMonIcon_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zangoose[] = INCBIN_U8("graphics/pokemon/zangoose/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ZANGOOSE #if P_FAMILY_SEVIPER @@ -4190,7 +4946,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/back.4bpp.lz"); const u32 gMonShinyPalette_Seviper[] = INCBIN_U32("graphics/pokemon/seviper/shiny.gbapal.lz"); const u8 gMonIcon_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Seviper[] = INCBIN_U8("graphics/pokemon/seviper/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SEVIPER #if P_FAMILY_LUNATONE @@ -4199,7 +4957,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/back.4bpp.lz"); const u32 gMonShinyPalette_Lunatone[] = INCBIN_U32("graphics/pokemon/lunatone/shiny.gbapal.lz"); const u8 gMonIcon_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lunatone[] = INCBIN_U8("graphics/pokemon/lunatone/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LUNATONE #if P_FAMILY_SOLROCK @@ -4208,7 +4968,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/back.4bpp.lz"); const u32 gMonShinyPalette_Solrock[] = INCBIN_U32("graphics/pokemon/solrock/shiny.gbapal.lz"); const u8 gMonIcon_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Solrock[] = INCBIN_U8("graphics/pokemon/solrock/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SOLROCK #if P_FAMILY_BARBOACH @@ -4217,14 +4979,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/back.4bpp.lz"); const u32 gMonShinyPalette_Barboach[] = INCBIN_U32("graphics/pokemon/barboach/shiny.gbapal.lz"); const u8 gMonIcon_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Barboach[] = INCBIN_U8("graphics/pokemon/barboach/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/anim_front.4bpp.lz"); const u32 gMonPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/normal.gbapal.lz"); const u32 gMonBackPic_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/back.4bpp.lz"); const u32 gMonShinyPalette_Whiscash[] = INCBIN_U32("graphics/pokemon/whiscash/shiny.gbapal.lz"); const u8 gMonIcon_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Whiscash[] = INCBIN_U8("graphics/pokemon/whiscash/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BARBOACH #if P_FAMILY_CORPHISH @@ -4233,14 +4999,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/back.4bpp.lz"); const u32 gMonShinyPalette_Corphish[] = INCBIN_U32("graphics/pokemon/corphish/shiny.gbapal.lz"); const u8 gMonIcon_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Corphish[] = INCBIN_U8("graphics/pokemon/corphish/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/anim_front.4bpp.lz"); const u32 gMonPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/normal.gbapal.lz"); const u32 gMonBackPic_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/back.4bpp.lz"); const u32 gMonShinyPalette_Crawdaunt[] = INCBIN_U32("graphics/pokemon/crawdaunt/shiny.gbapal.lz"); const u8 gMonIcon_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Crawdaunt[] = INCBIN_U8("graphics/pokemon/crawdaunt/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CORPHISH #if P_FAMILY_BALTOY @@ -4249,14 +5019,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/back.4bpp.lz"); const u32 gMonShinyPalette_Baltoy[] = INCBIN_U32("graphics/pokemon/baltoy/shiny.gbapal.lz"); const u8 gMonIcon_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Baltoy[] = INCBIN_U8("graphics/pokemon/baltoy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/anim_front.4bpp.lz"); const u32 gMonPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/normal.gbapal.lz"); const u32 gMonBackPic_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/back.4bpp.lz"); const u32 gMonShinyPalette_Claydol[] = INCBIN_U32("graphics/pokemon/claydol/shiny.gbapal.lz"); const u8 gMonIcon_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Claydol[] = INCBIN_U8("graphics/pokemon/claydol/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BALTOY #if P_FAMILY_LILEEP @@ -4265,14 +5039,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/back.4bpp.lz"); const u32 gMonShinyPalette_Lileep[] = INCBIN_U32("graphics/pokemon/lileep/shiny.gbapal.lz"); const u8 gMonIcon_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lileep[] = INCBIN_U8("graphics/pokemon/lileep/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/anim_front.4bpp.lz"); const u32 gMonPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/normal.gbapal.lz"); const u32 gMonBackPic_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/back.4bpp.lz"); const u32 gMonShinyPalette_Cradily[] = INCBIN_U32("graphics/pokemon/cradily/shiny.gbapal.lz"); const u8 gMonIcon_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cradily[] = INCBIN_U8("graphics/pokemon/cradily/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LILEEP #if P_FAMILY_ANORITH @@ -4281,14 +5059,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/back.4bpp.lz"); const u32 gMonShinyPalette_Anorith[] = INCBIN_U32("graphics/pokemon/anorith/shiny.gbapal.lz"); const u8 gMonIcon_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Anorith[] = INCBIN_U8("graphics/pokemon/anorith/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/anim_front.4bpp.lz"); const u32 gMonPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/normal.gbapal.lz"); const u32 gMonBackPic_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/back.4bpp.lz"); const u32 gMonShinyPalette_Armaldo[] = INCBIN_U32("graphics/pokemon/armaldo/shiny.gbapal.lz"); const u8 gMonIcon_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Armaldo[] = INCBIN_U8("graphics/pokemon/armaldo/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ANORITH #if P_FAMILY_FEEBAS @@ -4297,14 +5079,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/back.4bpp.lz"); const u32 gMonShinyPalette_Feebas[] = INCBIN_U32("graphics/pokemon/feebas/shiny.gbapal.lz"); const u8 gMonIcon_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Feebas[] = INCBIN_U8("graphics/pokemon/feebas/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/anim_front.4bpp.lz"); const u32 gMonPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/normal.gbapal.lz"); const u32 gMonBackPic_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/back.4bpp.lz"); const u32 gMonShinyPalette_Milotic[] = INCBIN_U32("graphics/pokemon/milotic/shiny.gbapal.lz"); const u8 gMonIcon_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Milotic[] = INCBIN_U8("graphics/pokemon/milotic/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/anim_frontf.4bpp.lz"); const u32 gMonBackPic_MiloticF[] = INCBIN_U32("graphics/pokemon/milotic/backf.4bpp.lz"); @@ -4316,7 +5102,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/back.4bpp.lz"); const u32 gMonShinyPalette_CastformNormal[] = INCBIN_U32("graphics/pokemon/castform/shiny.gbapal.lz"); const u8 gMonIcon_CastformNormal[] = INCBIN_U8("graphics/pokemon/castform/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Castform[] = INCBIN_U8("graphics/pokemon/castform/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/anim_front.4bpp.lz"); const u32 gMonPalette_CastformSunny[] = INCBIN_U32("graphics/pokemon/castform/sunny/normal.gbapal.lz"); @@ -4343,7 +5131,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/back.4bpp.lz"); const u32 gMonShinyPalette_Kecleon[] = INCBIN_U32("graphics/pokemon/kecleon/shiny.gbapal.lz"); const u8 gMonIcon_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kecleon[] = INCBIN_U8("graphics/pokemon/kecleon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KECLEON #if P_FAMILY_SHUPPET @@ -4352,14 +5142,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/back.4bpp.lz"); const u32 gMonShinyPalette_Shuppet[] = INCBIN_U32("graphics/pokemon/shuppet/shiny.gbapal.lz"); const u8 gMonIcon_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shuppet[] = INCBIN_U8("graphics/pokemon/shuppet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/anim_front.4bpp.lz"); const u32 gMonPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/normal.gbapal.lz"); const u32 gMonBackPic_Banette[] = INCBIN_U32("graphics/pokemon/banette/back.4bpp.lz"); const u32 gMonShinyPalette_Banette[] = INCBIN_U32("graphics/pokemon/banette/shiny.gbapal.lz"); const u8 gMonIcon_Banette[] = INCBIN_U8("graphics/pokemon/banette/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Banette[] = INCBIN_U8("graphics/pokemon/banette/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_BanetteMega[] = INCBIN_U32("graphics/pokemon/banette/mega/front.4bpp.lz"); @@ -4376,14 +5170,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/back.4bpp.lz"); const u32 gMonShinyPalette_Duskull[] = INCBIN_U32("graphics/pokemon/duskull/shiny.gbapal.lz"); const u8 gMonIcon_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Duskull[] = INCBIN_U8("graphics/pokemon/duskull/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/anim_front.4bpp.lz"); const u32 gMonPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/normal.gbapal.lz"); const u32 gMonBackPic_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/back.4bpp.lz"); const u32 gMonShinyPalette_Dusclops[] = INCBIN_U32("graphics/pokemon/dusclops/shiny.gbapal.lz"); const u8 gMonIcon_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dusclops[] = INCBIN_U8("graphics/pokemon/dusclops/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/anim_front.4bpp.lz"); @@ -4391,7 +5189,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/back.4bpp.lz"); const u32 gMonShinyPalette_Dusknoir[] = INCBIN_U32("graphics/pokemon/dusknoir/shiny.gbapal.lz"); const u8 gMonIcon_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dusknoir[] = INCBIN_U8("graphics/pokemon/dusknoir/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_DUSKULL @@ -4401,7 +5201,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/back.4bpp.lz"); const u32 gMonShinyPalette_Tropius[] = INCBIN_U32("graphics/pokemon/tropius/shiny.gbapal.lz"); const u8 gMonIcon_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tropius[] = INCBIN_U8("graphics/pokemon/tropius/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TROPIUS #if P_FAMILY_CHIMECHO @@ -4411,7 +5213,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/back.4bpp.lz"); const u32 gMonShinyPalette_Chingling[] = INCBIN_U32("graphics/pokemon/chingling/shiny.gbapal.lz"); const u8 gMonIcon_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chingling[] = INCBIN_U8("graphics/pokemon/chingling/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz"); @@ -4419,7 +5223,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/back.4bpp.lz"); const u32 gMonShinyPalette_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/shiny.gbapal.lz"); const u8 gMonIcon_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHIMECHO #if P_FAMILY_ABSOL @@ -4428,7 +5234,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Absol[] = INCBIN_U32("graphics/pokemon/absol/back.4bpp.lz"); const u32 gMonShinyPalette_Absol[] = INCBIN_U32("graphics/pokemon/absol/shiny.gbapal.lz"); const u8 gMonIcon_Absol[] = INCBIN_U8("graphics/pokemon/absol/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Absol[] = INCBIN_U8("graphics/pokemon/absol/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AbsolMega[] = INCBIN_U32("graphics/pokemon/absol/mega/front.4bpp.lz"); @@ -4445,14 +5253,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/back.4bpp.lz"); const u32 gMonShinyPalette_Snorunt[] = INCBIN_U32("graphics/pokemon/snorunt/shiny.gbapal.lz"); const u8 gMonIcon_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Snorunt[] = INCBIN_U8("graphics/pokemon/snorunt/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/anim_front.4bpp.lz"); const u32 gMonPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/normal.gbapal.lz"); const u32 gMonBackPic_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/back.4bpp.lz"); const u32 gMonShinyPalette_Glalie[] = INCBIN_U32("graphics/pokemon/glalie/shiny.gbapal.lz"); const u8 gMonIcon_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Glalie[] = INCBIN_U8("graphics/pokemon/glalie/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_GlalieMega[] = INCBIN_U32("graphics/pokemon/glalie/mega/front.4bpp.lz"); @@ -4468,7 +5280,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/back.4bpp.lz"); const u32 gMonShinyPalette_Froslass[] = INCBIN_U32("graphics/pokemon/froslass/shiny.gbapal.lz"); const u8 gMonIcon_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Froslass[] = INCBIN_U8("graphics/pokemon/froslass/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_4_CROSS_EVOS #endif //P_FAMILY_SNORUNT @@ -4478,21 +5292,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/back.4bpp.lz"); const u32 gMonShinyPalette_Spheal[] = INCBIN_U32("graphics/pokemon/spheal/shiny.gbapal.lz"); const u8 gMonIcon_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spheal[] = INCBIN_U8("graphics/pokemon/spheal/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/anim_front.4bpp.lz"); const u32 gMonPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/normal.gbapal.lz"); const u32 gMonBackPic_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/back.4bpp.lz"); const u32 gMonShinyPalette_Sealeo[] = INCBIN_U32("graphics/pokemon/sealeo/shiny.gbapal.lz"); const u8 gMonIcon_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sealeo[] = INCBIN_U8("graphics/pokemon/sealeo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/anim_front.4bpp.lz"); const u32 gMonPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/normal.gbapal.lz"); const u32 gMonBackPic_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/back.4bpp.lz"); const u32 gMonShinyPalette_Walrein[] = INCBIN_U32("graphics/pokemon/walrein/shiny.gbapal.lz"); const u8 gMonIcon_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Walrein[] = INCBIN_U8("graphics/pokemon/walrein/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPHEAL #if P_FAMILY_CLAMPERL @@ -4501,21 +5321,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/back.4bpp.lz"); const u32 gMonShinyPalette_Clamperl[] = INCBIN_U32("graphics/pokemon/clamperl/shiny.gbapal.lz"); const u8 gMonIcon_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Clamperl[] = INCBIN_U8("graphics/pokemon/clamperl/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/anim_front.4bpp.lz"); const u32 gMonPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/normal.gbapal.lz"); const u32 gMonBackPic_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/back.4bpp.lz"); const u32 gMonShinyPalette_Huntail[] = INCBIN_U32("graphics/pokemon/huntail/shiny.gbapal.lz"); const u8 gMonIcon_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Huntail[] = INCBIN_U8("graphics/pokemon/huntail/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/anim_front.4bpp.lz"); const u32 gMonPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/normal.gbapal.lz"); const u32 gMonBackPic_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/back.4bpp.lz"); const u32 gMonShinyPalette_Gorebyss[] = INCBIN_U32("graphics/pokemon/gorebyss/shiny.gbapal.lz"); const u8 gMonIcon_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gorebyss[] = INCBIN_U8("graphics/pokemon/gorebyss/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CLAMPERL #if P_FAMILY_RELICANTH @@ -4524,7 +5350,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/back.4bpp.lz"); const u32 gMonShinyPalette_Relicanth[] = INCBIN_U32("graphics/pokemon/relicanth/shiny.gbapal.lz"); const u8 gMonIcon_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Relicanth[] = INCBIN_U8("graphics/pokemon/relicanth/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/anim_frontf.4bpp.lz"); const u32 gMonBackPic_RelicanthF[] = INCBIN_U32("graphics/pokemon/relicanth/backf.4bpp.lz"); @@ -4536,7 +5364,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/back.4bpp.lz"); const u32 gMonShinyPalette_Luvdisc[] = INCBIN_U32("graphics/pokemon/luvdisc/shiny.gbapal.lz"); const u8 gMonIcon_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Luvdisc[] = INCBIN_U8("graphics/pokemon/luvdisc/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LUVDISC #if P_FAMILY_BAGON @@ -4545,21 +5375,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/back.4bpp.lz"); const u32 gMonShinyPalette_Bagon[] = INCBIN_U32("graphics/pokemon/bagon/shiny.gbapal.lz"); const u8 gMonIcon_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bagon[] = INCBIN_U8("graphics/pokemon/bagon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/anim_front.4bpp.lz"); const u32 gMonPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/normal.gbapal.lz"); const u32 gMonBackPic_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/back.4bpp.lz"); const u32 gMonShinyPalette_Shelgon[] = INCBIN_U32("graphics/pokemon/shelgon/shiny.gbapal.lz"); const u8 gMonIcon_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shelgon[] = INCBIN_U8("graphics/pokemon/shelgon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/anim_front.4bpp.lz"); const u32 gMonPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/normal.gbapal.lz"); const u32 gMonBackPic_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/back.4bpp.lz"); const u32 gMonShinyPalette_Salamence[] = INCBIN_U32("graphics/pokemon/salamence/shiny.gbapal.lz"); const u8 gMonIcon_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Salamence[] = INCBIN_U8("graphics/pokemon/salamence/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_SalamenceMega[] = INCBIN_U32("graphics/pokemon/salamence/mega/front.4bpp.lz"); @@ -4576,21 +5412,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/back.4bpp.lz"); const u32 gMonShinyPalette_Beldum[] = INCBIN_U32("graphics/pokemon/beldum/shiny.gbapal.lz"); const u8 gMonIcon_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Beldum[] = INCBIN_U8("graphics/pokemon/beldum/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/anim_front.4bpp.lz"); const u32 gMonPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/normal.gbapal.lz"); const u32 gMonBackPic_Metang[] = INCBIN_U32("graphics/pokemon/metang/back.4bpp.lz"); const u32 gMonShinyPalette_Metang[] = INCBIN_U32("graphics/pokemon/metang/shiny.gbapal.lz"); const u8 gMonIcon_Metang[] = INCBIN_U8("graphics/pokemon/metang/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Metang[] = INCBIN_U8("graphics/pokemon/metang/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/anim_front.4bpp.lz"); const u32 gMonPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/normal.gbapal.lz"); const u32 gMonBackPic_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/back.4bpp.lz"); const u32 gMonShinyPalette_Metagross[] = INCBIN_U32("graphics/pokemon/metagross/shiny.gbapal.lz"); const u8 gMonIcon_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Metagross[] = INCBIN_U8("graphics/pokemon/metagross/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_MetagrossMega[] = INCBIN_U32("graphics/pokemon/metagross/mega/front.4bpp.lz"); @@ -4607,7 +5449,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/back.4bpp.lz"); const u32 gMonShinyPalette_Regirock[] = INCBIN_U32("graphics/pokemon/regirock/shiny.gbapal.lz"); const u8 gMonIcon_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Regirock[] = INCBIN_U8("graphics/pokemon/regirock/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_REGIROCK #if P_FAMILY_REGICE @@ -4616,7 +5460,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Regice[] = INCBIN_U32("graphics/pokemon/regice/back.4bpp.lz"); const u32 gMonShinyPalette_Regice[] = INCBIN_U32("graphics/pokemon/regice/shiny.gbapal.lz"); const u8 gMonIcon_Regice[] = INCBIN_U8("graphics/pokemon/regice/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Regice[] = INCBIN_U8("graphics/pokemon/regice/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_REGICE #if P_FAMILY_REGISTEEL @@ -4625,7 +5471,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/back.4bpp.lz"); const u32 gMonShinyPalette_Registeel[] = INCBIN_U32("graphics/pokemon/registeel/shiny.gbapal.lz"); const u8 gMonIcon_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Registeel[] = INCBIN_U8("graphics/pokemon/registeel/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_REGISTEEL #if P_FAMILY_LATIAS @@ -4634,7 +5482,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Latias[] = INCBIN_U32("graphics/pokemon/latias/back.4bpp.lz"); const u32 gMonShinyPalette_Latias[] = INCBIN_U32("graphics/pokemon/latias/shiny.gbapal.lz"); const u8 gMonIcon_Latias[] = INCBIN_U8("graphics/pokemon/latias/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Latias[] = INCBIN_U8("graphics/pokemon/latias/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LatiasMega[] = INCBIN_U32("graphics/pokemon/latias/mega/front.4bpp.lz"); @@ -4651,7 +5501,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Latios[] = INCBIN_U32("graphics/pokemon/latios/back.4bpp.lz"); const u32 gMonShinyPalette_Latios[] = INCBIN_U32("graphics/pokemon/latios/shiny.gbapal.lz"); const u8 gMonIcon_Latios[] = INCBIN_U8("graphics/pokemon/latios/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Latios[] = INCBIN_U8("graphics/pokemon/latios/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LatiosMega[] = INCBIN_U32("graphics/pokemon/latios/mega/front.4bpp.lz"); @@ -4668,7 +5520,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/back.4bpp.lz"); const u32 gMonShinyPalette_Kyogre[] = INCBIN_U32("graphics/pokemon/kyogre/shiny.gbapal.lz"); const u8 gMonIcon_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kyogre[] = INCBIN_U8("graphics/pokemon/kyogre/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_PRIMAL_REVERSIONS const u32 gMonFrontPic_KyogrePrimal[] = INCBIN_U32("graphics/pokemon/kyogre/primal/front.4bpp.lz"); @@ -4685,7 +5539,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/back.4bpp.lz"); const u32 gMonShinyPalette_Groudon[] = INCBIN_U32("graphics/pokemon/groudon/shiny.gbapal.lz"); const u8 gMonIcon_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Groudon[] = INCBIN_U8("graphics/pokemon/groudon/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_PRIMAL_REVERSIONS const u32 gMonFrontPic_GroudonPrimal[] = INCBIN_U32("graphics/pokemon/groudon/primal/front.4bpp.lz"); @@ -4702,7 +5558,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/back.4bpp.lz"); const u32 gMonShinyPalette_Rayquaza[] = INCBIN_U32("graphics/pokemon/rayquaza/shiny.gbapal.lz"); const u8 gMonIcon_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rayquaza[] = INCBIN_U8("graphics/pokemon/rayquaza/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_RayquazaMega[] = INCBIN_U32("graphics/pokemon/rayquaza/mega/front.4bpp.lz"); @@ -4719,7 +5577,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/back.4bpp.lz"); const u32 gMonShinyPalette_Jirachi[] = INCBIN_U32("graphics/pokemon/jirachi/shiny.gbapal.lz"); const u8 gMonIcon_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Jirachi[] = INCBIN_U8("graphics/pokemon/jirachi/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_JIRACHI #if P_FAMILY_DEOXYS @@ -4728,7 +5588,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/back.4bpp.lz"); const u32 gMonShinyPalette_DeoxysNormal[] = INCBIN_U32("graphics/pokemon/deoxys/shiny.gbapal.lz"); const u8 gMonIcon_DeoxysNormal[] = INCBIN_U8("graphics/pokemon/deoxys/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Deoxys[] = INCBIN_U8("graphics/pokemon/deoxys/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/anim_front.4bpp.lz"); const u32 gMonPalette_DeoxysAttack[] = INCBIN_U32("graphics/pokemon/deoxys/attack/normal.gbapal.lz"); @@ -4755,21 +5617,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/back.4bpp.lz"); const u32 gMonShinyPalette_Turtwig[] = INCBIN_U32("graphics/pokemon/turtwig/shiny.gbapal.lz"); const u8 gMonIcon_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Turtwig[] = INCBIN_U8("graphics/pokemon/turtwig/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/anim_front.4bpp.lz"); const u32 gMonPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/normal.gbapal.lz"); const u32 gMonBackPic_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/back.4bpp.lz"); const u32 gMonShinyPalette_Grotle[] = INCBIN_U32("graphics/pokemon/grotle/shiny.gbapal.lz"); const u8 gMonIcon_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grotle[] = INCBIN_U8("graphics/pokemon/grotle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/anim_front.4bpp.lz"); const u32 gMonPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/normal.gbapal.lz"); const u32 gMonBackPic_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/back.4bpp.lz"); const u32 gMonShinyPalette_Torterra[] = INCBIN_U32("graphics/pokemon/torterra/shiny.gbapal.lz"); const u8 gMonIcon_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Torterra[] = INCBIN_U8("graphics/pokemon/torterra/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TURTWIG #if P_FAMILY_CHIMCHAR @@ -4778,21 +5646,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/back.4bpp.lz"); const u32 gMonShinyPalette_Chimchar[] = INCBIN_U32("graphics/pokemon/chimchar/shiny.gbapal.lz"); const u8 gMonIcon_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chimchar[] = INCBIN_U8("graphics/pokemon/chimchar/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/anim_front.4bpp.lz"); const u32 gMonPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/normal.gbapal.lz"); const u32 gMonBackPic_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/back.4bpp.lz"); const u32 gMonShinyPalette_Monferno[] = INCBIN_U32("graphics/pokemon/monferno/shiny.gbapal.lz"); const u8 gMonIcon_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Monferno[] = INCBIN_U8("graphics/pokemon/monferno/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/anim_front.4bpp.lz"); const u32 gMonPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/normal.gbapal.lz"); const u32 gMonBackPic_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/back.4bpp.lz"); const u32 gMonShinyPalette_Infernape[] = INCBIN_U32("graphics/pokemon/infernape/shiny.gbapal.lz"); const u8 gMonIcon_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Infernape[] = INCBIN_U8("graphics/pokemon/infernape/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHIMCHAR #if P_FAMILY_PIPLUP @@ -4801,21 +5675,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/back.4bpp.lz"); const u32 gMonShinyPalette_Piplup[] = INCBIN_U32("graphics/pokemon/piplup/shiny.gbapal.lz"); const u8 gMonIcon_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Piplup[] = INCBIN_U8("graphics/pokemon/piplup/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/anim_front.4bpp.lz"); const u32 gMonPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/normal.gbapal.lz"); const u32 gMonBackPic_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/back.4bpp.lz"); const u32 gMonShinyPalette_Prinplup[] = INCBIN_U32("graphics/pokemon/prinplup/shiny.gbapal.lz"); const u8 gMonIcon_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Prinplup[] = INCBIN_U8("graphics/pokemon/prinplup/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/anim_front.4bpp.lz"); const u32 gMonPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/normal.gbapal.lz"); const u32 gMonBackPic_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/back.4bpp.lz"); const u32 gMonShinyPalette_Empoleon[] = INCBIN_U32("graphics/pokemon/empoleon/shiny.gbapal.lz"); const u8 gMonIcon_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Empoleon[] = INCBIN_U8("graphics/pokemon/empoleon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PIPLUP #if P_FAMILY_STARLY @@ -4824,7 +5704,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Starly[] = INCBIN_U32("graphics/pokemon/starly/back.4bpp.lz"); const u32 gMonShinyPalette_Starly[] = INCBIN_U32("graphics/pokemon/starly/shiny.gbapal.lz"); const u8 gMonIcon_Starly[] = INCBIN_U8("graphics/pokemon/starly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Starly[] = INCBIN_U8("graphics/pokemon/starly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/anim_frontf.4bpp.lz"); const u32 gMonBackPic_StarlyF[] = INCBIN_U32("graphics/pokemon/starly/backf.4bpp.lz"); @@ -4834,7 +5716,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); const u32 gMonShinyPalette_Staravia[] = INCBIN_U32("graphics/pokemon/staravia/shiny.gbapal.lz"); const u8 gMonIcon_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Staravia[] = INCBIN_U8("graphics/pokemon/staravia/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/anim_frontf.4bpp.lz"); const u32 gMonBackPic_StaraviaF[] = INCBIN_U32("graphics/pokemon/staravia/back.4bpp.lz"); @@ -4844,7 +5728,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/back.4bpp.lz"); const u32 gMonShinyPalette_Staraptor[] = INCBIN_U32("graphics/pokemon/staraptor/shiny.gbapal.lz"); const u8 gMonIcon_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Staraptor[] = INCBIN_U8("graphics/pokemon/staraptor/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_StaraptorF[] = INCBIN_U32("graphics/pokemon/staraptor/anim_frontf.4bpp.lz"); #endif //P_FAMILY_STARLY @@ -4855,7 +5741,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/back.4bpp.lz"); const u32 gMonShinyPalette_Bidoof[] = INCBIN_U32("graphics/pokemon/bidoof/shiny.gbapal.lz"); const u8 gMonIcon_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bidoof[] = INCBIN_U8("graphics/pokemon/bidoof/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/anim_frontf.4bpp.lz"); const u32 gMonBackPic_BidoofF[] = INCBIN_U32("graphics/pokemon/bidoof/backf.4bpp.lz"); @@ -4865,7 +5753,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/back.4bpp.lz"); const u32 gMonShinyPalette_Bibarel[] = INCBIN_U32("graphics/pokemon/bibarel/shiny.gbapal.lz"); const u8 gMonIcon_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bibarel[] = INCBIN_U8("graphics/pokemon/bibarel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BibarelF[] = INCBIN_U32("graphics/pokemon/bibarel/anim_frontf.4bpp.lz"); #endif //P_FAMILY_BIDOOF @@ -4876,7 +5766,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/back.4bpp.lz"); const u32 gMonShinyPalette_Kricketot[] = INCBIN_U32("graphics/pokemon/kricketot/shiny.gbapal.lz"); const u8 gMonIcon_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kricketot[] = INCBIN_U8("graphics/pokemon/kricketot/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/anim_frontf.4bpp.lz"); const u32 gMonBackPic_KricketotF[] = INCBIN_U32("graphics/pokemon/kricketot/backf.4bpp.lz"); @@ -4886,7 +5778,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/back.4bpp.lz"); const u32 gMonShinyPalette_Kricketune[] = INCBIN_U32("graphics/pokemon/kricketune/shiny.gbapal.lz"); const u8 gMonIcon_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kricketune[] = INCBIN_U8("graphics/pokemon/kricketune/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/anim_frontf.4bpp.lz"); const u32 gMonBackPic_KricketuneF[] = INCBIN_U32("graphics/pokemon/kricketune/backf.4bpp.lz"); @@ -4898,7 +5792,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/back.4bpp.lz"); const u32 gMonShinyPalette_Shinx[] = INCBIN_U32("graphics/pokemon/shinx/shiny.gbapal.lz"); const u8 gMonIcon_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shinx[] = INCBIN_U8("graphics/pokemon/shinx/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ShinxF[] = INCBIN_U32("graphics/pokemon/shinx/backf.4bpp.lz"); @@ -4908,7 +5804,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/back.4bpp.lz"); const u32 gMonShinyPalette_Luxio[] = INCBIN_U32("graphics/pokemon/luxio/shiny.gbapal.lz"); const u8 gMonIcon_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Luxio[] = INCBIN_U8("graphics/pokemon/luxio/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LuxioF[] = INCBIN_U32("graphics/pokemon/luxio/backf.4bpp.lz"); @@ -4918,7 +5816,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/back.4bpp.lz"); const u32 gMonShinyPalette_Luxray[] = INCBIN_U32("graphics/pokemon/luxray/shiny.gbapal.lz"); const u8 gMonIcon_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Luxray[] = INCBIN_U8("graphics/pokemon/luxray/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LuxrayF[] = INCBIN_U32("graphics/pokemon/luxray/backf.4bpp.lz"); @@ -4930,14 +5830,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/back.4bpp.lz"); const u32 gMonShinyPalette_Cranidos[] = INCBIN_U32("graphics/pokemon/cranidos/shiny.gbapal.lz"); const u8 gMonIcon_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cranidos[] = INCBIN_U8("graphics/pokemon/cranidos/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/anim_front.4bpp.lz"); const u32 gMonPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/normal.gbapal.lz"); const u32 gMonBackPic_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/back.4bpp.lz"); const u32 gMonShinyPalette_Rampardos[] = INCBIN_U32("graphics/pokemon/rampardos/shiny.gbapal.lz"); const u8 gMonIcon_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rampardos[] = INCBIN_U8("graphics/pokemon/rampardos/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CRANIDOS #if P_FAMILY_SHIELDON @@ -4946,14 +5850,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/back.4bpp.lz"); const u32 gMonShinyPalette_Shieldon[] = INCBIN_U32("graphics/pokemon/shieldon/shiny.gbapal.lz"); const u8 gMonIcon_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shieldon[] = INCBIN_U8("graphics/pokemon/shieldon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/anim_front.4bpp.lz"); const u32 gMonPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/normal.gbapal.lz"); const u32 gMonBackPic_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/back.4bpp.lz"); const u32 gMonShinyPalette_Bastiodon[] = INCBIN_U32("graphics/pokemon/bastiodon/shiny.gbapal.lz"); const u8 gMonIcon_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bastiodon[] = INCBIN_U8("graphics/pokemon/bastiodon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SHIELDON #if P_FAMILY_BURMY @@ -4962,7 +5870,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/back.4bpp.lz"); const u32 gMonShinyPalette_BurmyPlantCloak[] = INCBIN_U32("graphics/pokemon/burmy/shiny.gbapal.lz"); const u8 gMonIcon_BurmyPlantCloak[] = INCBIN_U8("graphics/pokemon/burmy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Burmy[] = INCBIN_U8("graphics/pokemon/burmy/plant/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/anim_front.4bpp.lz"); const u32 gMonPalette_BurmySandyCloak[] = INCBIN_U32("graphics/pokemon/burmy/sandy_cloak/normal.gbapal.lz"); @@ -4981,7 +5891,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/back.4bpp.lz"); const u32 gMonShinyPalette_WormadamPlantCloak[] = INCBIN_U32("graphics/pokemon/wormadam/shiny.gbapal.lz"); const u8 gMonIcon_WormadamPlantCloak[] = INCBIN_U8("graphics/pokemon/wormadam/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wormadam[] = INCBIN_U8("graphics/pokemon/wormadam/plant/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/anim_front.4bpp.lz"); const u32 gMonPalette_WormadamSandyCloak[] = INCBIN_U32("graphics/pokemon/wormadam/sandy_cloak/normal.gbapal.lz"); @@ -5000,7 +5912,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/back.4bpp.lz"); const u32 gMonShinyPalette_Mothim[] = INCBIN_U32("graphics/pokemon/mothim/shiny.gbapal.lz"); const u8 gMonIcon_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mothim[] = INCBIN_U8("graphics/pokemon/mothim/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BURMY #if P_FAMILY_COMBEE @@ -5009,7 +5923,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Combee[] = INCBIN_U32("graphics/pokemon/combee/back.4bpp.lz"); const u32 gMonShinyPalette_Combee[] = INCBIN_U32("graphics/pokemon/combee/shiny.gbapal.lz"); const u8 gMonIcon_Combee[] = INCBIN_U8("graphics/pokemon/combee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Combee[] = INCBIN_U8("graphics/pokemon/combee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/normalf.gbapal.lz"); const u32 gMonShinyPalette_CombeeF[] = INCBIN_U32("graphics/pokemon/combee/shinyf.gbapal.lz"); @@ -5019,7 +5935,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/back.4bpp.lz"); const u32 gMonShinyPalette_Vespiquen[] = INCBIN_U32("graphics/pokemon/vespiquen/shiny.gbapal.lz"); const u8 gMonIcon_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vespiquen[] = INCBIN_U8("graphics/pokemon/vespiquen/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_COMBEE #if P_FAMILY_PACHIRISU @@ -5028,7 +5946,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/back.4bpp.lz"); const u32 gMonShinyPalette_Pachirisu[] = INCBIN_U32("graphics/pokemon/pachirisu/shiny.gbapal.lz"); const u8 gMonIcon_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pachirisu[] = INCBIN_U8("graphics/pokemon/pachirisu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PachirisuF[] = INCBIN_U32("graphics/pokemon/pachirisu/anim_frontf.4bpp.lz"); #endif //P_FAMILY_PACHIRISU @@ -5039,7 +5959,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/back.4bpp.lz"); const u32 gMonShinyPalette_Buizel[] = INCBIN_U32("graphics/pokemon/buizel/shiny.gbapal.lz"); const u8 gMonIcon_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Buizel[] = INCBIN_U8("graphics/pokemon/buizel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonBackPic_BuizelF[] = INCBIN_U32("graphics/pokemon/buizel/backf.4bpp.lz"); @@ -5048,7 +5970,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/back.4bpp.lz"); const u32 gMonShinyPalette_Floatzel[] = INCBIN_U32("graphics/pokemon/floatzel/shiny.gbapal.lz"); const u8 gMonIcon_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Floatzel[] = INCBIN_U8("graphics/pokemon/floatzel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonBackPic_FloatzelF[] = INCBIN_U32("graphics/pokemon/floatzel/backf.4bpp.lz"); #endif //P_FAMILY_BUIZEL @@ -5059,14 +5983,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/back.4bpp.lz"); const u32 gMonShinyPalette_Cherubi[] = INCBIN_U32("graphics/pokemon/cherubi/shiny.gbapal.lz"); const u8 gMonIcon_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cherubi[] = INCBIN_U8("graphics/pokemon/cherubi/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/anim_front.4bpp.lz"); const u32 gMonPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/normal.gbapal.lz"); const u32 gMonBackPic_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/back.4bpp.lz"); const u32 gMonShinyPalette_CherrimOvercast[] = INCBIN_U32("graphics/pokemon/cherrim/shiny.gbapal.lz"); const u8 gMonIcon_CherrimOvercast[] = INCBIN_U8("graphics/pokemon/cherrim/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cherrim[] = INCBIN_U8("graphics/pokemon/cherrim/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/anim_front.4bpp.lz"); const u32 gMonPalette_CherrimSunshine[] = INCBIN_U32("graphics/pokemon/cherrim/sunshine/normal.gbapal.lz"); @@ -5081,7 +6009,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/back.4bpp.lz"); const u32 gMonShinyPalette_ShellosWestSea[] = INCBIN_U32("graphics/pokemon/shellos/shiny.gbapal.lz"); const u8 gMonIcon_ShellosWestSea[] = INCBIN_U8("graphics/pokemon/shellos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shellos[] = INCBIN_U8("graphics/pokemon/shellos/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/anim_front.4bpp.lz"); const u32 gMonPalette_ShellosEastSea[] = INCBIN_U32("graphics/pokemon/shellos/east_sea/normal.gbapal.lz"); @@ -5094,7 +6024,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/back.4bpp.lz"); const u32 gMonShinyPalette_GastrodonWestSea[] = INCBIN_U32("graphics/pokemon/gastrodon/shiny.gbapal.lz"); const u8 gMonIcon_GastrodonWestSea[] = INCBIN_U8("graphics/pokemon/gastrodon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gastrodon[] = INCBIN_U8("graphics/pokemon/gastrodon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/anim_front.4bpp.lz"); const u32 gMonPalette_GastrodonEastSea[] = INCBIN_U32("graphics/pokemon/gastrodon/east_sea/normal.gbapal.lz"); @@ -5109,14 +6041,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/back.4bpp.lz"); const u32 gMonShinyPalette_Drifloon[] = INCBIN_U32("graphics/pokemon/drifloon/shiny.gbapal.lz"); const u8 gMonIcon_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drifloon[] = INCBIN_U8("graphics/pokemon/drifloon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/anim_front.4bpp.lz"); const u32 gMonPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/normal.gbapal.lz"); const u32 gMonBackPic_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/back.4bpp.lz"); const u32 gMonShinyPalette_Drifblim[] = INCBIN_U32("graphics/pokemon/drifblim/shiny.gbapal.lz"); const u8 gMonIcon_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drifblim[] = INCBIN_U8("graphics/pokemon/drifblim/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRIFLOON #if P_FAMILY_BUNEARY @@ -5125,14 +6061,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/back.4bpp.lz"); const u32 gMonShinyPalette_Buneary[] = INCBIN_U32("graphics/pokemon/buneary/shiny.gbapal.lz"); const u8 gMonIcon_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Buneary[] = INCBIN_U8("graphics/pokemon/buneary/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/anim_front.4bpp.lz"); const u32 gMonPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/normal.gbapal.lz"); const u32 gMonBackPic_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/back.4bpp.lz"); const u32 gMonShinyPalette_Lopunny[] = INCBIN_U32("graphics/pokemon/lopunny/shiny.gbapal.lz"); const u8 gMonIcon_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lopunny[] = INCBIN_U8("graphics/pokemon/lopunny/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LopunnyMega[] = INCBIN_U32("graphics/pokemon/lopunny/mega/front.4bpp.lz"); @@ -5149,14 +6089,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/back.4bpp.lz"); const u32 gMonShinyPalette_Glameow[] = INCBIN_U32("graphics/pokemon/glameow/shiny.gbapal.lz"); const u8 gMonIcon_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Glameow[] = INCBIN_U8("graphics/pokemon/glameow/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/anim_front.4bpp.lz"); const u32 gMonPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/normal.gbapal.lz"); const u32 gMonBackPic_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/back.4bpp.lz"); const u32 gMonShinyPalette_Purugly[] = INCBIN_U32("graphics/pokemon/purugly/shiny.gbapal.lz"); const u8 gMonIcon_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Purugly[] = INCBIN_U8("graphics/pokemon/purugly/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GLAMEOW #if P_FAMILY_STUNKY @@ -5165,14 +6109,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/back.4bpp.lz"); const u32 gMonShinyPalette_Stunky[] = INCBIN_U32("graphics/pokemon/stunky/shiny.gbapal.lz"); const u8 gMonIcon_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stunky[] = INCBIN_U8("graphics/pokemon/stunky/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/anim_front.4bpp.lz"); const u32 gMonPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/normal.gbapal.lz"); const u32 gMonBackPic_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/back.4bpp.lz"); const u32 gMonShinyPalette_Skuntank[] = INCBIN_U32("graphics/pokemon/skuntank/shiny.gbapal.lz"); const u8 gMonIcon_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skuntank[] = INCBIN_U8("graphics/pokemon/skuntank/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_STUNKY #if P_FAMILY_BRONZOR @@ -5181,14 +6129,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/back.4bpp.lz"); const u32 gMonShinyPalette_Bronzor[] = INCBIN_U32("graphics/pokemon/bronzor/shiny.gbapal.lz"); const u8 gMonIcon_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bronzor[] = INCBIN_U8("graphics/pokemon/bronzor/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/anim_front.4bpp.lz"); const u32 gMonPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/normal.gbapal.lz"); const u32 gMonBackPic_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/back.4bpp.lz"); const u32 gMonShinyPalette_Bronzong[] = INCBIN_U32("graphics/pokemon/bronzong/shiny.gbapal.lz"); const u8 gMonIcon_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bronzong[] = INCBIN_U8("graphics/pokemon/bronzong/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BRONZOR #if P_FAMILY_CHATOT @@ -5197,7 +6149,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/back.4bpp.lz"); const u32 gMonShinyPalette_Chatot[] = INCBIN_U32("graphics/pokemon/chatot/shiny.gbapal.lz"); const u8 gMonIcon_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chatot[] = INCBIN_U8("graphics/pokemon/chatot/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHATOT #if P_FAMILY_SPIRITOMB @@ -5206,7 +6160,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/back.4bpp.lz"); const u32 gMonShinyPalette_Spiritomb[] = INCBIN_U32("graphics/pokemon/spiritomb/shiny.gbapal.lz"); const u8 gMonIcon_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spiritomb[] = INCBIN_U8("graphics/pokemon/spiritomb/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPIRITOMB #if P_FAMILY_GIBLE @@ -5215,7 +6171,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gible[] = INCBIN_U32("graphics/pokemon/gible/back.4bpp.lz"); const u32 gMonShinyPalette_Gible[] = INCBIN_U32("graphics/pokemon/gible/shiny.gbapal.lz"); const u8 gMonIcon_Gible[] = INCBIN_U8("graphics/pokemon/gible/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gible[] = INCBIN_U8("graphics/pokemon/gible/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GibleF[] = INCBIN_U32("graphics/pokemon/gible/backf.4bpp.lz"); @@ -5225,7 +6183,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/back.4bpp.lz"); const u32 gMonShinyPalette_Gabite[] = INCBIN_U32("graphics/pokemon/gabite/shiny.gbapal.lz"); const u8 gMonIcon_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gabite[] = INCBIN_U8("graphics/pokemon/gabite/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/anim_frontf.4bpp.lz"); const u32 gMonBackPic_GabiteF[] = INCBIN_U32("graphics/pokemon/gabite/backf.4bpp.lz"); @@ -5235,7 +6195,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/back.4bpp.lz"); const u32 gMonShinyPalette_Garchomp[] = INCBIN_U32("graphics/pokemon/garchomp/shiny.gbapal.lz"); const u8 gMonIcon_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Garchomp[] = INCBIN_U8("graphics/pokemon/garchomp/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GarchompF[] = INCBIN_U32("graphics/pokemon/garchomp/anim_frontf.4bpp.lz"); @@ -5254,14 +6216,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/back.4bpp.lz"); const u32 gMonShinyPalette_Riolu[] = INCBIN_U32("graphics/pokemon/riolu/shiny.gbapal.lz"); const u8 gMonIcon_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Riolu[] = INCBIN_U8("graphics/pokemon/riolu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/anim_front.4bpp.lz"); const u32 gMonPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/normal.gbapal.lz"); const u32 gMonBackPic_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/back.4bpp.lz"); const u32 gMonShinyPalette_Lucario[] = INCBIN_U32("graphics/pokemon/lucario/shiny.gbapal.lz"); const u8 gMonIcon_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lucario[] = INCBIN_U8("graphics/pokemon/lucario/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_LucarioMega[] = INCBIN_U32("graphics/pokemon/lucario/mega/front.4bpp.lz"); @@ -5278,7 +6244,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/back.4bpp.lz"); const u32 gMonShinyPalette_Hippopotas[] = INCBIN_U32("graphics/pokemon/hippopotas/shiny.gbapal.lz"); const u8 gMonIcon_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hippopotas[] = INCBIN_U8("graphics/pokemon/hippopotas/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/normalf.gbapal.lz"); const u32 gMonShinyPalette_HippopotasF[] = INCBIN_U32("graphics/pokemon/hippopotas/shinyf.gbapal.lz"); @@ -5291,7 +6259,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/back.4bpp.lz"); const u32 gMonShinyPalette_Hippowdon[] = INCBIN_U32("graphics/pokemon/hippowdon/shiny.gbapal.lz"); const u8 gMonIcon_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hippowdon[] = INCBIN_U8("graphics/pokemon/hippowdon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/normalf.gbapal.lz"); const u32 gMonShinyPalette_HippowdonF[] = INCBIN_U32("graphics/pokemon/hippowdon/shinyf.gbapal.lz"); @@ -5306,14 +6276,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/back.4bpp.lz"); const u32 gMonShinyPalette_Skorupi[] = INCBIN_U32("graphics/pokemon/skorupi/shiny.gbapal.lz"); const u8 gMonIcon_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skorupi[] = INCBIN_U8("graphics/pokemon/skorupi/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/anim_front.4bpp.lz"); const u32 gMonPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/normal.gbapal.lz"); const u32 gMonBackPic_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/back.4bpp.lz"); const u32 gMonShinyPalette_Drapion[] = INCBIN_U32("graphics/pokemon/drapion/shiny.gbapal.lz"); const u8 gMonIcon_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drapion[] = INCBIN_U8("graphics/pokemon/drapion/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SKORUPI #if P_FAMILY_CROAGUNK @@ -5322,7 +6296,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/back.4bpp.lz"); const u32 gMonShinyPalette_Croagunk[] = INCBIN_U32("graphics/pokemon/croagunk/shiny.gbapal.lz"); const u8 gMonIcon_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Croagunk[] = INCBIN_U8("graphics/pokemon/croagunk/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/anim_frontf.4bpp.lz"); const u32 gMonBackPic_CroagunkF[] = INCBIN_U32("graphics/pokemon/croagunk/backf.4bpp.lz"); @@ -5332,7 +6308,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/back.4bpp.lz"); const u32 gMonShinyPalette_Toxicroak[] = INCBIN_U32("graphics/pokemon/toxicroak/shiny.gbapal.lz"); const u8 gMonIcon_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Toxicroak[] = INCBIN_U8("graphics/pokemon/toxicroak/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/anim_frontf.4bpp.lz"); const u32 gMonBackPic_ToxicroakF[] = INCBIN_U32("graphics/pokemon/toxicroak/backf.4bpp.lz"); @@ -5344,7 +6322,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/back.4bpp.lz"); const u32 gMonShinyPalette_Carnivine[] = INCBIN_U32("graphics/pokemon/carnivine/shiny.gbapal.lz"); const u8 gMonIcon_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Carnivine[] = INCBIN_U8("graphics/pokemon/carnivine/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CARNIVINE #if P_FAMILY_FINNEON @@ -5353,7 +6333,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/back.4bpp.lz"); const u32 gMonShinyPalette_Finneon[] = INCBIN_U32("graphics/pokemon/finneon/shiny.gbapal.lz"); const u8 gMonIcon_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Finneon[] = INCBIN_U8("graphics/pokemon/finneon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/anim_frontf.4bpp.lz"); const u32 gMonBackPic_FinneonF[] = INCBIN_U32("graphics/pokemon/finneon/backf.4bpp.lz"); @@ -5363,7 +6345,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/back.4bpp.lz"); const u32 gMonShinyPalette_Lumineon[] = INCBIN_U32("graphics/pokemon/lumineon/shiny.gbapal.lz"); const u8 gMonIcon_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lumineon[] = INCBIN_U8("graphics/pokemon/lumineon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/anim_frontf.4bpp.lz"); const u32 gMonBackPic_LumineonF[] = INCBIN_U32("graphics/pokemon/lumineon/backf.4bpp.lz"); @@ -5375,7 +6359,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Snover[] = INCBIN_U32("graphics/pokemon/snover/back.4bpp.lz"); const u32 gMonShinyPalette_Snover[] = INCBIN_U32("graphics/pokemon/snover/shiny.gbapal.lz"); const u8 gMonIcon_Snover[] = INCBIN_U8("graphics/pokemon/snover/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Snover[] = INCBIN_U8("graphics/pokemon/snover/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/anim_frontf.4bpp.lz"); const u32 gMonBackPic_SnoverF[] = INCBIN_U32("graphics/pokemon/snover/backf.4bpp.lz"); @@ -5385,7 +6371,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/back.4bpp.lz"); const u32 gMonShinyPalette_Abomasnow[] = INCBIN_U32("graphics/pokemon/abomasnow/shiny.gbapal.lz"); const u8 gMonIcon_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Abomasnow[] = INCBIN_U8("graphics/pokemon/abomasnow/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AbomasnowF[] = INCBIN_U32("graphics/pokemon/abomasnow/anim_frontf.4bpp.lz"); @@ -5404,7 +6392,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/back.4bpp.lz"); const u32 gMonShinyPalette_Rotom[] = INCBIN_U32("graphics/pokemon/rotom/shiny.gbapal.lz"); const u8 gMonIcon_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rotom[] = INCBIN_U8("graphics/pokemon/rotom/normal/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/anim_front.4bpp.lz"); const u32 gMonPalette_RotomHeat[] = INCBIN_U32("graphics/pokemon/rotom/heat/normal.gbapal.lz"); @@ -5443,7 +6433,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/back.4bpp.lz"); const u32 gMonShinyPalette_Uxie[] = INCBIN_U32("graphics/pokemon/uxie/shiny.gbapal.lz"); const u8 gMonIcon_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Uxie[] = INCBIN_U8("graphics/pokemon/uxie/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_UXIE #if P_FAMILY_MESPRIT @@ -5452,7 +6444,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/back.4bpp.lz"); const u32 gMonShinyPalette_Mesprit[] = INCBIN_U32("graphics/pokemon/mesprit/shiny.gbapal.lz"); const u8 gMonIcon_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mesprit[] = INCBIN_U8("graphics/pokemon/mesprit/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MESPRIT #if P_FAMILY_AZELF @@ -5461,7 +6455,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/back.4bpp.lz"); const u32 gMonShinyPalette_Azelf[] = INCBIN_U32("graphics/pokemon/azelf/shiny.gbapal.lz"); const u8 gMonIcon_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Azelf[] = INCBIN_U8("graphics/pokemon/azelf/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_AZELF #if P_FAMILY_DIALGA @@ -5470,7 +6466,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/back.4bpp.lz"); const u32 gMonShinyPalette_Dialga[] = INCBIN_U32("graphics/pokemon/dialga/shiny.gbapal.lz"); const u8 gMonIcon_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dialga[] = INCBIN_U8("graphics/pokemon/dialga/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/front.4bpp.lz"); const u32 gMonPalette_DialgaOrigin[] = INCBIN_U32("graphics/pokemon/dialga/origin/normal.gbapal.lz"); @@ -5485,7 +6483,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/back.4bpp.lz"); const u32 gMonShinyPalette_Palkia[] = INCBIN_U32("graphics/pokemon/palkia/shiny.gbapal.lz"); const u8 gMonIcon_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Palkia[] = INCBIN_U8("graphics/pokemon/palkia/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/front.4bpp.lz"); const u32 gMonPalette_PalkiaOrigin[] = INCBIN_U32("graphics/pokemon/palkia/origin/normal.gbapal.lz"); @@ -5500,7 +6500,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/back.4bpp.lz"); const u32 gMonShinyPalette_Heatran[] = INCBIN_U32("graphics/pokemon/heatran/shiny.gbapal.lz"); const u8 gMonIcon_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Heatran[] = INCBIN_U8("graphics/pokemon/heatran/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HEATRAN #if P_FAMILY_REGIGIGAS @@ -5509,7 +6511,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/back.4bpp.lz"); const u32 gMonShinyPalette_Regigigas[] = INCBIN_U32("graphics/pokemon/regigigas/shiny.gbapal.lz"); const u8 gMonIcon_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Regigigas[] = INCBIN_U8("graphics/pokemon/regigigas/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_REGIGIGAS #if P_FAMILY_GIRATINA @@ -5518,7 +6522,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/back.4bpp.lz"); const u32 gMonShinyPalette_GiratinaAltered[] = INCBIN_U32("graphics/pokemon/giratina/shiny.gbapal.lz"); const u8 gMonIcon_GiratinaAltered[] = INCBIN_U8("graphics/pokemon/giratina/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Giratina[] = INCBIN_U8("graphics/pokemon/giratina/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/anim_front.4bpp.lz"); const u32 gMonPalette_GiratinaOrigin[] = INCBIN_U32("graphics/pokemon/giratina/origin/normal.gbapal.lz"); @@ -5533,7 +6539,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/back.4bpp.lz"); const u32 gMonShinyPalette_Cresselia[] = INCBIN_U32("graphics/pokemon/cresselia/shiny.gbapal.lz"); const u8 gMonIcon_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cresselia[] = INCBIN_U8("graphics/pokemon/cresselia/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CRESSELIA #if P_FAMILY_MANAPHY @@ -5542,14 +6550,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Phione[] = INCBIN_U32("graphics/pokemon/phione/back.4bpp.lz"); const u32 gMonShinyPalette_Phione[] = INCBIN_U32("graphics/pokemon/phione/shiny.gbapal.lz"); const u8 gMonIcon_Phione[] = INCBIN_U8("graphics/pokemon/phione/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Phione[] = INCBIN_U8("graphics/pokemon/phione/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/anim_front.4bpp.lz"); const u32 gMonPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/normal.gbapal.lz"); const u32 gMonBackPic_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/back.4bpp.lz"); const u32 gMonShinyPalette_Manaphy[] = INCBIN_U32("graphics/pokemon/manaphy/shiny.gbapal.lz"); const u8 gMonIcon_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Manaphy[] = INCBIN_U8("graphics/pokemon/manaphy/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MANAPHY #if P_FAMILY_DARKRAI @@ -5558,7 +6570,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/back.4bpp.lz"); const u32 gMonShinyPalette_Darkrai[] = INCBIN_U32("graphics/pokemon/darkrai/shiny.gbapal.lz"); const u8 gMonIcon_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Darkrai[] = INCBIN_U8("graphics/pokemon/darkrai/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DARKRAI #if P_FAMILY_SHAYMIN @@ -5567,7 +6581,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/back.4bpp.lz"); const u32 gMonShinyPalette_ShayminLand[] = INCBIN_U32("graphics/pokemon/shaymin/shiny.gbapal.lz"); const u8 gMonIcon_ShayminLand[] = INCBIN_U8("graphics/pokemon/shaymin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shaymin[] = INCBIN_U8("graphics/pokemon/shaymin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/anim_front.4bpp.lz"); const u32 gMonPalette_ShayminSky[] = INCBIN_U32("graphics/pokemon/shaymin/sky/normal.gbapal.lz"); @@ -5580,7 +6596,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonFrontPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/anim_front.4bpp.lz"); const u32 gMonBackPic_Arceus[] = INCBIN_U32("graphics/pokemon/arceus/back.4bpp.lz"); const u8 gMonIcon_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Arceus[] = INCBIN_U8("graphics/pokemon/arceus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/normal.gbapal.lz"); const u32 gMonShinyPalette_ArceusNormal[] = INCBIN_U32("graphics/pokemon/arceus/shiny.gbapal.lz"); @@ -5643,7 +6661,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Victini[] = INCBIN_U32("graphics/pokemon/victini/back.4bpp.lz"); const u32 gMonShinyPalette_Victini[] = INCBIN_U32("graphics/pokemon/victini/shiny.gbapal.lz"); const u8 gMonIcon_Victini[] = INCBIN_U8("graphics/pokemon/victini/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Victini[] = INCBIN_U8("graphics/pokemon/victini/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VICTINI #if P_FAMILY_SNIVY @@ -5652,21 +6672,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/back.4bpp.lz"); const u32 gMonShinyPalette_Snivy[] = INCBIN_U32("graphics/pokemon/snivy/shiny.gbapal.lz"); const u8 gMonIcon_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Snivy[] = INCBIN_U8("graphics/pokemon/snivy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/anim_front.4bpp.lz"); const u32 gMonPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/normal.gbapal.lz"); const u32 gMonBackPic_Servine[] = INCBIN_U32("graphics/pokemon/servine/back.4bpp.lz"); const u32 gMonShinyPalette_Servine[] = INCBIN_U32("graphics/pokemon/servine/shiny.gbapal.lz"); const u8 gMonIcon_Servine[] = INCBIN_U8("graphics/pokemon/servine/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Servine[] = INCBIN_U8("graphics/pokemon/servine/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/anim_front.4bpp.lz"); const u32 gMonPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/normal.gbapal.lz"); const u32 gMonBackPic_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/back.4bpp.lz"); const u32 gMonShinyPalette_Serperior[] = INCBIN_U32("graphics/pokemon/serperior/shiny.gbapal.lz"); const u8 gMonIcon_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Serperior[] = INCBIN_U8("graphics/pokemon/serperior/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SNIVY #if P_FAMILY_TEPIG @@ -5675,21 +6701,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/back.4bpp.lz"); const u32 gMonShinyPalette_Tepig[] = INCBIN_U32("graphics/pokemon/tepig/shiny.gbapal.lz"); const u8 gMonIcon_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tepig[] = INCBIN_U8("graphics/pokemon/tepig/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/anim_front.4bpp.lz"); const u32 gMonPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/normal.gbapal.lz"); const u32 gMonBackPic_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/back.4bpp.lz"); const u32 gMonShinyPalette_Pignite[] = INCBIN_U32("graphics/pokemon/pignite/shiny.gbapal.lz"); const u8 gMonIcon_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pignite[] = INCBIN_U8("graphics/pokemon/pignite/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/anim_front.4bpp.lz"); const u32 gMonPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/normal.gbapal.lz"); const u32 gMonBackPic_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/back.4bpp.lz"); const u32 gMonShinyPalette_Emboar[] = INCBIN_U32("graphics/pokemon/emboar/shiny.gbapal.lz"); const u8 gMonIcon_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Emboar[] = INCBIN_U8("graphics/pokemon/emboar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TEPIG #if P_FAMILY_OSHAWOTT @@ -5698,21 +6730,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/back.4bpp.lz"); const u32 gMonShinyPalette_Oshawott[] = INCBIN_U32("graphics/pokemon/oshawott/shiny.gbapal.lz"); const u8 gMonIcon_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Oshawott[] = INCBIN_U8("graphics/pokemon/oshawott/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/anim_front.4bpp.lz"); const u32 gMonPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/normal.gbapal.lz"); const u32 gMonBackPic_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/back.4bpp.lz"); const u32 gMonShinyPalette_Dewott[] = INCBIN_U32("graphics/pokemon/dewott/shiny.gbapal.lz"); const u8 gMonIcon_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dewott[] = INCBIN_U8("graphics/pokemon/dewott/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/anim_front.4bpp.lz"); const u32 gMonPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/normal.gbapal.lz"); const u32 gMonBackPic_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/back.4bpp.lz"); const u32 gMonShinyPalette_Samurott[] = INCBIN_U32("graphics/pokemon/samurott/shiny.gbapal.lz"); const u8 gMonIcon_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Samurott[] = INCBIN_U8("graphics/pokemon/samurott/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_SamurottHisuian[] = INCBIN_U32("graphics/pokemon/samurott/hisuian/front.4bpp.lz"); @@ -5729,14 +6767,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/back.4bpp.lz"); const u32 gMonShinyPalette_Patrat[] = INCBIN_U32("graphics/pokemon/patrat/shiny.gbapal.lz"); const u8 gMonIcon_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Patrat[] = INCBIN_U8("graphics/pokemon/patrat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/anim_front.4bpp.lz"); const u32 gMonPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/normal.gbapal.lz"); const u32 gMonBackPic_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/back.4bpp.lz"); const u32 gMonShinyPalette_Watchog[] = INCBIN_U32("graphics/pokemon/watchog/shiny.gbapal.lz"); const u8 gMonIcon_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Watchog[] = INCBIN_U8("graphics/pokemon/watchog/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PATRAT #if P_FAMILY_LILLIPUP @@ -5745,21 +6787,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/back.4bpp.lz"); const u32 gMonShinyPalette_Lillipup[] = INCBIN_U32("graphics/pokemon/lillipup/shiny.gbapal.lz"); const u8 gMonIcon_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lillipup[] = INCBIN_U8("graphics/pokemon/lillipup/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/anim_front.4bpp.lz"); const u32 gMonPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/normal.gbapal.lz"); const u32 gMonBackPic_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/back.4bpp.lz"); const u32 gMonShinyPalette_Herdier[] = INCBIN_U32("graphics/pokemon/herdier/shiny.gbapal.lz"); const u8 gMonIcon_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Herdier[] = INCBIN_U8("graphics/pokemon/herdier/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/anim_front.4bpp.lz"); const u32 gMonPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/normal.gbapal.lz"); const u32 gMonBackPic_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/back.4bpp.lz"); const u32 gMonShinyPalette_Stoutland[] = INCBIN_U32("graphics/pokemon/stoutland/shiny.gbapal.lz"); const u8 gMonIcon_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stoutland[] = INCBIN_U8("graphics/pokemon/stoutland/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LILLIPUP #if P_FAMILY_PURRLOIN @@ -5768,14 +6816,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/back.4bpp.lz"); const u32 gMonShinyPalette_Purrloin[] = INCBIN_U32("graphics/pokemon/purrloin/shiny.gbapal.lz"); const u8 gMonIcon_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Purrloin[] = INCBIN_U8("graphics/pokemon/purrloin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/anim_front.4bpp.lz"); const u32 gMonPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/normal.gbapal.lz"); const u32 gMonBackPic_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/back.4bpp.lz"); const u32 gMonShinyPalette_Liepard[] = INCBIN_U32("graphics/pokemon/liepard/shiny.gbapal.lz"); const u8 gMonIcon_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Liepard[] = INCBIN_U8("graphics/pokemon/liepard/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PURRLOIN #if P_FAMILY_PANSAGE @@ -5784,14 +6836,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/back.4bpp.lz"); const u32 gMonShinyPalette_Pansage[] = INCBIN_U32("graphics/pokemon/pansage/shiny.gbapal.lz"); const u8 gMonIcon_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pansage[] = INCBIN_U8("graphics/pokemon/pansage/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/anim_front.4bpp.lz"); const u32 gMonPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/normal.gbapal.lz"); const u32 gMonBackPic_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/back.4bpp.lz"); const u32 gMonShinyPalette_Simisage[] = INCBIN_U32("graphics/pokemon/simisage/shiny.gbapal.lz"); const u8 gMonIcon_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Simisage[] = INCBIN_U8("graphics/pokemon/simisage/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PANSAGE #if P_FAMILY_PANSEAR @@ -5800,14 +6856,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/back.4bpp.lz"); const u32 gMonShinyPalette_Pansear[] = INCBIN_U32("graphics/pokemon/pansear/shiny.gbapal.lz"); const u8 gMonIcon_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pansear[] = INCBIN_U8("graphics/pokemon/pansear/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/anim_front.4bpp.lz"); const u32 gMonPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/normal.gbapal.lz"); const u32 gMonBackPic_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/back.4bpp.lz"); const u32 gMonShinyPalette_Simisear[] = INCBIN_U32("graphics/pokemon/simisear/shiny.gbapal.lz"); const u8 gMonIcon_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Simisear[] = INCBIN_U8("graphics/pokemon/simisear/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PANSEAR #if P_FAMILY_PANPOUR @@ -5816,14 +6876,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/back.4bpp.lz"); const u32 gMonShinyPalette_Panpour[] = INCBIN_U32("graphics/pokemon/panpour/shiny.gbapal.lz"); const u8 gMonIcon_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Panpour[] = INCBIN_U8("graphics/pokemon/panpour/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/anim_front.4bpp.lz"); const u32 gMonPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/normal.gbapal.lz"); const u32 gMonBackPic_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/back.4bpp.lz"); const u32 gMonShinyPalette_Simipour[] = INCBIN_U32("graphics/pokemon/simipour/shiny.gbapal.lz"); const u8 gMonIcon_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Simipour[] = INCBIN_U8("graphics/pokemon/simipour/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PANPOUR #if P_FAMILY_MUNNA @@ -5832,14 +6896,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Munna[] = INCBIN_U32("graphics/pokemon/munna/back.4bpp.lz"); const u32 gMonShinyPalette_Munna[] = INCBIN_U32("graphics/pokemon/munna/shiny.gbapal.lz"); const u8 gMonIcon_Munna[] = INCBIN_U8("graphics/pokemon/munna/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Munna[] = INCBIN_U8("graphics/pokemon/munna/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/anim_front.4bpp.lz"); const u32 gMonPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/normal.gbapal.lz"); const u32 gMonBackPic_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/back.4bpp.lz"); const u32 gMonShinyPalette_Musharna[] = INCBIN_U32("graphics/pokemon/musharna/shiny.gbapal.lz"); const u8 gMonIcon_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Musharna[] = INCBIN_U8("graphics/pokemon/musharna/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MUNNA #if P_FAMILY_PIDOVE @@ -5848,21 +6916,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/back.4bpp.lz"); const u32 gMonShinyPalette_Pidove[] = INCBIN_U32("graphics/pokemon/pidove/shiny.gbapal.lz"); const u8 gMonIcon_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pidove[] = INCBIN_U8("graphics/pokemon/pidove/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/anim_front.4bpp.lz"); const u32 gMonPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/normal.gbapal.lz"); const u32 gMonBackPic_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/back.4bpp.lz"); const u32 gMonShinyPalette_Tranquill[] = INCBIN_U32("graphics/pokemon/tranquill/shiny.gbapal.lz"); const u8 gMonIcon_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tranquill[] = INCBIN_U8("graphics/pokemon/tranquill/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/anim_front.4bpp.lz"); const u32 gMonPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/normal.gbapal.lz"); const u32 gMonBackPic_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/back.4bpp.lz"); const u32 gMonShinyPalette_Unfezant[] = INCBIN_U32("graphics/pokemon/unfezant/shiny.gbapal.lz"); const u8 gMonIcon_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Unfezant[] = INCBIN_U8("graphics/pokemon/unfezant/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/anim_frontf.4bpp.lz"); const u32 gMonPalette_UnfezantF[] = INCBIN_U32("graphics/pokemon/unfezant/normalf.gbapal.lz"); @@ -5877,14 +6951,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/back.4bpp.lz"); const u32 gMonShinyPalette_Blitzle[] = INCBIN_U32("graphics/pokemon/blitzle/shiny.gbapal.lz"); const u8 gMonIcon_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Blitzle[] = INCBIN_U8("graphics/pokemon/blitzle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/anim_front.4bpp.lz"); const u32 gMonPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/normal.gbapal.lz"); const u32 gMonBackPic_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/back.4bpp.lz"); const u32 gMonShinyPalette_Zebstrika[] = INCBIN_U32("graphics/pokemon/zebstrika/shiny.gbapal.lz"); const u8 gMonIcon_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zebstrika[] = INCBIN_U8("graphics/pokemon/zebstrika/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BLITZLE #if P_FAMILY_ROGGENROLA @@ -5893,21 +6971,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/back.4bpp.lz"); const u32 gMonShinyPalette_Roggenrola[] = INCBIN_U32("graphics/pokemon/roggenrola/shiny.gbapal.lz"); const u8 gMonIcon_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Roggenrola[] = INCBIN_U8("graphics/pokemon/roggenrola/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/anim_front.4bpp.lz"); const u32 gMonPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/normal.gbapal.lz"); const u32 gMonBackPic_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/back.4bpp.lz"); const u32 gMonShinyPalette_Boldore[] = INCBIN_U32("graphics/pokemon/boldore/shiny.gbapal.lz"); const u8 gMonIcon_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Boldore[] = INCBIN_U8("graphics/pokemon/boldore/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/anim_front.4bpp.lz"); const u32 gMonPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/normal.gbapal.lz"); const u32 gMonBackPic_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/back.4bpp.lz"); const u32 gMonShinyPalette_Gigalith[] = INCBIN_U32("graphics/pokemon/gigalith/shiny.gbapal.lz"); const u8 gMonIcon_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gigalith[] = INCBIN_U8("graphics/pokemon/gigalith/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ROGGENROLA #if P_FAMILY_WOOBAT @@ -5916,14 +7000,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/back.4bpp.lz"); const u32 gMonShinyPalette_Woobat[] = INCBIN_U32("graphics/pokemon/woobat/shiny.gbapal.lz"); const u8 gMonIcon_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Woobat[] = INCBIN_U8("graphics/pokemon/woobat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/anim_front.4bpp.lz"); const u32 gMonPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/normal.gbapal.lz"); const u32 gMonBackPic_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/back.4bpp.lz"); const u32 gMonShinyPalette_Swoobat[] = INCBIN_U32("graphics/pokemon/swoobat/shiny.gbapal.lz"); const u8 gMonIcon_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swoobat[] = INCBIN_U8("graphics/pokemon/swoobat/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WOOBAT #if P_FAMILY_DRILBUR @@ -5932,14 +7020,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/back.4bpp.lz"); const u32 gMonShinyPalette_Drilbur[] = INCBIN_U32("graphics/pokemon/drilbur/shiny.gbapal.lz"); const u8 gMonIcon_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drilbur[] = INCBIN_U8("graphics/pokemon/drilbur/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/anim_front.4bpp.lz"); const u32 gMonPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/normal.gbapal.lz"); const u32 gMonBackPic_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/back.4bpp.lz"); const u32 gMonShinyPalette_Excadrill[] = INCBIN_U32("graphics/pokemon/excadrill/shiny.gbapal.lz"); const u8 gMonIcon_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Excadrill[] = INCBIN_U8("graphics/pokemon/excadrill/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRILBUR #if P_FAMILY_AUDINO @@ -5948,7 +7040,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Audino[] = INCBIN_U32("graphics/pokemon/audino/back.4bpp.lz"); const u32 gMonShinyPalette_Audino[] = INCBIN_U32("graphics/pokemon/audino/shiny.gbapal.lz"); const u8 gMonIcon_Audino[] = INCBIN_U8("graphics/pokemon/audino/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Audino[] = INCBIN_U8("graphics/pokemon/audino/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_AudinoMega[] = INCBIN_U32("graphics/pokemon/audino/mega/front.4bpp.lz"); @@ -5965,21 +7059,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/back.4bpp.lz"); const u32 gMonShinyPalette_Timburr[] = INCBIN_U32("graphics/pokemon/timburr/shiny.gbapal.lz"); const u8 gMonIcon_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Timburr[] = INCBIN_U8("graphics/pokemon/timburr/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/anim_front.4bpp.lz"); const u32 gMonPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/normal.gbapal.lz"); const u32 gMonBackPic_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/back.4bpp.lz"); const u32 gMonShinyPalette_Gurdurr[] = INCBIN_U32("graphics/pokemon/gurdurr/shiny.gbapal.lz"); const u8 gMonIcon_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gurdurr[] = INCBIN_U8("graphics/pokemon/gurdurr/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/anim_front.4bpp.lz"); const u32 gMonPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/normal.gbapal.lz"); const u32 gMonBackPic_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/back.4bpp.lz"); const u32 gMonShinyPalette_Conkeldurr[] = INCBIN_U32("graphics/pokemon/conkeldurr/shiny.gbapal.lz"); const u8 gMonIcon_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Conkeldurr[] = INCBIN_U8("graphics/pokemon/conkeldurr/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TIMBURR #if P_FAMILY_TYMPOLE @@ -5988,21 +7088,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/back.4bpp.lz"); const u32 gMonShinyPalette_Tympole[] = INCBIN_U32("graphics/pokemon/tympole/shiny.gbapal.lz"); const u8 gMonIcon_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tympole[] = INCBIN_U8("graphics/pokemon/tympole/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/anim_front.4bpp.lz"); const u32 gMonPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/normal.gbapal.lz"); const u32 gMonBackPic_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/back.4bpp.lz"); const u32 gMonShinyPalette_Palpitoad[] = INCBIN_U32("graphics/pokemon/palpitoad/shiny.gbapal.lz"); const u8 gMonIcon_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Palpitoad[] = INCBIN_U8("graphics/pokemon/palpitoad/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/anim_front.4bpp.lz"); const u32 gMonPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/normal.gbapal.lz"); const u32 gMonBackPic_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/back.4bpp.lz"); const u32 gMonShinyPalette_Seismitoad[] = INCBIN_U32("graphics/pokemon/seismitoad/shiny.gbapal.lz"); const u8 gMonIcon_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Seismitoad[] = INCBIN_U8("graphics/pokemon/seismitoad/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TYMPOLE #if P_FAMILY_THROH @@ -6011,7 +7117,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Throh[] = INCBIN_U32("graphics/pokemon/throh/back.4bpp.lz"); const u32 gMonShinyPalette_Throh[] = INCBIN_U32("graphics/pokemon/throh/shiny.gbapal.lz"); const u8 gMonIcon_Throh[] = INCBIN_U8("graphics/pokemon/throh/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Throh[] = INCBIN_U8("graphics/pokemon/throh/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_THROH #if P_FAMILY_SAWK @@ -6020,7 +7128,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/back.4bpp.lz"); const u32 gMonShinyPalette_Sawk[] = INCBIN_U32("graphics/pokemon/sawk/shiny.gbapal.lz"); const u8 gMonIcon_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sawk[] = INCBIN_U8("graphics/pokemon/sawk/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SAWK #if P_FAMILY_SEWADDLE @@ -6029,21 +7139,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/back.4bpp.lz"); const u32 gMonShinyPalette_Sewaddle[] = INCBIN_U32("graphics/pokemon/sewaddle/shiny.gbapal.lz"); const u8 gMonIcon_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sewaddle[] = INCBIN_U8("graphics/pokemon/sewaddle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/anim_front.4bpp.lz"); const u32 gMonPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/normal.gbapal.lz"); const u32 gMonBackPic_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/back.4bpp.lz"); const u32 gMonShinyPalette_Swadloon[] = INCBIN_U32("graphics/pokemon/swadloon/shiny.gbapal.lz"); const u8 gMonIcon_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swadloon[] = INCBIN_U8("graphics/pokemon/swadloon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/anim_front.4bpp.lz"); const u32 gMonPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/normal.gbapal.lz"); const u32 gMonBackPic_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/back.4bpp.lz"); const u32 gMonShinyPalette_Leavanny[] = INCBIN_U32("graphics/pokemon/leavanny/shiny.gbapal.lz"); const u8 gMonIcon_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Leavanny[] = INCBIN_U8("graphics/pokemon/leavanny/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SEWADDLE #if P_FAMILY_VENIPEDE @@ -6052,21 +7168,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/back.4bpp.lz"); const u32 gMonShinyPalette_Venipede[] = INCBIN_U32("graphics/pokemon/venipede/shiny.gbapal.lz"); const u8 gMonIcon_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Venipede[] = INCBIN_U8("graphics/pokemon/venipede/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/anim_front.4bpp.lz"); const u32 gMonPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/normal.gbapal.lz"); const u32 gMonBackPic_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/back.4bpp.lz"); const u32 gMonShinyPalette_Whirlipede[] = INCBIN_U32("graphics/pokemon/whirlipede/shiny.gbapal.lz"); const u8 gMonIcon_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Whirlipede[] = INCBIN_U8("graphics/pokemon/whirlipede/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/anim_front.4bpp.lz"); const u32 gMonPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/normal.gbapal.lz"); const u32 gMonBackPic_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/back.4bpp.lz"); const u32 gMonShinyPalette_Scolipede[] = INCBIN_U32("graphics/pokemon/scolipede/shiny.gbapal.lz"); const u8 gMonIcon_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scolipede[] = INCBIN_U8("graphics/pokemon/scolipede/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VENIPEDE #if P_FAMILY_COTTONEE @@ -6075,14 +7197,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/back.4bpp.lz"); const u32 gMonShinyPalette_Cottonee[] = INCBIN_U32("graphics/pokemon/cottonee/shiny.gbapal.lz"); const u8 gMonIcon_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cottonee[] = INCBIN_U8("graphics/pokemon/cottonee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/anim_front.4bpp.lz"); const u32 gMonPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/normal.gbapal.lz"); const u32 gMonBackPic_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/back.4bpp.lz"); const u32 gMonShinyPalette_Whimsicott[] = INCBIN_U32("graphics/pokemon/whimsicott/shiny.gbapal.lz"); const u8 gMonIcon_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Whimsicott[] = INCBIN_U8("graphics/pokemon/whimsicott/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_COTTONEE #if P_FAMILY_PETILIL @@ -6091,14 +7217,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/back.4bpp.lz"); const u32 gMonShinyPalette_Petilil[] = INCBIN_U32("graphics/pokemon/petilil/shiny.gbapal.lz"); const u8 gMonIcon_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Petilil[] = INCBIN_U8("graphics/pokemon/petilil/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/anim_front.4bpp.lz"); const u32 gMonPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/normal.gbapal.lz"); const u32 gMonBackPic_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/back.4bpp.lz"); const u32 gMonShinyPalette_Lilligant[] = INCBIN_U32("graphics/pokemon/lilligant/shiny.gbapal.lz"); const u8 gMonIcon_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lilligant[] = INCBIN_U8("graphics/pokemon/lilligant/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_LilligantHisuian[] = INCBIN_U32("graphics/pokemon/lilligant/hisuian/front.4bpp.lz"); @@ -6115,7 +7245,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/back.4bpp.lz"); const u32 gMonShinyPalette_BasculinRedStriped[] = INCBIN_U32("graphics/pokemon/basculin/shiny.gbapal.lz"); const u8 gMonIcon_BasculinRedStriped[] = INCBIN_U8("graphics/pokemon/basculin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Basculin[] = INCBIN_U8("graphics/pokemon/basculin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/front.4bpp.lz"); const u32 gMonPalette_BasculinBlueStriped[] = INCBIN_U32("graphics/pokemon/basculin/blue_striped/normal.gbapal.lz"); @@ -6135,7 +7267,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/back.4bpp.lz"); const u32 gMonShinyPalette_BasculegionMale[] = INCBIN_U32("graphics/pokemon/basculegion/shiny.gbapal.lz"); const u8 gMonIcon_BasculegionMale[] = INCBIN_U8("graphics/pokemon/basculegion/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Basculegion[] = INCBIN_U8("graphics/pokemon/basculegion/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/front.4bpp.lz"); const u32 gMonPalette_BasculegionFemale[] = INCBIN_U32("graphics/pokemon/basculegion/female/normal.gbapal.lz"); @@ -6151,21 +7285,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/back.4bpp.lz"); const u32 gMonShinyPalette_Sandile[] = INCBIN_U32("graphics/pokemon/sandile/shiny.gbapal.lz"); const u8 gMonIcon_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sandile[] = INCBIN_U8("graphics/pokemon/sandile/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/anim_front.4bpp.lz"); const u32 gMonPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/normal.gbapal.lz"); const u32 gMonBackPic_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/back.4bpp.lz"); const u32 gMonShinyPalette_Krokorok[] = INCBIN_U32("graphics/pokemon/krokorok/shiny.gbapal.lz"); const u8 gMonIcon_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Krokorok[] = INCBIN_U8("graphics/pokemon/krokorok/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/anim_front.4bpp.lz"); const u32 gMonPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/normal.gbapal.lz"); const u32 gMonBackPic_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/back.4bpp.lz"); const u32 gMonShinyPalette_Krookodile[] = INCBIN_U32("graphics/pokemon/krookodile/shiny.gbapal.lz"); const u8 gMonIcon_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Krookodile[] = INCBIN_U8("graphics/pokemon/krookodile/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SANDILE #if P_FAMILY_DARUMAKA @@ -6174,14 +7314,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/back.4bpp.lz"); const u32 gMonShinyPalette_Darumaka[] = INCBIN_U32("graphics/pokemon/darumaka/shiny.gbapal.lz"); const u8 gMonIcon_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Darumaka[] = INCBIN_U8("graphics/pokemon/darumaka/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/anim_front.4bpp.lz"); const u32 gMonPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/normal.gbapal.lz"); const u32 gMonBackPic_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/back.4bpp.lz"); const u32 gMonShinyPalette_DarmanitanStandardMode[] = INCBIN_U32("graphics/pokemon/darmanitan/shiny.gbapal.lz"); const u8 gMonIcon_DarmanitanStandardMode[] = INCBIN_U8("graphics/pokemon/darmanitan/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Darmanitan[] = INCBIN_U8("graphics/pokemon/darmanitan/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/anim_front.4bpp.lz"); const u32 gMonPalette_DarmanitanZenMode[] = INCBIN_U32("graphics/pokemon/darmanitan/zen_mode/normal.gbapal.lz"); @@ -6216,7 +7360,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/back.4bpp.lz"); const u32 gMonShinyPalette_Maractus[] = INCBIN_U32("graphics/pokemon/maractus/shiny.gbapal.lz"); const u8 gMonIcon_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Maractus[] = INCBIN_U8("graphics/pokemon/maractus/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MARACTUS #if P_FAMILY_DWEBBLE @@ -6225,14 +7371,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/back.4bpp.lz"); const u32 gMonShinyPalette_Dwebble[] = INCBIN_U32("graphics/pokemon/dwebble/shiny.gbapal.lz"); const u8 gMonIcon_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dwebble[] = INCBIN_U8("graphics/pokemon/dwebble/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/anim_front.4bpp.lz"); const u32 gMonPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/normal.gbapal.lz"); const u32 gMonBackPic_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/back.4bpp.lz"); const u32 gMonShinyPalette_Crustle[] = INCBIN_U32("graphics/pokemon/crustle/shiny.gbapal.lz"); const u8 gMonIcon_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Crustle[] = INCBIN_U8("graphics/pokemon/crustle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DWEBBLE #if P_FAMILY_SCRAGGY @@ -6241,14 +7391,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/back.4bpp.lz"); const u32 gMonShinyPalette_Scraggy[] = INCBIN_U32("graphics/pokemon/scraggy/shiny.gbapal.lz"); const u8 gMonIcon_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scraggy[] = INCBIN_U8("graphics/pokemon/scraggy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/anim_front.4bpp.lz"); const u32 gMonPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/normal.gbapal.lz"); const u32 gMonBackPic_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/back.4bpp.lz"); const u32 gMonShinyPalette_Scrafty[] = INCBIN_U32("graphics/pokemon/scrafty/shiny.gbapal.lz"); const u8 gMonIcon_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scrafty[] = INCBIN_U8("graphics/pokemon/scrafty/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SCRAGGY #if P_FAMILY_SIGILYPH @@ -6257,7 +7411,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/back.4bpp.lz"); const u32 gMonShinyPalette_Sigilyph[] = INCBIN_U32("graphics/pokemon/sigilyph/shiny.gbapal.lz"); const u8 gMonIcon_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sigilyph[] = INCBIN_U8("graphics/pokemon/sigilyph/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SIGILYPH #if P_FAMILY_YAMASK @@ -6266,14 +7422,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/back.4bpp.lz"); const u32 gMonShinyPalette_Yamask[] = INCBIN_U32("graphics/pokemon/yamask/shiny.gbapal.lz"); const u8 gMonIcon_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Yamask[] = INCBIN_U8("graphics/pokemon/yamask/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/anim_front.4bpp.lz"); const u32 gMonPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/normal.gbapal.lz"); const u32 gMonBackPic_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/back.4bpp.lz"); const u32 gMonShinyPalette_Cofagrigus[] = INCBIN_U32("graphics/pokemon/cofagrigus/shiny.gbapal.lz"); const u8 gMonIcon_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cofagrigus[] = INCBIN_U8("graphics/pokemon/cofagrigus/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_YamaskGalarian[] = INCBIN_U32("graphics/pokemon/yamask/galarian/front.4bpp.lz"); @@ -6287,7 +7447,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/back.4bpp.lz"); const u32 gMonShinyPalette_Runerigus[] = INCBIN_U32("graphics/pokemon/runerigus/shiny.gbapal.lz"); const u8 gMonIcon_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Runerigus[] = INCBIN_U8("graphics/pokemon/runerigus/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GALARIAN_FORMS #endif //P_FAMILY_YAMASK @@ -6297,14 +7459,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/back.4bpp.lz"); const u32 gMonShinyPalette_Tirtouga[] = INCBIN_U32("graphics/pokemon/tirtouga/shiny.gbapal.lz"); const u8 gMonIcon_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tirtouga[] = INCBIN_U8("graphics/pokemon/tirtouga/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/anim_front.4bpp.lz"); const u32 gMonPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/normal.gbapal.lz"); const u32 gMonBackPic_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/back.4bpp.lz"); const u32 gMonShinyPalette_Carracosta[] = INCBIN_U32("graphics/pokemon/carracosta/shiny.gbapal.lz"); const u8 gMonIcon_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Carracosta[] = INCBIN_U8("graphics/pokemon/carracosta/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TIRTOUGA #if P_FAMILY_ARCHEN @@ -6313,14 +7479,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Archen[] = INCBIN_U32("graphics/pokemon/archen/back.4bpp.lz"); const u32 gMonShinyPalette_Archen[] = INCBIN_U32("graphics/pokemon/archen/shiny.gbapal.lz"); const u8 gMonIcon_Archen[] = INCBIN_U8("graphics/pokemon/archen/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Archen[] = INCBIN_U8("graphics/pokemon/archen/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/anim_front.4bpp.lz"); const u32 gMonPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/normal.gbapal.lz"); const u32 gMonBackPic_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/back.4bpp.lz"); const u32 gMonShinyPalette_Archeops[] = INCBIN_U32("graphics/pokemon/archeops/shiny.gbapal.lz"); const u8 gMonIcon_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Archeops[] = INCBIN_U8("graphics/pokemon/archeops/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ARCHEN #if P_FAMILY_TRUBBISH @@ -6329,14 +7499,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/back.4bpp.lz"); const u32 gMonShinyPalette_Trubbish[] = INCBIN_U32("graphics/pokemon/trubbish/shiny.gbapal.lz"); const u8 gMonIcon_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Trubbish[] = INCBIN_U8("graphics/pokemon/trubbish/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/anim_front.4bpp.lz"); const u32 gMonPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/normal.gbapal.lz"); const u32 gMonBackPic_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/back.4bpp.lz"); const u32 gMonShinyPalette_Garbodor[] = INCBIN_U32("graphics/pokemon/garbodor/shiny.gbapal.lz"); const u8 gMonIcon_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Garbodor[] = INCBIN_U8("graphics/pokemon/garbodor/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GarbodorGigantamax[] = INCBIN_U32("graphics/pokemon/garbodor/gigantamax/front.4bpp.lz"); @@ -6353,14 +7527,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/back.4bpp.lz"); const u32 gMonShinyPalette_Zorua[] = INCBIN_U32("graphics/pokemon/zorua/shiny.gbapal.lz"); const u8 gMonIcon_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zorua[] = INCBIN_U8("graphics/pokemon/zorua/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/anim_front.4bpp.lz"); const u32 gMonPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/normal.gbapal.lz"); const u32 gMonBackPic_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/back.4bpp.lz"); const u32 gMonShinyPalette_Zoroark[] = INCBIN_U32("graphics/pokemon/zoroark/shiny.gbapal.lz"); const u8 gMonIcon_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zoroark[] = INCBIN_U8("graphics/pokemon/zoroark/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_ZoruaHisuian[] = INCBIN_U32("graphics/pokemon/zorua/hisuian/front.4bpp.lz"); @@ -6383,14 +7561,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/back.4bpp.lz"); const u32 gMonShinyPalette_Minccino[] = INCBIN_U32("graphics/pokemon/minccino/shiny.gbapal.lz"); const u8 gMonIcon_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Minccino[] = INCBIN_U8("graphics/pokemon/minccino/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/anim_front.4bpp.lz"); const u32 gMonPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/normal.gbapal.lz"); const u32 gMonBackPic_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/back.4bpp.lz"); const u32 gMonShinyPalette_Cinccino[] = INCBIN_U32("graphics/pokemon/cinccino/shiny.gbapal.lz"); const u8 gMonIcon_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cinccino[] = INCBIN_U8("graphics/pokemon/cinccino/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MINCCINO #if P_FAMILY_GOTHITA @@ -6399,21 +7581,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/back.4bpp.lz"); const u32 gMonShinyPalette_Gothita[] = INCBIN_U32("graphics/pokemon/gothita/shiny.gbapal.lz"); const u8 gMonIcon_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gothita[] = INCBIN_U8("graphics/pokemon/gothita/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/anim_front.4bpp.lz"); const u32 gMonPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/normal.gbapal.lz"); const u32 gMonBackPic_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/back.4bpp.lz"); const u32 gMonShinyPalette_Gothorita[] = INCBIN_U32("graphics/pokemon/gothorita/shiny.gbapal.lz"); const u8 gMonIcon_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gothorita[] = INCBIN_U8("graphics/pokemon/gothorita/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/anim_front.4bpp.lz"); const u32 gMonPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/normal.gbapal.lz"); const u32 gMonBackPic_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/back.4bpp.lz"); const u32 gMonShinyPalette_Gothitelle[] = INCBIN_U32("graphics/pokemon/gothitelle/shiny.gbapal.lz"); const u8 gMonIcon_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gothitelle[] = INCBIN_U8("graphics/pokemon/gothitelle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GOTHITA #if P_FAMILY_SOLOSIS @@ -6422,21 +7610,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/back.4bpp.lz"); const u32 gMonShinyPalette_Solosis[] = INCBIN_U32("graphics/pokemon/solosis/shiny.gbapal.lz"); const u8 gMonIcon_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Solosis[] = INCBIN_U8("graphics/pokemon/solosis/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/anim_front.4bpp.lz"); const u32 gMonPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/normal.gbapal.lz"); const u32 gMonBackPic_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/back.4bpp.lz"); const u32 gMonShinyPalette_Duosion[] = INCBIN_U32("graphics/pokemon/duosion/shiny.gbapal.lz"); const u8 gMonIcon_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Duosion[] = INCBIN_U8("graphics/pokemon/duosion/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/anim_front.4bpp.lz"); const u32 gMonPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/normal.gbapal.lz"); const u32 gMonBackPic_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/back.4bpp.lz"); const u32 gMonShinyPalette_Reuniclus[] = INCBIN_U32("graphics/pokemon/reuniclus/shiny.gbapal.lz"); const u8 gMonIcon_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Reuniclus[] = INCBIN_U8("graphics/pokemon/reuniclus/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SOLOSIS #if P_FAMILY_DUCKLETT @@ -6445,14 +7639,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/back.4bpp.lz"); const u32 gMonShinyPalette_Ducklett[] = INCBIN_U32("graphics/pokemon/ducklett/shiny.gbapal.lz"); const u8 gMonIcon_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ducklett[] = INCBIN_U8("graphics/pokemon/ducklett/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/anim_front.4bpp.lz"); const u32 gMonPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/normal.gbapal.lz"); const u32 gMonBackPic_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/back.4bpp.lz"); const u32 gMonShinyPalette_Swanna[] = INCBIN_U32("graphics/pokemon/swanna/shiny.gbapal.lz"); const u8 gMonIcon_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swanna[] = INCBIN_U8("graphics/pokemon/swanna/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DUCKLETT #if P_FAMILY_VANILLITE @@ -6461,27 +7659,35 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/back.4bpp.lz"); const u32 gMonShinyPalette_Vanillite[] = INCBIN_U32("graphics/pokemon/vanillite/shiny.gbapal.lz"); const u8 gMonIcon_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vanillite[] = INCBIN_U8("graphics/pokemon/vanillite/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/anim_front.4bpp.lz"); const u32 gMonPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/normal.gbapal.lz"); const u32 gMonBackPic_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/back.4bpp.lz"); const u32 gMonShinyPalette_Vanillish[] = INCBIN_U32("graphics/pokemon/vanillish/shiny.gbapal.lz"); const u8 gMonIcon_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vanillish[] = INCBIN_U8("graphics/pokemon/vanillish/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/anim_front.4bpp.lz"); const u32 gMonPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/normal.gbapal.lz"); const u32 gMonBackPic_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/back.4bpp.lz"); const u32 gMonShinyPalette_Vanilluxe[] = INCBIN_U32("graphics/pokemon/vanilluxe/shiny.gbapal.lz"); const u8 gMonIcon_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vanilluxe[] = INCBIN_U8("graphics/pokemon/vanilluxe/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VANILLITE #if P_FAMILY_DEERLING const u32 gMonFrontPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/anim_front.4bpp.lz"); const u32 gMonBackPic_Deerling[] = INCBIN_U32("graphics/pokemon/deerling/back.4bpp.lz"); +#if P_FOOTPRINTS const u8 gMonFootprint_Deerling[] = INCBIN_U8("graphics/pokemon/deerling/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/normal.gbapal.lz"); const u32 gMonShinyPalette_DeerlingSpring[] = INCBIN_U32("graphics/pokemon/deerling/shiny.gbapal.lz"); @@ -6504,7 +7710,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/back.4bpp.lz"); const u32 gMonShinyPalette_SawsbuckSpring[] = INCBIN_U32("graphics/pokemon/sawsbuck/shiny.gbapal.lz"); const u8 gMonIcon_SawsbuckSpring[] = INCBIN_U8("graphics/pokemon/sawsbuck/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sawsbuck[] = INCBIN_U8("graphics/pokemon/sawsbuck/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/front.4bpp.lz"); const u32 gMonPalette_SawsbuckSummer[] = INCBIN_U32("graphics/pokemon/sawsbuck/summer/normal.gbapal.lz"); @@ -6531,7 +7739,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/back.4bpp.lz"); const u32 gMonShinyPalette_Emolga[] = INCBIN_U32("graphics/pokemon/emolga/shiny.gbapal.lz"); const u8 gMonIcon_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Emolga[] = INCBIN_U8("graphics/pokemon/emolga/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_EMOLGA #if P_FAMILY_KARRABLAST @@ -6540,14 +7750,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/back.4bpp.lz"); const u32 gMonShinyPalette_Karrablast[] = INCBIN_U32("graphics/pokemon/karrablast/shiny.gbapal.lz"); const u8 gMonIcon_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Karrablast[] = INCBIN_U8("graphics/pokemon/karrablast/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/anim_front.4bpp.lz"); const u32 gMonPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/normal.gbapal.lz"); const u32 gMonBackPic_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/back.4bpp.lz"); const u32 gMonShinyPalette_Escavalier[] = INCBIN_U32("graphics/pokemon/escavalier/shiny.gbapal.lz"); const u8 gMonIcon_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Escavalier[] = INCBIN_U8("graphics/pokemon/escavalier/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KARRABLAST #if P_FAMILY_FOONGUS @@ -6556,14 +7770,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/back.4bpp.lz"); const u32 gMonShinyPalette_Foongus[] = INCBIN_U32("graphics/pokemon/foongus/shiny.gbapal.lz"); const u8 gMonIcon_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Foongus[] = INCBIN_U8("graphics/pokemon/foongus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/anim_front.4bpp.lz"); const u32 gMonPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/normal.gbapal.lz"); const u32 gMonBackPic_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/back.4bpp.lz"); const u32 gMonShinyPalette_Amoonguss[] = INCBIN_U32("graphics/pokemon/amoonguss/shiny.gbapal.lz"); const u8 gMonIcon_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Amoonguss[] = INCBIN_U8("graphics/pokemon/amoonguss/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FOONGUS #if P_FAMILY_FRILLISH @@ -6572,7 +7790,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/back.4bpp.lz"); const u32 gMonShinyPalette_Frillish[] = INCBIN_U32("graphics/pokemon/frillish/shiny.gbapal.lz"); const u8 gMonIcon_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Frillish[] = INCBIN_U8("graphics/pokemon/frillish/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/anim_frontf.4bpp.lz"); const u32 gMonPalette_FrillishF[] = INCBIN_U32("graphics/pokemon/frillish/normalf.gbapal.lz"); @@ -6585,7 +7805,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/back.4bpp.lz"); const u32 gMonShinyPalette_Jellicent[] = INCBIN_U32("graphics/pokemon/jellicent/shiny.gbapal.lz"); const u8 gMonIcon_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Jellicent[] = INCBIN_U8("graphics/pokemon/jellicent/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/anim_frontf.4bpp.lz"); const u32 gMonPalette_JellicentF[] = INCBIN_U32("graphics/pokemon/jellicent/normalf.gbapal.lz"); @@ -6600,7 +7822,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/back.4bpp.lz"); const u32 gMonShinyPalette_Alomomola[] = INCBIN_U32("graphics/pokemon/alomomola/shiny.gbapal.lz"); const u8 gMonIcon_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Alomomola[] = INCBIN_U8("graphics/pokemon/alomomola/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ALOMOMOLA #if P_FAMILY_JOLTIK @@ -6609,14 +7833,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/back.4bpp.lz"); const u32 gMonShinyPalette_Joltik[] = INCBIN_U32("graphics/pokemon/joltik/shiny.gbapal.lz"); const u8 gMonIcon_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Joltik[] = INCBIN_U8("graphics/pokemon/joltik/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/anim_front.4bpp.lz"); const u32 gMonPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/normal.gbapal.lz"); const u32 gMonBackPic_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/back.4bpp.lz"); const u32 gMonShinyPalette_Galvantula[] = INCBIN_U32("graphics/pokemon/galvantula/shiny.gbapal.lz"); const u8 gMonIcon_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Galvantula[] = INCBIN_U8("graphics/pokemon/galvantula/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_JOLTIK #if P_FAMILY_FERROSEED @@ -6625,14 +7853,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/back.4bpp.lz"); const u32 gMonShinyPalette_Ferroseed[] = INCBIN_U32("graphics/pokemon/ferroseed/shiny.gbapal.lz"); const u8 gMonIcon_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ferroseed[] = INCBIN_U8("graphics/pokemon/ferroseed/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/anim_front.4bpp.lz"); const u32 gMonPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/normal.gbapal.lz"); const u32 gMonBackPic_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/back.4bpp.lz"); const u32 gMonShinyPalette_Ferrothorn[] = INCBIN_U32("graphics/pokemon/ferrothorn/shiny.gbapal.lz"); const u8 gMonIcon_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ferrothorn[] = INCBIN_U8("graphics/pokemon/ferrothorn/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FERROSEED #if P_FAMILY_KLINK @@ -6641,21 +7873,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Klink[] = INCBIN_U32("graphics/pokemon/klink/back.4bpp.lz"); const u32 gMonShinyPalette_Klink[] = INCBIN_U32("graphics/pokemon/klink/shiny.gbapal.lz"); const u8 gMonIcon_Klink[] = INCBIN_U8("graphics/pokemon/klink/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Klink[] = INCBIN_U8("graphics/pokemon/klink/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/anim_front.4bpp.lz"); const u32 gMonPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/normal.gbapal.lz"); const u32 gMonBackPic_Klang[] = INCBIN_U32("graphics/pokemon/klang/back.4bpp.lz"); const u32 gMonShinyPalette_Klang[] = INCBIN_U32("graphics/pokemon/klang/shiny.gbapal.lz"); const u8 gMonIcon_Klang[] = INCBIN_U8("graphics/pokemon/klang/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Klang[] = INCBIN_U8("graphics/pokemon/klang/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/anim_front.4bpp.lz"); const u32 gMonPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/normal.gbapal.lz"); const u32 gMonBackPic_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/back.4bpp.lz"); const u32 gMonShinyPalette_Klinklang[] = INCBIN_U32("graphics/pokemon/klinklang/shiny.gbapal.lz"); const u8 gMonIcon_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Klinklang[] = INCBIN_U8("graphics/pokemon/klinklang/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KLINK #if P_FAMILY_TYNAMO @@ -6664,21 +7902,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/back.4bpp.lz"); const u32 gMonShinyPalette_Tynamo[] = INCBIN_U32("graphics/pokemon/tynamo/shiny.gbapal.lz"); const u8 gMonIcon_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tynamo[] = INCBIN_U8("graphics/pokemon/tynamo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/anim_front.4bpp.lz"); const u32 gMonPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/normal.gbapal.lz"); const u32 gMonBackPic_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/back.4bpp.lz"); const u32 gMonShinyPalette_Eelektrik[] = INCBIN_U32("graphics/pokemon/eelektrik/shiny.gbapal.lz"); const u8 gMonIcon_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Eelektrik[] = INCBIN_U8("graphics/pokemon/eelektrik/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/anim_front.4bpp.lz"); const u32 gMonPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/normal.gbapal.lz"); const u32 gMonBackPic_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/back.4bpp.lz"); const u32 gMonShinyPalette_Eelektross[] = INCBIN_U32("graphics/pokemon/eelektross/shiny.gbapal.lz"); const u8 gMonIcon_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Eelektross[] = INCBIN_U8("graphics/pokemon/eelektross/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TYNAMO #if P_FAMILY_ELGYEM @@ -6687,14 +7931,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/back.4bpp.lz"); const u32 gMonShinyPalette_Elgyem[] = INCBIN_U32("graphics/pokemon/elgyem/shiny.gbapal.lz"); const u8 gMonIcon_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Elgyem[] = INCBIN_U8("graphics/pokemon/elgyem/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/anim_front.4bpp.lz"); const u32 gMonPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/normal.gbapal.lz"); const u32 gMonBackPic_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/back.4bpp.lz"); const u32 gMonShinyPalette_Beheeyem[] = INCBIN_U32("graphics/pokemon/beheeyem/shiny.gbapal.lz"); const u8 gMonIcon_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Beheeyem[] = INCBIN_U8("graphics/pokemon/beheeyem/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ELGYEM #if P_FAMILY_LITWICK @@ -6703,21 +7951,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/back.4bpp.lz"); const u32 gMonShinyPalette_Litwick[] = INCBIN_U32("graphics/pokemon/litwick/shiny.gbapal.lz"); const u8 gMonIcon_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Litwick[] = INCBIN_U8("graphics/pokemon/litwick/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/anim_front.4bpp.lz"); const u32 gMonPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/normal.gbapal.lz"); const u32 gMonBackPic_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/back.4bpp.lz"); const u32 gMonShinyPalette_Lampent[] = INCBIN_U32("graphics/pokemon/lampent/shiny.gbapal.lz"); const u8 gMonIcon_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lampent[] = INCBIN_U8("graphics/pokemon/lampent/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/anim_front.4bpp.lz"); const u32 gMonPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/normal.gbapal.lz"); const u32 gMonBackPic_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/back.4bpp.lz"); const u32 gMonShinyPalette_Chandelure[] = INCBIN_U32("graphics/pokemon/chandelure/shiny.gbapal.lz"); const u8 gMonIcon_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chandelure[] = INCBIN_U8("graphics/pokemon/chandelure/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LITWICK #if P_FAMILY_AXEW @@ -6726,21 +7980,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Axew[] = INCBIN_U32("graphics/pokemon/axew/back.4bpp.lz"); const u32 gMonShinyPalette_Axew[] = INCBIN_U32("graphics/pokemon/axew/shiny.gbapal.lz"); const u8 gMonIcon_Axew[] = INCBIN_U8("graphics/pokemon/axew/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Axew[] = INCBIN_U8("graphics/pokemon/axew/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/anim_front.4bpp.lz"); const u32 gMonPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/normal.gbapal.lz"); const u32 gMonBackPic_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/back.4bpp.lz"); const u32 gMonShinyPalette_Fraxure[] = INCBIN_U32("graphics/pokemon/fraxure/shiny.gbapal.lz"); const u8 gMonIcon_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Fraxure[] = INCBIN_U8("graphics/pokemon/fraxure/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/anim_front.4bpp.lz"); const u32 gMonPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/normal.gbapal.lz"); const u32 gMonBackPic_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/back.4bpp.lz"); const u32 gMonShinyPalette_Haxorus[] = INCBIN_U32("graphics/pokemon/haxorus/shiny.gbapal.lz"); const u8 gMonIcon_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Haxorus[] = INCBIN_U8("graphics/pokemon/haxorus/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_AXEW #if P_FAMILY_CUBCHOO @@ -6749,14 +8009,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/back.4bpp.lz"); const u32 gMonShinyPalette_Cubchoo[] = INCBIN_U32("graphics/pokemon/cubchoo/shiny.gbapal.lz"); const u8 gMonIcon_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cubchoo[] = INCBIN_U8("graphics/pokemon/cubchoo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/anim_front.4bpp.lz"); const u32 gMonPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/normal.gbapal.lz"); const u32 gMonBackPic_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/back.4bpp.lz"); const u32 gMonShinyPalette_Beartic[] = INCBIN_U32("graphics/pokemon/beartic/shiny.gbapal.lz"); const u8 gMonIcon_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Beartic[] = INCBIN_U8("graphics/pokemon/beartic/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CUBCHOO #if P_FAMILY_CRYOGONAL @@ -6765,7 +8029,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/back.4bpp.lz"); const u32 gMonShinyPalette_Cryogonal[] = INCBIN_U32("graphics/pokemon/cryogonal/shiny.gbapal.lz"); const u8 gMonIcon_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cryogonal[] = INCBIN_U8("graphics/pokemon/cryogonal/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CRYOGONAL #if P_FAMILY_SHELMET @@ -6774,14 +8040,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/back.4bpp.lz"); const u32 gMonShinyPalette_Shelmet[] = INCBIN_U32("graphics/pokemon/shelmet/shiny.gbapal.lz"); const u8 gMonIcon_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shelmet[] = INCBIN_U8("graphics/pokemon/shelmet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/anim_front.4bpp.lz"); const u32 gMonPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/normal.gbapal.lz"); const u32 gMonBackPic_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/back.4bpp.lz"); const u32 gMonShinyPalette_Accelgor[] = INCBIN_U32("graphics/pokemon/accelgor/shiny.gbapal.lz"); const u8 gMonIcon_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Accelgor[] = INCBIN_U8("graphics/pokemon/accelgor/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SHELMET #if P_FAMILY_STUNFISK @@ -6790,7 +8060,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/back.4bpp.lz"); const u32 gMonShinyPalette_Stunfisk[] = INCBIN_U32("graphics/pokemon/stunfisk/shiny.gbapal.lz"); const u8 gMonIcon_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stunfisk[] = INCBIN_U8("graphics/pokemon/stunfisk/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GALARIAN_FORMS const u32 gMonFrontPic_StunfiskGalarian[] = INCBIN_U32("graphics/pokemon/stunfisk/galarian/front.4bpp.lz"); @@ -6807,14 +8079,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/back.4bpp.lz"); const u32 gMonShinyPalette_Mienfoo[] = INCBIN_U32("graphics/pokemon/mienfoo/shiny.gbapal.lz"); const u8 gMonIcon_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mienfoo[] = INCBIN_U8("graphics/pokemon/mienfoo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/anim_front.4bpp.lz"); const u32 gMonPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/normal.gbapal.lz"); const u32 gMonBackPic_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/back.4bpp.lz"); const u32 gMonShinyPalette_Mienshao[] = INCBIN_U32("graphics/pokemon/mienshao/shiny.gbapal.lz"); const u8 gMonIcon_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mienshao[] = INCBIN_U8("graphics/pokemon/mienshao/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MIENFOO #if P_FAMILY_DRUDDIGON @@ -6823,7 +8099,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/back.4bpp.lz"); const u32 gMonShinyPalette_Druddigon[] = INCBIN_U32("graphics/pokemon/druddigon/shiny.gbapal.lz"); const u8 gMonIcon_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Druddigon[] = INCBIN_U8("graphics/pokemon/druddigon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRUDDIGON #if P_FAMILY_GOLETT @@ -6832,14 +8110,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Golett[] = INCBIN_U32("graphics/pokemon/golett/back.4bpp.lz"); const u32 gMonShinyPalette_Golett[] = INCBIN_U32("graphics/pokemon/golett/shiny.gbapal.lz"); const u8 gMonIcon_Golett[] = INCBIN_U8("graphics/pokemon/golett/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Golett[] = INCBIN_U8("graphics/pokemon/golett/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/anim_front.4bpp.lz"); const u32 gMonPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/normal.gbapal.lz"); const u32 gMonBackPic_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/back.4bpp.lz"); const u32 gMonShinyPalette_Golurk[] = INCBIN_U32("graphics/pokemon/golurk/shiny.gbapal.lz"); const u8 gMonIcon_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Golurk[] = INCBIN_U8("graphics/pokemon/golurk/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GOLETT #if P_FAMILY_PAWNIARD @@ -6848,14 +8130,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/back.4bpp.lz"); const u32 gMonShinyPalette_Pawniard[] = INCBIN_U32("graphics/pokemon/pawniard/shiny.gbapal.lz"); const u8 gMonIcon_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pawniard[] = INCBIN_U8("graphics/pokemon/pawniard/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/anim_front.4bpp.lz"); const u32 gMonPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/normal.gbapal.lz"); const u32 gMonBackPic_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/back.4bpp.lz"); const u32 gMonShinyPalette_Bisharp[] = INCBIN_U32("graphics/pokemon/bisharp/shiny.gbapal.lz"); const u8 gMonIcon_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bisharp[] = INCBIN_U8("graphics/pokemon/bisharp/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GEN_9_CROSS_EVOS const u32 gMonFrontPic_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/front.4bpp.lz"); @@ -6863,7 +8149,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/back.4bpp.lz"); const u32 gMonShinyPalette_Kingambit[] = INCBIN_U32("graphics/pokemon/kingambit/shiny.gbapal.lz"); const u8 gMonIcon_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Kingambit[] = INCBIN_U8("graphics/pokemon/kingambit/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_PAWNIARD @@ -6873,7 +8161,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/back.4bpp.lz"); const u32 gMonShinyPalette_Bouffalant[] = INCBIN_U32("graphics/pokemon/bouffalant/shiny.gbapal.lz"); const u8 gMonIcon_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bouffalant[] = INCBIN_U8("graphics/pokemon/bouffalant/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BOUFFALANT #if P_FAMILY_RUFFLET @@ -6882,14 +8172,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/back.4bpp.lz"); const u32 gMonShinyPalette_Rufflet[] = INCBIN_U32("graphics/pokemon/rufflet/shiny.gbapal.lz"); const u8 gMonIcon_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rufflet[] = INCBIN_U8("graphics/pokemon/rufflet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/anim_front.4bpp.lz"); const u32 gMonPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/normal.gbapal.lz"); const u32 gMonBackPic_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/back.4bpp.lz"); const u32 gMonShinyPalette_Braviary[] = INCBIN_U32("graphics/pokemon/braviary/shiny.gbapal.lz"); const u8 gMonIcon_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Braviary[] = INCBIN_U8("graphics/pokemon/braviary/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_BraviaryHisuian[] = INCBIN_U32("graphics/pokemon/braviary/hisuian/front.4bpp.lz"); @@ -6906,14 +8200,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/back.4bpp.lz"); const u32 gMonShinyPalette_Vullaby[] = INCBIN_U32("graphics/pokemon/vullaby/shiny.gbapal.lz"); const u8 gMonIcon_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vullaby[] = INCBIN_U8("graphics/pokemon/vullaby/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/anim_front.4bpp.lz"); const u32 gMonPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/normal.gbapal.lz"); const u32 gMonBackPic_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/back.4bpp.lz"); const u32 gMonShinyPalette_Mandibuzz[] = INCBIN_U32("graphics/pokemon/mandibuzz/shiny.gbapal.lz"); const u8 gMonIcon_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mandibuzz[] = INCBIN_U8("graphics/pokemon/mandibuzz/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VULLABY #if P_FAMILY_HEATMOR @@ -6922,7 +8220,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/back.4bpp.lz"); const u32 gMonShinyPalette_Heatmor[] = INCBIN_U32("graphics/pokemon/heatmor/shiny.gbapal.lz"); const u8 gMonIcon_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Heatmor[] = INCBIN_U8("graphics/pokemon/heatmor/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HEATMOR #if P_FAMILY_DURANT @@ -6931,7 +8231,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Durant[] = INCBIN_U32("graphics/pokemon/durant/back.4bpp.lz"); const u32 gMonShinyPalette_Durant[] = INCBIN_U32("graphics/pokemon/durant/shiny.gbapal.lz"); const u8 gMonIcon_Durant[] = INCBIN_U8("graphics/pokemon/durant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Durant[] = INCBIN_U8("graphics/pokemon/durant/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DURANT #if P_FAMILY_DEINO @@ -6940,21 +8242,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Deino[] = INCBIN_U32("graphics/pokemon/deino/back.4bpp.lz"); const u32 gMonShinyPalette_Deino[] = INCBIN_U32("graphics/pokemon/deino/shiny.gbapal.lz"); const u8 gMonIcon_Deino[] = INCBIN_U8("graphics/pokemon/deino/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Deino[] = INCBIN_U8("graphics/pokemon/deino/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/anim_front.4bpp.lz"); const u32 gMonPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/normal.gbapal.lz"); const u32 gMonBackPic_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/back.4bpp.lz"); const u32 gMonShinyPalette_Zweilous[] = INCBIN_U32("graphics/pokemon/zweilous/shiny.gbapal.lz"); const u8 gMonIcon_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zweilous[] = INCBIN_U8("graphics/pokemon/zweilous/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/anim_front.4bpp.lz"); const u32 gMonPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/normal.gbapal.lz"); const u32 gMonBackPic_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/back.4bpp.lz"); const u32 gMonShinyPalette_Hydreigon[] = INCBIN_U32("graphics/pokemon/hydreigon/shiny.gbapal.lz"); const u8 gMonIcon_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hydreigon[] = INCBIN_U8("graphics/pokemon/hydreigon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DEINO #if P_FAMILY_LARVESTA @@ -6963,14 +8271,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/back.4bpp.lz"); const u32 gMonShinyPalette_Larvesta[] = INCBIN_U32("graphics/pokemon/larvesta/shiny.gbapal.lz"); const u8 gMonIcon_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Larvesta[] = INCBIN_U8("graphics/pokemon/larvesta/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/anim_front.4bpp.lz"); const u32 gMonPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/normal.gbapal.lz"); const u32 gMonBackPic_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/back.4bpp.lz"); const u32 gMonShinyPalette_Volcarona[] = INCBIN_U32("graphics/pokemon/volcarona/shiny.gbapal.lz"); const u8 gMonIcon_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Volcarona[] = INCBIN_U8("graphics/pokemon/volcarona/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LARVESTA #if P_FAMILY_COBALION @@ -6979,7 +8291,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/back.4bpp.lz"); const u32 gMonShinyPalette_Cobalion[] = INCBIN_U32("graphics/pokemon/cobalion/shiny.gbapal.lz"); const u8 gMonIcon_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cobalion[] = INCBIN_U8("graphics/pokemon/cobalion/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_COBALION #if P_FAMILY_TERRAKION @@ -6988,7 +8302,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/back.4bpp.lz"); const u32 gMonShinyPalette_Terrakion[] = INCBIN_U32("graphics/pokemon/terrakion/shiny.gbapal.lz"); const u8 gMonIcon_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Terrakion[] = INCBIN_U8("graphics/pokemon/terrakion/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TERRAKION #if P_FAMILY_VIRIZION @@ -6997,7 +8313,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/back.4bpp.lz"); const u32 gMonShinyPalette_Virizion[] = INCBIN_U32("graphics/pokemon/virizion/shiny.gbapal.lz"); const u8 gMonIcon_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Virizion[] = INCBIN_U8("graphics/pokemon/virizion/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VIRIZION #if P_FAMILY_TORNADUS @@ -7006,7 +8324,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/back.4bpp.lz"); const u32 gMonShinyPalette_TornadusIncarnate[] = INCBIN_U32("graphics/pokemon/tornadus/shiny.gbapal.lz"); const u8 gMonIcon_TornadusIncarnate[] = INCBIN_U8("graphics/pokemon/tornadus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tornadus[] = INCBIN_U8("graphics/pokemon/tornadus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/anim_front.4bpp.lz"); const u32 gMonPalette_TornadusTherian[] = INCBIN_U32("graphics/pokemon/tornadus/therian/normal.gbapal.lz"); @@ -7021,7 +8341,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/back.4bpp.lz"); const u32 gMonShinyPalette_ThundurusIncarnate[] = INCBIN_U32("graphics/pokemon/thundurus/shiny.gbapal.lz"); const u8 gMonIcon_ThundurusIncarnate[] = INCBIN_U8("graphics/pokemon/thundurus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Thundurus[] = INCBIN_U8("graphics/pokemon/thundurus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/anim_front.4bpp.lz"); const u32 gMonPalette_ThundurusTherian[] = INCBIN_U32("graphics/pokemon/thundurus/therian/normal.gbapal.lz"); @@ -7036,7 +8358,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/back.4bpp.lz"); const u32 gMonShinyPalette_Reshiram[] = INCBIN_U32("graphics/pokemon/reshiram/shiny.gbapal.lz"); const u8 gMonIcon_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Reshiram[] = INCBIN_U8("graphics/pokemon/reshiram/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_RESHIRAM #if P_FAMILY_ZEKROM @@ -7045,7 +8369,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/back.4bpp.lz"); const u32 gMonShinyPalette_Zekrom[] = INCBIN_U32("graphics/pokemon/zekrom/shiny.gbapal.lz"); const u8 gMonIcon_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zekrom[] = INCBIN_U8("graphics/pokemon/zekrom/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ZEKROM #if P_FAMILY_LANDORUS @@ -7054,7 +8380,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/back.4bpp.lz"); const u32 gMonShinyPalette_LandorusIncarnate[] = INCBIN_U32("graphics/pokemon/landorus/shiny.gbapal.lz"); const u8 gMonIcon_LandorusIncarnate[] = INCBIN_U8("graphics/pokemon/landorus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Landorus[] = INCBIN_U8("graphics/pokemon/landorus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/anim_front.4bpp.lz"); const u32 gMonPalette_LandorusTherian[] = INCBIN_U32("graphics/pokemon/landorus/therian/normal.gbapal.lz"); @@ -7069,7 +8397,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/back.4bpp.lz"); const u32 gMonShinyPalette_EnamorusIncarnate[] = INCBIN_U32("graphics/pokemon/enamorus/shiny.gbapal.lz"); const u8 gMonIcon_EnamorusIncarnate[] = INCBIN_U8("graphics/pokemon/enamorus/icon.4bpp"); +#if P_FOOTPRINTS //const u8 gMonFootprint_Enamorus[] = INCBIN_U8("graphics/pokemon/enamorus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/front.4bpp.lz"); const u32 gMonPalette_EnamorusTherian[] = INCBIN_U32("graphics/pokemon/enamorus/therian/normal.gbapal.lz"); @@ -7084,7 +8414,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/back.4bpp.lz"); const u32 gMonShinyPalette_Kyurem[] = INCBIN_U32("graphics/pokemon/kyurem/shiny.gbapal.lz"); const u8 gMonIcon_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kyurem[] = INCBIN_U8("graphics/pokemon/kyurem/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_FUSION_FORMS const u32 gMonFrontPic_KyuremWhite[] = INCBIN_U32("graphics/pokemon/kyurem/white/anim_front.4bpp.lz"); @@ -7107,7 +8439,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/back.4bpp.lz"); const u32 gMonShinyPalette_KeldeoOrdinary[] = INCBIN_U32("graphics/pokemon/keldeo/shiny.gbapal.lz"); const u8 gMonIcon_KeldeoOrdinary[] = INCBIN_U8("graphics/pokemon/keldeo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Keldeo[] = INCBIN_U8("graphics/pokemon/keldeo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/front.4bpp.lz"); const u32 gMonPalette_KeldeoResolute[] = INCBIN_U32("graphics/pokemon/keldeo/resolute/normal.gbapal.lz"); @@ -7122,7 +8456,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/back.4bpp.lz"); const u32 gMonShinyPalette_MeloettaAria[] = INCBIN_U32("graphics/pokemon/meloetta/shiny.gbapal.lz"); const u8 gMonIcon_MeloettaAria[] = INCBIN_U8("graphics/pokemon/meloetta/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Meloetta[] = INCBIN_U8("graphics/pokemon/meloetta/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/front.4bpp.lz"); const u32 gMonPalette_MeloettaPirouette[] = INCBIN_U32("graphics/pokemon/meloetta/pirouette/normal.gbapal.lz"); @@ -7137,7 +8473,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/back.4bpp.lz"); const u32 gMonShinyPalette_Genesect[] = INCBIN_U32("graphics/pokemon/genesect/shiny.gbapal.lz"); const u8 gMonIcon_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Genesect[] = INCBIN_U8("graphics/pokemon/genesect/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_GenesectDouseDrive[] = INCBIN_U32("graphics/pokemon/genesect/douse_drive/normal.gbapal.lz"); const u32 gMonShinyPalette_GenesectDouseDrive[] = INCBIN_U32("graphics/pokemon/genesect/douse_drive/shiny.gbapal.lz"); @@ -7158,21 +8496,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/back.4bpp.lz"); const u32 gMonShinyPalette_Chespin[] = INCBIN_U32("graphics/pokemon/chespin/shiny.gbapal.lz"); const u8 gMonIcon_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chespin[] = INCBIN_U8("graphics/pokemon/chespin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/anim_front.4bpp.lz"); const u32 gMonPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/normal.gbapal.lz"); const u32 gMonBackPic_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/back.4bpp.lz"); const u32 gMonShinyPalette_Quilladin[] = INCBIN_U32("graphics/pokemon/quilladin/shiny.gbapal.lz"); const u8 gMonIcon_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Quilladin[] = INCBIN_U8("graphics/pokemon/quilladin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/anim_front.4bpp.lz"); const u32 gMonPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/normal.gbapal.lz"); const u32 gMonBackPic_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/back.4bpp.lz"); const u32 gMonShinyPalette_Chesnaught[] = INCBIN_U32("graphics/pokemon/chesnaught/shiny.gbapal.lz"); const u8 gMonIcon_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chesnaught[] = INCBIN_U8("graphics/pokemon/chesnaught/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHESPIN #if P_FAMILY_FENNEKIN @@ -7181,21 +8525,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/back.4bpp.lz"); const u32 gMonShinyPalette_Fennekin[] = INCBIN_U32("graphics/pokemon/fennekin/shiny.gbapal.lz"); const u8 gMonIcon_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Fennekin[] = INCBIN_U8("graphics/pokemon/fennekin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/anim_front.4bpp.lz"); const u32 gMonPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/normal.gbapal.lz"); const u32 gMonBackPic_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/back.4bpp.lz"); const u32 gMonShinyPalette_Braixen[] = INCBIN_U32("graphics/pokemon/braixen/shiny.gbapal.lz"); const u8 gMonIcon_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Braixen[] = INCBIN_U8("graphics/pokemon/braixen/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/anim_front.4bpp.lz"); const u32 gMonPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/normal.gbapal.lz"); const u32 gMonBackPic_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/back.4bpp.lz"); const u32 gMonShinyPalette_Delphox[] = INCBIN_U32("graphics/pokemon/delphox/shiny.gbapal.lz"); const u8 gMonIcon_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Delphox[] = INCBIN_U8("graphics/pokemon/delphox/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FENNEKIN #if P_FAMILY_FROAKIE @@ -7204,21 +8554,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/back.4bpp.lz"); const u32 gMonShinyPalette_Froakie[] = INCBIN_U32("graphics/pokemon/froakie/shiny.gbapal.lz"); const u8 gMonIcon_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Froakie[] = INCBIN_U8("graphics/pokemon/froakie/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/anim_front.4bpp.lz"); const u32 gMonPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/normal.gbapal.lz"); const u32 gMonBackPic_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/back.4bpp.lz"); const u32 gMonShinyPalette_Frogadier[] = INCBIN_U32("graphics/pokemon/frogadier/shiny.gbapal.lz"); const u8 gMonIcon_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Frogadier[] = INCBIN_U8("graphics/pokemon/frogadier/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/anim_front.4bpp.lz"); const u32 gMonPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/normal.gbapal.lz"); const u32 gMonBackPic_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/back.4bpp.lz"); const u32 gMonShinyPalette_Greninja[] = INCBIN_U32("graphics/pokemon/greninja/shiny.gbapal.lz"); const u8 gMonIcon_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Greninja[] = INCBIN_U8("graphics/pokemon/greninja/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/anim_front.4bpp.lz"); const u32 gMonPalette_GreninjaAsh[] = INCBIN_U32("graphics/pokemon/greninja/ash/normal.gbapal.lz"); @@ -7233,14 +8589,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/back.4bpp.lz"); const u32 gMonShinyPalette_Bunnelby[] = INCBIN_U32("graphics/pokemon/bunnelby/shiny.gbapal.lz"); const u8 gMonIcon_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bunnelby[] = INCBIN_U8("graphics/pokemon/bunnelby/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/anim_front.4bpp.lz"); const u32 gMonPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/normal.gbapal.lz"); const u32 gMonBackPic_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/back.4bpp.lz"); const u32 gMonShinyPalette_Diggersby[] = INCBIN_U32("graphics/pokemon/diggersby/shiny.gbapal.lz"); const u8 gMonIcon_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Diggersby[] = INCBIN_U8("graphics/pokemon/diggersby/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BUNNELBY #if P_FAMILY_FLETCHLING @@ -7249,21 +8609,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/back.4bpp.lz"); const u32 gMonShinyPalette_Fletchling[] = INCBIN_U32("graphics/pokemon/fletchling/shiny.gbapal.lz"); const u8 gMonIcon_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Fletchling[] = INCBIN_U8("graphics/pokemon/fletchling/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/anim_front.4bpp.lz"); const u32 gMonPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/normal.gbapal.lz"); const u32 gMonBackPic_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/back.4bpp.lz"); const u32 gMonShinyPalette_Fletchinder[] = INCBIN_U32("graphics/pokemon/fletchinder/shiny.gbapal.lz"); const u8 gMonIcon_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Fletchinder[] = INCBIN_U8("graphics/pokemon/fletchinder/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/anim_front.4bpp.lz"); const u32 gMonPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/normal.gbapal.lz"); const u32 gMonBackPic_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/back.4bpp.lz"); const u32 gMonShinyPalette_Talonflame[] = INCBIN_U32("graphics/pokemon/talonflame/shiny.gbapal.lz"); const u8 gMonIcon_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Talonflame[] = INCBIN_U8("graphics/pokemon/talonflame/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FLETCHLING #if P_FAMILY_SCATTERBUG @@ -7272,21 +8638,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/back.4bpp.lz"); const u32 gMonShinyPalette_Scatterbug[] = INCBIN_U32("graphics/pokemon/scatterbug/shiny.gbapal.lz"); const u8 gMonIcon_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scatterbug[] = INCBIN_U8("graphics/pokemon/scatterbug/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/anim_front.4bpp.lz"); const u32 gMonPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/normal.gbapal.lz"); const u32 gMonBackPic_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/back.4bpp.lz"); const u32 gMonShinyPalette_Spewpa[] = INCBIN_U32("graphics/pokemon/spewpa/shiny.gbapal.lz"); const u8 gMonIcon_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spewpa[] = INCBIN_U8("graphics/pokemon/spewpa/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/anim_front.4bpp.lz"); const u32 gMonPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/normal.gbapal.lz"); const u32 gMonBackPic_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/back.4bpp.lz"); const u32 gMonShinyPalette_VivillonIcySnow[] = INCBIN_U32("graphics/pokemon/vivillon/shiny.gbapal.lz"); const u8 gMonIcon_VivillonIcySnow[] = INCBIN_U8("graphics/pokemon/vivillon/meadow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vivillon[] = INCBIN_U8("graphics/pokemon/vivillon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/anim_front.4bpp.lz"); const u32 gMonPalette_VivillonPolar[] = INCBIN_U32("graphics/pokemon/vivillon/polar/normal.gbapal.lz"); @@ -7409,14 +8781,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/back.4bpp.lz"); const u32 gMonShinyPalette_Litleo[] = INCBIN_U32("graphics/pokemon/litleo/shiny.gbapal.lz"); const u8 gMonIcon_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Litleo[] = INCBIN_U8("graphics/pokemon/litleo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/anim_front.4bpp.lz"); const u32 gMonPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/normal.gbapal.lz"); const u32 gMonBackPic_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/back.4bpp.lz"); const u32 gMonShinyPalette_Pyroar[] = INCBIN_U32("graphics/pokemon/pyroar/shiny.gbapal.lz"); const u8 gMonIcon_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pyroar[] = INCBIN_U8("graphics/pokemon/pyroar/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/anim_frontf.4bpp.lz"); const u32 gMonBackPic_PyroarF[] = INCBIN_U32("graphics/pokemon/pyroar/backf.4bpp.lz"); @@ -7426,7 +8802,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar #if P_FAMILY_FLABEBE const u32 gMonFrontPic_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/anim_front.4bpp.lz"); const u32 gMonBackPic_Flabebe[] = INCBIN_U32("graphics/pokemon/flabebe/back.4bpp.lz"); +#if P_FOOTPRINTS const u8 gMonFootprint_Flabebe[] = INCBIN_U8("graphics/pokemon/flabebe/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/normal.gbapal.lz"); const u32 gMonShinyPalette_FlabebeRedFlower[] = INCBIN_U32("graphics/pokemon/flabebe/shiny.gbapal.lz"); @@ -7450,7 +8828,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonFrontPic_Floette[] = INCBIN_U32("graphics/pokemon/floette/anim_front.4bpp.lz"); const u32 gMonBackPic_Floette[] = INCBIN_U32("graphics/pokemon/floette/back.4bpp.lz"); +#if P_FOOTPRINTS const u8 gMonFootprint_Floette[] = INCBIN_U8("graphics/pokemon/floette/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/normal.gbapal.lz"); const u32 gMonShinyPalette_FloetteRedFlower[] = INCBIN_U32("graphics/pokemon/floette/shiny.gbapal.lz"); @@ -7480,7 +8860,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonFrontPic_Florges[] = INCBIN_U32("graphics/pokemon/florges/anim_front.4bpp.lz"); const u32 gMonBackPic_Florges[] = INCBIN_U32("graphics/pokemon/florges/back.4bpp.lz"); +#if P_FOOTPRINTS const u8 gMonFootprint_Florges[] = INCBIN_U8("graphics/pokemon/florges/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/normal.gbapal.lz"); const u32 gMonShinyPalette_FlorgesRedFlower[] = INCBIN_U32("graphics/pokemon/florges/shiny.gbapal.lz"); @@ -7509,14 +8891,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/back.4bpp.lz"); const u32 gMonShinyPalette_Skiddo[] = INCBIN_U32("graphics/pokemon/skiddo/shiny.gbapal.lz"); const u8 gMonIcon_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skiddo[] = INCBIN_U8("graphics/pokemon/skiddo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/anim_front.4bpp.lz"); const u32 gMonPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/normal.gbapal.lz"); const u32 gMonBackPic_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/back.4bpp.lz"); const u32 gMonShinyPalette_Gogoat[] = INCBIN_U32("graphics/pokemon/gogoat/shiny.gbapal.lz"); const u8 gMonIcon_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gogoat[] = INCBIN_U8("graphics/pokemon/gogoat/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SKIDDO #if P_FAMILY_PANCHAM @@ -7525,14 +8911,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/back.4bpp.lz"); const u32 gMonShinyPalette_Pancham[] = INCBIN_U32("graphics/pokemon/pancham/shiny.gbapal.lz"); const u8 gMonIcon_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pancham[] = INCBIN_U8("graphics/pokemon/pancham/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/anim_front.4bpp.lz"); const u32 gMonPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/normal.gbapal.lz"); const u32 gMonBackPic_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/back.4bpp.lz"); const u32 gMonShinyPalette_Pangoro[] = INCBIN_U32("graphics/pokemon/pangoro/shiny.gbapal.lz"); const u8 gMonIcon_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pangoro[] = INCBIN_U8("graphics/pokemon/pangoro/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PANCHAM #if P_FAMILY_FURFROU @@ -7541,7 +8931,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/back.4bpp.lz"); const u32 gMonShinyPalette_FurfrouNatural[] = INCBIN_U32("graphics/pokemon/furfrou/shiny.gbapal.lz"); const u8 gMonIcon_FurfrouNatural[] = INCBIN_U8("graphics/pokemon/furfrou/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Furfrou[] = INCBIN_U8("graphics/pokemon/furfrou/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/anim_front.4bpp.lz"); const u32 gMonPalette_FurfrouHeartTrim[] = INCBIN_U32("graphics/pokemon/furfrou/heart_trim/normal.gbapal.lz"); @@ -7604,14 +8996,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/back.4bpp.lz"); const u32 gMonShinyPalette_Espurr[] = INCBIN_U32("graphics/pokemon/espurr/shiny.gbapal.lz"); const u8 gMonIcon_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Espurr[] = INCBIN_U8("graphics/pokemon/espurr/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/anim_front.4bpp.lz"); const u32 gMonPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/normal.gbapal.lz"); const u32 gMonBackPic_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/back.4bpp.lz"); const u32 gMonShinyPalette_MeowsticMale[] = INCBIN_U32("graphics/pokemon/meowstic/shiny.gbapal.lz"); const u8 gMonIcon_MeowsticMale[] = INCBIN_U8("graphics/pokemon/meowstic/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Meowstic[] = INCBIN_U8("graphics/pokemon/meowstic/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/anim_front.4bpp.lz"); const u32 gMonPalette_MeowsticFemale[] = INCBIN_U32("graphics/pokemon/meowstic/female/normal.gbapal.lz"); @@ -7626,21 +9022,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/back.4bpp.lz"); const u32 gMonShinyPalette_Honedge[] = INCBIN_U32("graphics/pokemon/honedge/shiny.gbapal.lz"); const u8 gMonIcon_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Honedge[] = INCBIN_U8("graphics/pokemon/honedge/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/anim_front.4bpp.lz"); const u32 gMonPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/normal.gbapal.lz"); const u32 gMonBackPic_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/back.4bpp.lz"); const u32 gMonShinyPalette_Doublade[] = INCBIN_U32("graphics/pokemon/doublade/shiny.gbapal.lz"); const u8 gMonIcon_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Doublade[] = INCBIN_U8("graphics/pokemon/doublade/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/anim_front.4bpp.lz"); const u32 gMonPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/normal.gbapal.lz"); const u32 gMonBackPic_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/back.4bpp.lz"); const u32 gMonShinyPalette_AegislashShield[] = INCBIN_U32("graphics/pokemon/aegislash/shiny.gbapal.lz"); const u8 gMonIcon_AegislashShield[] = INCBIN_U8("graphics/pokemon/aegislash/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aegislash[] = INCBIN_U8("graphics/pokemon/aegislash/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/anim_front.4bpp.lz"); const u32 gMonPalette_AegislashBlade[] = INCBIN_U32("graphics/pokemon/aegislash/blade/normal.gbapal.lz"); @@ -7655,14 +9057,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/back.4bpp.lz"); const u32 gMonShinyPalette_Spritzee[] = INCBIN_U32("graphics/pokemon/spritzee/shiny.gbapal.lz"); const u8 gMonIcon_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spritzee[] = INCBIN_U8("graphics/pokemon/spritzee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/anim_front.4bpp.lz"); const u32 gMonPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/normal.gbapal.lz"); const u32 gMonBackPic_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/back.4bpp.lz"); const u32 gMonShinyPalette_Aromatisse[] = INCBIN_U32("graphics/pokemon/aromatisse/shiny.gbapal.lz"); const u8 gMonIcon_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aromatisse[] = INCBIN_U8("graphics/pokemon/aromatisse/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPRITZEE #if P_FAMILY_SWIRLIX @@ -7671,14 +9077,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/back.4bpp.lz"); const u32 gMonShinyPalette_Swirlix[] = INCBIN_U32("graphics/pokemon/swirlix/shiny.gbapal.lz"); const u8 gMonIcon_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Swirlix[] = INCBIN_U8("graphics/pokemon/swirlix/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/anim_front.4bpp.lz"); const u32 gMonPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/normal.gbapal.lz"); const u32 gMonBackPic_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/back.4bpp.lz"); const u32 gMonShinyPalette_Slurpuff[] = INCBIN_U32("graphics/pokemon/slurpuff/shiny.gbapal.lz"); const u8 gMonIcon_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Slurpuff[] = INCBIN_U8("graphics/pokemon/slurpuff/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SWIRLIX #if P_FAMILY_INKAY @@ -7687,14 +9097,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/back.4bpp.lz"); const u32 gMonShinyPalette_Inkay[] = INCBIN_U32("graphics/pokemon/inkay/shiny.gbapal.lz"); const u8 gMonIcon_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Inkay[] = INCBIN_U8("graphics/pokemon/inkay/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/anim_front.4bpp.lz"); const u32 gMonPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/normal.gbapal.lz"); const u32 gMonBackPic_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/back.4bpp.lz"); const u32 gMonShinyPalette_Malamar[] = INCBIN_U32("graphics/pokemon/malamar/shiny.gbapal.lz"); const u8 gMonIcon_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Malamar[] = INCBIN_U8("graphics/pokemon/malamar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_INKAY #if P_FAMILY_BINACLE @@ -7703,14 +9117,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/back.4bpp.lz"); const u32 gMonShinyPalette_Binacle[] = INCBIN_U32("graphics/pokemon/binacle/shiny.gbapal.lz"); const u8 gMonIcon_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Binacle[] = INCBIN_U8("graphics/pokemon/binacle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/anim_front.4bpp.lz"); const u32 gMonPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/normal.gbapal.lz"); const u32 gMonBackPic_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/back.4bpp.lz"); const u32 gMonShinyPalette_Barbaracle[] = INCBIN_U32("graphics/pokemon/barbaracle/shiny.gbapal.lz"); const u8 gMonIcon_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Barbaracle[] = INCBIN_U8("graphics/pokemon/barbaracle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BINACLE #if P_FAMILY_SKRELP @@ -7719,14 +9137,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/back.4bpp.lz"); const u32 gMonShinyPalette_Skrelp[] = INCBIN_U32("graphics/pokemon/skrelp/shiny.gbapal.lz"); const u8 gMonIcon_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skrelp[] = INCBIN_U8("graphics/pokemon/skrelp/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/anim_front.4bpp.lz"); const u32 gMonPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/normal.gbapal.lz"); const u32 gMonBackPic_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/back.4bpp.lz"); const u32 gMonShinyPalette_Dragalge[] = INCBIN_U32("graphics/pokemon/dragalge/shiny.gbapal.lz"); const u8 gMonIcon_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dragalge[] = INCBIN_U8("graphics/pokemon/dragalge/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SKRELP #if P_FAMILY_CLAUNCHER @@ -7735,14 +9157,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/back.4bpp.lz"); const u32 gMonShinyPalette_Clauncher[] = INCBIN_U32("graphics/pokemon/clauncher/shiny.gbapal.lz"); const u8 gMonIcon_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Clauncher[] = INCBIN_U8("graphics/pokemon/clauncher/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/anim_front.4bpp.lz"); const u32 gMonPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/normal.gbapal.lz"); const u32 gMonBackPic_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/back.4bpp.lz"); const u32 gMonShinyPalette_Clawitzer[] = INCBIN_U32("graphics/pokemon/clawitzer/shiny.gbapal.lz"); const u8 gMonIcon_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Clawitzer[] = INCBIN_U8("graphics/pokemon/clawitzer/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CLAUNCHER #if P_FAMILY_HELIOPTILE @@ -7751,14 +9177,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/back.4bpp.lz"); const u32 gMonShinyPalette_Helioptile[] = INCBIN_U32("graphics/pokemon/helioptile/shiny.gbapal.lz"); const u8 gMonIcon_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Helioptile[] = INCBIN_U8("graphics/pokemon/helioptile/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/anim_front.4bpp.lz"); const u32 gMonPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/normal.gbapal.lz"); const u32 gMonBackPic_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/back.4bpp.lz"); const u32 gMonShinyPalette_Heliolisk[] = INCBIN_U32("graphics/pokemon/heliolisk/shiny.gbapal.lz"); const u8 gMonIcon_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Heliolisk[] = INCBIN_U8("graphics/pokemon/heliolisk/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HELIOPTILE #if P_FAMILY_TYRUNT @@ -7767,14 +9197,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/back.4bpp.lz"); const u32 gMonShinyPalette_Tyrunt[] = INCBIN_U32("graphics/pokemon/tyrunt/shiny.gbapal.lz"); const u8 gMonIcon_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tyrunt[] = INCBIN_U8("graphics/pokemon/tyrunt/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/anim_front.4bpp.lz"); const u32 gMonPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/normal.gbapal.lz"); const u32 gMonBackPic_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/back.4bpp.lz"); const u32 gMonShinyPalette_Tyrantrum[] = INCBIN_U32("graphics/pokemon/tyrantrum/shiny.gbapal.lz"); const u8 gMonIcon_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tyrantrum[] = INCBIN_U8("graphics/pokemon/tyrantrum/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TYRUNT #if P_FAMILY_AMAURA @@ -7783,14 +9217,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/back.4bpp.lz"); const u32 gMonShinyPalette_Amaura[] = INCBIN_U32("graphics/pokemon/amaura/shiny.gbapal.lz"); const u8 gMonIcon_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Amaura[] = INCBIN_U8("graphics/pokemon/amaura/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/anim_front.4bpp.lz"); const u32 gMonPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/normal.gbapal.lz"); const u32 gMonBackPic_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/back.4bpp.lz"); const u32 gMonShinyPalette_Aurorus[] = INCBIN_U32("graphics/pokemon/aurorus/shiny.gbapal.lz"); const u8 gMonIcon_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Aurorus[] = INCBIN_U8("graphics/pokemon/aurorus/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_AMAURA #if P_FAMILY_HAWLUCHA @@ -7799,7 +9237,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/back.4bpp.lz"); const u32 gMonShinyPalette_Hawlucha[] = INCBIN_U32("graphics/pokemon/hawlucha/shiny.gbapal.lz"); const u8 gMonIcon_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hawlucha[] = INCBIN_U8("graphics/pokemon/hawlucha/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_HAWLUCHA #if P_FAMILY_DEDENNE @@ -7808,7 +9248,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/back.4bpp.lz"); const u32 gMonShinyPalette_Dedenne[] = INCBIN_U32("graphics/pokemon/dedenne/shiny.gbapal.lz"); const u8 gMonIcon_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dedenne[] = INCBIN_U8("graphics/pokemon/dedenne/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DEDENNE #if P_FAMILY_CARBINK @@ -7817,7 +9259,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/back.4bpp.lz"); const u32 gMonShinyPalette_Carbink[] = INCBIN_U32("graphics/pokemon/carbink/shiny.gbapal.lz"); const u8 gMonIcon_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Carbink[] = INCBIN_U8("graphics/pokemon/carbink/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CARBINK #if P_FAMILY_GOOMY @@ -7826,14 +9270,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/back.4bpp.lz"); const u32 gMonShinyPalette_Goomy[] = INCBIN_U32("graphics/pokemon/goomy/shiny.gbapal.lz"); const u8 gMonIcon_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Goomy[] = INCBIN_U8("graphics/pokemon/goomy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/anim_front.4bpp.lz"); const u32 gMonPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/normal.gbapal.lz"); const u32 gMonBackPic_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/back.4bpp.lz"); const u32 gMonShinyPalette_Sliggoo[] = INCBIN_U32("graphics/pokemon/sliggoo/shiny.gbapal.lz"); const u8 gMonIcon_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sliggoo[] = INCBIN_U8("graphics/pokemon/sliggoo/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_SliggooHisuian[] = INCBIN_U32("graphics/pokemon/sliggoo/hisuian/front.4bpp.lz"); @@ -7848,7 +9296,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/back.4bpp.lz"); const u32 gMonShinyPalette_Goodra[] = INCBIN_U32("graphics/pokemon/goodra/shiny.gbapal.lz"); const u8 gMonIcon_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Goodra[] = INCBIN_U8("graphics/pokemon/goodra/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_GoodraHisuian[] = INCBIN_U32("graphics/pokemon/goodra/hisuian/front.4bpp.lz"); @@ -7865,7 +9315,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/back.4bpp.lz"); const u32 gMonShinyPalette_Klefki[] = INCBIN_U32("graphics/pokemon/klefki/shiny.gbapal.lz"); const u8 gMonIcon_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Klefki[] = INCBIN_U8("graphics/pokemon/klefki/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KLEFKI #if P_FAMILY_PHANTUMP @@ -7874,21 +9326,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/back.4bpp.lz"); const u32 gMonShinyPalette_Phantump[] = INCBIN_U32("graphics/pokemon/phantump/shiny.gbapal.lz"); const u8 gMonIcon_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Phantump[] = INCBIN_U8("graphics/pokemon/phantump/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/anim_front.4bpp.lz"); const u32 gMonPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/normal.gbapal.lz"); const u32 gMonBackPic_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/back.4bpp.lz"); const u32 gMonShinyPalette_Trevenant[] = INCBIN_U32("graphics/pokemon/trevenant/shiny.gbapal.lz"); const u8 gMonIcon_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Trevenant[] = INCBIN_U8("graphics/pokemon/trevenant/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PHANTUMP #if P_FAMILY_PUMPKABOO const u32 gMonPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/normal.gbapal.lz"); const u32 gMonShinyPalette_Pumpkaboo[] = INCBIN_U32("graphics/pokemon/pumpkaboo/shiny.gbapal.lz"); const u8 gMonIcon_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pumpkaboo[] = INCBIN_U8("graphics/pokemon/pumpkaboo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/anim_front.4bpp.lz"); const u32 gMonBackPic_PumpkabooAverage[] = INCBIN_U32("graphics/pokemon/pumpkaboo/back.4bpp.lz"); @@ -7905,7 +9363,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/normal.gbapal.lz"); const u32 gMonShinyPalette_Gourgeist[] = INCBIN_U32("graphics/pokemon/gourgeist/shiny.gbapal.lz"); const u8 gMonIcon_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gourgeist[] = INCBIN_U8("graphics/pokemon/gourgeist/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/anim_front.4bpp.lz"); const u32 gMonBackPic_GourgeistAverage[] = INCBIN_U32("graphics/pokemon/gourgeist/back.4bpp.lz"); @@ -7926,14 +9386,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/back.4bpp.lz"); const u32 gMonShinyPalette_Bergmite[] = INCBIN_U32("graphics/pokemon/bergmite/shiny.gbapal.lz"); const u8 gMonIcon_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bergmite[] = INCBIN_U8("graphics/pokemon/bergmite/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/anim_front.4bpp.lz"); const u32 gMonPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/normal.gbapal.lz"); const u32 gMonBackPic_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/back.4bpp.lz"); const u32 gMonShinyPalette_Avalugg[] = INCBIN_U32("graphics/pokemon/avalugg/shiny.gbapal.lz"); const u8 gMonIcon_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Avalugg[] = INCBIN_U8("graphics/pokemon/avalugg/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_AvaluggHisuian[] = INCBIN_U32("graphics/pokemon/avalugg/hisuian/front.4bpp.lz"); @@ -7950,14 +9414,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/back.4bpp.lz"); const u32 gMonShinyPalette_Noibat[] = INCBIN_U32("graphics/pokemon/noibat/shiny.gbapal.lz"); const u8 gMonIcon_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Noibat[] = INCBIN_U8("graphics/pokemon/noibat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/anim_front.4bpp.lz"); const u32 gMonPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/normal.gbapal.lz"); const u32 gMonBackPic_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/back.4bpp.lz"); const u32 gMonShinyPalette_Noivern[] = INCBIN_U32("graphics/pokemon/noivern/shiny.gbapal.lz"); const u8 gMonIcon_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Noivern[] = INCBIN_U8("graphics/pokemon/noivern/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NOIBAT #if P_FAMILY_XERNEAS @@ -7966,7 +9434,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/back.4bpp.lz"); const u32 gMonShinyPalette_XerneasNeutral[] = INCBIN_U32("graphics/pokemon/xerneas/shiny.gbapal.lz"); const u8 gMonIcon_XerneasNeutral[] = INCBIN_U8("graphics/pokemon/xerneas/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Xerneas[] = INCBIN_U8("graphics/pokemon/xerneas/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/anim_front.4bpp.lz"); const u32 gMonPalette_XerneasActive[] = INCBIN_U32("graphics/pokemon/xerneas/active/normal.gbapal.lz"); @@ -7981,7 +9451,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/back.4bpp.lz"); const u32 gMonShinyPalette_Yveltal[] = INCBIN_U32("graphics/pokemon/yveltal/shiny.gbapal.lz"); const u8 gMonIcon_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Yveltal[] = INCBIN_U8("graphics/pokemon/yveltal/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_YVELTAL #if P_FAMILY_ZYGARDE @@ -7990,7 +9462,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/back.4bpp.lz"); const u32 gMonShinyPalette_Zygarde50[] = INCBIN_U32("graphics/pokemon/zygarde/shiny.gbapal.lz"); const u8 gMonIcon_Zygarde50[] = INCBIN_U8("graphics/pokemon/zygarde/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zygarde[] = INCBIN_U8("graphics/pokemon/zygarde/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/anim_front.4bpp.lz"); const u32 gMonPalette_Zygarde10[] = INCBIN_U32("graphics/pokemon/zygarde/10_percent/normal.gbapal.lz"); @@ -8011,7 +9485,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/back.4bpp.lz"); const u32 gMonShinyPalette_Diancie[] = INCBIN_U32("graphics/pokemon/diancie/shiny.gbapal.lz"); const u8 gMonIcon_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Diancie[] = INCBIN_U8("graphics/pokemon/diancie/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_MEGA_EVOLUTIONS const u32 gMonFrontPic_DiancieMega[] = INCBIN_U32("graphics/pokemon/diancie/mega/front.4bpp.lz"); @@ -8028,7 +9504,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/back.4bpp.lz"); const u32 gMonShinyPalette_HoopaConfined[] = INCBIN_U32("graphics/pokemon/hoopa/shiny.gbapal.lz"); const u8 gMonIcon_HoopaConfined[] = INCBIN_U8("graphics/pokemon/hoopa/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hoopa[] = INCBIN_U8("graphics/pokemon/hoopa/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/anim_front.4bpp.lz"); const u32 gMonPalette_HoopaUnbound[] = INCBIN_U32("graphics/pokemon/hoopa/unbound/normal.gbapal.lz"); @@ -8043,7 +9521,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/back.4bpp.lz"); const u32 gMonShinyPalette_Volcanion[] = INCBIN_U32("graphics/pokemon/volcanion/shiny.gbapal.lz"); const u8 gMonIcon_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Volcanion[] = INCBIN_U8("graphics/pokemon/volcanion/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VOLCANION #if P_FAMILY_ROWLET @@ -8052,21 +9532,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/back.4bpp.lz"); const u32 gMonShinyPalette_Rowlet[] = INCBIN_U32("graphics/pokemon/rowlet/shiny.gbapal.lz"); const u8 gMonIcon_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rowlet[] = INCBIN_U8("graphics/pokemon/rowlet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/anim_front.4bpp.lz"); const u32 gMonPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/normal.gbapal.lz"); const u32 gMonBackPic_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/back.4bpp.lz"); const u32 gMonShinyPalette_Dartrix[] = INCBIN_U32("graphics/pokemon/dartrix/shiny.gbapal.lz"); const u8 gMonIcon_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dartrix[] = INCBIN_U8("graphics/pokemon/dartrix/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/anim_front.4bpp.lz"); const u32 gMonPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/normal.gbapal.lz"); const u32 gMonBackPic_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/back.4bpp.lz"); const u32 gMonShinyPalette_Decidueye[] = INCBIN_U32("graphics/pokemon/decidueye/shiny.gbapal.lz"); const u8 gMonIcon_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Decidueye[] = INCBIN_U8("graphics/pokemon/decidueye/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_HISUIAN_FORMS const u32 gMonFrontPic_DecidueyeHisuian[] = INCBIN_U32("graphics/pokemon/decidueye/hisuian/front.4bpp.lz"); @@ -8083,21 +9569,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Litten[] = INCBIN_U32("graphics/pokemon/litten/back.4bpp.lz"); const u32 gMonShinyPalette_Litten[] = INCBIN_U32("graphics/pokemon/litten/shiny.gbapal.lz"); const u8 gMonIcon_Litten[] = INCBIN_U8("graphics/pokemon/litten/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Litten[] = INCBIN_U8("graphics/pokemon/litten/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/front.4bpp.lz"); const u32 gMonPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/normal.gbapal.lz"); const u32 gMonBackPic_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/back.4bpp.lz"); const u32 gMonShinyPalette_Torracat[] = INCBIN_U32("graphics/pokemon/torracat/shiny.gbapal.lz"); const u8 gMonIcon_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Torracat[] = INCBIN_U8("graphics/pokemon/torracat/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/front.4bpp.lz"); const u32 gMonPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/normal.gbapal.lz"); const u32 gMonBackPic_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/back.4bpp.lz"); const u32 gMonShinyPalette_Incineroar[] = INCBIN_U32("graphics/pokemon/incineroar/shiny.gbapal.lz"); const u8 gMonIcon_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Incineroar[] = INCBIN_U8("graphics/pokemon/incineroar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_LITTEN #if P_FAMILY_POPPLIO @@ -8106,21 +9598,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/back.4bpp.lz"); const u32 gMonShinyPalette_Popplio[] = INCBIN_U32("graphics/pokemon/popplio/shiny.gbapal.lz"); const u8 gMonIcon_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Popplio[] = INCBIN_U8("graphics/pokemon/popplio/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/front.4bpp.lz"); const u32 gMonPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/normal.gbapal.lz"); const u32 gMonBackPic_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/back.4bpp.lz"); const u32 gMonShinyPalette_Brionne[] = INCBIN_U32("graphics/pokemon/brionne/shiny.gbapal.lz"); const u8 gMonIcon_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Brionne[] = INCBIN_U8("graphics/pokemon/brionne/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/front.4bpp.lz"); const u32 gMonPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/normal.gbapal.lz"); const u32 gMonBackPic_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/back.4bpp.lz"); const u32 gMonShinyPalette_Primarina[] = INCBIN_U32("graphics/pokemon/primarina/shiny.gbapal.lz"); const u8 gMonIcon_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Primarina[] = INCBIN_U8("graphics/pokemon/primarina/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_POPPLIO #if P_FAMILY_PIKIPEK @@ -8129,21 +9627,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/back.4bpp.lz"); const u32 gMonShinyPalette_Pikipek[] = INCBIN_U32("graphics/pokemon/pikipek/shiny.gbapal.lz"); const u8 gMonIcon_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pikipek[] = INCBIN_U8("graphics/pokemon/pikipek/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/anim_front.4bpp.lz"); const u32 gMonPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/normal.gbapal.lz"); const u32 gMonBackPic_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/back.4bpp.lz"); const u32 gMonShinyPalette_Trumbeak[] = INCBIN_U32("graphics/pokemon/trumbeak/shiny.gbapal.lz"); const u8 gMonIcon_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Trumbeak[] = INCBIN_U8("graphics/pokemon/trumbeak/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/anim_front.4bpp.lz"); const u32 gMonPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/normal.gbapal.lz"); const u32 gMonBackPic_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/back.4bpp.lz"); const u32 gMonShinyPalette_Toucannon[] = INCBIN_U32("graphics/pokemon/toucannon/shiny.gbapal.lz"); const u8 gMonIcon_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Toucannon[] = INCBIN_U8("graphics/pokemon/toucannon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PIKIPEK #if P_FAMILY_YUNGOOS @@ -8152,14 +9656,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/back.4bpp.lz"); const u32 gMonShinyPalette_Yungoos[] = INCBIN_U32("graphics/pokemon/yungoos/shiny.gbapal.lz"); const u8 gMonIcon_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Yungoos[] = INCBIN_U8("graphics/pokemon/yungoos/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/front.4bpp.lz"); const u32 gMonPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/normal.gbapal.lz"); const u32 gMonBackPic_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/back.4bpp.lz"); const u32 gMonShinyPalette_Gumshoos[] = INCBIN_U32("graphics/pokemon/gumshoos/shiny.gbapal.lz"); const u8 gMonIcon_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gumshoos[] = INCBIN_U8("graphics/pokemon/gumshoos/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_YUNGOOS #if P_FAMILY_GRUBBIN @@ -8168,21 +9676,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/back.4bpp.lz"); const u32 gMonShinyPalette_Grubbin[] = INCBIN_U32("graphics/pokemon/grubbin/shiny.gbapal.lz"); const u8 gMonIcon_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grubbin[] = INCBIN_U8("graphics/pokemon/grubbin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/anim_front.4bpp.lz"); const u32 gMonPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/normal.gbapal.lz"); const u32 gMonBackPic_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/back.4bpp.lz"); const u32 gMonShinyPalette_Charjabug[] = INCBIN_U32("graphics/pokemon/charjabug/shiny.gbapal.lz"); const u8 gMonIcon_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Charjabug[] = INCBIN_U8("graphics/pokemon/charjabug/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/anim_front.4bpp.lz"); const u32 gMonPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/normal.gbapal.lz"); const u32 gMonBackPic_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/back.4bpp.lz"); const u32 gMonShinyPalette_Vikavolt[] = INCBIN_U32("graphics/pokemon/vikavolt/shiny.gbapal.lz"); const u8 gMonIcon_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Vikavolt[] = INCBIN_U8("graphics/pokemon/vikavolt/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GRUBBIN #if P_FAMILY_CRABRAWLER @@ -8191,14 +9705,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/back.4bpp.lz"); const u32 gMonShinyPalette_Crabrawler[] = INCBIN_U32("graphics/pokemon/crabrawler/shiny.gbapal.lz"); const u8 gMonIcon_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Crabrawler[] = INCBIN_U8("graphics/pokemon/crabrawler/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/front.4bpp.lz"); const u32 gMonPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/normal.gbapal.lz"); const u32 gMonBackPic_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/back.4bpp.lz"); const u32 gMonShinyPalette_Crabominable[] = INCBIN_U32("graphics/pokemon/crabominable/shiny.gbapal.lz"); const u8 gMonIcon_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Crabominable[] = INCBIN_U8("graphics/pokemon/crabominable/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CRABRAWLER #if P_FAMILY_ORICORIO @@ -8207,7 +9725,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/back.4bpp.lz"); const u32 gMonShinyPalette_OricorioBaile[] = INCBIN_U32("graphics/pokemon/oricorio/shiny.gbapal.lz"); const u8 gMonIcon_OricorioBaile[] = INCBIN_U8("graphics/pokemon/oricorio/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Oricorio[] = INCBIN_U8("graphics/pokemon/oricorio/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/front.4bpp.lz"); const u32 gMonPalette_OricorioPomPom[] = INCBIN_U32("graphics/pokemon/oricorio/pom_pom/normal.gbapal.lz"); @@ -8234,14 +9754,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/back.4bpp.lz"); const u32 gMonShinyPalette_Cutiefly[] = INCBIN_U32("graphics/pokemon/cutiefly/shiny.gbapal.lz"); const u8 gMonIcon_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cutiefly[] = INCBIN_U8("graphics/pokemon/cutiefly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/anim_front.4bpp.lz"); const u32 gMonPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/normal.gbapal.lz"); const u32 gMonBackPic_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/back.4bpp.lz"); const u32 gMonShinyPalette_Ribombee[] = INCBIN_U32("graphics/pokemon/ribombee/shiny.gbapal.lz"); const u8 gMonIcon_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Ribombee[] = INCBIN_U8("graphics/pokemon/ribombee/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CUTIEFLY #if P_FAMILY_ROCKRUFF @@ -8250,14 +9774,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/back.4bpp.lz"); const u32 gMonShinyPalette_Rockruff[] = INCBIN_U32("graphics/pokemon/rockruff/shiny.gbapal.lz"); const u8 gMonIcon_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rockruff[] = INCBIN_U8("graphics/pokemon/rockruff/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/anim_front.4bpp.lz"); const u32 gMonPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/normal.gbapal.lz"); const u32 gMonBackPic_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/back.4bpp.lz"); const u32 gMonShinyPalette_LycanrocMidday[] = INCBIN_U32("graphics/pokemon/lycanroc/shiny.gbapal.lz"); const u8 gMonIcon_LycanrocMidday[] = INCBIN_U8("graphics/pokemon/lycanroc/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lycanroc[] = INCBIN_U8("graphics/pokemon/lycanroc/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/anim_front.4bpp.lz"); const u32 gMonPalette_LycanrocMidnight[] = INCBIN_U32("graphics/pokemon/lycanroc/midnight/normal.gbapal.lz"); @@ -8278,7 +9806,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/back.4bpp.lz"); const u32 gMonShinyPalette_WishiwashiSolo[] = INCBIN_U32("graphics/pokemon/wishiwashi/shiny.gbapal.lz"); const u8 gMonIcon_WishiwashiSolo[] = INCBIN_U8("graphics/pokemon/wishiwashi/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wishiwashi[] = INCBIN_U8("graphics/pokemon/wishiwashi/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/front.4bpp.lz"); const u32 gMonPalette_WishiwashiSchool[] = INCBIN_U32("graphics/pokemon/wishiwashi/school/normal.gbapal.lz"); @@ -8293,14 +9823,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/back.4bpp.lz"); const u32 gMonShinyPalette_Mareanie[] = INCBIN_U32("graphics/pokemon/mareanie/shiny.gbapal.lz"); const u8 gMonIcon_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mareanie[] = INCBIN_U8("graphics/pokemon/mareanie/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/front.4bpp.lz"); const u32 gMonPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/normal.gbapal.lz"); const u32 gMonBackPic_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/back.4bpp.lz"); const u32 gMonShinyPalette_Toxapex[] = INCBIN_U32("graphics/pokemon/toxapex/shiny.gbapal.lz"); const u8 gMonIcon_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Toxapex[] = INCBIN_U8("graphics/pokemon/toxapex/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MAREANIE #if P_FAMILY_MUDBRAY @@ -8309,14 +9843,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/back.4bpp.lz"); const u32 gMonShinyPalette_Mudbray[] = INCBIN_U32("graphics/pokemon/mudbray/shiny.gbapal.lz"); const u8 gMonIcon_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mudbray[] = INCBIN_U8("graphics/pokemon/mudbray/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/front.4bpp.lz"); const u32 gMonPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/normal.gbapal.lz"); const u32 gMonBackPic_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/back.4bpp.lz"); const u32 gMonShinyPalette_Mudsdale[] = INCBIN_U32("graphics/pokemon/mudsdale/shiny.gbapal.lz"); const u8 gMonIcon_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mudsdale[] = INCBIN_U8("graphics/pokemon/mudsdale/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MUDBRAY #if P_FAMILY_DEWPIDER @@ -8325,14 +9863,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/back.4bpp.lz"); const u32 gMonShinyPalette_Dewpider[] = INCBIN_U32("graphics/pokemon/dewpider/shiny.gbapal.lz"); const u8 gMonIcon_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dewpider[] = INCBIN_U8("graphics/pokemon/dewpider/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/anim_front.4bpp.lz"); const u32 gMonPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/normal.gbapal.lz"); const u32 gMonBackPic_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/back.4bpp.lz"); const u32 gMonShinyPalette_Araquanid[] = INCBIN_U32("graphics/pokemon/araquanid/shiny.gbapal.lz"); const u8 gMonIcon_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Araquanid[] = INCBIN_U8("graphics/pokemon/araquanid/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DEWPIDER #if P_FAMILY_FOMANTIS @@ -8341,14 +9883,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/back.4bpp.lz"); const u32 gMonShinyPalette_Fomantis[] = INCBIN_U32("graphics/pokemon/fomantis/shiny.gbapal.lz"); const u8 gMonIcon_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Fomantis[] = INCBIN_U8("graphics/pokemon/fomantis/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/front.4bpp.lz"); const u32 gMonPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/normal.gbapal.lz"); const u32 gMonBackPic_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/back.4bpp.lz"); const u32 gMonShinyPalette_Lurantis[] = INCBIN_U32("graphics/pokemon/lurantis/shiny.gbapal.lz"); const u8 gMonIcon_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lurantis[] = INCBIN_U8("graphics/pokemon/lurantis/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FOMANTIS #if P_FAMILY_MORELULL @@ -8357,14 +9903,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/back.4bpp.lz"); const u32 gMonShinyPalette_Morelull[] = INCBIN_U32("graphics/pokemon/morelull/shiny.gbapal.lz"); const u8 gMonIcon_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Morelull[] = INCBIN_U8("graphics/pokemon/morelull/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/front.4bpp.lz"); const u32 gMonPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/normal.gbapal.lz"); const u32 gMonBackPic_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/back.4bpp.lz"); const u32 gMonShinyPalette_Shiinotic[] = INCBIN_U32("graphics/pokemon/shiinotic/shiny.gbapal.lz"); const u8 gMonIcon_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Shiinotic[] = INCBIN_U8("graphics/pokemon/shiinotic/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MORELULL #if P_FAMILY_SALANDIT @@ -8373,14 +9923,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/back.4bpp.lz"); const u32 gMonShinyPalette_Salandit[] = INCBIN_U32("graphics/pokemon/salandit/shiny.gbapal.lz"); const u8 gMonIcon_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Salandit[] = INCBIN_U8("graphics/pokemon/salandit/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/anim_front.4bpp.lz"); const u32 gMonPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/normal.gbapal.lz"); const u32 gMonBackPic_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/back.4bpp.lz"); const u32 gMonShinyPalette_Salazzle[] = INCBIN_U32("graphics/pokemon/salazzle/shiny.gbapal.lz"); const u8 gMonIcon_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Salazzle[] = INCBIN_U8("graphics/pokemon/salazzle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SALANDIT #if P_FAMILY_STUFFUL @@ -8389,14 +9943,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/back.4bpp.lz"); const u32 gMonShinyPalette_Stufful[] = INCBIN_U32("graphics/pokemon/stufful/shiny.gbapal.lz"); const u8 gMonIcon_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stufful[] = INCBIN_U8("graphics/pokemon/stufful/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/anim_front.4bpp.lz"); const u32 gMonPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/normal.gbapal.lz"); const u32 gMonBackPic_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/back.4bpp.lz"); const u32 gMonShinyPalette_Bewear[] = INCBIN_U32("graphics/pokemon/bewear/shiny.gbapal.lz"); const u8 gMonIcon_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bewear[] = INCBIN_U8("graphics/pokemon/bewear/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_STUFFUL #if P_FAMILY_BOUNSWEET @@ -8405,21 +9963,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/back.4bpp.lz"); const u32 gMonShinyPalette_Bounsweet[] = INCBIN_U32("graphics/pokemon/bounsweet/shiny.gbapal.lz"); const u8 gMonIcon_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bounsweet[] = INCBIN_U8("graphics/pokemon/bounsweet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/front.4bpp.lz"); const u32 gMonPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/normal.gbapal.lz"); const u32 gMonBackPic_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/back.4bpp.lz"); const u32 gMonShinyPalette_Steenee[] = INCBIN_U32("graphics/pokemon/steenee/shiny.gbapal.lz"); const u8 gMonIcon_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Steenee[] = INCBIN_U8("graphics/pokemon/steenee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/front.4bpp.lz"); const u32 gMonPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/normal.gbapal.lz"); const u32 gMonBackPic_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/back.4bpp.lz"); const u32 gMonShinyPalette_Tsareena[] = INCBIN_U32("graphics/pokemon/tsareena/shiny.gbapal.lz"); const u8 gMonIcon_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tsareena[] = INCBIN_U8("graphics/pokemon/tsareena/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BOUNSWEET #if P_FAMILY_COMFEY @@ -8428,7 +9992,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/back.4bpp.lz"); const u32 gMonShinyPalette_Comfey[] = INCBIN_U32("graphics/pokemon/comfey/shiny.gbapal.lz"); const u8 gMonIcon_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Comfey[] = INCBIN_U8("graphics/pokemon/comfey/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_COMFEY #if P_FAMILY_ORANGURU @@ -8437,7 +10003,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/back.4bpp.lz"); const u32 gMonShinyPalette_Oranguru[] = INCBIN_U32("graphics/pokemon/oranguru/shiny.gbapal.lz"); const u8 gMonIcon_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Oranguru[] = INCBIN_U8("graphics/pokemon/oranguru/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ORANGURU #if P_FAMILY_PASSIMIAN @@ -8446,7 +10014,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/back.4bpp.lz"); const u32 gMonShinyPalette_Passimian[] = INCBIN_U32("graphics/pokemon/passimian/shiny.gbapal.lz"); const u8 gMonIcon_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Passimian[] = INCBIN_U8("graphics/pokemon/passimian/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PASSIMIAN #if P_FAMILY_WIMPOD @@ -8455,14 +10025,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/back.4bpp.lz"); const u32 gMonShinyPalette_Wimpod[] = INCBIN_U32("graphics/pokemon/wimpod/shiny.gbapal.lz"); const u8 gMonIcon_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wimpod[] = INCBIN_U8("graphics/pokemon/wimpod/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/anim_front.4bpp.lz"); const u32 gMonPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/normal.gbapal.lz"); const u32 gMonBackPic_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/back.4bpp.lz"); const u32 gMonShinyPalette_Golisopod[] = INCBIN_U32("graphics/pokemon/golisopod/shiny.gbapal.lz"); const u8 gMonIcon_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Golisopod[] = INCBIN_U8("graphics/pokemon/golisopod/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WIMPOD #if P_FAMILY_SANDYGAST @@ -8471,14 +10045,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/back.4bpp.lz"); const u32 gMonShinyPalette_Sandygast[] = INCBIN_U32("graphics/pokemon/sandygast/shiny.gbapal.lz"); const u8 gMonIcon_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sandygast[] = INCBIN_U8("graphics/pokemon/sandygast/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/front.4bpp.lz"); const u32 gMonPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/normal.gbapal.lz"); const u32 gMonBackPic_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/back.4bpp.lz"); const u32 gMonShinyPalette_Palossand[] = INCBIN_U32("graphics/pokemon/palossand/shiny.gbapal.lz"); const u8 gMonIcon_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Palossand[] = INCBIN_U8("graphics/pokemon/palossand/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SANDYGAST #if P_FAMILY_PYUKUMUKU @@ -8487,7 +10065,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/back.4bpp.lz"); const u32 gMonShinyPalette_Pyukumuku[] = INCBIN_U32("graphics/pokemon/pyukumuku/shiny.gbapal.lz"); const u8 gMonIcon_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pyukumuku[] = INCBIN_U8("graphics/pokemon/pyukumuku/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PYUKUMUKU #if P_FAMILY_TYPE_NULL @@ -8496,12 +10076,16 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/back.4bpp.lz"); const u32 gMonShinyPalette_TypeNull[] = INCBIN_U32("graphics/pokemon/type_null/shiny.gbapal.lz"); const u8 gMonIcon_TypeNull[] = INCBIN_U8("graphics/pokemon/type_null/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Type_Null[] = INCBIN_U8("graphics/pokemon/type_null/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/front.4bpp.lz"); const u32 gMonBackPic_Silvally[] = INCBIN_U32("graphics/pokemon/silvally/back.4bpp.lz"); const u8 gMonIcon_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Silvally[] = INCBIN_U8("graphics/pokemon/silvally/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/normal.gbapal.lz"); const u32 gMonShinyPalette_SilvallyNormal[] = INCBIN_U32("graphics/pokemon/silvally/shiny.gbapal.lz"); @@ -8564,7 +10148,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/back.4bpp.lz"); const u32 gMonShinyPalette_MiniorMeteor[] = INCBIN_U32("graphics/pokemon/minior/shiny.gbapal.lz"); const u8 gMonIcon_MiniorMeteor[] = INCBIN_U8("graphics/pokemon/minior/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Minior[] = INCBIN_U8("graphics/pokemon/minior/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/front.4bpp.lz"); const u32 gMonBackPic_MiniorCore[] = INCBIN_U32("graphics/pokemon/minior/core/back.4bpp.lz"); @@ -8598,7 +10184,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Komala[] = INCBIN_U32("graphics/pokemon/komala/back.4bpp.lz"); const u32 gMonShinyPalette_Komala[] = INCBIN_U32("graphics/pokemon/komala/shiny.gbapal.lz"); const u8 gMonIcon_Komala[] = INCBIN_U8("graphics/pokemon/komala/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Komala[] = INCBIN_U8("graphics/pokemon/komala/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KOMALA #if P_FAMILY_TURTONATOR @@ -8607,7 +10195,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/back.4bpp.lz"); const u32 gMonShinyPalette_Turtonator[] = INCBIN_U32("graphics/pokemon/turtonator/shiny.gbapal.lz"); const u8 gMonIcon_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Turtonator[] = INCBIN_U8("graphics/pokemon/turtonator/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TURTONATOR #if P_FAMILY_TOGEDEMARU @@ -8616,7 +10206,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/back.4bpp.lz"); const u32 gMonShinyPalette_Togedemaru[] = INCBIN_U32("graphics/pokemon/togedemaru/shiny.gbapal.lz"); const u8 gMonIcon_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Togedemaru[] = INCBIN_U8("graphics/pokemon/togedemaru/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TOGEDEMARU #if P_FAMILY_MIMIKYU @@ -8625,7 +10217,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/back.4bpp.lz"); const u32 gMonShinyPalette_MimikyuDisguised[] = INCBIN_U32("graphics/pokemon/mimikyu/shiny.gbapal.lz"); const u8 gMonIcon_MimikyuDisguised[] = INCBIN_U8("graphics/pokemon/mimikyu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Mimikyu[] = INCBIN_U8("graphics/pokemon/mimikyu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/front.4bpp.lz"); const u32 gMonPalette_MimikyuBusted[] = INCBIN_U32("graphics/pokemon/mimikyu/busted/normal.gbapal.lz"); @@ -8640,7 +10234,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/back.4bpp.lz"); const u32 gMonShinyPalette_Bruxish[] = INCBIN_U32("graphics/pokemon/bruxish/shiny.gbapal.lz"); const u8 gMonIcon_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Bruxish[] = INCBIN_U8("graphics/pokemon/bruxish/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BRUXISH #if P_FAMILY_DRAMPA @@ -8649,7 +10245,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/back.4bpp.lz"); const u32 gMonShinyPalette_Drampa[] = INCBIN_U32("graphics/pokemon/drampa/shiny.gbapal.lz"); const u8 gMonIcon_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drampa[] = INCBIN_U8("graphics/pokemon/drampa/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRAMPA #if P_FAMILY_DHELMISE @@ -8658,7 +10256,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/back.4bpp.lz"); const u32 gMonShinyPalette_Dhelmise[] = INCBIN_U32("graphics/pokemon/dhelmise/shiny.gbapal.lz"); const u8 gMonIcon_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dhelmise[] = INCBIN_U8("graphics/pokemon/dhelmise/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DHELMISE #if P_FAMILY_JANGMO_O @@ -8667,21 +10267,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/back.4bpp.lz"); const u32 gMonShinyPalette_JangmoO[] = INCBIN_U32("graphics/pokemon/jangmo_o/shiny.gbapal.lz"); const u8 gMonIcon_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_JangmoO[] = INCBIN_U8("graphics/pokemon/jangmo_o/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/anim_front.4bpp.lz"); const u32 gMonPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/normal.gbapal.lz"); const u32 gMonBackPic_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/back.4bpp.lz"); const u32 gMonShinyPalette_HakamoO[] = INCBIN_U32("graphics/pokemon/hakamo_o/shiny.gbapal.lz"); const u8 gMonIcon_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_HakamoO[] = INCBIN_U8("graphics/pokemon/hakamo_o/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/anim_front.4bpp.lz"); const u32 gMonPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/normal.gbapal.lz"); const u32 gMonBackPic_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/back.4bpp.lz"); const u32 gMonShinyPalette_KommoO[] = INCBIN_U32("graphics/pokemon/kommo_o/shiny.gbapal.lz"); const u8 gMonIcon_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_KommoO[] = INCBIN_U8("graphics/pokemon/kommo_o/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_JANGMO_O #if P_FAMILY_TAPU_KOKO @@ -8690,7 +10296,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/back.4bpp.lz"); const u32 gMonShinyPalette_TapuKoko[] = INCBIN_U32("graphics/pokemon/tapu_koko/shiny.gbapal.lz"); const u8 gMonIcon_TapuKoko[] = INCBIN_U8("graphics/pokemon/tapu_koko/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tapu_Koko[] = INCBIN_U8("graphics/pokemon/tapu_koko/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TAPU_KOKO #if P_FAMILY_TAPU_LELE @@ -8699,7 +10307,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/back.4bpp.lz"); const u32 gMonShinyPalette_TapuLele[] = INCBIN_U32("graphics/pokemon/tapu_lele/shiny.gbapal.lz"); const u8 gMonIcon_TapuLele[] = INCBIN_U8("graphics/pokemon/tapu_lele/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tapu_Lele[] = INCBIN_U8("graphics/pokemon/tapu_lele/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TAPU_LELE #if P_FAMILY_TAPU_BULU @@ -8708,7 +10318,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/back.4bpp.lz"); const u32 gMonShinyPalette_TapuBulu[] = INCBIN_U32("graphics/pokemon/tapu_bulu/shiny.gbapal.lz"); const u8 gMonIcon_TapuBulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tapu_Bulu[] = INCBIN_U8("graphics/pokemon/tapu_bulu/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TAPU_BULU #if P_FAMILY_TAPU_FINI @@ -8717,7 +10329,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/back.4bpp.lz"); const u32 gMonShinyPalette_TapuFini[] = INCBIN_U32("graphics/pokemon/tapu_fini/shiny.gbapal.lz"); const u8 gMonIcon_TapuFini[] = INCBIN_U8("graphics/pokemon/tapu_fini/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Tapu_Fini[] = INCBIN_U8("graphics/pokemon/tapu_fini/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TAPU_FINI #if P_FAMILY_COSMOG @@ -8726,28 +10340,36 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/back.4bpp.lz"); const u32 gMonShinyPalette_Cosmog[] = INCBIN_U32("graphics/pokemon/cosmog/shiny.gbapal.lz"); const u8 gMonIcon_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cosmog[] = INCBIN_U8("graphics/pokemon/cosmog/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/front.4bpp.lz"); const u32 gMonPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/normal.gbapal.lz"); const u32 gMonBackPic_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/back.4bpp.lz"); const u32 gMonShinyPalette_Cosmoem[] = INCBIN_U32("graphics/pokemon/cosmoem/shiny.gbapal.lz"); const u8 gMonIcon_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cosmoem[] = INCBIN_U8("graphics/pokemon/cosmoem/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/front.4bpp.lz"); const u32 gMonPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/normal.gbapal.lz"); const u32 gMonBackPic_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/back.4bpp.lz"); const u32 gMonShinyPalette_Solgaleo[] = INCBIN_U32("graphics/pokemon/solgaleo/shiny.gbapal.lz"); const u8 gMonIcon_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Solgaleo[] = INCBIN_U8("graphics/pokemon/solgaleo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/front.4bpp.lz"); const u32 gMonPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/normal.gbapal.lz"); const u32 gMonBackPic_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/back.4bpp.lz"); const u32 gMonShinyPalette_Lunala[] = INCBIN_U32("graphics/pokemon/lunala/shiny.gbapal.lz"); const u8 gMonIcon_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Lunala[] = INCBIN_U8("graphics/pokemon/lunala/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_COSMOG #if P_FAMILY_NIHILEGO @@ -8756,7 +10378,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/back.4bpp.lz"); const u32 gMonShinyPalette_Nihilego[] = INCBIN_U32("graphics/pokemon/nihilego/shiny.gbapal.lz"); const u8 gMonIcon_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nihilego[] = INCBIN_U8("graphics/pokemon/nihilego/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NIHILEGO #if P_FAMILY_BUZZWOLE @@ -8765,7 +10389,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/back.4bpp.lz"); const u32 gMonShinyPalette_Buzzwole[] = INCBIN_U32("graphics/pokemon/buzzwole/shiny.gbapal.lz"); const u8 gMonIcon_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Buzzwole[] = INCBIN_U8("graphics/pokemon/buzzwole/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BUZZWOLE #if P_FAMILY_PHEROMOSA @@ -8774,7 +10400,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/back.4bpp.lz"); const u32 gMonShinyPalette_Pheromosa[] = INCBIN_U32("graphics/pokemon/pheromosa/shiny.gbapal.lz"); const u8 gMonIcon_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pheromosa[] = INCBIN_U8("graphics/pokemon/pheromosa/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PHEROMOSA #if P_FAMILY_XURKITREE @@ -8783,7 +10411,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/back.4bpp.lz"); const u32 gMonShinyPalette_Xurkitree[] = INCBIN_U32("graphics/pokemon/xurkitree/shiny.gbapal.lz"); const u8 gMonIcon_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Xurkitree[] = INCBIN_U8("graphics/pokemon/xurkitree/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_XURKITREE #if P_FAMILY_CELESTEELA @@ -8792,7 +10422,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/back.4bpp.lz"); const u32 gMonShinyPalette_Celesteela[] = INCBIN_U32("graphics/pokemon/celesteela/shiny.gbapal.lz"); const u8 gMonIcon_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Celesteela[] = INCBIN_U8("graphics/pokemon/celesteela/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CELESTEELA #if P_FAMILY_KARTANA @@ -8801,7 +10433,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/back.4bpp.lz"); const u32 gMonShinyPalette_Kartana[] = INCBIN_U32("graphics/pokemon/kartana/shiny.gbapal.lz"); const u8 gMonIcon_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kartana[] = INCBIN_U8("graphics/pokemon/kartana/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KARTANA #if P_FAMILY_GUZZLORD @@ -8810,7 +10444,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/back.4bpp.lz"); const u32 gMonShinyPalette_Guzzlord[] = INCBIN_U32("graphics/pokemon/guzzlord/shiny.gbapal.lz"); const u8 gMonIcon_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Guzzlord[] = INCBIN_U8("graphics/pokemon/guzzlord/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GUZZLORD #if P_FAMILY_NECROZMA @@ -8819,7 +10455,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/back.4bpp.lz"); const u32 gMonShinyPalette_Necrozma[] = INCBIN_U32("graphics/pokemon/necrozma/shiny.gbapal.lz"); const u8 gMonIcon_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Necrozma[] = INCBIN_U8("graphics/pokemon/necrozma/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_FUSION_FORMS const u32 gMonFrontPic_NecrozmaDuskMane[] = INCBIN_U32("graphics/pokemon/necrozma/dusk_mane/front.4bpp.lz"); @@ -8850,7 +10488,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/back.4bpp.lz"); const u32 gMonShinyPalette_Magearna[] = INCBIN_U32("graphics/pokemon/magearna/shiny.gbapal.lz"); const u8 gMonIcon_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Magearna[] = INCBIN_U8("graphics/pokemon/magearna/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/front.4bpp.lz"); const u32 gMonPalette_MagearnaOriginalColor[] = INCBIN_U32("graphics/pokemon/magearna/original_color/normal.gbapal.lz"); @@ -8865,7 +10505,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/back.4bpp.lz"); const u32 gMonShinyPalette_Marshadow[] = INCBIN_U32("graphics/pokemon/marshadow/shiny.gbapal.lz"); const u8 gMonIcon_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Marshadow[] = INCBIN_U8("graphics/pokemon/marshadow/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MARSHADOW #if P_FAMILY_POIPOLE @@ -8874,14 +10516,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/back.4bpp.lz"); const u32 gMonShinyPalette_Poipole[] = INCBIN_U32("graphics/pokemon/poipole/shiny.gbapal.lz"); const u8 gMonIcon_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Poipole[] = INCBIN_U8("graphics/pokemon/poipole/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/front.4bpp.lz"); const u32 gMonPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/normal.gbapal.lz"); const u32 gMonBackPic_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/back.4bpp.lz"); const u32 gMonShinyPalette_Naganadel[] = INCBIN_U32("graphics/pokemon/naganadel/shiny.gbapal.lz"); const u8 gMonIcon_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Naganadel[] = INCBIN_U8("graphics/pokemon/naganadel/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_POIPOLE #if P_FAMILY_STAKATAKA @@ -8890,7 +10536,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/back.4bpp.lz"); const u32 gMonShinyPalette_Stakataka[] = INCBIN_U32("graphics/pokemon/stakataka/shiny.gbapal.lz"); const u8 gMonIcon_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stakataka[] = INCBIN_U8("graphics/pokemon/stakataka/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_STAKATAKA #if P_FAMILY_BLACEPHALON @@ -8899,7 +10547,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/back.4bpp.lz"); const u32 gMonShinyPalette_Blacephalon[] = INCBIN_U32("graphics/pokemon/blacephalon/shiny.gbapal.lz"); const u8 gMonIcon_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Blacephalon[] = INCBIN_U8("graphics/pokemon/blacephalon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BLACEPHALON #if P_FAMILY_ZERAORA @@ -8908,7 +10558,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/back.4bpp.lz"); const u32 gMonShinyPalette_Zeraora[] = INCBIN_U32("graphics/pokemon/zeraora/shiny.gbapal.lz"); const u8 gMonIcon_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zeraora[] = INCBIN_U8("graphics/pokemon/zeraora/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ZERAORA #if P_FAMILY_MELTAN @@ -8917,14 +10569,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/back.4bpp.lz"); const u32 gMonShinyPalette_Meltan[] = INCBIN_U32("graphics/pokemon/meltan/shiny.gbapal.lz"); const u8 gMonIcon_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Meltan[] = INCBIN_U8("graphics/pokemon/meltan/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/front.4bpp.lz"); const u32 gMonPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/normal.gbapal.lz"); const u32 gMonBackPic_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/back.4bpp.lz"); const u32 gMonShinyPalette_Melmetal[] = INCBIN_U32("graphics/pokemon/melmetal/shiny.gbapal.lz"); const u8 gMonIcon_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Melmetal[] = INCBIN_U8("graphics/pokemon/melmetal/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_MelmetalGigantamax[] = INCBIN_U32("graphics/pokemon/melmetal/gigantamax/front.4bpp.lz"); @@ -8941,21 +10597,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/back.4bpp.lz"); const u32 gMonShinyPalette_Grookey[] = INCBIN_U32("graphics/pokemon/grookey/shiny.gbapal.lz"); const u8 gMonIcon_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grookey[] = INCBIN_U8("graphics/pokemon/grookey/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/front.4bpp.lz"); const u32 gMonPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/normal.gbapal.lz"); const u32 gMonBackPic_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/back.4bpp.lz"); const u32 gMonShinyPalette_Thwackey[] = INCBIN_U32("graphics/pokemon/thwackey/shiny.gbapal.lz"); const u8 gMonIcon_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Thwackey[] = INCBIN_U8("graphics/pokemon/thwackey/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/front.4bpp.lz"); const u32 gMonPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/normal.gbapal.lz"); const u32 gMonBackPic_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/back.4bpp.lz"); const u32 gMonShinyPalette_Rillaboom[] = INCBIN_U32("graphics/pokemon/rillaboom/shiny.gbapal.lz"); const u8 gMonIcon_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rillaboom[] = INCBIN_U8("graphics/pokemon/rillaboom/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_RillaboomGigantamax[] = INCBIN_U32("graphics/pokemon/rillaboom/gigantamax/front.4bpp.lz"); @@ -8972,21 +10634,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/back.4bpp.lz"); const u32 gMonShinyPalette_Scorbunny[] = INCBIN_U32("graphics/pokemon/scorbunny/shiny.gbapal.lz"); const u8 gMonIcon_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Scorbunny[] = INCBIN_U8("graphics/pokemon/scorbunny/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/front.4bpp.lz"); const u32 gMonPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/normal.gbapal.lz"); const u32 gMonBackPic_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/back.4bpp.lz"); const u32 gMonShinyPalette_Raboot[] = INCBIN_U32("graphics/pokemon/raboot/shiny.gbapal.lz"); const u8 gMonIcon_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Raboot[] = INCBIN_U8("graphics/pokemon/raboot/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/front.4bpp.lz"); const u32 gMonPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/normal.gbapal.lz"); const u32 gMonBackPic_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/back.4bpp.lz"); const u32 gMonShinyPalette_Cinderace[] = INCBIN_U32("graphics/pokemon/cinderace/shiny.gbapal.lz"); const u8 gMonIcon_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cinderace[] = INCBIN_U8("graphics/pokemon/cinderace/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CinderaceGigantamax[] = INCBIN_U32("graphics/pokemon/cinderace/gigantamax/front.4bpp.lz"); @@ -9003,21 +10671,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/back.4bpp.lz"); const u32 gMonShinyPalette_Sobble[] = INCBIN_U32("graphics/pokemon/sobble/shiny.gbapal.lz"); const u8 gMonIcon_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sobble[] = INCBIN_U8("graphics/pokemon/sobble/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/front.4bpp.lz"); const u32 gMonPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/normal.gbapal.lz"); const u32 gMonBackPic_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/back.4bpp.lz"); const u32 gMonShinyPalette_Drizzile[] = INCBIN_U32("graphics/pokemon/drizzile/shiny.gbapal.lz"); const u8 gMonIcon_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drizzile[] = INCBIN_U8("graphics/pokemon/drizzile/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/front.4bpp.lz"); const u32 gMonPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/normal.gbapal.lz"); const u32 gMonBackPic_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/back.4bpp.lz"); const u32 gMonShinyPalette_Inteleon[] = INCBIN_U32("graphics/pokemon/inteleon/shiny.gbapal.lz"); const u8 gMonIcon_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Inteleon[] = INCBIN_U8("graphics/pokemon/inteleon/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_InteleonGigantamax[] = INCBIN_U32("graphics/pokemon/inteleon/gigantamax/front.4bpp.lz"); @@ -9034,14 +10708,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/back.4bpp.lz"); const u32 gMonShinyPalette_Skwovet[] = INCBIN_U32("graphics/pokemon/skwovet/shiny.gbapal.lz"); const u8 gMonIcon_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Skwovet[] = INCBIN_U8("graphics/pokemon/skwovet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/front.4bpp.lz"); const u32 gMonPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/normal.gbapal.lz"); const u32 gMonBackPic_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/back.4bpp.lz"); const u32 gMonShinyPalette_Greedent[] = INCBIN_U32("graphics/pokemon/greedent/shiny.gbapal.lz"); const u8 gMonIcon_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Greedent[] = INCBIN_U8("graphics/pokemon/greedent/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SKWOVET #if P_FAMILY_ROOKIDEE @@ -9050,21 +10728,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/back.4bpp.lz"); const u32 gMonShinyPalette_Rookidee[] = INCBIN_U32("graphics/pokemon/rookidee/shiny.gbapal.lz"); const u8 gMonIcon_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rookidee[] = INCBIN_U8("graphics/pokemon/rookidee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/anim_front.4bpp.lz"); const u32 gMonPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/normal.gbapal.lz"); const u32 gMonBackPic_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/back.4bpp.lz"); const u32 gMonShinyPalette_Corvisquire[] = INCBIN_U32("graphics/pokemon/corvisquire/shiny.gbapal.lz"); const u8 gMonIcon_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Corvisquire[] = INCBIN_U8("graphics/pokemon/corvisquire/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/anim_front.4bpp.lz"); const u32 gMonPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/normal.gbapal.lz"); const u32 gMonBackPic_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/back.4bpp.lz"); const u32 gMonShinyPalette_Corviknight[] = INCBIN_U32("graphics/pokemon/corviknight/shiny.gbapal.lz"); const u8 gMonIcon_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Corviknight[] = INCBIN_U8("graphics/pokemon/corviknight/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CorviknightGigantamax[] = INCBIN_U32("graphics/pokemon/corviknight/gigantamax/front.4bpp.lz"); @@ -9081,21 +10765,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/back.4bpp.lz"); const u32 gMonShinyPalette_Blipbug[] = INCBIN_U32("graphics/pokemon/blipbug/shiny.gbapal.lz"); const u8 gMonIcon_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Blipbug[] = INCBIN_U8("graphics/pokemon/blipbug/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/front.4bpp.lz"); const u32 gMonPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/normal.gbapal.lz"); const u32 gMonBackPic_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/back.4bpp.lz"); const u32 gMonShinyPalette_Dottler[] = INCBIN_U32("graphics/pokemon/dottler/shiny.gbapal.lz"); const u8 gMonIcon_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dottler[] = INCBIN_U8("graphics/pokemon/dottler/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/front.4bpp.lz"); const u32 gMonPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/normal.gbapal.lz"); const u32 gMonBackPic_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/back.4bpp.lz"); const u32 gMonShinyPalette_Orbeetle[] = INCBIN_U32("graphics/pokemon/orbeetle/shiny.gbapal.lz"); const u8 gMonIcon_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Orbeetle[] = INCBIN_U8("graphics/pokemon/orbeetle/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_OrbeetleGigantamax[] = INCBIN_U32("graphics/pokemon/orbeetle/gigantamax/front.4bpp.lz"); @@ -9112,14 +10802,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/back.4bpp.lz"); const u32 gMonShinyPalette_Nickit[] = INCBIN_U32("graphics/pokemon/nickit/shiny.gbapal.lz"); const u8 gMonIcon_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Nickit[] = INCBIN_U8("graphics/pokemon/nickit/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/front.4bpp.lz"); const u32 gMonPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/normal.gbapal.lz"); const u32 gMonBackPic_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/back.4bpp.lz"); const u32 gMonShinyPalette_Thievul[] = INCBIN_U32("graphics/pokemon/thievul/shiny.gbapal.lz"); const u8 gMonIcon_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Thievul[] = INCBIN_U8("graphics/pokemon/thievul/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NICKIT #if P_FAMILY_GOSSIFLEUR @@ -9128,14 +10822,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/back.4bpp.lz"); const u32 gMonShinyPalette_Gossifleur[] = INCBIN_U32("graphics/pokemon/gossifleur/shiny.gbapal.lz"); const u8 gMonIcon_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Gossifleur[] = INCBIN_U8("graphics/pokemon/gossifleur/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/front.4bpp.lz"); const u32 gMonPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/normal.gbapal.lz"); const u32 gMonBackPic_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/back.4bpp.lz"); const u32 gMonShinyPalette_Eldegoss[] = INCBIN_U32("graphics/pokemon/eldegoss/shiny.gbapal.lz"); const u8 gMonIcon_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Eldegoss[] = INCBIN_U8("graphics/pokemon/eldegoss/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GOSSIFLEUR #if P_FAMILY_WOOLOO @@ -9144,14 +10842,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/back.4bpp.lz"); const u32 gMonShinyPalette_Wooloo[] = INCBIN_U32("graphics/pokemon/wooloo/shiny.gbapal.lz"); const u8 gMonIcon_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Wooloo[] = INCBIN_U8("graphics/pokemon/wooloo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/front.4bpp.lz"); const u32 gMonPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/normal.gbapal.lz"); const u32 gMonBackPic_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/back.4bpp.lz"); const u32 gMonShinyPalette_Dubwool[] = INCBIN_U32("graphics/pokemon/dubwool/shiny.gbapal.lz"); const u8 gMonIcon_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dubwool[] = INCBIN_U8("graphics/pokemon/dubwool/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WOOLOO #if P_FAMILY_CHEWTLE @@ -9160,14 +10862,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/back.4bpp.lz"); const u32 gMonShinyPalette_Chewtle[] = INCBIN_U32("graphics/pokemon/chewtle/shiny.gbapal.lz"); const u8 gMonIcon_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Chewtle[] = INCBIN_U8("graphics/pokemon/chewtle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/anim_front.4bpp.lz"); const u32 gMonPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/normal.gbapal.lz"); const u32 gMonBackPic_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/back.4bpp.lz"); const u32 gMonShinyPalette_Drednaw[] = INCBIN_U32("graphics/pokemon/drednaw/shiny.gbapal.lz"); const u8 gMonIcon_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drednaw[] = INCBIN_U8("graphics/pokemon/drednaw/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_DrednawGigantamax[] = INCBIN_U32("graphics/pokemon/drednaw/gigantamax/front.4bpp.lz"); @@ -9184,14 +10890,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/back.4bpp.lz"); const u32 gMonShinyPalette_Yamper[] = INCBIN_U32("graphics/pokemon/yamper/shiny.gbapal.lz"); const u8 gMonIcon_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Yamper[] = INCBIN_U8("graphics/pokemon/yamper/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/front.4bpp.lz"); const u32 gMonPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/normal.gbapal.lz"); const u32 gMonBackPic_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/back.4bpp.lz"); const u32 gMonShinyPalette_Boltund[] = INCBIN_U32("graphics/pokemon/boltund/shiny.gbapal.lz"); const u8 gMonIcon_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Boltund[] = INCBIN_U8("graphics/pokemon/boltund/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_YAMPER #if P_FAMILY_ROLYCOLY @@ -9200,21 +10910,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/back.4bpp.lz"); const u32 gMonShinyPalette_Rolycoly[] = INCBIN_U32("graphics/pokemon/rolycoly/shiny.gbapal.lz"); const u8 gMonIcon_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Rolycoly[] = INCBIN_U8("graphics/pokemon/rolycoly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/anim_front.4bpp.lz"); const u32 gMonPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/normal.gbapal.lz"); const u32 gMonBackPic_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/back.4bpp.lz"); const u32 gMonShinyPalette_Carkol[] = INCBIN_U32("graphics/pokemon/carkol/shiny.gbapal.lz"); const u8 gMonIcon_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Carkol[] = INCBIN_U8("graphics/pokemon/carkol/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/anim_front.4bpp.lz"); const u32 gMonPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/normal.gbapal.lz"); const u32 gMonBackPic_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/back.4bpp.lz"); const u32 gMonShinyPalette_Coalossal[] = INCBIN_U32("graphics/pokemon/coalossal/shiny.gbapal.lz"); const u8 gMonIcon_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Coalossal[] = INCBIN_U8("graphics/pokemon/coalossal/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CoalossalGigantamax[] = INCBIN_U32("graphics/pokemon/coalossal/gigantamax/front.4bpp.lz"); @@ -9231,14 +10947,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Applin[] = INCBIN_U32("graphics/pokemon/applin/back.4bpp.lz"); const u32 gMonShinyPalette_Applin[] = INCBIN_U32("graphics/pokemon/applin/shiny.gbapal.lz"); const u8 gMonIcon_Applin[] = INCBIN_U8("graphics/pokemon/applin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Applin[] = INCBIN_U8("graphics/pokemon/applin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/anim_front.4bpp.lz"); const u32 gMonPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/normal.gbapal.lz"); const u32 gMonBackPic_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/back.4bpp.lz"); const u32 gMonShinyPalette_Flapple[] = INCBIN_U32("graphics/pokemon/flapple/shiny.gbapal.lz"); const u8 gMonIcon_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Flapple[] = INCBIN_U8("graphics/pokemon/flapple/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_FlappleGigantamax[] = INCBIN_U32("graphics/pokemon/flapple/gigantamax/front.4bpp.lz"); @@ -9253,7 +10973,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/back.4bpp.lz"); const u32 gMonShinyPalette_Appletun[] = INCBIN_U32("graphics/pokemon/appletun/shiny.gbapal.lz"); const u8 gMonIcon_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Appletun[] = INCBIN_U8("graphics/pokemon/appletun/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_AppletunGigantamax[] = INCBIN_U32("graphics/pokemon/appletun/gigantamax/front.4bpp.lz"); @@ -9269,7 +10991,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/back.4bpp.lz"); const u32 gMonShinyPalette_Dipplin[] = INCBIN_U32("graphics/pokemon/dipplin/shiny.gbapal.lz"); const u8 gMonIcon_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Dipplin[] = INCBIN_U8("graphics/pokemon/dipplin/footprint.1bpp"); +#endif //P_FOOTPRINTS + + // const u32 gMonFrontPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/front.4bpp.lz"); + // const u32 gMonPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/normal.gbapal.lz"); + // const u32 gMonBackPic_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/back.4bpp.lz"); + // const u32 gMonShinyPalette_Hydrapple[] = INCBIN_U32("graphics/pokemon/hydrapple/shiny.gbapal.lz"); + // const u8 gMonIcon_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_Hydrapple[] = INCBIN_U8("graphics/pokemon/hydrapple/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -9279,14 +11012,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/back.4bpp.lz"); const u32 gMonShinyPalette_Silicobra[] = INCBIN_U32("graphics/pokemon/silicobra/shiny.gbapal.lz"); const u8 gMonIcon_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Silicobra[] = INCBIN_U8("graphics/pokemon/silicobra/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/front.4bpp.lz"); const u32 gMonPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/normal.gbapal.lz"); const u32 gMonBackPic_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/back.4bpp.lz"); const u32 gMonShinyPalette_Sandaconda[] = INCBIN_U32("graphics/pokemon/sandaconda/shiny.gbapal.lz"); const u8 gMonIcon_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sandaconda[] = INCBIN_U8("graphics/pokemon/sandaconda/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_SandacondaGigantamax[] = INCBIN_U32("graphics/pokemon/sandaconda/gigantamax/front.4bpp.lz"); @@ -9303,7 +11040,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/back.4bpp.lz"); const u32 gMonShinyPalette_Cramorant[] = INCBIN_U32("graphics/pokemon/cramorant/shiny.gbapal.lz"); const u8 gMonIcon_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cramorant[] = INCBIN_U8("graphics/pokemon/cramorant/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/front.4bpp.lz"); const u32 gMonPalette_CramorantGulping[] = INCBIN_U32("graphics/pokemon/cramorant/gulping/normal.gbapal.lz"); @@ -9324,14 +11063,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/back.4bpp.lz"); const u32 gMonShinyPalette_Arrokuda[] = INCBIN_U32("graphics/pokemon/arrokuda/shiny.gbapal.lz"); const u8 gMonIcon_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Arrokuda[] = INCBIN_U8("graphics/pokemon/arrokuda/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/front.4bpp.lz"); const u32 gMonPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/normal.gbapal.lz"); const u32 gMonBackPic_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/back.4bpp.lz"); const u32 gMonShinyPalette_Barraskewda[] = INCBIN_U32("graphics/pokemon/barraskewda/shiny.gbapal.lz"); const u8 gMonIcon_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Barraskewda[] = INCBIN_U8("graphics/pokemon/barraskewda/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ARROKUDA #if P_FAMILY_TOXEL @@ -9340,14 +11083,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/back.4bpp.lz"); const u32 gMonShinyPalette_Toxel[] = INCBIN_U32("graphics/pokemon/toxel/shiny.gbapal.lz"); const u8 gMonIcon_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Toxel[] = INCBIN_U8("graphics/pokemon/toxel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/front.4bpp.lz"); const u32 gMonPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/normal.gbapal.lz"); const u32 gMonBackPic_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/back.4bpp.lz"); const u32 gMonShinyPalette_ToxtricityAmped[] = INCBIN_U32("graphics/pokemon/toxtricity/shiny.gbapal.lz"); const u8 gMonIcon_ToxtricityAmped[] = INCBIN_U8("graphics/pokemon/toxtricity/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Toxtricity[] = INCBIN_U8("graphics/pokemon/toxtricity/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/front.4bpp.lz"); const u32 gMonPalette_ToxtricityLowKey[] = INCBIN_U32("graphics/pokemon/toxtricity/low_key/normal.gbapal.lz"); @@ -9370,14 +11117,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/back.4bpp.lz"); const u32 gMonShinyPalette_Sizzlipede[] = INCBIN_U32("graphics/pokemon/sizzlipede/shiny.gbapal.lz"); const u8 gMonIcon_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sizzlipede[] = INCBIN_U8("graphics/pokemon/sizzlipede/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/anim_front.4bpp.lz"); const u32 gMonPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/normal.gbapal.lz"); const u32 gMonBackPic_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/back.4bpp.lz"); const u32 gMonShinyPalette_Centiskorch[] = INCBIN_U32("graphics/pokemon/centiskorch/shiny.gbapal.lz"); const u8 gMonIcon_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Centiskorch[] = INCBIN_U8("graphics/pokemon/centiskorch/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CentiskorchGigantamax[] = INCBIN_U32("graphics/pokemon/centiskorch/gigantamax/front.4bpp.lz"); @@ -9394,14 +11145,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/back.4bpp.lz"); const u32 gMonShinyPalette_Clobbopus[] = INCBIN_U32("graphics/pokemon/clobbopus/shiny.gbapal.lz"); const u8 gMonIcon_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Clobbopus[] = INCBIN_U8("graphics/pokemon/clobbopus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/front.4bpp.lz"); const u32 gMonPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/normal.gbapal.lz"); const u32 gMonBackPic_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/back.4bpp.lz"); const u32 gMonShinyPalette_Grapploct[] = INCBIN_U32("graphics/pokemon/grapploct/shiny.gbapal.lz"); const u8 gMonIcon_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grapploct[] = INCBIN_U8("graphics/pokemon/grapploct/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CLOBBOPUS #if P_FAMILY_SINISTEA @@ -9410,14 +11165,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/back.4bpp.lz"); const u32 gMonShinyPalette_Sinistea[] = INCBIN_U32("graphics/pokemon/sinistea/shiny.gbapal.lz"); const u8 gMonIcon_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Sinistea[] = INCBIN_U8("graphics/pokemon/sinistea/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/front.4bpp.lz"); const u32 gMonPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/normal.gbapal.lz"); const u32 gMonBackPic_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/back.4bpp.lz"); const u32 gMonShinyPalette_Polteageist[] = INCBIN_U32("graphics/pokemon/polteageist/shiny.gbapal.lz"); const u8 gMonIcon_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Polteageist[] = INCBIN_U8("graphics/pokemon/polteageist/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SINISTEA #if P_FAMILY_HATENNA @@ -9426,21 +11185,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/back.4bpp.lz"); const u32 gMonShinyPalette_Hatenna[] = INCBIN_U32("graphics/pokemon/hatenna/shiny.gbapal.lz"); const u8 gMonIcon_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hatenna[] = INCBIN_U8("graphics/pokemon/hatenna/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/front.4bpp.lz"); const u32 gMonPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/normal.gbapal.lz"); const u32 gMonBackPic_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/back.4bpp.lz"); const u32 gMonShinyPalette_Hattrem[] = INCBIN_U32("graphics/pokemon/hattrem/shiny.gbapal.lz"); const u8 gMonIcon_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hattrem[] = INCBIN_U8("graphics/pokemon/hattrem/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/front.4bpp.lz"); const u32 gMonPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/normal.gbapal.lz"); const u32 gMonBackPic_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/back.4bpp.lz"); const u32 gMonShinyPalette_Hatterene[] = INCBIN_U32("graphics/pokemon/hatterene/shiny.gbapal.lz"); const u8 gMonIcon_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Hatterene[] = INCBIN_U8("graphics/pokemon/hatterene/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_HattereneGigantamax[] = INCBIN_U32("graphics/pokemon/hatterene/gigantamax/front.4bpp.lz"); @@ -9457,21 +11222,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/back.4bpp.lz"); const u32 gMonShinyPalette_Impidimp[] = INCBIN_U32("graphics/pokemon/impidimp/shiny.gbapal.lz"); const u8 gMonIcon_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Impidimp[] = INCBIN_U8("graphics/pokemon/impidimp/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/front.4bpp.lz"); const u32 gMonPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/normal.gbapal.lz"); const u32 gMonBackPic_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/back.4bpp.lz"); const u32 gMonShinyPalette_Morgrem[] = INCBIN_U32("graphics/pokemon/morgrem/shiny.gbapal.lz"); const u8 gMonIcon_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Morgrem[] = INCBIN_U8("graphics/pokemon/morgrem/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/front.4bpp.lz"); const u32 gMonPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/normal.gbapal.lz"); const u32 gMonBackPic_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/back.4bpp.lz"); const u32 gMonShinyPalette_Grimmsnarl[] = INCBIN_U32("graphics/pokemon/grimmsnarl/shiny.gbapal.lz"); const u8 gMonIcon_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Grimmsnarl[] = INCBIN_U8("graphics/pokemon/grimmsnarl/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_GrimmsnarlGigantamax[] = INCBIN_U32("graphics/pokemon/grimmsnarl/gigantamax/front.4bpp.lz"); @@ -9488,7 +11259,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/back.4bpp.lz"); const u32 gMonShinyPalette_Milcery[] = INCBIN_U32("graphics/pokemon/milcery/shiny.gbapal.lz"); const u8 gMonIcon_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Milcery[] = INCBIN_U8("graphics/pokemon/milcery/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/front.4bpp.lz"); const u32 gMonBackPic_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/back.4bpp.lz"); const u32 gMonPalette_Alcremie[] = INCBIN_U32("graphics/pokemon/alcremie/normal.gbapal.lz"); @@ -9516,7 +11289,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonPalette_AlcremieStrawberryRainbowSwirl[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_rainbow_swirl.gbapal.lz"); const u32 gMonBackPic_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/back.4bpp.lz"); const u32 gMonShinyPalette_AlcremieStrawberry[] = INCBIN_U32("graphics/pokemon/alcremie/strawberry/strawberry_shiny.gbapal.lz"); +#if P_FOOTPRINTS const u8 gMonFootprint_Alcremie[] = INCBIN_U8("graphics/pokemon/alcremie/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_AlcremieBerry[] = INCBIN_U32("graphics/pokemon/alcremie/berry/front.4bpp.lz"); const u32 gMonPalette_AlcremieBerryVanillaCream[] = INCBIN_U32("graphics/pokemon/alcremie/berry/berry_default.gbapal.lz"); @@ -9611,7 +11386,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/back.4bpp.lz"); const u32 gMonShinyPalette_Falinks[] = INCBIN_U32("graphics/pokemon/falinks/shiny.gbapal.lz"); const u8 gMonIcon_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Falinks[] = INCBIN_U8("graphics/pokemon/falinks/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FALINKS #if P_FAMILY_PINCURCHIN @@ -9620,7 +11397,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/back.4bpp.lz"); const u32 gMonShinyPalette_Pincurchin[] = INCBIN_U32("graphics/pokemon/pincurchin/shiny.gbapal.lz"); const u8 gMonIcon_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Pincurchin[] = INCBIN_U8("graphics/pokemon/pincurchin/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PINCURCHIN #if P_FAMILY_SNOM @@ -9629,14 +11408,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Snom[] = INCBIN_U32("graphics/pokemon/snom/back.4bpp.lz"); const u32 gMonShinyPalette_Snom[] = INCBIN_U32("graphics/pokemon/snom/shiny.gbapal.lz"); const u8 gMonIcon_Snom[] = INCBIN_U8("graphics/pokemon/snom/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Snom[] = INCBIN_U8("graphics/pokemon/snom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/front.4bpp.lz"); const u32 gMonPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/normal.gbapal.lz"); const u32 gMonBackPic_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/back.4bpp.lz"); const u32 gMonShinyPalette_Frosmoth[] = INCBIN_U32("graphics/pokemon/frosmoth/shiny.gbapal.lz"); const u8 gMonIcon_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Frosmoth[] = INCBIN_U8("graphics/pokemon/frosmoth/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SNOM #if P_FAMILY_STONJOURNER @@ -9645,7 +11428,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/back.4bpp.lz"); const u32 gMonShinyPalette_Stonjourner[] = INCBIN_U32("graphics/pokemon/stonjourner/shiny.gbapal.lz"); const u8 gMonIcon_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Stonjourner[] = INCBIN_U8("graphics/pokemon/stonjourner/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_STONJOURNER #if P_FAMILY_EISCUE @@ -9654,7 +11439,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/back.4bpp.lz"); const u32 gMonShinyPalette_EiscueIceFace[] = INCBIN_U32("graphics/pokemon/eiscue/shiny.gbapal.lz"); const u8 gMonIcon_EiscueIceFace[] = INCBIN_U8("graphics/pokemon/eiscue/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Eiscue[] = INCBIN_U8("graphics/pokemon/eiscue/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/front.4bpp.lz"); const u32 gMonPalette_EiscueNoiceFace[] = INCBIN_U32("graphics/pokemon/eiscue/noice_face/normal.gbapal.lz"); @@ -9669,7 +11456,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/back.4bpp.lz"); const u32 gMonShinyPalette_IndeedeeMale[] = INCBIN_U32("graphics/pokemon/indeedee/shiny.gbapal.lz"); const u8 gMonIcon_IndeedeeMale[] = INCBIN_U8("graphics/pokemon/indeedee/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Indeedee[] = INCBIN_U8("graphics/pokemon/indeedee/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/front.4bpp.lz"); const u32 gMonPalette_IndeedeeFemale[] = INCBIN_U32("graphics/pokemon/indeedee/female/normal.gbapal.lz"); @@ -9684,7 +11473,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/back.4bpp.lz"); const u32 gMonShinyPalette_MorpekoFullBelly[] = INCBIN_U32("graphics/pokemon/morpeko/shiny.gbapal.lz"); const u8 gMonIcon_MorpekoFullBelly[] = INCBIN_U8("graphics/pokemon/morpeko/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Morpeko[] = INCBIN_U8("graphics/pokemon/morpeko/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/front.4bpp.lz"); const u32 gMonPalette_MorpekoHangry[] = INCBIN_U32("graphics/pokemon/morpeko/hangry/normal.gbapal.lz"); @@ -9699,14 +11490,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/back.4bpp.lz"); const u32 gMonShinyPalette_Cufant[] = INCBIN_U32("graphics/pokemon/cufant/shiny.gbapal.lz"); const u8 gMonIcon_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Cufant[] = INCBIN_U8("graphics/pokemon/cufant/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/front.4bpp.lz"); const u32 gMonPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/normal.gbapal.lz"); const u32 gMonBackPic_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/back.4bpp.lz"); const u32 gMonShinyPalette_Copperajah[] = INCBIN_U32("graphics/pokemon/copperajah/shiny.gbapal.lz"); const u8 gMonIcon_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Copperajah[] = INCBIN_U8("graphics/pokemon/copperajah/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_CopperajahGigantamax[] = INCBIN_U32("graphics/pokemon/copperajah/gigantamax/front.4bpp.lz"); @@ -9723,7 +11518,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/back.4bpp.lz"); const u32 gMonShinyPalette_Dracozolt[] = INCBIN_U32("graphics/pokemon/dracozolt/shiny.gbapal.lz"); const u8 gMonIcon_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dracozolt[] = INCBIN_U8("graphics/pokemon/dracozolt/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRACOZOLT #if P_FAMILY_ARCTOZOLT @@ -9732,7 +11529,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/back.4bpp.lz"); const u32 gMonShinyPalette_Arctozolt[] = INCBIN_U32("graphics/pokemon/arctozolt/shiny.gbapal.lz"); const u8 gMonIcon_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Arctozolt[] = INCBIN_U8("graphics/pokemon/arctozolt/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ARCTOZOLT #if P_FAMILY_DRACOVISH @@ -9741,7 +11540,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/back.4bpp.lz"); const u32 gMonShinyPalette_Dracovish[] = INCBIN_U32("graphics/pokemon/dracovish/shiny.gbapal.lz"); const u8 gMonIcon_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dracovish[] = INCBIN_U8("graphics/pokemon/dracovish/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DRACOVISH #if P_FAMILY_ARCTOVISH @@ -9750,7 +11551,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/back.4bpp.lz"); const u32 gMonShinyPalette_Arctovish[] = INCBIN_U32("graphics/pokemon/arctovish/shiny.gbapal.lz"); const u8 gMonIcon_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Arctovish[] = INCBIN_U8("graphics/pokemon/arctovish/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ARCTOVISH #if P_FAMILY_DURALUDON @@ -9759,7 +11562,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/back.4bpp.lz"); const u32 gMonShinyPalette_Duraludon[] = INCBIN_U32("graphics/pokemon/duraludon/shiny.gbapal.lz"); const u8 gMonIcon_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Duraludon[] = INCBIN_U8("graphics/pokemon/duraludon/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_GIGANTAMAX_FORMS const u32 gMonFrontPic_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/front.4bpp.lz"); @@ -9768,6 +11573,17 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonShinyPalette_DuraludonGigantamax[] = INCBIN_U32("graphics/pokemon/duraludon/gigantamax/shiny.gbapal.lz"); const u8 gMonIcon_DuraludonGigantamax[] = INCBIN_U8("graphics/pokemon/duraludon/gigantamax/icon.4bpp"); #endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS + // const u32 gMonFrontPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/front.4bpp.lz"); + // const u32 gMonPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/normal.gbapal.lz"); + // const u32 gMonBackPic_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/back.4bpp.lz"); + // const u32 gMonShinyPalette_Archaludon[] = INCBIN_U32("graphics/pokemon/archaludon/shiny.gbapal.lz"); + // const u8 gMonIcon_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_Archaludon[] = INCBIN_U8("graphics/pokemon/archaludon/footprint.1bpp"); +#endif //P_FOOTPRINTS +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY @@ -9776,21 +11592,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/back.4bpp.lz"); const u32 gMonShinyPalette_Dreepy[] = INCBIN_U32("graphics/pokemon/dreepy/shiny.gbapal.lz"); const u8 gMonIcon_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dreepy[] = INCBIN_U8("graphics/pokemon/dreepy/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/front.4bpp.lz"); const u32 gMonPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/normal.gbapal.lz"); const u32 gMonBackPic_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/back.4bpp.lz"); const u32 gMonShinyPalette_Drakloak[] = INCBIN_U32("graphics/pokemon/drakloak/shiny.gbapal.lz"); const u8 gMonIcon_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Drakloak[] = INCBIN_U8("graphics/pokemon/drakloak/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/front.4bpp.lz"); const u32 gMonPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/normal.gbapal.lz"); const u32 gMonBackPic_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/back.4bpp.lz"); const u32 gMonShinyPalette_Dragapult[] = INCBIN_U32("graphics/pokemon/dragapult/shiny.gbapal.lz"); const u8 gMonIcon_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Dragapult[] = INCBIN_U8("graphics/pokemon/dragapult/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DREEPY #if P_FAMILY_ZACIAN @@ -9799,7 +11621,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/back.4bpp.lz"); const u32 gMonShinyPalette_ZacianHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zacian/shiny.gbapal.lz"); const u8 gMonIcon_ZacianHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zacian/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zacian[] = INCBIN_U8("graphics/pokemon/zacian/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/front.4bpp.lz"); const u32 gMonPalette_ZacianCrownedSword[] = INCBIN_U32("graphics/pokemon/zacian/crowned_sword/normal.gbapal.lz"); @@ -9814,7 +11638,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/back.4bpp.lz"); const u32 gMonShinyPalette_ZamazentaHeroOfManyBattles[] = INCBIN_U32("graphics/pokemon/zamazenta/shiny.gbapal.lz"); const u8 gMonIcon_ZamazentaHeroOfManyBattles[] = INCBIN_U8("graphics/pokemon/zamazenta/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zamazenta[] = INCBIN_U8("graphics/pokemon/zamazenta/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/front.4bpp.lz"); const u32 gMonPalette_ZamazentaCrownedShield[] = INCBIN_U32("graphics/pokemon/zamazenta/crowned_shield/normal.gbapal.lz"); @@ -9829,7 +11655,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/back.4bpp.lz"); const u32 gMonShinyPalette_Eternatus[] = INCBIN_U32("graphics/pokemon/eternatus/shiny.gbapal.lz"); const u8 gMonIcon_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Eternatus[] = INCBIN_U8("graphics/pokemon/eternatus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/front.4bpp.lz"); const u32 gMonPalette_EternatusEternamax[] = INCBIN_U32("graphics/pokemon/eternatus/eternamax/normal.gbapal.lz"); @@ -9844,14 +11672,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/back.4bpp.lz"); const u32 gMonShinyPalette_Kubfu[] = INCBIN_U32("graphics/pokemon/kubfu/shiny.gbapal.lz"); const u8 gMonIcon_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Kubfu[] = INCBIN_U8("graphics/pokemon/kubfu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/front.4bpp.lz"); const u32 gMonPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/normal.gbapal.lz"); const u32 gMonBackPic_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/back.4bpp.lz"); const u32 gMonShinyPalette_UrshifuSingleStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/shiny.gbapal.lz"); const u8 gMonIcon_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Urshifu[] = INCBIN_U8("graphics/pokemon/urshifu/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/front.4bpp.lz"); const u32 gMonPalette_UrshifuRapidStrikeStyle[] = INCBIN_U32("graphics/pokemon/urshifu/rapid_strike_style/normal.gbapal.lz"); @@ -9877,7 +11709,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/back.4bpp.lz"); const u32 gMonShinyPalette_Zarude[] = INCBIN_U32("graphics/pokemon/zarude/shiny.gbapal.lz"); const u8 gMonIcon_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Zarude[] = INCBIN_U8("graphics/pokemon/zarude/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/front.4bpp.lz"); const u32 gMonPalette_ZarudeDada[] = INCBIN_U32("graphics/pokemon/zarude/dada/normal.gbapal.lz"); @@ -9892,7 +11726,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/back.4bpp.lz"); const u32 gMonShinyPalette_Regieleki[] = INCBIN_U32("graphics/pokemon/regieleki/shiny.gbapal.lz"); const u8 gMonIcon_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Regieleki[] = INCBIN_U8("graphics/pokemon/regieleki/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_REGIELEKI #if P_FAMILY_REGIDRAGO @@ -9901,7 +11737,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/back.4bpp.lz"); const u32 gMonShinyPalette_Regidrago[] = INCBIN_U32("graphics/pokemon/regidrago/shiny.gbapal.lz"); const u8 gMonIcon_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Regidrago[] = INCBIN_U8("graphics/pokemon/regidrago/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_REGIDRAGO #if P_FAMILY_GLASTRIER @@ -9910,7 +11748,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/back.4bpp.lz"); const u32 gMonShinyPalette_Glastrier[] = INCBIN_U32("graphics/pokemon/glastrier/shiny.gbapal.lz"); const u8 gMonIcon_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Glastrier[] = INCBIN_U8("graphics/pokemon/glastrier/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GLASTRIER #if P_FAMILY_SPECTRIER @@ -9919,7 +11759,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/back.4bpp.lz"); const u32 gMonShinyPalette_Spectrier[] = INCBIN_U32("graphics/pokemon/spectrier/shiny.gbapal.lz"); const u8 gMonIcon_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Spectrier[] = INCBIN_U8("graphics/pokemon/spectrier/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPECTRIER #if P_FAMILY_CALYREX @@ -9928,7 +11770,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/back.4bpp.lz"); const u32 gMonShinyPalette_Calyrex[] = INCBIN_U32("graphics/pokemon/calyrex/shiny.gbapal.lz"); const u8 gMonIcon_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/icon.4bpp"); +#if P_FOOTPRINTS const u8 gMonFootprint_Calyrex[] = INCBIN_U8("graphics/pokemon/calyrex/footprint.1bpp"); +#endif //P_FOOTPRINTS #if P_FUSION_FORMS const u32 gMonFrontPic_CalyrexIceRider[] = INCBIN_U32("graphics/pokemon/calyrex/ice_rider/front.4bpp.lz"); @@ -9953,21 +11797,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/back.4bpp.lz"); const u32 gMonShinyPalette_Sprigatito[] = INCBIN_U32("graphics/pokemon/sprigatito/shiny.gbapal.lz"); const u8 gMonIcon_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Sprigatito[] = INCBIN_U8("graphics/pokemon/sprigatito/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/front.4bpp.lz"); const u32 gMonPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/normal.gbapal.lz"); const u32 gMonBackPic_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/back.4bpp.lz"); const u32 gMonShinyPalette_Floragato[] = INCBIN_U32("graphics/pokemon/floragato/shiny.gbapal.lz"); const u8 gMonIcon_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Floragato[] = INCBIN_U8("graphics/pokemon/floragato/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/front.4bpp.lz"); const u32 gMonPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/normal.gbapal.lz"); const u32 gMonBackPic_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/back.4bpp.lz"); const u32 gMonShinyPalette_Meowscarada[] = INCBIN_U32("graphics/pokemon/meowscarada/shiny.gbapal.lz"); const u8 gMonIcon_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Meowscarada[] = INCBIN_U8("graphics/pokemon/meowscarada/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SPRIGATITO #if P_FAMILY_FUECOCO @@ -9976,21 +11826,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/back.4bpp.lz"); const u32 gMonShinyPalette_Fuecoco[] = INCBIN_U32("graphics/pokemon/fuecoco/shiny.gbapal.lz"); const u8 gMonIcon_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Fuecoco[] = INCBIN_U8("graphics/pokemon/fuecoco/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/front.4bpp.lz"); const u32 gMonPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/normal.gbapal.lz"); const u32 gMonBackPic_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/back.4bpp.lz"); const u32 gMonShinyPalette_Crocalor[] = INCBIN_U32("graphics/pokemon/crocalor/shiny.gbapal.lz"); const u8 gMonIcon_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Crocalor[] = INCBIN_U8("graphics/pokemon/crocalor/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/front.4bpp.lz"); const u32 gMonPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/normal.gbapal.lz"); const u32 gMonBackPic_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/back.4bpp.lz"); const u32 gMonShinyPalette_Skeledirge[] = INCBIN_U32("graphics/pokemon/skeledirge/shiny.gbapal.lz"); const u8 gMonIcon_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Skeledirge[] = INCBIN_U8("graphics/pokemon/skeledirge/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FUECOCO #if P_FAMILY_QUAXLY @@ -9999,21 +11855,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/back.4bpp.lz"); const u32 gMonShinyPalette_Quaxly[] = INCBIN_U32("graphics/pokemon/quaxly/shiny.gbapal.lz"); const u8 gMonIcon_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Quaxly[] = INCBIN_U8("graphics/pokemon/quaxly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/front.4bpp.lz"); const u32 gMonPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/normal.gbapal.lz"); const u32 gMonBackPic_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/back.4bpp.lz"); const u32 gMonShinyPalette_Quaxwell[] = INCBIN_U32("graphics/pokemon/quaxwell/shiny.gbapal.lz"); const u8 gMonIcon_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Quaxwell[] = INCBIN_U8("graphics/pokemon/quaxwell/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/front.4bpp.lz"); const u32 gMonPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/normal.gbapal.lz"); const u32 gMonBackPic_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/back.4bpp.lz"); const u32 gMonShinyPalette_Quaquaval[] = INCBIN_U32("graphics/pokemon/quaquaval/shiny.gbapal.lz"); const u8 gMonIcon_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Quaquaval[] = INCBIN_U8("graphics/pokemon/quaquaval/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_QUAXLY #if P_FAMILY_LECHONK @@ -10022,14 +11884,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/back.4bpp.lz"); const u32 gMonShinyPalette_Lechonk[] = INCBIN_U32("graphics/pokemon/lechonk/shiny.gbapal.lz"); const u8 gMonIcon_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Lechonk[] = INCBIN_U8("graphics/pokemon/lechonk/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/front.4bpp.lz"); const u32 gMonPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/normal.gbapal.lz"); const u32 gMonBackPic_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/back.4bpp.lz"); const u32 gMonShinyPalette_OinkologneMale[] = INCBIN_U32("graphics/pokemon/oinkologne/shiny.gbapal.lz"); const u8 gMonIcon_OinkologneMale[] = INCBIN_U8("graphics/pokemon/oinkologne/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Oinkologne[] = INCBIN_U8("graphics/pokemon/oinkologne/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/front.4bpp.lz"); const u32 gMonPalette_OinkologneFemale[] = INCBIN_U32("graphics/pokemon/oinkologne/female/normal.gbapal.lz"); @@ -10044,14 +11910,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/back.4bpp.lz"); const u32 gMonShinyPalette_Tarountula[] = INCBIN_U32("graphics/pokemon/tarountula/shiny.gbapal.lz"); const u8 gMonIcon_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tarountula[] = INCBIN_U8("graphics/pokemon/tarountula/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/front.4bpp.lz"); const u32 gMonPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/normal.gbapal.lz"); const u32 gMonBackPic_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/back.4bpp.lz"); const u32 gMonShinyPalette_Spidops[] = INCBIN_U32("graphics/pokemon/spidops/shiny.gbapal.lz"); const u8 gMonIcon_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Spidops[] = INCBIN_U8("graphics/pokemon/spidops/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TAROUNTULA #if P_FAMILY_NYMBLE @@ -10060,14 +11930,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/back.4bpp.lz"); const u32 gMonShinyPalette_Nymble[] = INCBIN_U32("graphics/pokemon/nymble/shiny.gbapal.lz"); const u8 gMonIcon_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Nymble[] = INCBIN_U8("graphics/pokemon/nymble/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/front.4bpp.lz"); const u32 gMonPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/normal.gbapal.lz"); const u32 gMonBackPic_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/back.4bpp.lz"); const u32 gMonShinyPalette_Lokix[] = INCBIN_U32("graphics/pokemon/lokix/shiny.gbapal.lz"); const u8 gMonIcon_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Lokix[] = INCBIN_U8("graphics/pokemon/lokix/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NYMBLE #if P_FAMILY_PAWMI @@ -10076,21 +11950,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/back.4bpp.lz"); const u32 gMonShinyPalette_Pawmi[] = INCBIN_U32("graphics/pokemon/pawmi/shiny.gbapal.lz"); const u8 gMonIcon_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Pawmi[] = INCBIN_U8("graphics/pokemon/pawmi/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/front.4bpp.lz"); const u32 gMonPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/normal.gbapal.lz"); const u32 gMonBackPic_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/back.4bpp.lz"); const u32 gMonShinyPalette_Pawmo[] = INCBIN_U32("graphics/pokemon/pawmo/shiny.gbapal.lz"); const u8 gMonIcon_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Pawmo[] = INCBIN_U8("graphics/pokemon/pawmo/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/front.4bpp.lz"); const u32 gMonPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/normal.gbapal.lz"); const u32 gMonBackPic_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/back.4bpp.lz"); const u32 gMonShinyPalette_Pawmot[] = INCBIN_U32("graphics/pokemon/pawmot/shiny.gbapal.lz"); const u8 gMonIcon_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Pawmot[] = INCBIN_U8("graphics/pokemon/pawmot/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_PAWMI #if P_FAMILY_TANDEMAUS @@ -10099,11 +11979,15 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/back.4bpp.lz"); const u32 gMonShinyPalette_Tandemaus[] = INCBIN_U32("graphics/pokemon/tandemaus/shiny.gbapal.lz"); const u8 gMonIcon_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tandemaus[] = INCBIN_U8("graphics/pokemon/tandemaus/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/normal.gbapal.lz"); const u32 gMonShinyPalette_Maushold[] = INCBIN_U32("graphics/pokemon/maushold/shiny.gbapal.lz"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Maushold[] = INCBIN_U8("graphics/pokemon/maushold/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/front.4bpp.lz"); const u32 gMonBackPic_MausholdFamilyOfThree[] = INCBIN_U32("graphics/pokemon/maushold/back.4bpp.lz"); @@ -10120,14 +12004,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/back.4bpp.lz"); const u32 gMonShinyPalette_Fidough[] = INCBIN_U32("graphics/pokemon/fidough/shiny.gbapal.lz"); const u8 gMonIcon_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Fidough[] = INCBIN_U8("graphics/pokemon/fidough/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/front.4bpp.lz"); const u32 gMonPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/normal.gbapal.lz"); const u32 gMonBackPic_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/back.4bpp.lz"); const u32 gMonShinyPalette_Dachsbun[] = INCBIN_U32("graphics/pokemon/dachsbun/shiny.gbapal.lz"); const u8 gMonIcon_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Dachsbun[] = INCBIN_U8("graphics/pokemon/dachsbun/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FIDOUGH #if P_FAMILY_SMOLIV @@ -10136,27 +12024,35 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/back.4bpp.lz"); const u32 gMonShinyPalette_Smoliv[] = INCBIN_U32("graphics/pokemon/smoliv/shiny.gbapal.lz"); const u8 gMonIcon_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Smoliv[] = INCBIN_U8("graphics/pokemon/smoliv/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/front.4bpp.lz"); const u32 gMonPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/normal.gbapal.lz"); const u32 gMonBackPic_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/back.4bpp.lz"); const u32 gMonShinyPalette_Dolliv[] = INCBIN_U32("graphics/pokemon/dolliv/shiny.gbapal.lz"); const u8 gMonIcon_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Dolliv[] = INCBIN_U8("graphics/pokemon/dolliv/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/front.4bpp.lz"); const u32 gMonPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/normal.gbapal.lz"); const u32 gMonBackPic_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/back.4bpp.lz"); const u32 gMonShinyPalette_Arboliva[] = INCBIN_U32("graphics/pokemon/arboliva/shiny.gbapal.lz"); const u8 gMonIcon_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Arboliva[] = INCBIN_U8("graphics/pokemon/arboliva/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SMOLIV #if P_FAMILY_SQUAWKABILLY const u32 gMonFrontPic_Squawkabilly[] = INCBIN_U32("graphics/pokemon/squawkabilly/front.4bpp.lz"); const u32 gMonBackPic_Squawkabilly[] = INCBIN_U32("graphics/pokemon/squawkabilly/back.4bpp.lz"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Squawkabilly[] = INCBIN_U8("graphics/pokemon/squawkabilly/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/green_plumage/normal.gbapal.lz"); const u32 gMonShinyPalette_SquawkabillyGreenPlumage[] = INCBIN_U32("graphics/pokemon/squawkabilly/green_plumage/shiny.gbapal.lz"); @@ -10181,21 +12077,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/back.4bpp.lz"); const u32 gMonShinyPalette_Nacli[] = INCBIN_U32("graphics/pokemon/nacli/shiny.gbapal.lz"); const u8 gMonIcon_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Nacli[] = INCBIN_U8("graphics/pokemon/nacli/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/front.4bpp.lz"); const u32 gMonPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/normal.gbapal.lz"); const u32 gMonBackPic_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/back.4bpp.lz"); const u32 gMonShinyPalette_Naclstack[] = INCBIN_U32("graphics/pokemon/naclstack/shiny.gbapal.lz"); const u8 gMonIcon_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Naclstack[] = INCBIN_U8("graphics/pokemon/naclstack/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/front.4bpp.lz"); const u32 gMonPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/normal.gbapal.lz"); const u32 gMonBackPic_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/back.4bpp.lz"); const u32 gMonShinyPalette_Garganacl[] = INCBIN_U32("graphics/pokemon/garganacl/shiny.gbapal.lz"); const u8 gMonIcon_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Garganacl[] = INCBIN_U8("graphics/pokemon/garganacl/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_NACLI #if P_FAMILY_CHARCADET @@ -10204,21 +12106,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/back.4bpp.lz"); const u32 gMonShinyPalette_Charcadet[] = INCBIN_U32("graphics/pokemon/charcadet/shiny.gbapal.lz"); const u8 gMonIcon_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Charcadet[] = INCBIN_U8("graphics/pokemon/charcadet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/front.4bpp.lz"); const u32 gMonPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/normal.gbapal.lz"); const u32 gMonBackPic_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/back.4bpp.lz"); const u32 gMonShinyPalette_Armarouge[] = INCBIN_U32("graphics/pokemon/armarouge/shiny.gbapal.lz"); const u8 gMonIcon_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Armarouge[] = INCBIN_U8("graphics/pokemon/armarouge/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/front.4bpp.lz"); const u32 gMonPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/normal.gbapal.lz"); const u32 gMonBackPic_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/back.4bpp.lz"); const u32 gMonShinyPalette_Ceruledge[] = INCBIN_U32("graphics/pokemon/ceruledge/shiny.gbapal.lz"); const u8 gMonIcon_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Ceruledge[] = INCBIN_U8("graphics/pokemon/ceruledge/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHARCADET #if P_FAMILY_TADBULB @@ -10227,14 +12135,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/back.4bpp.lz"); const u32 gMonShinyPalette_Tadbulb[] = INCBIN_U32("graphics/pokemon/tadbulb/shiny.gbapal.lz"); const u8 gMonIcon_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tadbulb[] = INCBIN_U8("graphics/pokemon/tadbulb/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/front.4bpp.lz"); const u32 gMonPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/normal.gbapal.lz"); const u32 gMonBackPic_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/back.4bpp.lz"); const u32 gMonShinyPalette_Bellibolt[] = INCBIN_U32("graphics/pokemon/bellibolt/shiny.gbapal.lz"); const u8 gMonIcon_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Bellibolt[] = INCBIN_U8("graphics/pokemon/bellibolt/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TADBULB #if P_FAMILY_WATTREL @@ -10243,14 +12155,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/back.4bpp.lz"); const u32 gMonShinyPalette_Wattrel[] = INCBIN_U32("graphics/pokemon/wattrel/shiny.gbapal.lz"); const u8 gMonIcon_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Wattrel[] = INCBIN_U8("graphics/pokemon/wattrel/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/front.4bpp.lz"); const u32 gMonPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/normal.gbapal.lz"); const u32 gMonBackPic_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/back.4bpp.lz"); const u32 gMonShinyPalette_Kilowattrel[] = INCBIN_U32("graphics/pokemon/kilowattrel/shiny.gbapal.lz"); const u8 gMonIcon_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Kilowattrel[] = INCBIN_U8("graphics/pokemon/kilowattrel/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WATTREL #if P_FAMILY_MASCHIFF @@ -10259,14 +12175,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/back.4bpp.lz"); const u32 gMonShinyPalette_Maschiff[] = INCBIN_U32("graphics/pokemon/maschiff/shiny.gbapal.lz"); const u8 gMonIcon_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Maschiff[] = INCBIN_U8("graphics/pokemon/maschiff/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/front.4bpp.lz"); const u32 gMonPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/normal.gbapal.lz"); const u32 gMonBackPic_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/back.4bpp.lz"); const u32 gMonShinyPalette_Mabosstiff[] = INCBIN_U32("graphics/pokemon/mabosstiff/shiny.gbapal.lz"); const u8 gMonIcon_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Mabosstiff[] = INCBIN_U8("graphics/pokemon/mabosstiff/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MASCHIFF #if P_FAMILY_SHROODLE @@ -10275,14 +12195,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/back.4bpp.lz"); const u32 gMonShinyPalette_Shroodle[] = INCBIN_U32("graphics/pokemon/shroodle/shiny.gbapal.lz"); const u8 gMonIcon_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Shroodle[] = INCBIN_U8("graphics/pokemon/shroodle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/front.4bpp.lz"); const u32 gMonPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/normal.gbapal.lz"); const u32 gMonBackPic_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/back.4bpp.lz"); const u32 gMonShinyPalette_Grafaiai[] = INCBIN_U32("graphics/pokemon/grafaiai/shiny.gbapal.lz"); const u8 gMonIcon_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Grafaiai[] = INCBIN_U8("graphics/pokemon/grafaiai/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SHROODLE #if P_FAMILY_BRAMBLIN @@ -10291,14 +12215,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/back.4bpp.lz"); const u32 gMonShinyPalette_Bramblin[] = INCBIN_U32("graphics/pokemon/bramblin/shiny.gbapal.lz"); const u8 gMonIcon_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Bramblin[] = INCBIN_U8("graphics/pokemon/bramblin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/front.4bpp.lz"); const u32 gMonPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/normal.gbapal.lz"); const u32 gMonBackPic_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/back.4bpp.lz"); const u32 gMonShinyPalette_Brambleghast[] = INCBIN_U32("graphics/pokemon/brambleghast/shiny.gbapal.lz"); const u8 gMonIcon_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Brambleghast[] = INCBIN_U8("graphics/pokemon/brambleghast/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BRAMBLIN #if P_FAMILY_TOEDSCOOL @@ -10307,14 +12235,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/back.4bpp.lz"); const u32 gMonShinyPalette_Toedscool[] = INCBIN_U32("graphics/pokemon/toedscool/shiny.gbapal.lz"); const u8 gMonIcon_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Toedscool[] = INCBIN_U8("graphics/pokemon/toedscool/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/front.4bpp.lz"); const u32 gMonPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/normal.gbapal.lz"); const u32 gMonBackPic_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/back.4bpp.lz"); const u32 gMonShinyPalette_Toedscruel[] = INCBIN_U32("graphics/pokemon/toedscruel/shiny.gbapal.lz"); const u8 gMonIcon_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Toedscruel[] = INCBIN_U8("graphics/pokemon/toedscruel/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TOEDSCOOL #if P_FAMILY_KLAWF @@ -10323,7 +12255,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/back.4bpp.lz"); const u32 gMonShinyPalette_Klawf[] = INCBIN_U32("graphics/pokemon/klawf/shiny.gbapal.lz"); const u8 gMonIcon_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Klawf[] = INCBIN_U8("graphics/pokemon/klawf/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KLAWF #if P_FAMILY_CAPSAKID @@ -10332,14 +12266,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/back.4bpp.lz"); const u32 gMonShinyPalette_Capsakid[] = INCBIN_U32("graphics/pokemon/capsakid/shiny.gbapal.lz"); const u8 gMonIcon_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Capsakid[] = INCBIN_U8("graphics/pokemon/capsakid/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/front.4bpp.lz"); const u32 gMonPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/normal.gbapal.lz"); const u32 gMonBackPic_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/back.4bpp.lz"); const u32 gMonShinyPalette_Scovillain[] = INCBIN_U32("graphics/pokemon/scovillain/shiny.gbapal.lz"); const u8 gMonIcon_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Scovillain[] = INCBIN_U8("graphics/pokemon/scovillain/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CAPSAKID #if P_FAMILY_RELLOR @@ -10348,14 +12286,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/back.4bpp.lz"); const u32 gMonShinyPalette_Rellor[] = INCBIN_U32("graphics/pokemon/rellor/shiny.gbapal.lz"); const u8 gMonIcon_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Rellor[] = INCBIN_U8("graphics/pokemon/rellor/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/front.4bpp.lz"); const u32 gMonPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/normal.gbapal.lz"); const u32 gMonBackPic_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/back.4bpp.lz"); const u32 gMonShinyPalette_Rabsca[] = INCBIN_U32("graphics/pokemon/rabsca/shiny.gbapal.lz"); const u8 gMonIcon_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Rabsca[] = INCBIN_U8("graphics/pokemon/rabsca/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_RELLOR #if P_FAMILY_FLITTLE @@ -10364,14 +12306,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/back.4bpp.lz"); const u32 gMonShinyPalette_Flittle[] = INCBIN_U32("graphics/pokemon/flittle/shiny.gbapal.lz"); const u8 gMonIcon_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Flittle[] = INCBIN_U8("graphics/pokemon/flittle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/front.4bpp.lz"); const u32 gMonPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/normal.gbapal.lz"); const u32 gMonBackPic_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/back.4bpp.lz"); const u32 gMonShinyPalette_Espathra[] = INCBIN_U32("graphics/pokemon/espathra/shiny.gbapal.lz"); const u8 gMonIcon_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Espathra[] = INCBIN_U8("graphics/pokemon/espathra/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FLITTLE #if P_FAMILY_TINKATINK @@ -10380,21 +12326,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/back.4bpp.lz"); const u32 gMonShinyPalette_Tinkatink[] = INCBIN_U32("graphics/pokemon/tinkatink/shiny.gbapal.lz"); const u8 gMonIcon_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tinkatink[] = INCBIN_U8("graphics/pokemon/tinkatink/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/front.4bpp.lz"); const u32 gMonPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/normal.gbapal.lz"); const u32 gMonBackPic_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/back.4bpp.lz"); const u32 gMonShinyPalette_Tinkatuff[] = INCBIN_U32("graphics/pokemon/tinkatuff/shiny.gbapal.lz"); const u8 gMonIcon_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tinkatuff[] = INCBIN_U8("graphics/pokemon/tinkatuff/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/front.4bpp.lz"); const u32 gMonPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/normal.gbapal.lz"); const u32 gMonBackPic_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/back.4bpp.lz"); const u32 gMonShinyPalette_Tinkaton[] = INCBIN_U32("graphics/pokemon/tinkaton/shiny.gbapal.lz"); const u8 gMonIcon_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tinkaton[] = INCBIN_U8("graphics/pokemon/tinkaton/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TINKATINK #if P_FAMILY_WIGLETT @@ -10403,14 +12355,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/back.4bpp.lz"); const u32 gMonShinyPalette_Wiglett[] = INCBIN_U32("graphics/pokemon/wiglett/shiny.gbapal.lz"); const u8 gMonIcon_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Wiglett[] = INCBIN_U8("graphics/pokemon/wiglett/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/front.4bpp.lz"); const u32 gMonPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/normal.gbapal.lz"); const u32 gMonBackPic_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/back.4bpp.lz"); const u32 gMonShinyPalette_Wugtrio[] = INCBIN_U32("graphics/pokemon/wugtrio/shiny.gbapal.lz"); const u8 gMonIcon_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Wugtrio[] = INCBIN_U8("graphics/pokemon/wugtrio/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WIGLETT #if P_FAMILY_BOMBIRDIER @@ -10419,7 +12375,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/back.4bpp.lz"); const u32 gMonShinyPalette_Bombirdier[] = INCBIN_U32("graphics/pokemon/bombirdier/shiny.gbapal.lz"); const u8 gMonIcon_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Bombirdier[] = INCBIN_U8("graphics/pokemon/bombirdier/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BOMBIRDIER #if P_FAMILY_FINIZEN @@ -10428,14 +12386,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/back.4bpp.lz"); const u32 gMonShinyPalette_Finizen[] = INCBIN_U32("graphics/pokemon/finizen/shiny.gbapal.lz"); const u8 gMonIcon_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Finizen[] = INCBIN_U8("graphics/pokemon/finizen/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/front.4bpp.lz"); const u32 gMonPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/normal.gbapal.lz"); const u32 gMonBackPic_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/back.4bpp.lz"); const u32 gMonShinyPalette_PalafinZero[] = INCBIN_U32("graphics/pokemon/palafin/shiny.gbapal.lz"); const u8 gMonIcon_PalafinZero[] = INCBIN_U8("graphics/pokemon/palafin/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Palafin[] = INCBIN_U8("graphics/pokemon/palafin/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/front.4bpp.lz"); const u32 gMonPalette_PalafinHero[] = INCBIN_U32("graphics/pokemon/palafin/hero/normal.gbapal.lz"); @@ -10450,14 +12412,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/back.4bpp.lz"); const u32 gMonShinyPalette_Varoom[] = INCBIN_U32("graphics/pokemon/varoom/shiny.gbapal.lz"); const u8 gMonIcon_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Varoom[] = INCBIN_U8("graphics/pokemon/varoom/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/front.4bpp.lz"); const u32 gMonPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/normal.gbapal.lz"); const u32 gMonBackPic_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/back.4bpp.lz"); const u32 gMonShinyPalette_Revavroom[] = INCBIN_U32("graphics/pokemon/revavroom/shiny.gbapal.lz"); const u8 gMonIcon_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Revavroom[] = INCBIN_U8("graphics/pokemon/revavroom/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VAROOM #if P_FAMILY_CYCLIZAR @@ -10466,7 +12432,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/back.4bpp.lz"); const u32 gMonShinyPalette_Cyclizar[] = INCBIN_U32("graphics/pokemon/cyclizar/shiny.gbapal.lz"); const u8 gMonIcon_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Cyclizar[] = INCBIN_U8("graphics/pokemon/cyclizar/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CYCLIZAR #if P_FAMILY_ORTHWORM @@ -10475,7 +12443,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/back.4bpp.lz"); const u32 gMonShinyPalette_Orthworm[] = INCBIN_U32("graphics/pokemon/orthworm/shiny.gbapal.lz"); const u8 gMonIcon_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Orthworm[] = INCBIN_U8("graphics/pokemon/orthworm/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ORTHWORM #if P_FAMILY_GLIMMET @@ -10484,14 +12454,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/back.4bpp.lz"); const u32 gMonShinyPalette_Glimmet[] = INCBIN_U32("graphics/pokemon/glimmet/shiny.gbapal.lz"); const u8 gMonIcon_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Glimmet[] = INCBIN_U8("graphics/pokemon/glimmet/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/front.4bpp.lz"); const u32 gMonPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/normal.gbapal.lz"); const u32 gMonBackPic_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/back.4bpp.lz"); const u32 gMonShinyPalette_Glimmora[] = INCBIN_U32("graphics/pokemon/glimmora/shiny.gbapal.lz"); const u8 gMonIcon_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Glimmora[] = INCBIN_U8("graphics/pokemon/glimmora/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GLIMMET #if P_FAMILY_GREAVARD @@ -10500,14 +12474,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/back.4bpp.lz"); const u32 gMonShinyPalette_Greavard[] = INCBIN_U32("graphics/pokemon/greavard/shiny.gbapal.lz"); const u8 gMonIcon_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Greavard[] = INCBIN_U8("graphics/pokemon/greavard/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/front.4bpp.lz"); const u32 gMonPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/normal.gbapal.lz"); const u32 gMonBackPic_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/back.4bpp.lz"); const u32 gMonShinyPalette_Houndstone[] = INCBIN_U32("graphics/pokemon/houndstone/shiny.gbapal.lz"); const u8 gMonIcon_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Houndstone[] = INCBIN_U8("graphics/pokemon/houndstone/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GREAVARD #if P_FAMILY_FLAMIGO @@ -10516,7 +12494,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/back.4bpp.lz"); const u32 gMonShinyPalette_Flamigo[] = INCBIN_U32("graphics/pokemon/flamigo/shiny.gbapal.lz"); const u8 gMonIcon_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Flamigo[] = INCBIN_U8("graphics/pokemon/flamigo/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FLAMIGO #if P_FAMILY_CETODDLE @@ -10525,14 +12505,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/back.4bpp.lz"); const u32 gMonShinyPalette_Cetoddle[] = INCBIN_U32("graphics/pokemon/cetoddle/shiny.gbapal.lz"); const u8 gMonIcon_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Cetoddle[] = INCBIN_U8("graphics/pokemon/cetoddle/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/front.4bpp.lz"); const u32 gMonPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/normal.gbapal.lz"); const u32 gMonBackPic_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/back.4bpp.lz"); const u32 gMonShinyPalette_Cetitan[] = INCBIN_U32("graphics/pokemon/cetitan/shiny.gbapal.lz"); const u8 gMonIcon_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Cetitan[] = INCBIN_U8("graphics/pokemon/cetitan/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CETODDLE #if P_FAMILY_VELUZA @@ -10541,7 +12525,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/back.4bpp.lz"); const u32 gMonShinyPalette_Veluza[] = INCBIN_U32("graphics/pokemon/veluza/shiny.gbapal.lz"); const u8 gMonIcon_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Veluza[] = INCBIN_U8("graphics/pokemon/veluza/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_VELUZA #if P_FAMILY_DONDOZO @@ -10550,7 +12536,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/back.4bpp.lz"); const u32 gMonShinyPalette_Dondozo[] = INCBIN_U32("graphics/pokemon/dondozo/shiny.gbapal.lz"); const u8 gMonIcon_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Dondozo[] = INCBIN_U8("graphics/pokemon/dondozo/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_DONDOZO #if P_FAMILY_TATSUGIRI @@ -10559,7 +12547,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/back.4bpp.lz"); const u32 gMonShinyPalette_TatsugiriCurly[] = INCBIN_U32("graphics/pokemon/tatsugiri/curly/shiny.gbapal.lz"); const u8 gMonIcon_TatsugiriCurly[] = INCBIN_U8("graphics/pokemon/tatsugiri/curly/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Tatsugiri[] = INCBIN_U8("graphics/pokemon/tatsugiri/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/front.4bpp.lz"); const u32 gMonPalette_TatsugiriDroopy[] = INCBIN_U32("graphics/pokemon/tatsugiri/droopy/normal.gbapal.lz"); @@ -10580,7 +12570,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/back.4bpp.lz"); const u32 gMonShinyPalette_GreatTusk[] = INCBIN_U32("graphics/pokemon/great_tusk/shiny.gbapal.lz"); const u8 gMonIcon_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_GreatTusk[] = INCBIN_U8("graphics/pokemon/great_tusk/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GREAT_TUSK #if P_FAMILY_SCREAM_TAIL @@ -10589,7 +12581,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/back.4bpp.lz"); const u32 gMonShinyPalette_ScreamTail[] = INCBIN_U32("graphics/pokemon/scream_tail/shiny.gbapal.lz"); const u8 gMonIcon_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_ScreamTail[] = INCBIN_U8("graphics/pokemon/scream_tail/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SCREAM_TAIL #if P_FAMILY_BRUTE_BONNET @@ -10598,7 +12592,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/back.4bpp.lz"); const u32 gMonShinyPalette_BruteBonnet[] = INCBIN_U32("graphics/pokemon/brute_bonnet/shiny.gbapal.lz"); const u8 gMonIcon_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_BruteBonnet[] = INCBIN_U8("graphics/pokemon/brute_bonnet/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_BRUTE_BONNET #if P_FAMILY_FLUTTER_MANE @@ -10607,7 +12603,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/back.4bpp.lz"); const u32 gMonShinyPalette_FlutterMane[] = INCBIN_U32("graphics/pokemon/flutter_mane/shiny.gbapal.lz"); const u8 gMonIcon_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_FlutterMane[] = INCBIN_U8("graphics/pokemon/flutter_mane/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FLUTTER_MANE #if P_FAMILY_SLITHER_WING @@ -10616,7 +12614,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/back.4bpp.lz"); const u32 gMonShinyPalette_SlitherWing[] = INCBIN_U32("graphics/pokemon/slither_wing/shiny.gbapal.lz"); const u8 gMonIcon_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_SlitherWing[] = INCBIN_U8("graphics/pokemon/slither_wing/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SLITHER_WING #if P_FAMILY_SANDY_SHOCKS @@ -10625,7 +12625,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/back.4bpp.lz"); const u32 gMonShinyPalette_SandyShocks[] = INCBIN_U32("graphics/pokemon/sandy_shocks/shiny.gbapal.lz"); const u8 gMonIcon_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_SandyShocks[] = INCBIN_U8("graphics/pokemon/sandy_shocks/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_SANDY_SHOCKS #if P_FAMILY_IRON_TREADS @@ -10634,7 +12636,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/back.4bpp.lz"); const u32 gMonShinyPalette_IronTreads[] = INCBIN_U32("graphics/pokemon/iron_treads/shiny.gbapal.lz"); const u8 gMonIcon_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronTreads[] = INCBIN_U8("graphics/pokemon/iron_treads/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_TREADS #if P_FAMILY_IRON_BUNDLE @@ -10643,7 +12647,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/back.4bpp.lz"); const u32 gMonShinyPalette_IronBundle[] = INCBIN_U32("graphics/pokemon/iron_bundle/shiny.gbapal.lz"); const u8 gMonIcon_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronBundle[] = INCBIN_U8("graphics/pokemon/iron_bundle/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_BUNDLE #if P_FAMILY_IRON_HANDS @@ -10652,7 +12658,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/back.4bpp.lz"); const u32 gMonShinyPalette_IronHands[] = INCBIN_U32("graphics/pokemon/iron_hands/shiny.gbapal.lz"); const u8 gMonIcon_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronHands[] = INCBIN_U8("graphics/pokemon/iron_hands/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_HANDS #if P_FAMILY_IRON_JUGULIS @@ -10661,7 +12669,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/back.4bpp.lz"); const u32 gMonShinyPalette_IronJugulis[] = INCBIN_U32("graphics/pokemon/iron_jugulis/shiny.gbapal.lz"); const u8 gMonIcon_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronJugulis[] = INCBIN_U8("graphics/pokemon/iron_jugulis/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_JUGULIS #if P_FAMILY_IRON_MOTH @@ -10670,7 +12680,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/back.4bpp.lz"); const u32 gMonShinyPalette_IronMoth[] = INCBIN_U32("graphics/pokemon/iron_moth/shiny.gbapal.lz"); const u8 gMonIcon_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronMoth[] = INCBIN_U8("graphics/pokemon/iron_moth/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_MOTH #if P_FAMILY_IRON_THORNS @@ -10679,7 +12691,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/back.4bpp.lz"); const u32 gMonShinyPalette_IronThorns[] = INCBIN_U32("graphics/pokemon/iron_thorns/shiny.gbapal.lz"); const u8 gMonIcon_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronThorns[] = INCBIN_U8("graphics/pokemon/iron_thorns/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_THORNS #if P_FAMILY_FRIGIBAX @@ -10688,21 +12702,27 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/back.4bpp.lz"); const u32 gMonShinyPalette_Frigibax[] = INCBIN_U32("graphics/pokemon/frigibax/shiny.gbapal.lz"); const u8 gMonIcon_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Frigibax[] = INCBIN_U8("graphics/pokemon/frigibax/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/front.4bpp.lz"); const u32 gMonPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/normal.gbapal.lz"); const u32 gMonBackPic_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/back.4bpp.lz"); const u32 gMonShinyPalette_Arctibax[] = INCBIN_U32("graphics/pokemon/arctibax/shiny.gbapal.lz"); const u8 gMonIcon_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Arctibax[] = INCBIN_U8("graphics/pokemon/arctibax/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/front.4bpp.lz"); const u32 gMonPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/normal.gbapal.lz"); const u32 gMonBackPic_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/back.4bpp.lz"); const u32 gMonShinyPalette_Baxcalibur[] = INCBIN_U32("graphics/pokemon/baxcalibur/shiny.gbapal.lz"); const u8 gMonIcon_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Baxcalibur[] = INCBIN_U8("graphics/pokemon/baxcalibur/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FRIGIBAX #if P_FAMILY_GIMMIGHOUL @@ -10711,7 +12731,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/back.4bpp.lz"); const u32 gMonShinyPalette_GimmighoulChest[] = INCBIN_U32("graphics/pokemon/gimmighoul/shiny.gbapal.lz"); const u8 gMonIcon_GimmighoulChest[] = INCBIN_U8("graphics/pokemon/gimmighoul/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Gimmighoul[] = INCBIN_U8("graphics/pokemon/gimmighoul/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/front.4bpp.lz"); const u32 gMonPalette_GimmighoulRoaming[] = INCBIN_U32("graphics/pokemon/gimmighoul/roaming/normal.gbapal.lz"); @@ -10724,7 +12746,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/back.4bpp.lz"); const u32 gMonShinyPalette_Gholdengo[] = INCBIN_U32("graphics/pokemon/gholdengo/shiny.gbapal.lz"); const u8 gMonIcon_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Gholdengo[] = INCBIN_U8("graphics/pokemon/gholdengo/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_GIMMIGHOUL #if P_FAMILY_WO_CHIEN @@ -10733,7 +12757,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/back.4bpp.lz"); const u32 gMonShinyPalette_WoChien[] = INCBIN_U32("graphics/pokemon/wo_chien/shiny.gbapal.lz"); const u8 gMonIcon_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_WoChien[] = INCBIN_U8("graphics/pokemon/wo_chien/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WO_CHIEN #if P_FAMILY_CHIEN_PAO @@ -10742,7 +12768,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/back.4bpp.lz"); const u32 gMonShinyPalette_ChienPao[] = INCBIN_U32("graphics/pokemon/chien_pao/shiny.gbapal.lz"); const u8 gMonIcon_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_ChienPao[] = INCBIN_U8("graphics/pokemon/chien_pao/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHIEN_PAO #if P_FAMILY_TING_LU @@ -10751,7 +12779,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/back.4bpp.lz"); const u32 gMonShinyPalette_TingLu[] = INCBIN_U32("graphics/pokemon/ting_lu/shiny.gbapal.lz"); const u8 gMonIcon_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_TingLu[] = INCBIN_U8("graphics/pokemon/ting_lu/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_TING_LU #if P_FAMILY_CHI_YU @@ -10760,7 +12790,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/back.4bpp.lz"); const u32 gMonShinyPalette_ChiYu[] = INCBIN_U32("graphics/pokemon/chi_yu/shiny.gbapal.lz"); const u8 gMonIcon_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_ChiYu[] = INCBIN_U8("graphics/pokemon/chi_yu/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_CHI_YU #if P_FAMILY_ROARING_MOON @@ -10769,7 +12801,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/back.4bpp.lz"); const u32 gMonShinyPalette_RoaringMoon[] = INCBIN_U32("graphics/pokemon/roaring_moon/shiny.gbapal.lz"); const u8 gMonIcon_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_RoaringMoon[] = INCBIN_U8("graphics/pokemon/roaring_moon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_ROARING_MOON #if P_FAMILY_IRON_VALIANT @@ -10778,7 +12812,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/back.4bpp.lz"); const u32 gMonShinyPalette_IronValiant[] = INCBIN_U32("graphics/pokemon/iron_valiant/shiny.gbapal.lz"); const u8 gMonIcon_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronValiant[] = INCBIN_U8("graphics/pokemon/iron_valiant/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_VALIANT #if P_FAMILY_KORAIDON @@ -10787,7 +12823,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/back.4bpp.lz"); const u32 gMonShinyPalette_Koraidon[] = INCBIN_U32("graphics/pokemon/koraidon/shiny.gbapal.lz"); const u8 gMonIcon_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Koraidon[] = INCBIN_U8("graphics/pokemon/koraidon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_KORAIDON #if P_FAMILY_MIRAIDON @@ -10796,7 +12834,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/back.4bpp.lz"); const u32 gMonShinyPalette_Miraidon[] = INCBIN_U32("graphics/pokemon/miraidon/shiny.gbapal.lz"); const u8 gMonIcon_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Miraidon[] = INCBIN_U8("graphics/pokemon/miraidon/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MIRAIDON #if P_FAMILY_WALKING_WAKE @@ -10805,7 +12845,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/back.4bpp.lz"); const u32 gMonShinyPalette_WalkingWake[] = INCBIN_U32("graphics/pokemon/walking_wake/shiny.gbapal.lz"); const u8 gMonIcon_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_WalkingWake[] = INCBIN_U8("graphics/pokemon/walking_wake/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_WALKING_WAKE #if P_FAMILY_IRON_LEAVES @@ -10814,7 +12856,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/back.4bpp.lz"); const u32 gMonShinyPalette_IronLeaves[] = INCBIN_U32("graphics/pokemon/iron_leaves/shiny.gbapal.lz"); const u8 gMonIcon_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_IronLeaves[] = INCBIN_U8("graphics/pokemon/iron_leaves/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_IRON_LEAVES #if P_FAMILY_POLTCHAGEIST @@ -10823,14 +12867,18 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/back.4bpp.lz"); const u32 gMonShinyPalette_Poltchageist[] = INCBIN_U32("graphics/pokemon/poltchageist/shiny.gbapal.lz"); const u8 gMonIcon_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Poltchageist[] = INCBIN_U8("graphics/pokemon/poltchageist/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/front.4bpp.lz"); const u32 gMonPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/normal.gbapal.lz"); const u32 gMonBackPic_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/back.4bpp.lz"); const u32 gMonShinyPalette_Sinistcha[] = INCBIN_U32("graphics/pokemon/sinistcha/shiny.gbapal.lz"); const u8 gMonIcon_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Sinistcha[] = INCBIN_U8("graphics/pokemon/sinistcha/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_POLTCHAGEIST #if P_FAMILY_OKIDOGI @@ -10839,7 +12887,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/back.4bpp.lz"); const u32 gMonShinyPalette_Okidogi[] = INCBIN_U32("graphics/pokemon/okidogi/shiny.gbapal.lz"); const u8 gMonIcon_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Okidogi[] = INCBIN_U8("graphics/pokemon/okidogi/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_OKIDOGI #if P_FAMILY_MUNKIDORI @@ -10848,7 +12898,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/back.4bpp.lz"); const u32 gMonShinyPalette_Munkidori[] = INCBIN_U32("graphics/pokemon/munkidori/shiny.gbapal.lz"); const u8 gMonIcon_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Munkidori[] = INCBIN_U8("graphics/pokemon/munkidori/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_MUNKIDORI #if P_FAMILY_FEZANDIPITI @@ -10857,7 +12909,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/back.4bpp.lz"); const u32 gMonShinyPalette_Fezandipiti[] = INCBIN_U32("graphics/pokemon/fezandipiti/shiny.gbapal.lz"); const u8 gMonIcon_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Fezandipiti[] = INCBIN_U8("graphics/pokemon/fezandipiti/footprint.1bpp"); +#endif //P_FOOTPRINTS #endif //P_FAMILY_FEZANDIPITI #if P_FAMILY_OGERPON @@ -10866,7 +12920,9 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar const u32 gMonBackPic_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/back.4bpp.lz"); // const u32 gMonShinyPalette_OgerponTealMask[] = INCBIN_U32("graphics/pokemon/ogerpon/shiny.gbapal.lz"); const u8 gMonIcon_OgerponTealMask[] = INCBIN_U8("graphics/pokemon/ogerpon/icon.4bpp"); +#if P_FOOTPRINTS // const u8 gMonFootprint_Ogerpon[] = INCBIN_U8("graphics/pokemon/ogerpon/footprint.1bpp"); +#endif //P_FOOTPRINTS const u32 gMonFrontPic_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/front.4bpp.lz"); const u32 gMonPalette_OgerponWellspringMask[] = INCBIN_U32("graphics/pokemon/ogerpon/wellspring/normal.gbapal.lz"); @@ -10907,6 +12963,84 @@ const u8 gMonFootprint_QuestionMark[] = INCBIN_U8("graphics/pokemon/question_mar // const u32 gMonShinyPalette_OgerponCornerstoneMaskTera[] = INCBIN_U32("graphics/pokemon/ogerpon/cornerstone/tera/shiny.gbapal.lz"); #endif //P_FAMILY_OGERPON +#if P_FAMILY_GOUGING_FIRE + // const u32 gMonFrontPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/front.4bpp.lz"); + // const u32 gMonPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/normal.gbapal.lz"); + // const u32 gMonBackPic_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/back.4bpp.lz"); + // const u32 gMonShinyPalette_GougingFire[] = INCBIN_U32("graphics/pokemon/gouging_fire/shiny.gbapal.lz"); + // const u8 gMonIcon_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_GougingFire[] = INCBIN_U8("graphics/pokemon/gouging_fire/footprint.1bpp"); +#endif //P_FOOTPRINTS +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT + // const u32 gMonFrontPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/front.4bpp.lz"); + // const u32 gMonPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/normal.gbapal.lz"); + // const u32 gMonBackPic_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/back.4bpp.lz"); + // const u32 gMonShinyPalette_RagingBolt[] = INCBIN_U32("graphics/pokemon/raging_bolt/shiny.gbapal.lz"); + // const u8 gMonIcon_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_RagingBolt[] = INCBIN_U8("graphics/pokemon/raging_bolt/footprint.1bpp"); +#endif //P_FOOTPRINTS +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER + // const u32 gMonFrontPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/front.4bpp.lz"); + // const u32 gMonPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/normal.gbapal.lz"); + // const u32 gMonBackPic_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/back.4bpp.lz"); + // const u32 gMonShinyPalette_IronBoulder[] = INCBIN_U32("graphics/pokemon/iron_boulder/shiny.gbapal.lz"); + // const u8 gMonIcon_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_IronBoulder[] = INCBIN_U8("graphics/pokemon/iron_boulder/footprint.1bpp"); +#endif //P_FOOTPRINTS +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN + // const u32 gMonFrontPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/front.4bpp.lz"); + // const u32 gMonPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/normal.gbapal.lz"); + // const u32 gMonBackPic_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/back.4bpp.lz"); + // const u32 gMonShinyPalette_IronCrown[] = INCBIN_U32("graphics/pokemon/iron_crown/shiny.gbapal.lz"); + // const u8 gMonIcon_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_IronCrown[] = INCBIN_U8("graphics/pokemon/iron_crown/footprint.1bpp"); +#endif //P_FOOTPRINTS +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS + // const u32 gMonFrontPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/front.4bpp.lz"); + // const u32 gMonPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/normal.gbapal.lz"); + // const u32 gMonBackPic_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/back.4bpp.lz"); + // const u32 gMonShinyPalette_TerapagosNormal[] = INCBIN_U32("graphics/pokemon/terapagos/shiny.gbapal.lz"); + // const u8 gMonIcon_TerapagosNormal[] = INCBIN_U8("graphics/pokemon/terapagos/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_Terapagos[] = INCBIN_U8("graphics/pokemon/terapagos/footprint.1bpp"); +#endif //P_FOOTPRINTS + + // const u32 gMonFrontPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/front.4bpp.lz"); + // const u32 gMonPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/normal.gbapal.lz"); + // const u32 gMonBackPic_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/back.4bpp.lz"); + // const u32 gMonShinyPalette_TerapagosTerastal[] = INCBIN_U32("graphics/pokemon/terapagos/terastal/shiny.gbapal.lz"); + // const u8 gMonIcon_TerapagosTerastal[] = INCBIN_U8("graphics/pokemon/terapagos/terastal/icon.4bpp"); + + // const u32 gMonFrontPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/front.4bpp.lz"); + // const u32 gMonPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/normal.gbapal.lz"); + // const u32 gMonBackPic_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/back.4bpp.lz"); + // const u32 gMonShinyPalette_TerapagosStellar[] = INCBIN_U32("graphics/pokemon/terapagos/stellar/shiny.gbapal.lz"); + // const u8 gMonIcon_TerapagosStellar[] = INCBIN_U8("graphics/pokemon/terapagos/stellar/icon.4bpp"); +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT + // const u32 gMonFrontPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/front.4bpp.lz"); + // const u32 gMonPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/normal.gbapal.lz"); + // const u32 gMonBackPic_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/back.4bpp.lz"); + // const u32 gMonShinyPalette_Pecharunt[] = INCBIN_U32("graphics/pokemon/pecharunt/shiny.gbapal.lz"); + // const u8 gMonIcon_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/icon.4bpp"); +#if P_FOOTPRINTS + // const u8 gMonFootprint_Pecharunt[] = INCBIN_U8("graphics/pokemon/pecharunt/footprint.1bpp"); +#endif //P_FOOTPRINTS +#endif //P_FAMILY_PECHARUNT + const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz"); const u32 gMonPalette_Egg[] = INCBIN_U32("graphics/pokemon/egg/normal.gbapal.lz"); const u8 gMonIcon_Egg[] = INCBIN_U8("graphics/pokemon/egg/icon.4bpp"); diff --git a/src/data/graphics/trainers.h b/src/data/graphics/trainers.h index fbdea74729ab..57269f0723c6 100644 --- a/src/data/graphics/trainers.h +++ b/src/data/graphics/trainers.h @@ -1,3 +1,6 @@ +#include "constants/trainers.h" +#include "data.h" + 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"); @@ -288,3 +291,235 @@ const u8 gTrainerBackPic_Steven[] = INCBIN_U8("graphics/trainers/back_pics/steve 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"); + +static const union AnimCmd *const sAnims_Trainer[] ={ + sAnim_GeneralFrame0, +}; + +#define TRAINER_SPRITE(trainerPic, file) \ + [TRAINER_PIC_##trainerPic] = \ + { \ + .y_offset = 8, \ + .frontPic = {gTrainerFrontPic_##file, TRAINER_PIC_SIZE, TRAINER_PIC_##trainerPic},\ + .palette = {gTrainerPalette_##file, TRAINER_PIC_##trainerPic}, \ + .animation = sAnims_Trainer, \ + } + +const struct TrainerSprite gTrainerSprites[] = +{ + TRAINER_SPRITE(HIKER, Hiker), + TRAINER_SPRITE(AQUA_GRUNT_M, AquaGruntM), + TRAINER_SPRITE(POKEMON_BREEDER_F, PokemonBreederF), + TRAINER_SPRITE(COOLTRAINER_M, CoolTrainerM), + TRAINER_SPRITE(BIRD_KEEPER, BirdKeeper), + TRAINER_SPRITE(COLLECTOR, Collector), + TRAINER_SPRITE(AQUA_GRUNT_F, AquaGruntF), + TRAINER_SPRITE(SWIMMER_M, SwimmerM), + TRAINER_SPRITE(MAGMA_GRUNT_M, MagmaGruntM), + TRAINER_SPRITE(EXPERT_M, ExpertM), + TRAINER_SPRITE(AQUA_ADMIN_M, AquaAdminM), + TRAINER_SPRITE(BLACK_BELT, BlackBelt), + TRAINER_SPRITE(AQUA_ADMIN_F, AquaAdminF), + TRAINER_SPRITE(AQUA_LEADER_ARCHIE, AquaLeaderArchie), + TRAINER_SPRITE(HEX_MANIAC, HexManiac), + TRAINER_SPRITE(AROMA_LADY, AromaLady), + TRAINER_SPRITE(RUIN_MANIAC, RuinManiac), + TRAINER_SPRITE(INTERVIEWER, Interviewer), + TRAINER_SPRITE(TUBER_F, TuberF), + TRAINER_SPRITE(TUBER_M, TuberM), + TRAINER_SPRITE(COOLTRAINER_F, CoolTrainerF), + TRAINER_SPRITE(LADY, Lady), + TRAINER_SPRITE(BEAUTY, Beauty), + TRAINER_SPRITE(RICH_BOY, RichBoy), + TRAINER_SPRITE(EXPERT_F, ExpertF), + TRAINER_SPRITE(POKEMANIAC, Pokemaniac), + TRAINER_SPRITE(MAGMA_GRUNT_F, MagmaGruntF), + TRAINER_SPRITE(GUITARIST, Guitarist), + TRAINER_SPRITE(KINDLER, Kindler), + TRAINER_SPRITE(CAMPER, Camper), + TRAINER_SPRITE(PICNICKER, Picnicker), + TRAINER_SPRITE(BUG_MANIAC, BugManiac), + TRAINER_SPRITE(POKEMON_BREEDER_M, PokemonBreederM), + TRAINER_SPRITE(PSYCHIC_M, PsychicM), + TRAINER_SPRITE(PSYCHIC_F, PsychicF), + TRAINER_SPRITE(GENTLEMAN, Gentleman), + TRAINER_SPRITE(ELITE_FOUR_SIDNEY, EliteFourSidney), + TRAINER_SPRITE(ELITE_FOUR_PHOEBE, EliteFourPhoebe), + TRAINER_SPRITE(ELITE_FOUR_GLACIA, EliteFourGlacia), + TRAINER_SPRITE(ELITE_FOUR_DRAKE, EliteFourDrake), + TRAINER_SPRITE(LEADER_ROXANNE, LeaderRoxanne), + TRAINER_SPRITE(LEADER_BRAWLY, LeaderBrawly), + TRAINER_SPRITE(LEADER_WATTSON, LeaderWattson), + TRAINER_SPRITE(LEADER_FLANNERY, LeaderFlannery), + TRAINER_SPRITE(LEADER_NORMAN, LeaderNorman), + TRAINER_SPRITE(LEADER_WINONA, LeaderWinona), + TRAINER_SPRITE(LEADER_TATE_AND_LIZA, LeaderTateAndLiza), + TRAINER_SPRITE(LEADER_JUAN, LeaderJuan), + TRAINER_SPRITE(SCHOOL_KID_M, SchoolKidM), + TRAINER_SPRITE(SCHOOL_KID_F, SchoolKidF), + TRAINER_SPRITE(SR_AND_JR, SrAndJr), + TRAINER_SPRITE(POKEFAN_M, PokefanM), + TRAINER_SPRITE(POKEFAN_F, PokefanF), + TRAINER_SPRITE(YOUNGSTER, Youngster), + TRAINER_SPRITE(CHAMPION_WALLACE, ChampionWallace), + TRAINER_SPRITE(FISHERMAN, Fisherman), + TRAINER_SPRITE(CYCLING_TRIATHLETE_M, CyclingTriathleteM), + TRAINER_SPRITE(CYCLING_TRIATHLETE_F, CyclingTriathleteF), + TRAINER_SPRITE(RUNNING_TRIATHLETE_M, RunningTriathleteM), + TRAINER_SPRITE(RUNNING_TRIATHLETE_F, RunningTriathleteF), + TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, SwimmingTriathleteM), + TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, SwimmingTriathleteF), + TRAINER_SPRITE(DRAGON_TAMER, DragonTamer), + TRAINER_SPRITE(NINJA_BOY, NinjaBoy), + TRAINER_SPRITE(BATTLE_GIRL, BattleGirl), + TRAINER_SPRITE(PARASOL_LADY, ParasolLady), + TRAINER_SPRITE(SWIMMER_F, SwimmerF), + TRAINER_SPRITE(TWINS, Twins), + TRAINER_SPRITE(SAILOR, Sailor), + TRAINER_SPRITE(MAGMA_ADMIN, MagmaAdmin), + TRAINER_SPRITE(WALLY, Wally), + TRAINER_SPRITE(BRENDAN, Brendan), + TRAINER_SPRITE(MAY, May), + TRAINER_SPRITE(BUG_CATCHER, BugCatcher), + TRAINER_SPRITE(POKEMON_RANGER_M, PokemonRangerM), + TRAINER_SPRITE(POKEMON_RANGER_F, PokemonRangerF), + TRAINER_SPRITE(MAGMA_LEADER_MAXIE, MagmaLeaderMaxie), + TRAINER_SPRITE(LASS, Lass), + TRAINER_SPRITE(YOUNG_COUPLE, YoungCouple), + TRAINER_SPRITE(OLD_COUPLE, OldCouple), + TRAINER_SPRITE(SIS_AND_BRO, SisAndBro), + TRAINER_SPRITE(STEVEN, Steven), + TRAINER_SPRITE(SALON_MAIDEN_ANABEL, SalonMaidenAnabel), + TRAINER_SPRITE(DOME_ACE_TUCKER, DomeAceTucker), + TRAINER_SPRITE(PALACE_MAVEN_SPENSER, PalaceMavenSpenser), + TRAINER_SPRITE(ARENA_TYCOON_GRETA, ArenaTycoonGreta), + TRAINER_SPRITE(FACTORY_HEAD_NOLAND, FactoryHeadNoland), + TRAINER_SPRITE(PIKE_QUEEN_LUCY, PikeQueenLucy), + TRAINER_SPRITE(PYRAMID_KING_BRANDON, PyramidKingBrandon), + TRAINER_SPRITE(RED, Red), + TRAINER_SPRITE(LEAF, Leaf), + TRAINER_SPRITE(RS_BRENDAN, RubySapphireBrendan), + TRAINER_SPRITE(RS_MAY, RubySapphireMay), +}; + +static const union AnimCmd sAnimCmd_Hoenn[] = +{ + ANIMCMD_FRAME(0, 24), + ANIMCMD_FRAME(1, 9), + ANIMCMD_FRAME(2, 24), + ANIMCMD_FRAME(0, 9), + ANIMCMD_FRAME(3, 50), + ANIMCMD_END, +}; + +static const union AnimCmd sAnimCmd_Kanto[] = +{ + ANIMCMD_FRAME(1, 20), + ANIMCMD_FRAME(2, 6), + ANIMCMD_FRAME(3, 6), + ANIMCMD_FRAME(4, 24), + ANIMCMD_FRAME(0, 1), + ANIMCMD_END, +}; + +static const union AnimCmd *const sBackAnims_Hoenn[] = +{ + sAnim_GeneralFrame3, + sAnimCmd_Hoenn, +}; + +static const union AnimCmd *const sBackAnims_Kanto[] = +{ + sAnim_GeneralFrame0, + sAnimCmd_Kanto, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_Brendan[] = +{ + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Brendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_May[] = +{ + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_May + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_Red[] = +{ + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Red + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_Leaf[] = +{ + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Leaf + TRAINER_PIC_SIZE * 4, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireBrendan[] = +{ + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireBrendan + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_RubySapphireMay[] = +{ + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_RubySapphireMay + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_Wally[] = +{ + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Wally + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, +}; + +const struct SpriteFrameImage gTrainerBackPicTable_Steven[] = +{ + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 0, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 1, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 2, TRAINER_PIC_SIZE}, + {gTrainerBackPic_Steven + TRAINER_PIC_SIZE * 3, TRAINER_PIC_SIZE}, +}; + +// .backPic goes functionally unused, since none of these pics are compressed +// and the place they would get extracted to gets overwritten later anyway +// the casts are so they'll play nice with the strict struct definition +#define TRAINER_BACK_SPRITE(trainerPic, yOffset, sprite, pal, anim) \ + [TRAINER_BACK_PIC_##trainerPic] = \ + { \ + .coordinates = {.size = 8, .y_offset = yOffset}, \ + .backPic = {(const u32 *)gTrainerBackPic_##sprite, TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_##sprite), TRAINER_BACK_PIC_##trainerPic}, \ + .palette = {gTrainer##pal, TRAINER_BACK_PIC_##trainerPic}, \ + .animation = sBackAnims_##anim, \ + } + +const struct TrainerBacksprite gTrainerBacksprites[] = +{ + TRAINER_BACK_SPRITE(BRENDAN, 4, Brendan, Palette_Brendan, Hoenn), + TRAINER_BACK_SPRITE(MAY, 4, May, Palette_May, Hoenn), + TRAINER_BACK_SPRITE(RED, 5, Red, BackPicPalette_Red, Kanto), + TRAINER_BACK_SPRITE(LEAF, 5, Leaf, BackPicPalette_Leaf, Kanto), + TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_BRENDAN, 4, RubySapphireBrendan, Palette_RubySapphireBrendan, Hoenn), + TRAINER_BACK_SPRITE(RUBY_SAPPHIRE_MAY, 4, RubySapphireMay, Palette_RubySapphireMay, Hoenn), + TRAINER_BACK_SPRITE(WALLY, 4, Wally, Palette_Wally, Hoenn), + TRAINER_BACK_SPRITE(STEVEN, 4, Steven, Palette_Steven, Hoenn), +}; diff --git a/src/data/item_icon_table.h b/src/data/item_icon_table.h index c60a01ba591f..0512054828fb 100644 --- a/src/data/item_icon_table.h +++ b/src/data/item_icon_table.h @@ -861,6 +861,8 @@ const u32 *const gItemIconTable[ITEMS_COUNT + 1][2] = [ITEM_SWIFT_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_SwiftMochi}, [ITEM_FRESH_START_MOCHI] = {gItemIcon_Mochi, gItemIconPalette_FreshStartMochi}, [ITEM_GLIMMERING_CHARM] = {gItemIcon_GlimmeringCharm, gItemIconPalette_GlimmeringCharm}, + [ITEM_METAL_ALLOY] = {gItemIcon_MetalAlloy, gItemIconPalette_MetalAlloy}, + [ITEM_STELLAR_TERA_SHARD] = {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark}, //{gItemIcon_TeraShard, gItemIconPalette_StellarTeraShard}, // Return to field arrow [ITEMS_COUNT] = {gItemIcon_ReturnToFieldArrow, gItemIconPalette_ReturnToFieldArrow}, }; diff --git a/src/data/items.h b/src/data/items.h index c522e5e5dc20..e080204b974d 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -22,6 +22,8 @@ #define X_ITEM_STAGES (B_X_ITEMS_BUFF >= GEN_7) ? 2 : 1 +#define TREASURE_FACTOR (I_SELL_VALUE_FRACTION >= GEN_9) ? 2: 1 + // Shared Item Description entries static const u8 sFullHealDesc[] = _("Heals all the\n" @@ -142,6 +144,10 @@ static const u8 sTeraShardDesc[] = _("These shards may\n" "form when a Tera\n" "Pokémon faints."); +static const u8 sGenericMulchDesc[] = _("A fertilizer that\n" + "is unsuitable for\n" + "local soil."); + const struct Item gItems[] = { [ITEM_NONE] = @@ -187,7 +193,7 @@ const struct Item gItems[] = [ITEM_ULTRA_BALL] = { .name = _("Ultra Ball"), - .price = 800, + .price = (I_PRICE >= GEN_7) ? 800 : 1200, .description = COMPOUND_STRING("A better Ball with\n" "a higher catch rate\n" "than a Great Ball."), @@ -215,7 +221,7 @@ const struct Item gItems[] = [ITEM_PREMIER_BALL] = { .name = _("Premier Ball"), - .price = 20, + .price = (I_PRICE >= GEN_7) ? 20 : 200, .description = COMPOUND_STRING("A rare Ball made\n" "in commemoration\n" "of some event."), @@ -341,7 +347,7 @@ const struct Item gItems[] = [ITEM_LUXURY_BALL] = { .name = _("Luxury Ball"), - .price = 1000, + .price = (I_PRICE >= GEN_8) ? 3000 : 1000, .description = COMPOUND_STRING("A cozy Ball that\n" "makes Pokémon\n" "more friendly."), @@ -355,7 +361,7 @@ const struct Item gItems[] = [ITEM_LEVEL_BALL] = { .name = _("Level Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("A Ball that works\n" "well on lower\n" "level Pokémon."), @@ -369,7 +375,7 @@ const struct Item gItems[] = [ITEM_LURE_BALL] = { .name = _("Lure Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("A Ball that works\n" "well on fished\n" "up Pokémon."), @@ -383,7 +389,7 @@ const struct Item gItems[] = [ITEM_MOON_BALL] = { .name = _("Moon Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("A Ball that works\n" "well on Moon\n" "Stone users."), @@ -397,7 +403,7 @@ const struct Item gItems[] = [ITEM_FRIEND_BALL] = { .name = _("Friend Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("A Ball that makes\n" "a Pokémon friendly\n" "when caught."), @@ -411,7 +417,7 @@ const struct Item gItems[] = [ITEM_LOVE_BALL] = { .name = _("Love Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("Works well on\n" "Pokémon of the\n" "opposite gender."), @@ -425,7 +431,7 @@ const struct Item gItems[] = [ITEM_FAST_BALL] = { .name = _("Fast Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("Works well on\n" "very fast\n" "Pokémon."), @@ -439,7 +445,7 @@ const struct Item gItems[] = [ITEM_HEAVY_BALL] = { .name = _("Heavy Ball"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 300, .description = COMPOUND_STRING("Works well on\n" "very heavy\n" "Pokémon."), @@ -486,7 +492,7 @@ const struct Item gItems[] = [ITEM_SPORT_BALL] = { .name = _("Sport Ball"), - .price = 0, + .price = (I_PRICE < GEN_3 || I_PRICE >= GEN_9) ? 0 : 300, .description = COMPOUND_STRING("A special Ball used\n" "in the Bug-Catching\n" "Contest."), @@ -542,7 +548,7 @@ const struct Item gItems[] = [ITEM_POTION] = { .name = _("Potion"), - .price = 200, + .price = (I_PRICE >= GEN_7) ? 200 : 300, .holdEffectParam = 20, .description = COMPOUND_STRING("Restores the HP of\n" "a Pokémon by\n" @@ -578,7 +584,7 @@ const struct Item gItems[] = [ITEM_HYPER_POTION] = { .name = _("Hyper Potion"), - .price = 1500, + .price = (I_PRICE >= GEN_2 || I_PRICE <= GEN_6) ? 1200 : 1500, .holdEffectParam = 120, #if I_HEALTH_RECOVERY >= GEN_7 .description = COMPOUND_STRING("Restores the HP of\n" @@ -628,7 +634,7 @@ const struct Item gItems[] = [ITEM_REVIVE] = { .name = _("Revive"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 1500, .description = COMPOUND_STRING("Revives a fainted\n" "Pokémon with half\n" "its HP."), @@ -696,7 +702,7 @@ const struct Item gItems[] = [ITEM_LEMONADE] = { .name = _("Lemonade"), - .price = 400, + .price = (I_PRICE >= GEN_7) ? 400 : 350, .holdEffectParam = 70, #if I_HEALTH_RECOVERY >= GEN_7 .description = COMPOUND_STRING("A very sweet drink\n" @@ -717,7 +723,7 @@ const struct Item gItems[] = [ITEM_MOOMOO_MILK] = { .name = _("Moomoo Milk"), - .price = 600, + .price = (I_PRICE >= GEN_7) ? 600 : 500, .holdEffectParam = 100, .description = COMPOUND_STRING("A nutritious milk\n" "that restores HP\n" @@ -752,7 +758,7 @@ const struct Item gItems[] = [ITEM_ENERGY_ROOT] = { .name = _("Energy Root"), - .price = 1200, + .price = (I_PRICE >= GEN_7) ? 1200 : 800, #if I_HEALTH_RECOVERY >= GEN_7 .description = COMPOUND_STRING("A bitter root\n" "that restores HP\n" @@ -772,7 +778,7 @@ const struct Item gItems[] = [ITEM_HEAL_POWDER] = { .name = _("Heal Powder"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 450, .description = COMPOUND_STRING("A bitter powder\n" "that heals all\n" "status problems."), @@ -800,7 +806,7 @@ const struct Item gItems[] = [ITEM_ANTIDOTE] = { .name = _("Antidote"), - .price = 200, + .price = (I_PRICE >= GEN_7) ? 200 : 100, .description = COMPOUND_STRING("Heals a poisoned\n" "Pokémon."), .pocket = POCKET_ITEMS, @@ -813,7 +819,7 @@ const struct Item gItems[] = [ITEM_PARALYZE_HEAL] = { .name = _("Paralyze Heal"), - .price = 300, + .price = (I_PRICE == GEN_7) ? 300 : 200, .description = COMPOUND_STRING("Heals a paralyzed\n" "Pokémon."), .pocket = POCKET_ITEMS, @@ -826,7 +832,7 @@ const struct Item gItems[] = [ITEM_BURN_HEAL] = { .name = _("Burn Heal"), - .price = 300, + .price = (I_PRICE == GEN_7) ? 300 : ((I_PRICE <= GEN_7) ? 250 : 200), .description = COMPOUND_STRING("Heals Pokémon\n" "of a burn."), .pocket = POCKET_ITEMS, @@ -839,7 +845,7 @@ const struct Item gItems[] = [ITEM_ICE_HEAL] = { .name = _("Ice Heal"), - .price = 100, + .price = (I_PRICE == GEN_7) ? 100 : ((I_PRICE <= GEN_7) ? 250 : 200), .description = COMPOUND_STRING("Defrosts a frozen\n" "Pokémon."), .pocket = POCKET_ITEMS, @@ -852,7 +858,7 @@ const struct Item gItems[] = [ITEM_AWAKENING] = { .name = _("Awakening"), - .price = 100, + .price = (I_PRICE >= GEN_2 && I_PRICE <= GEN_6) ? 250 : ((I_PRICE == GEN_7) ? 100 : 200), .description = COMPOUND_STRING("Awakens a sleeping\n" "Pokémon."), .pocket = POCKET_ITEMS, @@ -865,7 +871,7 @@ const struct Item gItems[] = [ITEM_FULL_HEAL] = { .name = _("Full Heal"), - .price = 400, + .price = (I_PRICE >= GEN_7) ? 400 : 600, .description = sFullHealDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -877,7 +883,7 @@ const struct Item gItems[] = [ITEM_ETHER] = { .name = _("Ether"), - .price = 1200, + .price = (I_PRICE >= GEN_2) ? 1200 : 1, .holdEffectParam = 10, .description = COMPOUND_STRING("Restores the PP\n" "of a selected move\n" @@ -892,7 +898,7 @@ const struct Item gItems[] = [ITEM_MAX_ETHER] = { .name = _("Max Ether"), - .price = 2000, + .price = (I_PRICE >= GEN_2) ? 2000 : 1, .holdEffectParam = 255, .description = COMPOUND_STRING("Fully restores the\n" "PP of a selected\n" @@ -907,7 +913,7 @@ const struct Item gItems[] = [ITEM_ELIXIR] = { .name = _("Elixir"), - .price = 3000, + .price = (I_PRICE >= GEN_2) ? 3000 : 1, .holdEffectParam = 10, .description = COMPOUND_STRING("Restores the PP\n" "of all moves by 10."), @@ -921,7 +927,7 @@ const struct Item gItems[] = [ITEM_MAX_ELIXIR] = { .name = _("Max Elixir"), - .price = 4500, + .price = (I_PRICE >= GEN_2) ? 4500 : 1, .holdEffectParam = 255, .description = COMPOUND_STRING("Fully restores the\n" "PP of a Pokémon's\n" @@ -936,7 +942,7 @@ const struct Item gItems[] = [ITEM_BERRY_JUICE] = { .name = _("Berry Juice"), - .price = 200, + .price = 100, .holdEffect = HOLD_EFFECT_RESTORE_HP, .holdEffectParam = 20, .description = COMPOUND_STRING("A 100% pure juice\n" @@ -952,7 +958,7 @@ const struct Item gItems[] = [ITEM_SACRED_ASH] = { .name = _("Sacred Ash"), - .price = 50000, + .price = (I_PRICE >= GEN_7) ? 50000 : 200, .description = COMPOUND_STRING("Fully revives and\n" "restores all\n" "fainted Pokémon."), @@ -965,7 +971,7 @@ const struct Item gItems[] = [ITEM_SWEET_HEART] = { .name = _("Sweet Heart"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 100, .holdEffectParam = 20, .description = COMPOUND_STRING("A sweet chocolate\n" "that restores HP\n" @@ -1006,7 +1012,7 @@ const struct Item gItems[] = [ITEM_RAGE_CANDY_BAR] = { .name = _("RageCandyBar"), - .price = 350, + .price = (I_PRICE >= GEN_7) ? 350 : 300, .description = sFullHealDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1018,7 +1024,7 @@ const struct Item gItems[] = [ITEM_LAVA_COOKIE] = { .name = _("Lava Cookie"), - .price = 350, + .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = COMPOUND_STRING("A local specialty\n" "that heals all\n" "status problems."), @@ -1032,7 +1038,7 @@ const struct Item gItems[] = [ITEM_OLD_GATEAU] = { .name = _("Old Gateau"), - .price = 350, + .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = sFullHealDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1044,7 +1050,7 @@ const struct Item gItems[] = [ITEM_CASTELIACONE] = { .name = _("Casteliacone"), - .price = 350, + .price = (I_PRICE >= GEN_7) ? 350 : 100, .description = sFullHealDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1056,7 +1062,7 @@ const struct Item gItems[] = [ITEM_LUMIOSE_GALETTE] = { .name = _("LumioseGlete"), - .price = 350, + .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = sFullHealDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1068,7 +1074,7 @@ const struct Item gItems[] = [ITEM_SHALOUR_SABLE] = { .name = _("ShalourSable"), - .price = 350, + .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = sFullHealDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1094,7 +1100,7 @@ const struct Item gItems[] = [ITEM_HP_UP] = { .name = _("HP Up"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base HP\n" "of one Pokémon."), .pocket = POCKET_ITEMS, @@ -1106,7 +1112,7 @@ const struct Item gItems[] = [ITEM_PROTEIN] = { .name = _("Protein"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base\n" "Attack stat of one\n" "Pokémon."), @@ -1119,7 +1125,7 @@ const struct Item gItems[] = [ITEM_IRON] = { .name = _("Iron"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base\n" "Defense stat of\n" "one Pokémon."), @@ -1132,7 +1138,7 @@ const struct Item gItems[] = [ITEM_CALCIUM] = { .name = _("Calcium"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base\n" "Sp. Atk stat of one\n" "Pokémon."), @@ -1145,7 +1151,7 @@ const struct Item gItems[] = [ITEM_ZINC] = { .name = _("Zinc"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base\n" "Sp. Def stat of one\n" "Pokémon."), @@ -1158,7 +1164,7 @@ const struct Item gItems[] = [ITEM_CARBOS] = { .name = _("Carbos"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base\n" "Speed stat of one\n" "Pokémon."), @@ -1171,7 +1177,7 @@ const struct Item gItems[] = [ITEM_PP_UP] = { .name = _("PP Up"), - .price = 10000, + .price = (I_PRICE == GEN_1) ? 1 : ((I_PRICE >= GEN_7) ? 10000 : 9800), .description = COMPOUND_STRING("Raises the maximum\n" "PP of a selected\n" "move."), @@ -1184,7 +1190,7 @@ const struct Item gItems[] = [ITEM_PP_MAX] = { .name = _("PP Max"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the PP of a\n" "move to its maximum\n" "points."), @@ -1199,7 +1205,7 @@ const struct Item gItems[] = [ITEM_HEALTH_FEATHER] = { .name = _("HealthFeather"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sHealthFeatherDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1210,7 +1216,7 @@ const struct Item gItems[] = [ITEM_MUSCLE_FEATHER] = { .name = _("MuscleFeather"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sMuscleFeatherDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1221,7 +1227,7 @@ const struct Item gItems[] = [ITEM_RESIST_FEATHER] = { .name = _("ResistFeather"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sResistFeatherDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1232,7 +1238,7 @@ const struct Item gItems[] = [ITEM_GENIUS_FEATHER] = { .name = _("GeniusFeather"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sGeniusFeatherDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1243,7 +1249,7 @@ const struct Item gItems[] = [ITEM_CLEVER_FEATHER] = { .name = _("CleverFeather"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sCleverFeatherDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1254,7 +1260,7 @@ const struct Item gItems[] = [ITEM_SWIFT_FEATHER] = { .name = _("SwiftFeather"), - .price = 300, + .price = (I_PRICE >= GEN_7) ? 300 : 3000, .description = sSwiftFeatherDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -1267,7 +1273,7 @@ const struct Item gItems[] = [ITEM_ABILITY_CAPSULE] = { .name = _("AbilityCapsle"), - .price = 10000, + .price = (I_PRICE < GEN_7) ? 1000 : ((I_PRICE < GEN_9) ? 10000 : 100000), .holdEffectParam = 0, .description = COMPOUND_STRING("Switches a Poké-\n" "mon's ability."), @@ -1279,7 +1285,7 @@ const struct Item gItems[] = [ITEM_ABILITY_PATCH] = { .name = _("AbilityPatch"), - .price = 0, + .price = (I_PRICE >= GEN_9) ? 250000 : 20, .holdEffectParam = 0, .description = COMPOUND_STRING("Turns the ability\n" "of a Pokémon into\n" @@ -1294,294 +1300,294 @@ const struct Item gItems[] = [ITEM_LONELY_MINT] = { .name = _("Lonely Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Attack, but\n" "reduces Defense."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_LONELY, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_LONELY, .flingPower = 10, }, [ITEM_ADAMANT_MINT] = { .name = _("Adamant Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Attack, but\n" "reduces Sp. Atk."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_ADAMANT, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_ADAMANT, .flingPower = 10, }, [ITEM_NAUGHTY_MINT] = { .name = _("Naughty Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Attack, but\n" "reduces Sp. Def."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_NAUGHTY, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_NAUGHTY, .flingPower = 10, }, [ITEM_BRAVE_MINT] = { .name = _("Brave Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Attack, but\n" "reduces Speed."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_BRAVE, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_BRAVE, .flingPower = 10, }, [ITEM_BOLD_MINT] = { .name = _("Bold Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Defense, but\n" "reduces Attack."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_BOLD, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_BOLD, .flingPower = 10, }, [ITEM_IMPISH_MINT] = { .name = _("Impish Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Defense, but\n" "reduces Sp. Atk."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_IMPISH, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_IMPISH, .flingPower = 10, }, [ITEM_LAX_MINT] = { .name = _("Lax Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Defense, but\n" "reduces Sp. Def."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_LAX, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_LAX, .flingPower = 10, }, [ITEM_RELAXED_MINT] = { .name = _("Relaxed Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Defense, but\n" "reduces Speed."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_RELAXED, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_RELAXED, .flingPower = 10, }, [ITEM_MODEST_MINT] = { .name = _("Modest Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Atk, but\n" "reduces Attack."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_MODEST, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_MODEST, .flingPower = 10, }, [ITEM_MILD_MINT] = { .name = _("Mild Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Atk, but\n" "reduces Defense."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_MILD, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_MILD, .flingPower = 10, }, [ITEM_RASH_MINT] = { .name = _("Rash Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Atk, but\n" "reduces Sp. Def."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_RASH, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_RASH, .flingPower = 10, }, [ITEM_QUIET_MINT] = { .name = _("Quiet Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Atk, but\n" "reduces Speed."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_QUIET, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_QUIET, .flingPower = 10, }, [ITEM_CALM_MINT] = { .name = _("Calm Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Def, but\n" "reduces Attack."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_CALM, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_CALM, .flingPower = 10, }, [ITEM_GENTLE_MINT] = { .name = _("Gentle Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Def, but\n" "reduces Defense."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_GENTLE, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_GENTLE, .flingPower = 10, }, [ITEM_CAREFUL_MINT] = { .name = _("Careful Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Def, but\n" "reduces Sp. Atk."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_CAREFUL, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_CAREFUL, .flingPower = 10, }, [ITEM_SASSY_MINT] = { .name = _("Sassy Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Sp. Def, but\n" "reduces Speed."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_SASSY, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_SASSY, .flingPower = 10, }, [ITEM_TIMID_MINT] = { .name = _("Timid Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Speed, but\n" "reduces Attack."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_TIMID, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_TIMID, .flingPower = 10, }, [ITEM_HASTY_MINT] = { .name = _("Hasty Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Speed, but\n" "reduces Defense."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_HASTY, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_HASTY, .flingPower = 10, }, [ITEM_JOLLY_MINT] = { .name = _("Jolly Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Speed, but\n" "reduces Sp. Atk."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_JOLLY, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_JOLLY, .flingPower = 10, }, [ITEM_NAIVE_MINT] = { .name = _("Naive Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "ups Speed, but\n" "reduces Sp. Def."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_NAIVE, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_NAIVE, .flingPower = 10, }, [ITEM_SERIOUS_MINT] = { .name = _("Serious Mint"), - .price = 20, + .price = (I_PRICE >= GEN_9) ? 20000 : 20, .description = COMPOUND_STRING("Can be smelled. It\n" "makes each stat\n" "grow equally."), .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, - .fieldUseFunc = ItemUseOutOfBattle_Mints, - .secondaryId = NATURE_SERIOUS, + .fieldUseFunc = ItemUseOutOfBattle_Mint, + .secondaryId = NATURE_SERIOUS, .flingPower = 10, }, @@ -1590,7 +1596,7 @@ const struct Item gItems[] = [ITEM_RARE_CANDY] = { .name = _("Rare Candy"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 4800, .description = COMPOUND_STRING("Raises the level\n" "of a Pokémon by\n" "one."), @@ -1678,8 +1684,8 @@ const struct Item gItems[] = "Level of a single\n" "Pokémon by one."), .pocket = POCKET_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_DynamaxCandy, .flingPower = 30, }, @@ -1688,7 +1694,7 @@ const struct Item gItems[] = [ITEM_BLUE_FLUTE] = { .name = _("Blue Flute"), - .price = 20, + .price = (I_PRICE >= GEN_7) ? 20 : 100, .description = COMPOUND_STRING("A glass flute that\n" "awakens sleeping\n" "Pokémon."), @@ -1702,7 +1708,7 @@ const struct Item gItems[] = [ITEM_YELLOW_FLUTE] = { .name = _("Yellow Flute"), - .price = 20, + .price = (I_PRICE >= GEN_7) ? 20 : 300, .description = COMPOUND_STRING("A glass flute that\n" "snaps Pokémon\n" "out of confusion."), @@ -1716,7 +1722,7 @@ const struct Item gItems[] = [ITEM_RED_FLUTE] = { .name = _("Red Flute"), - .price = 20, + .price = (I_PRICE >= GEN_7) ? 20 : 200, .description = COMPOUND_STRING("A glass flute that\n" "snaps Pokémon\n" "out of attraction."), @@ -1732,7 +1738,7 @@ const struct Item gItems[] = [ITEM_BLACK_FLUTE] = { .name = _("Black Flute"), - .price = 20, + .price = (I_PRICE >= GEN_7) ? 20 : 400, .holdEffectParam = 50, .description = COMPOUND_STRING("A glass flute that\n" "keeps away wild\n" @@ -1746,7 +1752,7 @@ const struct Item gItems[] = [ITEM_WHITE_FLUTE] = { .name = _("White Flute"), - .price = 20, + .price = (I_PRICE >= GEN_7) ? 20 : 500, .holdEffectParam = 150, .description = COMPOUND_STRING("A glass flute that\n" "lures wild Pokémon."), @@ -1761,7 +1767,7 @@ const struct Item gItems[] = [ITEM_REPEL] = { .name = _("Repel"), - .price = 400, + .price = (I_PRICE >= GEN_7) ? 400 : 350, .holdEffectParam = 100, .description = COMPOUND_STRING("Repels weak wild\n" "Pokémon for 100\n" @@ -1775,7 +1781,7 @@ const struct Item gItems[] = [ITEM_SUPER_REPEL] = { .name = _("Super Repel"), - .price = 700, + .price = (I_PRICE >= GEN_7) ? 700 : 500, .holdEffectParam = 200, .description = COMPOUND_STRING("Repels weak wild\n" "Pokémon for 200\n" @@ -1789,7 +1795,7 @@ const struct Item gItems[] = [ITEM_MAX_REPEL] = { .name = _("Max Repel"), - .price = 900, + .price = (I_PRICE >= GEN_7) ? 900 : 700, .holdEffectParam = 250, .description = COMPOUND_STRING("Repels weak wild\n" "Pokémon for 250\n" @@ -1856,7 +1862,7 @@ const struct Item gItems[] = .importance = 1, .pocket = POCKET_KEY_ITEMS, #else - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 550, .pocket = POCKET_ITEMS, #endif .type = ITEM_USE_FIELD, @@ -1869,7 +1875,7 @@ const struct Item gItems[] = [ITEM_X_ATTACK] = { .name = _("X Attack"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 500, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 .description = COMPOUND_STRING("Sharply raises stat\n" @@ -1890,7 +1896,7 @@ const struct Item gItems[] = [ITEM_X_DEFENSE] = { .name = _("X Defense"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 550, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 .description = COMPOUND_STRING("Sharply raises stat\n" @@ -1911,7 +1917,7 @@ const struct Item gItems[] = [ITEM_X_SP_ATK] = { .name = _("X Sp. Atk"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 350, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 .description = COMPOUND_STRING("Sharply raises stat\n" @@ -1932,7 +1938,7 @@ const struct Item gItems[] = [ITEM_X_SP_DEF] = { .name = _("X Sp. Def"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 350, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 .description = COMPOUND_STRING("Sharply raises stat\n" @@ -1953,7 +1959,7 @@ const struct Item gItems[] = [ITEM_X_SPEED] = { .name = _("X Speed"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 350, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 .description = COMPOUND_STRING("Sharply raises stat\n" @@ -1974,7 +1980,7 @@ const struct Item gItems[] = [ITEM_X_ACCURACY] = { .name = _("X Accuracy"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 950, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 .description = COMPOUND_STRING("Sharply raises move\n" @@ -1995,7 +2001,7 @@ const struct Item gItems[] = [ITEM_DIRE_HIT] = { .name = _("Dire Hit"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 650, .description = COMPOUND_STRING("Raises the\n" "critical-hit ratio\n" "during one battle."), @@ -2009,7 +2015,7 @@ const struct Item gItems[] = [ITEM_GUARD_SPEC] = { .name = _("Guard Spec."), - .price = 1500, + .price = (I_PRICE >= GEN_7) ? 1500 : 700, .description = COMPOUND_STRING("Prevents stat\n" "reduction when\n" "used in battle."), @@ -2023,7 +2029,7 @@ const struct Item gItems[] = [ITEM_POKE_DOLL] = { .name = _("Poké Doll"), - .price = 100, + .price = (I_PRICE < GEN_7) ? 1000 : ((I_PRICE == GEN_7) ? 100 : 300), .description = sPokeDollDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2035,7 +2041,7 @@ const struct Item gItems[] = [ITEM_FLUFFY_TAIL] = { .name = _("Fluffy Tail"), - .price = 100, + .price = (I_PRICE >= GEN_7) ? 100 : 1000, .description = sPokeDollDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2047,7 +2053,7 @@ const struct Item gItems[] = [ITEM_POKE_TOY] = { .name = _("Poké Toy"), - .price = 100, + .price = (I_PRICE >= GEN_7) ? 100 : 1000, .description = sPokeDollDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2075,7 +2081,7 @@ const struct Item gItems[] = [ITEM_BOTTLE_CAP] = { .name = _("Bottle Cap"), - .price = 5000, + .price = (I_PRICE >= GEN_9) ? 20000 : 5000, .description = COMPOUND_STRING("A beautiful bottle\n" "cap that gives off\n" "a silver gleam."), @@ -2088,7 +2094,7 @@ const struct Item gItems[] = [ITEM_GOLD_BOTTLE_CAP] = { .name = _("GoldBottlCap"), - .price = 10000, + .price = (I_PRICE >= GEN_9) ? 60000 : 10000, .description = COMPOUND_STRING("A beautiful bottle\n" "cap that gives off\n" "a golden gleam."), @@ -2101,7 +2107,7 @@ const struct Item gItems[] = [ITEM_NUGGET] = { .name = _("Nugget"), - .price = 10000, + .price = 10000 * TREASURE_FACTOR, .description = COMPOUND_STRING("A nugget of pure\n" "gold. Can be sold at\n" "a high price."), @@ -2114,7 +2120,7 @@ const struct Item gItems[] = [ITEM_BIG_NUGGET] = { .name = _("Big Nugget"), - .price = 40000, + .price = (I_PRICE >= GEN_7) ? (40000 * TREASURE_FACTOR) : 20000, .description = COMPOUND_STRING("A big nugget made\n" "of gold, sellable\n" "at a high price."), @@ -2127,7 +2133,7 @@ const struct Item gItems[] = [ITEM_TINY_MUSHROOM] = { .name = _("Tiny Mushroom"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A plain mushroom\n" "that would sell\n" "at a cheap price."), @@ -2140,7 +2146,7 @@ const struct Item gItems[] = [ITEM_BIG_MUSHROOM] = { .name = _("Big Mushroom"), - .price = 5000, + .price = 5000 * TREASURE_FACTOR, .description = sBigMushroomDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2151,7 +2157,7 @@ const struct Item gItems[] = [ITEM_BALM_MUSHROOM] = { .name = _("Balm Mushroom"), - .price = 15000, + .price = (I_PRICE >= GEN_7) ? 15000 * TREASURE_FACTOR: 12500, .description = sBigMushroomDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2162,7 +2168,7 @@ const struct Item gItems[] = [ITEM_PEARL] = { .name = _("Pearl"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR: 1400, .description = COMPOUND_STRING("A pretty pearl\n" "that would sell at a\n" "cheap price."), @@ -2175,7 +2181,7 @@ const struct Item gItems[] = [ITEM_BIG_PEARL] = { .name = _("Big Pearl"), - .price = 8000, + .price = (I_PRICE >= GEN_7) ? 8000 * TREASURE_FACTOR: 7500, .description = COMPOUND_STRING("A lovely large pearl\n" "that would sell at a\n" "high price."), @@ -2188,7 +2194,7 @@ const struct Item gItems[] = [ITEM_PEARL_STRING] = { .name = _("Pearl String"), - .price = 20000, + .price = (I_PRICE >= GEN_8) ? 15000 * TREASURE_FACTOR: ((I_PRICE == GEN_7) ? 30000 : 15000), .description = COMPOUND_STRING("Very large pearls\n" "that would sell at a\n" "high price."), @@ -2201,7 +2207,7 @@ const struct Item gItems[] = [ITEM_STARDUST] = { .name = _("Stardust"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 * TREASURE_FACTOR: 2000, .description = COMPOUND_STRING("Beautiful red sand.\n" "Can be sold at a\n" "high price."), @@ -2214,7 +2220,7 @@ const struct Item gItems[] = [ITEM_STAR_PIECE] = { .name = _("Star Piece"), - .price = 12000, + .price = (I_PRICE >= GEN_7) ? 12000 * TREASURE_FACTOR: 9800, .description = COMPOUND_STRING("A red gem shard.\n" "It would sell for a\n" "very high price."), @@ -2227,7 +2233,7 @@ const struct Item gItems[] = [ITEM_COMET_SHARD] = { .name = _("Comet Shard"), - .price = 25000, + .price = (I_PRICE <= GEN_5) ? 0 : ((I_PRICE == GEN_6) ? 30000 : ((I_PRICE == GEN_7) ? 60000 : 25000 * TREASURE_FACTOR)), .description = COMPOUND_STRING("A comet's shard.\n" "It would sell for a\n" "high price."), @@ -2266,7 +2272,7 @@ const struct Item gItems[] = [ITEM_RED_SHARD] = { .name = _("Red Shard"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 200, .description = sShardsDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2277,7 +2283,7 @@ const struct Item gItems[] = [ITEM_BLUE_SHARD] = { .name = _("Blue Shard"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 200, .description = sShardsDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2288,7 +2294,7 @@ const struct Item gItems[] = [ITEM_YELLOW_SHARD] = { .name = _("Yellow Shard"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 200, .description = sShardsDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2299,7 +2305,7 @@ const struct Item gItems[] = [ITEM_GREEN_SHARD] = { .name = _("Green Shard"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 200, .description = sShardsDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, @@ -2323,7 +2329,7 @@ const struct Item gItems[] = [ITEM_HONEY] = { .name = _("Honey"), - .price = 300, + .price = (I_PRICE < GEN_5) ? 100 : ((I_PRICE < GEN_8) ? 300 : 900), .description = COMPOUND_STRING("Sweet honey that\n" "attracts wild\n" "Pokémon when used."), @@ -2336,7 +2342,7 @@ const struct Item gItems[] = [ITEM_RARE_BONE] = { .name = _("Rare Bone"), - .price = 5000, + .price = (I_PRICE >= GEN_7) ? 5000 * TREASURE_FACTOR: 10000, .description = COMPOUND_STRING("A very rare bone.\n" "It can be sold at\n" "a high price."), @@ -2362,7 +2368,7 @@ const struct Item gItems[] = [ITEM_PRETTY_FEATHER] = { .name = _("PrettyFeather"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 * TREASURE_FACTOR: 200, .description = COMPOUND_STRING("A beautiful yet\n" "plain feather that\n" "does nothing."), @@ -2466,7 +2472,7 @@ const struct Item gItems[] = [ITEM_STRANGE_SOUVENIR] = { .name = _("StrngeSouvnr"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 10, .description = COMPOUND_STRING("An ornament that\n" "depicts a Pokémon\n" "from Alola."), @@ -2485,7 +2491,7 @@ const struct Item gItems[] = "ancient marine\n" "Pokémon's seashell."), #if I_KEY_FOSSILS >= GEN_4 - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .pocket = POCKET_ITEMS, #else .price = 0, @@ -2504,7 +2510,7 @@ const struct Item gItems[] = "ancient marine\n" "Pokémon's shell."), #if I_KEY_FOSSILS >= GEN_4 - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .pocket = POCKET_ITEMS, #else .price = 0, @@ -2523,7 +2529,7 @@ const struct Item gItems[] = "the genes of an\n" "ancient Pokémon."), #if I_KEY_FOSSILS >= GEN_4 - .price = 10000, + .price = 1000, .pocket = POCKET_ITEMS, #else .price = 0, @@ -2540,7 +2546,7 @@ const struct Item gItems[] = .name = _("Root Fossil"), .description = sRootFossilDesc, #if I_KEY_FOSSILS >= GEN_4 - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .pocket = POCKET_ITEMS, #else .price = 0, @@ -2557,7 +2563,7 @@ const struct Item gItems[] = .name = _("Claw Fossil"), .description = sRootFossilDesc, #if I_KEY_FOSSILS >= GEN_4 - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .pocket = POCKET_ITEMS, #else .price = 0, @@ -2572,7 +2578,7 @@ const struct Item gItems[] = [ITEM_ARMOR_FOSSIL] = { .name = _("Armor Fossil"), - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .description = COMPOUND_STRING("A piece of a\n" "prehistoric Poké-\n" "mon's head."), @@ -2585,7 +2591,7 @@ const struct Item gItems[] = [ITEM_SKULL_FOSSIL] = { .name = _("Skull Fossil"), - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .description = COMPOUND_STRING("A piece of a\n" "prehistoric Poké-\n" "mon's collar."), @@ -2598,7 +2604,7 @@ const struct Item gItems[] = [ITEM_COVER_FOSSIL] = { .name = _("Cover Fossil"), - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .description = COMPOUND_STRING("A piece of a\n" "prehistoric Poké-\n" "mon's back."), @@ -2611,7 +2617,7 @@ const struct Item gItems[] = [ITEM_PLUME_FOSSIL] = { .name = _("Plume Fossil"), - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .description = COMPOUND_STRING("A piece of a\n" "prehistoric Poké-\n" "mon's wing."), @@ -2624,7 +2630,7 @@ const struct Item gItems[] = [ITEM_JAW_FOSSIL] = { .name = _("Jaw Fossil"), - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .description = COMPOUND_STRING("A piece of a prehis-\n" "toric Pokémon's\n" "large jaw."), @@ -2637,7 +2643,7 @@ const struct Item gItems[] = [ITEM_SAIL_FOSSIL] = { .name = _("Sail Fossil"), - .price = 7000, + .price = (I_PRICE >= GEN_7) ? 7000: 1000, .description = COMPOUND_STRING("A piece of a prehis-\n" "toric Pokémon's\n" "skin sail."), @@ -2701,12 +2707,17 @@ const struct Item gItems[] = { .name = _("Growth Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "accelerates the\n" "growth of Berries."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_GROWTH_MULCH), .flingPower = 30, }, @@ -2714,12 +2725,17 @@ const struct Item gItems[] = { .name = _("Damp Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "decelerates the\n" "growth of Berries."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_DAMP_MULCH), .flingPower = 30, }, @@ -2727,12 +2743,17 @@ const struct Item gItems[] = { .name = _("Stable Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "ups the life time\n" "of Berry trees."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_STABLE_MULCH), .flingPower = 30, }, @@ -2740,12 +2761,17 @@ const struct Item gItems[] = { .name = _("Gooey Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "makes more Berries\n" "regrow after fall."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_GOOEY_MULCH), .flingPower = 30, }, @@ -2753,12 +2779,17 @@ const struct Item gItems[] = { .name = _("Rich Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "ups the number of\n" "Berries harvested."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_RICH_MULCH), .flingPower = 30, }, @@ -2766,12 +2797,17 @@ const struct Item gItems[] = { .name = _("SurprseMulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "ups the chance of\n" "Berry mutations."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_SURPRISE_MULCH), .flingPower = 30, }, @@ -2779,12 +2815,17 @@ const struct Item gItems[] = { .name = _("Boost Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" "ups the dry speed\n" "of soft soil."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_BOOST_MULCH), .flingPower = 30, }, @@ -2792,12 +2833,17 @@ const struct Item gItems[] = { .name = _("Amaze Mulch"), .price = 200, +#if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer Rich\n" "Surprising and\n" "Boosting as well."), +#else + .description = sGenericMulchDesc, +#endif .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + .secondaryId = ITEM_TO_MULCH(ITEM_AMAZE_MULCH), .flingPower = 30, }, @@ -2806,7 +2852,7 @@ const struct Item gItems[] = [ITEM_RED_APRICORN] = { .name = _("Red Apricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A red apricorn.\n" "It assails your\n" "nostrils."), @@ -2818,7 +2864,7 @@ const struct Item gItems[] = [ITEM_BLUE_APRICORN] = { .name = _("Blue Apricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A blue apricorn.\n" "It smells a bit\n" "like grass."), @@ -2830,7 +2876,7 @@ const struct Item gItems[] = [ITEM_YELLOW_APRICORN] = { .name = _("YellwApricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A yellow apricorn.\n" "It has an invigor-\n" "ating scent."), @@ -2842,7 +2888,7 @@ const struct Item gItems[] = [ITEM_GREEN_APRICORN] = { .name = _("GreenApricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A green apricorn.\n" "It has a strange,\n" "aromatic scent."), @@ -2854,7 +2900,7 @@ const struct Item gItems[] = [ITEM_PINK_APRICORN] = { .name = _("Pink Apricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A pink apricorn.\n" "It has a nice,\n" "sweet scent."), @@ -2866,7 +2912,7 @@ const struct Item gItems[] = [ITEM_WHITE_APRICORN] = { .name = _("WhiteApricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A white apricorn.\n" "It doesn't smell\n" "like anything."), @@ -2878,7 +2924,7 @@ const struct Item gItems[] = [ITEM_BLACK_APRICORN] = { .name = _("BlackApricorn"), - .price = 200, + .price = (I_PRICE == GEN_4) ? 0 : ((I_PRICE >= GEN_5 && I_PRICE <= GEN_7) ? 20 : 200), .description = COMPOUND_STRING("A black apricorn.\n" "It has an inde-\n" "scribable scent."), @@ -2903,7 +2949,7 @@ const struct Item gItems[] = [ITEM_GALARICA_TWIG] = { .name = _("GalaricaTwig"), - .price = 40, + .price = 20 * TREASURE_FACTOR, .description = COMPOUND_STRING("A twig from a tree\n" "in Galar called\n" "Galarica."), @@ -2916,7 +2962,7 @@ const struct Item gItems[] = [ITEM_ARMORITE_ORE] = { .name = _("Armorite Ore"), - .price = 40, + .price = 20, .description = COMPOUND_STRING("A rare ore. Can be\n" "found in the Isle\n" "of Armor at Galar."), @@ -3098,7 +3144,7 @@ const struct Item gItems[] = [ITEM_FIRE_STONE] = { .name = _("Fire Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3109,7 +3155,7 @@ const struct Item gItems[] = [ITEM_WATER_STONE] = { .name = _("Water Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3120,7 +3166,7 @@ const struct Item gItems[] = [ITEM_THUNDER_STONE] = { .name = _("Thunder Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3131,7 +3177,7 @@ const struct Item gItems[] = [ITEM_LEAF_STONE] = { .name = _("Leaf Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3142,7 +3188,7 @@ const struct Item gItems[] = [ITEM_ICE_STONE] = { .name = _("Ice Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3153,7 +3199,7 @@ const struct Item gItems[] = [ITEM_SUN_STONE] = { .name = _("Sun Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3164,7 +3210,7 @@ const struct Item gItems[] = [ITEM_MOON_STONE] = { .name = _("Moon Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3175,7 +3221,7 @@ const struct Item gItems[] = [ITEM_SHINY_STONE] = { .name = _("Shiny Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3186,7 +3232,7 @@ const struct Item gItems[] = [ITEM_DUSK_STONE] = { .name = _("Dusk Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3197,7 +3243,7 @@ const struct Item gItems[] = [ITEM_DAWN_STONE] = { .name = _("Dawn Stone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 2100, .description = sEvolutionStoneDesc, .pocket = POCKET_ITEMS, .type = ITEM_USE_PARTY_MENU, @@ -3260,7 +3306,7 @@ const struct Item gItems[] = [ITEM_GALARICA_CUFF] = { .name = _("GalaricaCuff"), - .price = 6000, + .price = (I_PRICE >= GEN_9) ? 3000 : 6000, .description = COMPOUND_STRING("A cuff from Galar\n" "that makes certain\n" "Pokémon evolve."), @@ -3273,7 +3319,7 @@ const struct Item gItems[] = [ITEM_GALARICA_WREATH] = { .name = _("GalrcaWreath"), - .price = 6000, + .price = (I_PRICE >= GEN_9) ? 3000 : 6000, .description = COMPOUND_STRING("A wreath made in\n" "Galar. Makes some\n" "Pokémon evolve."), @@ -3286,7 +3332,7 @@ const struct Item gItems[] = [ITEM_DRAGON_SCALE] = { .name = _("Dragon Scale"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .holdEffect = HOLD_EFFECT_DRAGON_SCALE, .holdEffectParam = 10, .description = COMPOUND_STRING("A strange scale\n" @@ -3301,7 +3347,7 @@ const struct Item gItems[] = [ITEM_UPGRADE] = { .name = _("Upgrade"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .holdEffect = HOLD_EFFECT_UPGRADE, .description = COMPOUND_STRING("A peculiar box made\n" "by Silph Co."), @@ -3314,7 +3360,7 @@ const struct Item gItems[] = [ITEM_PROTECTOR] = { .name = _("Protector"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("Loved by a certain\n" "Pokémon. It's stiff\n" "and heavy."), @@ -3327,7 +3373,7 @@ const struct Item gItems[] = [ITEM_ELECTIRIZER] = { .name = _("Electirizer"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("Loved by a certain\n" "Pokémon. It's full\n" "of electric energy."), @@ -3340,7 +3386,7 @@ const struct Item gItems[] = [ITEM_MAGMARIZER] = { .name = _("Magmarizer"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("Loved by a certain\n" "Pokémon. It's full\n" "of magma energy."), @@ -3353,7 +3399,7 @@ const struct Item gItems[] = [ITEM_DUBIOUS_DISC] = { .name = _("Dubious Disc"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("A transparent device\n" "overflowing with\n" "dubious data."), @@ -3366,7 +3412,7 @@ const struct Item gItems[] = [ITEM_REAPER_CLOTH] = { .name = _("Reaper Cloth"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("Loved by a certain\n" "Pokémon. Imbued with\n" "spiritual energy."), @@ -3379,7 +3425,7 @@ const struct Item gItems[] = [ITEM_PRISM_SCALE] = { .name = _("Prism Scale"), - .price = 2000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 2000 : 500), .description = COMPOUND_STRING("A mysterious scale\n" "that evolves certain\n" "Pokémon. It shines."), @@ -3392,7 +3438,7 @@ const struct Item gItems[] = [ITEM_WHIPPED_DREAM] = { .name = _("Whipped Dream"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("A soft and sweet\n" "treat loved by\n" "a certain Pokémon."), @@ -3405,7 +3451,7 @@ const struct Item gItems[] = [ITEM_SACHET] = { .name = _("Sachet"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("A sachet filled with\n" "perfumes loved by\n" "a certain Pokémon."), @@ -3418,7 +3464,7 @@ const struct Item gItems[] = [ITEM_OVAL_STONE] = { .name = _("Oval Stone"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 2100, .description = COMPOUND_STRING("Makes a certain\n" "Pokémon evolve. It's\n" "shaped like an egg."), @@ -3431,7 +3477,7 @@ const struct Item gItems[] = [ITEM_STRAWBERRY_SWEET] = { .name = _("StrwbrySweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("Strawberry-shaped\n" "sweet loved by\n" "Milcery."), @@ -3444,7 +3490,7 @@ const struct Item gItems[] = [ITEM_LOVE_SWEET] = { .name = _("Love Sweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A heart-shaped\n" "sweet loved by\n" "Milcery."), @@ -3457,7 +3503,7 @@ const struct Item gItems[] = [ITEM_BERRY_SWEET] = { .name = _("Berry Sweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A berry-shaped\n" "sweet loved by\n" "Milcery."), @@ -3470,7 +3516,7 @@ const struct Item gItems[] = [ITEM_CLOVER_SWEET] = { .name = _("Clover Sweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A clover-shaped\n" "sweet loved by\n" "Milcery."), @@ -3483,7 +3529,7 @@ const struct Item gItems[] = [ITEM_FLOWER_SWEET] = { .name = _("Flower Sweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A flower-shaped\n" "sweet loved by\n" "Milcery."), @@ -3496,7 +3542,7 @@ const struct Item gItems[] = [ITEM_STAR_SWEET] = { .name = _("Star Sweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A star-shaped\n" "sweet loved by\n" "Milcery."), @@ -3509,7 +3555,7 @@ const struct Item gItems[] = [ITEM_RIBBON_SWEET] = { .name = _("Ribbon Sweet"), - .price = 500, + .price = 500 * TREASURE_FACTOR, .description = COMPOUND_STRING("A ribbon-shaped\n" "sweet loved by\n" "Milcery."), @@ -3522,7 +3568,7 @@ const struct Item gItems[] = [ITEM_EVERSTONE] = { .name = _("Everstone"), - .price = 3000, + .price = (I_PRICE >= GEN_7) ? 3000 : 200, .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE, .description = COMPOUND_STRING("A wondrous hold\n" "item that prevents\n" @@ -3862,7 +3908,7 @@ const struct Item gItems[] = [ITEM_DOUSE_DRIVE] = { .name = _("Douse Drive"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 1000, .holdEffect = HOLD_EFFECT_DRIVE, .description = COMPOUND_STRING("Changes Genesect's\n" "Techno Blast to\n" @@ -3877,7 +3923,7 @@ const struct Item gItems[] = [ITEM_SHOCK_DRIVE] = { .name = _("Shock Drive"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 1000, .holdEffect = HOLD_EFFECT_DRIVE, .description = COMPOUND_STRING("Changes Genesect's\n" "Techno Blast to\n" @@ -3892,7 +3938,7 @@ const struct Item gItems[] = [ITEM_BURN_DRIVE] = { .name = _("Burn Drive"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 1000, .holdEffect = HOLD_EFFECT_DRIVE, .description = COMPOUND_STRING("Changes Genesect's\n" "Techno Blast to\n" @@ -3907,7 +3953,7 @@ const struct Item gItems[] = [ITEM_CHILL_DRIVE] = { .name = _("Chill Drive"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 1000, .holdEffect = HOLD_EFFECT_DRIVE, .description = COMPOUND_STRING("Changes Genesect's\n" "Techno Blast to\n" @@ -4902,7 +4948,7 @@ const struct Item gItems[] = [ITEM_NORMAL_GEM] = { .name = _("Normal Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -4917,7 +4963,7 @@ const struct Item gItems[] = [ITEM_FIRE_GEM] = { .name = _("Fire Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -4932,7 +4978,7 @@ const struct Item gItems[] = [ITEM_WATER_GEM] = { .name = _("Water Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -4947,7 +4993,7 @@ const struct Item gItems[] = [ITEM_ELECTRIC_GEM] = { .name = _("Electric Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -4962,7 +5008,7 @@ const struct Item gItems[] = [ITEM_GRASS_GEM] = { .name = _("Grass Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -4977,7 +5023,7 @@ const struct Item gItems[] = [ITEM_ICE_GEM] = { .name = _("Ice Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -4992,7 +5038,7 @@ const struct Item gItems[] = [ITEM_FIGHTING_GEM] = { .name = _("Fighting Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5007,7 +5053,7 @@ const struct Item gItems[] = [ITEM_POISON_GEM] = { .name = _("Poison Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5022,7 +5068,7 @@ const struct Item gItems[] = [ITEM_GROUND_GEM] = { .name = _("Ground Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5037,7 +5083,7 @@ const struct Item gItems[] = [ITEM_FLYING_GEM] = { .name = _("Flying Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5052,7 +5098,7 @@ const struct Item gItems[] = [ITEM_PSYCHIC_GEM] = { .name = _("Psychic Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5067,7 +5113,7 @@ const struct Item gItems[] = [ITEM_BUG_GEM] = { .name = _("Bug Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5082,7 +5128,7 @@ const struct Item gItems[] = [ITEM_ROCK_GEM] = { .name = _("Rock Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5097,7 +5143,7 @@ const struct Item gItems[] = [ITEM_GHOST_GEM] = { .name = _("Ghost Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5112,7 +5158,7 @@ const struct Item gItems[] = [ITEM_DRAGON_GEM] = { .name = _("Dragon Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5127,7 +5173,7 @@ const struct Item gItems[] = [ITEM_DARK_GEM] = { .name = _("Dark Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5142,7 +5188,7 @@ const struct Item gItems[] = [ITEM_STEEL_GEM] = { .name = _("Steel Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5157,7 +5203,7 @@ const struct Item gItems[] = [ITEM_FAIRY_GEM] = { .name = _("Fairy Gem"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GEMS, .holdEffectParam = GEM_BOOST_PARAM, .description = COMPOUND_STRING("Increases the\n" @@ -5666,7 +5712,7 @@ const struct Item gItems[] = [ITEM_LIGHT_BALL] = { .name = _("Light Ball"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 100, .holdEffect = HOLD_EFFECT_LIGHT_BALL, .description = COMPOUND_STRING("A hold item that\n" "raises the Atk and\n" @@ -5680,7 +5726,7 @@ const struct Item gItems[] = [ITEM_LEEK] = { .name = _("Leek"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 200, .holdEffect = HOLD_EFFECT_LEEK, .description = COMPOUND_STRING("A hold item that\n" "raises Farfetch'd's\n" @@ -5694,7 +5740,7 @@ const struct Item gItems[] = [ITEM_THICK_CLUB] = { .name = _("Thick Club"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 500, .holdEffect = HOLD_EFFECT_THICK_CLUB, .description = COMPOUND_STRING("A hold item that \n" "raises Cubone or\n" @@ -5708,7 +5754,7 @@ const struct Item gItems[] = [ITEM_LUCKY_PUNCH] = { .name = _("Lucky Punch"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 10, .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, .description = COMPOUND_STRING("A hold item that\n" "raises Chansey's\n" @@ -5722,7 +5768,7 @@ const struct Item gItems[] = [ITEM_METAL_POWDER] = { .name = _("Metal Powder"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 10, .holdEffect = HOLD_EFFECT_METAL_POWDER, .description = COMPOUND_STRING("A hold item that\n" "raises Ditto's\n" @@ -5736,7 +5782,7 @@ const struct Item gItems[] = [ITEM_QUICK_POWDER] = { .name = _("Quick Powder"), - .price = 1000, + .price = (I_PRICE >= GEN_7) ? 1000 : 10, .holdEffect = HOLD_EFFECT_QUICK_POWDER, .description = COMPOUND_STRING("An item to be held\n" "by Ditto. This odd\n" @@ -5750,7 +5796,7 @@ const struct Item gItems[] = [ITEM_DEEP_SEA_SCALE] = { .name = _("DeepSeaScale"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 200, .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE, .description = COMPOUND_STRING("A hold item that\n" "raises the Sp. Def\n" @@ -5764,7 +5810,7 @@ const struct Item gItems[] = [ITEM_DEEP_SEA_TOOTH] = { .name = _("DeepSeaTooth"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 200, .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, .description = COMPOUND_STRING("A hold item that\n" "raises the Sp. Atk\n" @@ -5778,7 +5824,7 @@ const struct Item gItems[] = [ITEM_SOUL_DEW] = { .name = _("Soul Dew"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 200, .holdEffect = HOLD_EFFECT_SOUL_DEW, .holdEffectParam = B_SOUL_DEW_BOOST >= GEN_7 ? 20 : 50, #if B_SOUL_DEW_BOOST >= GEN_7 @@ -5799,7 +5845,7 @@ const struct Item gItems[] = [ITEM_ADAMANT_ORB] = { .name = _("Adamant Orb"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 10000, .holdEffect = HOLD_EFFECT_ADAMANT_ORB, .holdEffectParam = 20, .description = COMPOUND_STRING("Boosts the power of\n" @@ -5814,7 +5860,7 @@ const struct Item gItems[] = [ITEM_LUSTROUS_ORB] = { .name = _("Lustrous Orb"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 10000, .holdEffect = HOLD_EFFECT_LUSTROUS_ORB, .holdEffectParam = 20, .description = COMPOUND_STRING("Boosts the power of\n" @@ -5829,7 +5875,7 @@ const struct Item gItems[] = [ITEM_GRISEOUS_ORB] = { .name = _("Griseous Orb"), - .price = 0, + .price = (I_PRICE >= GEN_7) ? 0 : 10000, .holdEffect = HOLD_EFFECT_GRISEOUS_ORB, .holdEffectParam = 20, .description = COMPOUND_STRING("Powers up Giratina's\n" @@ -5846,7 +5892,7 @@ const struct Item gItems[] = [ITEM_SEA_INCENSE] = { .name = _("Sea Incense"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 9600, .holdEffect = HOLD_EFFECT_WATER_POWER, .holdEffectParam = 20, .description = sSeaIncenseDesc, @@ -5859,7 +5905,7 @@ const struct Item gItems[] = [ITEM_LAX_INCENSE] = { .name = _("Lax Incense"), - .price = 5000, + .price = (I_PRICE >= GEN_7) ? 5000 : 9600, .holdEffect = HOLD_EFFECT_EVASION_UP, .holdEffectParam = 10, .description = COMPOUND_STRING("A hold item that\n" @@ -5874,7 +5920,7 @@ const struct Item gItems[] = [ITEM_ODD_INCENSE] = { .name = _("Odd Incense"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 9600, .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, .holdEffectParam = 20, .description = sOddIncenseDesc, @@ -5887,7 +5933,7 @@ const struct Item gItems[] = [ITEM_ROCK_INCENSE] = { .name = _("Rock Incense"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 9600, .holdEffect = HOLD_EFFECT_ROCK_POWER, .holdEffectParam = 20, .description = sRockIncenseDesc, @@ -5900,7 +5946,7 @@ const struct Item gItems[] = [ITEM_FULL_INCENSE] = { .name = _("Full Incense"), - .price = 5000, + .price = (I_PRICE >= GEN_7) ? 5000 : 9600, .holdEffect = HOLD_EFFECT_LAGGING_TAIL, .holdEffectParam = 5, .description = sFullIncenseDesc, @@ -5913,7 +5959,7 @@ const struct Item gItems[] = [ITEM_WAVE_INCENSE] = { .name = _("Wave Incense"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 9600, .holdEffect = HOLD_EFFECT_WATER_POWER, .holdEffectParam = 20, .description = sSeaIncenseDesc, @@ -5926,7 +5972,7 @@ const struct Item gItems[] = [ITEM_ROSE_INCENSE] = { .name = _("Rose Incense"), - .price = 2000, + .price = (I_PRICE >= GEN_7) ? 2000 : 9600, .holdEffect = HOLD_EFFECT_GRASS_POWER, .holdEffectParam = 20, .description = sRoseIncenseDesc, @@ -5939,7 +5985,7 @@ const struct Item gItems[] = [ITEM_LUCK_INCENSE] = { .name = _("Luck Incense"), - .price = 11000, + .price = (I_PRICE >= GEN_7) ? 11000 : 9600, .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, .description = sLuckIncenseDesc, .pocket = POCKET_ITEMS, @@ -5951,7 +5997,7 @@ const struct Item gItems[] = [ITEM_PURE_INCENSE] = { .name = _("Pure Incense"), - .price = 6000, + .price = (I_PRICE >= GEN_7) ? 6000 : 9600, .holdEffect = HOLD_EFFECT_REPEL, .description = sPureIncenseDesc, .pocket = POCKET_ITEMS, @@ -6046,7 +6092,7 @@ const struct Item gItems[] = [ITEM_POWER_WEIGHT] = { .name = _("Power Weight"), - .price = 3000, + .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = 8, .description = COMPOUND_STRING("A hold item that\n" @@ -6062,7 +6108,7 @@ const struct Item gItems[] = [ITEM_POWER_BRACER] = { .name = _("Power Bracer"), - .price = 3000, + .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = 8, .description = COMPOUND_STRING("A hold item that\n" @@ -6078,7 +6124,7 @@ const struct Item gItems[] = [ITEM_POWER_BELT] = { .name = _("Power Belt"), - .price = 3000, + .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = 8, .description = COMPOUND_STRING("A hold item that\n" @@ -6094,7 +6140,7 @@ const struct Item gItems[] = [ITEM_POWER_LENS] = { .name = _("Power Lens"), - .price = 3000, + .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = 8, .description = COMPOUND_STRING("Hold item that pro-\n" @@ -6110,7 +6156,7 @@ const struct Item gItems[] = [ITEM_POWER_BAND] = { .name = _("Power Band"), - .price = 3000, + .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = 8, .description = COMPOUND_STRING("Hold item that pro-\n" @@ -6126,7 +6172,7 @@ const struct Item gItems[] = [ITEM_POWER_ANKLET] = { .name = _("Power Anklet"), - .price = 3000, + .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = 8, .description = COMPOUND_STRING("A hold item that\n" @@ -6144,7 +6190,7 @@ const struct Item gItems[] = [ITEM_SILK_SCARF] = { .name = _("Silk Scarf"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_NORMAL_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6159,7 +6205,7 @@ const struct Item gItems[] = [ITEM_CHARCOAL] = { .name = _("Charcoal"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 9800), .holdEffect = HOLD_EFFECT_FIRE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6174,7 +6220,7 @@ const struct Item gItems[] = [ITEM_MYSTIC_WATER] = { .name = _("Mystic Water"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_WATER_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6189,7 +6235,7 @@ const struct Item gItems[] = [ITEM_MAGNET] = { .name = _("Magnet"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_ELECTRIC_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6204,7 +6250,7 @@ const struct Item gItems[] = [ITEM_MIRACLE_SEED] = { .name = _("Miracle Seed"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_GRASS_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = sRoseIncenseDesc, @@ -6217,7 +6263,7 @@ const struct Item gItems[] = [ITEM_NEVER_MELT_ICE] = { .name = _("Never-MeltIce"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_ICE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6232,7 +6278,7 @@ const struct Item gItems[] = [ITEM_BLACK_BELT] = { .name = _("Black Belt"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_FIGHTING_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6247,7 +6293,7 @@ const struct Item gItems[] = [ITEM_POISON_BARB] = { .name = _("Poison Barb"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_POISON_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6262,7 +6308,7 @@ const struct Item gItems[] = [ITEM_SOFT_SAND] = { .name = _("Soft Sand"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_GROUND_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6277,7 +6323,7 @@ const struct Item gItems[] = [ITEM_SHARP_BEAK] = { .name = _("Sharp Beak"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_FLYING_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6292,7 +6338,7 @@ const struct Item gItems[] = [ITEM_TWISTED_SPOON] = { .name = _("Twisted Spoon"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_PSYCHIC_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = sOddIncenseDesc, @@ -6305,7 +6351,7 @@ const struct Item gItems[] = [ITEM_SILVER_POWDER] = { .name = _("Silver Powder"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_BUG_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6320,7 +6366,7 @@ const struct Item gItems[] = [ITEM_HARD_STONE] = { .name = _("Hard Stone"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_ROCK_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = sRockIncenseDesc, @@ -6333,7 +6379,7 @@ const struct Item gItems[] = [ITEM_SPELL_TAG] = { .name = _("Spell Tag"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_GHOST_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6348,7 +6394,7 @@ const struct Item gItems[] = [ITEM_DRAGON_FANG] = { .name = _("Dragon Fang"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_DRAGON_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6363,7 +6409,7 @@ const struct Item gItems[] = [ITEM_BLACK_GLASSES] = { .name = _("Black Glasses"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_DARK_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6378,7 +6424,7 @@ const struct Item gItems[] = [ITEM_METAL_COAT] = { .name = _("Metal Coat"), - .price = 2000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 2000 : 100), .holdEffect = HOLD_EFFECT_STEEL_POWER, .holdEffectParam = TYPE_BOOST_PARAM, .description = COMPOUND_STRING("A hold item that\n" @@ -6395,11 +6441,11 @@ const struct Item gItems[] = [ITEM_CHOICE_BAND] = { .name = _("Choice Band"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 100000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_CHOICE_BAND, - .description = COMPOUND_STRING("Raises a move's\n" - "power, but permits\n" - "only that move."), + .description = COMPOUND_STRING("Boosts Attack, but\n" + "allows the use of\n" + "only one move."), .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, @@ -6409,7 +6455,7 @@ const struct Item gItems[] = [ITEM_CHOICE_SPECS] = { .name = _("Choice Specs"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 100000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_CHOICE_SPECS, .description = COMPOUND_STRING("Boosts Sp. Atk, but\n" "allows the use of\n" @@ -6423,7 +6469,7 @@ const struct Item gItems[] = [ITEM_CHOICE_SCARF] = { .name = _("Choice Scarf"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 100000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_CHOICE_SCARF, .description = COMPOUND_STRING("Boosts Speed, but\n" "allows the use of\n" @@ -6439,7 +6485,7 @@ const struct Item gItems[] = [ITEM_FLAME_ORB] = { .name = _("Flame Orb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_FLAME_ORB, .description = COMPOUND_STRING("A bizarre orb that\n" "inflicts a burn on\n" @@ -6453,7 +6499,7 @@ const struct Item gItems[] = [ITEM_TOXIC_ORB] = { .name = _("Toxic Orb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_TOXIC_ORB, .description = COMPOUND_STRING("A bizarre orb that\n" "badly poisons the\n" @@ -6469,7 +6515,7 @@ const struct Item gItems[] = [ITEM_DAMP_ROCK] = { .name = _("Damp Rock"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_DAMP_ROCK, .description = COMPOUND_STRING("Extends the length\n" "of Rain Dance if\n" @@ -6483,7 +6529,7 @@ const struct Item gItems[] = [ITEM_HEAT_ROCK] = { .name = _("Heat Rock"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_HEAT_ROCK, .description = COMPOUND_STRING("Extends the length\n" "of Sunny Day if\n" @@ -6497,7 +6543,7 @@ const struct Item gItems[] = [ITEM_SMOOTH_ROCK] = { .name = _("Smooth Rock"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_SMOOTH_ROCK, .description = COMPOUND_STRING("Extends the length\n" "of Sandstorm if\n" @@ -6511,7 +6557,7 @@ const struct Item gItems[] = [ITEM_ICY_ROCK] = { .name = _("Icy Rock"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_ICY_ROCK, .description = COMPOUND_STRING("Extends the length\n" "of the move Hail\n" @@ -6527,7 +6573,7 @@ const struct Item gItems[] = [ITEM_ELECTRIC_SEED] = { .name = _("Electric Seed"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_SEEDS, .holdEffectParam = HOLD_EFFECT_PARAM_ELECTRIC_TERRAIN, .description = COMPOUND_STRING("Boosts Defense on\n" @@ -6542,7 +6588,7 @@ const struct Item gItems[] = [ITEM_PSYCHIC_SEED] = { .name = _("Psychic Seed"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_SEEDS, .holdEffectParam = HOLD_EFFECT_PARAM_PSYCHIC_TERRAIN, .description = COMPOUND_STRING("Boosts Sp. Def. on\n" @@ -6557,7 +6603,7 @@ const struct Item gItems[] = [ITEM_MISTY_SEED] = { .name = _("Misty Seed"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_SEEDS, .holdEffectParam = HOLD_EFFECT_PARAM_MISTY_TERRAIN, .description = COMPOUND_STRING("Boosts Sp. Def. on\n" @@ -6572,7 +6618,7 @@ const struct Item gItems[] = [ITEM_GRASSY_SEED] = { .name = _("Grassy Seed"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_SEEDS, .holdEffectParam = HOLD_EFFECT_PARAM_GRASSY_TERRAIN, .description = COMPOUND_STRING("Boosts Defense on\n" @@ -6589,7 +6635,7 @@ const struct Item gItems[] = [ITEM_ABSORB_BULB] = { .name = _("Absorb Bulb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_ABSORB_BULB, .holdEffectParam = 0, .description = COMPOUND_STRING("Raises Sp. Atk if\n" @@ -6604,7 +6650,7 @@ const struct Item gItems[] = [ITEM_CELL_BATTERY] = { .name = _("Cell Battery"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_CELL_BATTERY, .holdEffectParam = 0, .description = COMPOUND_STRING("Raises Atk if the\n" @@ -6619,7 +6665,7 @@ const struct Item gItems[] = [ITEM_LUMINOUS_MOSS] = { .name = _("Luminous Moss"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 1000), .holdEffect = HOLD_EFFECT_LUMINOUS_MOSS, .holdEffectParam = 0, .description = COMPOUND_STRING("Raises Sp. Def if\n" @@ -6634,7 +6680,7 @@ const struct Item gItems[] = [ITEM_SNOWBALL] = { .name = _("Snowball"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_SNOWBALL, .holdEffectParam = 0, .description = COMPOUND_STRING("Raises Atk if its\n" @@ -6651,7 +6697,7 @@ const struct Item gItems[] = [ITEM_BRIGHT_POWDER] = { .name = _("Bright Powder"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 30000 : ((I_PRICE >= GEN_7) ? 4000 : 10), .holdEffect = HOLD_EFFECT_EVASION_UP, .holdEffectParam = 10, .description = COMPOUND_STRING("A hold item that\n" @@ -6666,7 +6712,7 @@ const struct Item gItems[] = [ITEM_WHITE_HERB] = { .name = _("White Herb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_RESTORE_STATS, .description = COMPOUND_STRING("A hold item that\n" "restores any\n" @@ -6680,13 +6726,14 @@ const struct Item gItems[] = [ITEM_EXP_SHARE] = { .name = _("Exp. Share"), - .price = 3000, .holdEffect = HOLD_EFFECT_EXP_SHARE, #if I_EXP_SHARE_ITEM >= GEN_6 + .price = 0, .description = COMPOUND_STRING("This device gives\n" "exp. to other\n" "party members."), #else + .price = 3000, .description = COMPOUND_STRING("A hold item that\n" "gets Exp. points\n" "from battles."), @@ -6700,7 +6747,7 @@ const struct Item gItems[] = [ITEM_QUICK_CLAW] = { .name = _("Quick Claw"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_QUICK_CLAW, .holdEffectParam = 20, .description = COMPOUND_STRING("A hold item that\n" @@ -6715,7 +6762,7 @@ const struct Item gItems[] = [ITEM_SOOTHE_BELL] = { .name = _("Soothe Bell"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_FRIENDSHIP_UP, .description = COMPOUND_STRING("A hold item that\n" "calms spirits and\n" @@ -6729,7 +6776,7 @@ const struct Item gItems[] = [ITEM_MENTAL_HERB] = { .name = _("Mental Herb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_MENTAL_HERB, #if B_MENTAL_HERB >= GEN_5 .description = COMPOUND_STRING("Snaps Pokémon out\n" @@ -6749,7 +6796,7 @@ const struct Item gItems[] = [ITEM_KINGS_ROCK] = { .name = _("King's Rock"), - .price = 5000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 5000 : 100), .holdEffect = HOLD_EFFECT_FLINCH, .holdEffectParam = 10, .description = sKingsRockDesc, @@ -6762,7 +6809,7 @@ const struct Item gItems[] = [ITEM_AMULET_COIN] = { .name = _("Amulet Coin"), - .price = 10000, + .price = (I_PRICE >= GEN_9) ? 30000 : ((I_PRICE >= GEN_7) ? 10000 : 100), .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE, .description = sLuckIncenseDesc, .pocket = POCKET_ITEMS, @@ -6774,7 +6821,7 @@ const struct Item gItems[] = [ITEM_CLEANSE_TAG] = { .name = _("Cleanse Tag"), - .price = 5000, + .price = (I_PRICE >= GEN_7) ? 5000 : 200, .holdEffect = HOLD_EFFECT_REPEL, .description = sPureIncenseDesc, .pocket = POCKET_ITEMS, @@ -6786,7 +6833,7 @@ const struct Item gItems[] = [ITEM_SMOKE_BALL] = { .name = _("Smoke Ball"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN, .description = COMPOUND_STRING("A hold item that\n" "assures fleeing\n" @@ -6800,7 +6847,7 @@ const struct Item gItems[] = [ITEM_FOCUS_BAND] = { .name = _("Focus Band"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_FOCUS_BAND, .holdEffectParam = 10, .description = COMPOUND_STRING("A hold item that\n" @@ -6815,7 +6862,7 @@ const struct Item gItems[] = [ITEM_LUCKY_EGG] = { .name = _("Lucky Egg"), - .price = 10000, + .price = (I_PRICE >= GEN_7) ? 10000 : 200, .holdEffect = HOLD_EFFECT_LUCKY_EGG, .description = COMPOUND_STRING("A hold item that\n" "boosts Exp. points\n" @@ -6829,7 +6876,7 @@ const struct Item gItems[] = [ITEM_SCOPE_LENS] = { .name = _("Scope Lens"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_SCOPE_LENS, .description = COMPOUND_STRING("A hold item that\n" "improves the\n" @@ -6843,7 +6890,7 @@ const struct Item gItems[] = [ITEM_LEFTOVERS] = { .name = _("Leftovers"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_LEFTOVERS, .holdEffectParam = 10, .description = COMPOUND_STRING("A hold item that\n" @@ -6858,7 +6905,7 @@ const struct Item gItems[] = [ITEM_SHELL_BELL] = { .name = _("Shell Bell"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_SHELL_BELL, .holdEffectParam = 8, .description = COMPOUND_STRING("A hold item that\n" @@ -6873,7 +6920,7 @@ const struct Item gItems[] = [ITEM_WIDE_LENS] = { .name = _("Wide Lens"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_WIDE_LENS, .holdEffectParam = 10, .description = COMPOUND_STRING("A magnifying lens\n" @@ -6888,7 +6935,7 @@ const struct Item gItems[] = [ITEM_MUSCLE_BAND] = { .name = _("Muscle Band"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_MUSCLE_BAND, .holdEffectParam = 10, .description = COMPOUND_STRING("A headband that\n" @@ -6903,7 +6950,7 @@ const struct Item gItems[] = [ITEM_WISE_GLASSES] = { .name = _("Wise Glasses"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_WISE_GLASSES, .holdEffectParam = 10, .description = COMPOUND_STRING("A pair of glasses\n" @@ -6918,7 +6965,7 @@ const struct Item gItems[] = [ITEM_EXPERT_BELT] = { .name = _("Expert Belt"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 30000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_EXPERT_BELT, .holdEffectParam = 20, .description = COMPOUND_STRING("A belt that boosts\n" @@ -6933,7 +6980,7 @@ const struct Item gItems[] = [ITEM_LIGHT_CLAY] = { .name = _("Light Clay"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_LIGHT_CLAY, .description = COMPOUND_STRING("Extends the length\n" "of barrier moves\n" @@ -6947,7 +6994,7 @@ const struct Item gItems[] = [ITEM_LIFE_ORB] = { .name = _("Life Orb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 50000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_LIFE_ORB, .description = COMPOUND_STRING("Boosts the power of\n" "moves at the cost\n" @@ -6961,7 +7008,7 @@ const struct Item gItems[] = [ITEM_POWER_HERB] = { .name = _("Power Herb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 30000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_POWER_HERB, .description = COMPOUND_STRING("Allows immediate\n" "use of a move that\n" @@ -6975,7 +7022,7 @@ const struct Item gItems[] = [ITEM_FOCUS_SASH] = { .name = _("Focus Sash"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 50000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_FOCUS_SASH, .description = COMPOUND_STRING("If the holder has\n" "full HP, it endures\n" @@ -6989,7 +7036,7 @@ const struct Item gItems[] = [ITEM_ZOOM_LENS] = { .name = _("Zoom Lens"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_ZOOM_LENS, .holdEffectParam = 20, .description = COMPOUND_STRING("If the holder moves\n" @@ -7004,7 +7051,7 @@ const struct Item gItems[] = [ITEM_METRONOME] = { .name = _("Metronome"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_METRONOME, .holdEffectParam = 20, .description = COMPOUND_STRING("A held item that\n" @@ -7019,7 +7066,7 @@ const struct Item gItems[] = [ITEM_IRON_BALL] = { .name = _("Iron Ball"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_IRON_BALL, .description = COMPOUND_STRING("Cuts Speed and lets\n" "Flying-types be hit\n" @@ -7033,7 +7080,7 @@ const struct Item gItems[] = [ITEM_LAGGING_TAIL] = { .name = _("Lagging Tail"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_LAGGING_TAIL, .description = sFullIncenseDesc, .pocket = POCKET_ITEMS, @@ -7045,7 +7092,7 @@ const struct Item gItems[] = [ITEM_DESTINY_KNOT] = { .name = _("Destiny Knot"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_DESTINY_KNOT, .description = COMPOUND_STRING("If the holder falls\n" "in love, the foe\n" @@ -7059,7 +7106,7 @@ const struct Item gItems[] = [ITEM_BLACK_SLUDGE] = { .name = _("Black Sludge"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_BLACK_SLUDGE, .description = COMPOUND_STRING("Gradually restores\n" "HP of Poison-types.\n" @@ -7073,7 +7120,7 @@ const struct Item gItems[] = [ITEM_GRIP_CLAW] = { .name = _("Grip Claw"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_GRIP_CLAW, .description = COMPOUND_STRING("Makes binding moves\n" "used by the holder\n" @@ -7087,7 +7134,7 @@ const struct Item gItems[] = [ITEM_STICKY_BARB] = { .name = _("Sticky Barb"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_STICKY_BARB, .description = COMPOUND_STRING("Damages the holder\n" "each turn. May latch\n" @@ -7101,7 +7148,7 @@ const struct Item gItems[] = [ITEM_SHED_SHELL] = { .name = _("Shed Shell"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_SHED_SHELL, .description = COMPOUND_STRING("Enables the holder\n" "to switch out of\n" @@ -7115,7 +7162,7 @@ const struct Item gItems[] = [ITEM_BIG_ROOT] = { .name = _("Big Root"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_BIG_ROOT, .holdEffectParam = 30, .description = COMPOUND_STRING("A held item that\n" @@ -7130,7 +7177,7 @@ const struct Item gItems[] = [ITEM_RAZOR_CLAW] = { .name = _("Razor Claw"), - .price = 5000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 5000 : 2100), .holdEffect = HOLD_EFFECT_SCOPE_LENS, .description = COMPOUND_STRING("A hooked claw that\n" "ups the holder's\n" @@ -7144,7 +7191,7 @@ const struct Item gItems[] = [ITEM_RAZOR_FANG] = { .name = _("Razor Fang"), - .price = 5000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 5000 : 2100), .holdEffect = HOLD_EFFECT_FLINCH, .holdEffectParam = 10, .description = sKingsRockDesc, @@ -7157,7 +7204,7 @@ const struct Item gItems[] = [ITEM_EVIOLITE] = { .name = _("Eviolite"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 50000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_EVIOLITE, .holdEffectParam = 50, .description = COMPOUND_STRING("Raises the Def and\n" @@ -7172,7 +7219,7 @@ const struct Item gItems[] = [ITEM_FLOAT_STONE] = { .name = _("Float Stone"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_FLOAT_STONE, .description = COMPOUND_STRING("It's so light that\n" "when held, it halves\n" @@ -7186,7 +7233,7 @@ const struct Item gItems[] = [ITEM_ROCKY_HELMET] = { .name = _("Rocky Helmet"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 50000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_ROCKY_HELMET, .holdEffectParam = 0, .description = COMPOUND_STRING("Hurts the foe if\n" @@ -7201,7 +7248,7 @@ const struct Item gItems[] = [ITEM_AIR_BALLOON] = { .name = _("Air Balloon"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_AIR_BALLOON, .holdEffectParam = 0, .description = COMPOUND_STRING("Elevates the holder\n" @@ -7216,7 +7263,7 @@ const struct Item gItems[] = [ITEM_RED_CARD] = { .name = _("Red Card"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_RED_CARD, .holdEffectParam = 0, .description = COMPOUND_STRING("Switches out the\n" @@ -7231,7 +7278,7 @@ const struct Item gItems[] = [ITEM_RING_TARGET] = { .name = _("Ring Target"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_RING_TARGET, .holdEffectParam = 0, .description = COMPOUND_STRING("Moves that wouldn't\n" @@ -7246,7 +7293,7 @@ const struct Item gItems[] = [ITEM_BINDING_BAND] = { .name = _("Binding Band"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_BINDING_BAND, .description = COMPOUND_STRING("Increases the\n" "power of binding\n" @@ -7260,7 +7307,7 @@ const struct Item gItems[] = [ITEM_EJECT_BUTTON] = { .name = _("Eject Button"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 30000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_EJECT_BUTTON, .holdEffectParam = 0, .description = COMPOUND_STRING("Switches out the\n" @@ -7275,7 +7322,7 @@ const struct Item gItems[] = [ITEM_WEAKNESS_POLICY] = { .name = _("WeaknssPolicy"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 50000 : 1000, .holdEffect = HOLD_EFFECT_WEAKNESS_POLICY, .holdEffectParam = 0, .description = COMPOUND_STRING("If hit by a Super\n" @@ -7290,7 +7337,7 @@ const struct Item gItems[] = [ITEM_ASSAULT_VEST] = { .name = _("Assault Vest"), - .price = 1000, + .price = (I_PRICE >= GEN_9) ? 50000 : 1000, .holdEffect = HOLD_EFFECT_ASSAULT_VEST, .holdEffectParam = 50, .description = COMPOUND_STRING("Raises Sp. Def but\n" @@ -7305,7 +7352,7 @@ const struct Item gItems[] = [ITEM_SAFETY_GOGGLES] = { .name = _("SafetyGoggles"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 1000), .holdEffect = HOLD_EFFECT_SAFETY_GOGGLES, .description = COMPOUND_STRING("Protect from\n" "weather damage and\n" @@ -7319,7 +7366,7 @@ const struct Item gItems[] = [ITEM_ADRENALINE_ORB] = { .name = _("AdrenalineOrb"), - .price = 300, + .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_8) ? 4000 : 300), .holdEffect = HOLD_EFFECT_ADRENALINE_ORB, .description = COMPOUND_STRING("Boosts Speed if the\n" "user is intimidated,\n" @@ -7333,7 +7380,7 @@ const struct Item gItems[] = [ITEM_TERRAIN_EXTENDER] = { .name = _("TerainExtendr"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_TERRAIN_EXTENDER, .description = COMPOUND_STRING("Extends the length\n" "of the active\n" @@ -7347,7 +7394,7 @@ const struct Item gItems[] = [ITEM_PROTECTIVE_PADS] = { .name = _("ProtectvePads"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_PROTECTIVE_PADS, .description = COMPOUND_STRING("Guard the holder\n" "from contact move\n" @@ -7361,7 +7408,7 @@ const struct Item gItems[] = [ITEM_THROAT_SPRAY] = { .name = _("Throat Spray"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_THROAT_SPRAY, .description = COMPOUND_STRING("Raises Sp. Atk. if\n" "the holder uses a\n" @@ -7375,7 +7422,7 @@ const struct Item gItems[] = [ITEM_EJECT_PACK] = { .name = _("Eject Pack"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 30000 : 4000, .holdEffect = HOLD_EFFECT_EJECT_PACK, .description = COMPOUND_STRING("Forces the user to\n" "switch if its stats\n" @@ -7389,7 +7436,7 @@ const struct Item gItems[] = [ITEM_HEAVY_DUTY_BOOTS] = { .name = _("Heavy-DtyBts"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_HEAVY_DUTY_BOOTS, .description = COMPOUND_STRING("Boots that prevent\n" "effects of traps\n" @@ -7403,7 +7450,7 @@ const struct Item gItems[] = [ITEM_BLUNDER_POLICY] = { .name = _("BlundrPolicy"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 30000 : 4000, .holdEffect = HOLD_EFFECT_BLUNDER_POLICY, .description = COMPOUND_STRING("Raises Speed if\n" "the user misses\n" @@ -7417,7 +7464,7 @@ const struct Item gItems[] = [ITEM_ROOM_SERVICE] = { .name = _("Room Service"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_ROOM_SERVICE, .description = COMPOUND_STRING("Lowers Speed if\n" "Trick Room is\n" @@ -7431,7 +7478,7 @@ const struct Item gItems[] = [ITEM_UTILITY_UMBRELLA] = { .name = _("UtltyUmbrlla"), - .price = 4000, + .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_UTILITY_UMBRELLA, .description = COMPOUND_STRING("An umbrella that\n" "protects from\n" @@ -7447,7 +7494,7 @@ const struct Item gItems[] = [ITEM_CHERI_BERRY] = { .name = _("Cheri Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_PAR, .description = COMPOUND_STRING("A hold item that\n" "heals paralysis\n" @@ -7462,7 +7509,7 @@ const struct Item gItems[] = [ITEM_CHESTO_BERRY] = { .name = _("Chesto Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_SLP, .description = COMPOUND_STRING("A hold item that\n" "awakens Pokémon\n" @@ -7477,7 +7524,7 @@ const struct Item gItems[] = [ITEM_PECHA_BERRY] = { .name = _("Pecha Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_PSN, .description = COMPOUND_STRING("A hold item that\n" "heals poisoning\n" @@ -7492,7 +7539,7 @@ const struct Item gItems[] = [ITEM_RAWST_BERRY] = { .name = _("Rawst Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_BRN, .description = COMPOUND_STRING("A hold item that\n" "heals a burn in\n" @@ -7507,7 +7554,7 @@ const struct Item gItems[] = [ITEM_ASPEAR_BERRY] = { .name = _("Aspear Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_FRZ, .description = COMPOUND_STRING("A hold item that\n" "defrosts Pokémon\n" @@ -7522,7 +7569,7 @@ const struct Item gItems[] = [ITEM_LEPPA_BERRY] = { .name = _("Leppa Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESTORE_PP, .holdEffectParam = 10, .description = COMPOUND_STRING("A hold item that\n" @@ -7538,7 +7585,7 @@ const struct Item gItems[] = [ITEM_ORAN_BERRY] = { .name = _("Oran Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESTORE_HP, .holdEffectParam = 10, .description = COMPOUND_STRING("A hold item that\n" @@ -7554,7 +7601,7 @@ const struct Item gItems[] = [ITEM_PERSIM_BERRY] = { .name = _("Persim Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_CONFUSION, .description = COMPOUND_STRING("A hold item that\n" "heals confusion\n" @@ -7569,7 +7616,7 @@ const struct Item gItems[] = [ITEM_LUM_BERRY] = { .name = _("Lum Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_STATUS, .description = COMPOUND_STRING("A hold item that\n" "heals any status\n" @@ -7584,7 +7631,7 @@ const struct Item gItems[] = [ITEM_SITRUS_BERRY] = { .name = _("Sitrus Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, #if I_SITRUS_BERRY_HEAL >= GEN_4 .holdEffect = HOLD_EFFECT_RESTORE_PCT_HP, .holdEffectParam = 25, @@ -7608,7 +7655,7 @@ const struct Item gItems[] = [ITEM_FIGY_BERRY] = { .name = _("Figy Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sFigyBerryDesc, @@ -7621,7 +7668,7 @@ const struct Item gItems[] = [ITEM_WIKI_BERRY] = { .name = _("Wiki Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_DRY, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sFigyBerryDesc, @@ -7634,7 +7681,7 @@ const struct Item gItems[] = [ITEM_MAGO_BERRY] = { .name = _("Mago Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sFigyBerryDesc, @@ -7647,7 +7694,7 @@ const struct Item gItems[] = [ITEM_AGUAV_BERRY] = { .name = _("Aguav Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sFigyBerryDesc, @@ -7660,7 +7707,7 @@ const struct Item gItems[] = [ITEM_IAPAPA_BERRY] = { .name = _("Iapapa Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, .description = sFigyBerryDesc, @@ -7673,7 +7720,7 @@ const struct Item gItems[] = [ITEM_RAZZ_BERRY] = { .name = _("Razz Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Razz."), @@ -7686,7 +7733,7 @@ const struct Item gItems[] = [ITEM_BLUK_BERRY] = { .name = _("Bluk Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Bluk."), @@ -7699,7 +7746,7 @@ const struct Item gItems[] = [ITEM_NANAB_BERRY] = { .name = _("Nanab Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Nanab."), @@ -7712,7 +7759,7 @@ const struct Item gItems[] = [ITEM_WEPEAR_BERRY] = { .name = _("Wepear Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Wepear."), @@ -7725,7 +7772,7 @@ const struct Item gItems[] = [ITEM_PINAP_BERRY] = { .name = _("Pinap Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Pinap."), @@ -7738,7 +7785,7 @@ const struct Item gItems[] = [ITEM_POMEG_BERRY] = { .name = _("Pomeg Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" "base HP."), @@ -7751,7 +7798,7 @@ const struct Item gItems[] = [ITEM_KELPSY_BERRY] = { .name = _("Kelpsy Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" "base Attack."), @@ -7764,7 +7811,7 @@ const struct Item gItems[] = [ITEM_QUALOT_BERRY] = { .name = _("Qualot Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" "base Defense."), @@ -7777,7 +7824,7 @@ const struct Item gItems[] = [ITEM_HONDEW_BERRY] = { .name = _("Hondew Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" "base Sp. Atk."), @@ -7790,7 +7837,7 @@ const struct Item gItems[] = [ITEM_GREPA_BERRY] = { .name = _("Grepa Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" "base Sp. Def."), @@ -7803,7 +7850,7 @@ const struct Item gItems[] = [ITEM_TAMATO_BERRY] = { .name = _("Tamato Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" "base Speed."), @@ -7816,7 +7863,7 @@ const struct Item gItems[] = [ITEM_CORNN_BERRY] = { .name = _("Cornn Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Cornn."), @@ -7829,7 +7876,7 @@ const struct Item gItems[] = [ITEM_MAGOST_BERRY] = { .name = _("Magost Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Magost."), @@ -7842,7 +7889,7 @@ const struct Item gItems[] = [ITEM_RABUTA_BERRY] = { .name = _("Rabuta Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Rabuta."), @@ -7855,7 +7902,7 @@ const struct Item gItems[] = [ITEM_NOMEL_BERRY] = { .name = _("Nomel Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Nomel."), @@ -7868,7 +7915,7 @@ const struct Item gItems[] = [ITEM_SPELON_BERRY] = { .name = _("Spelon Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Spelon."), @@ -7881,7 +7928,7 @@ const struct Item gItems[] = [ITEM_PAMTRE_BERRY] = { .name = _("Pamtre Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Pamtre."), @@ -7894,7 +7941,7 @@ const struct Item gItems[] = [ITEM_WATMEL_BERRY] = { .name = _("Watmel Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Watmel."), @@ -7907,7 +7954,7 @@ const struct Item gItems[] = [ITEM_DURIN_BERRY] = { .name = _("Durin Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Durin."), @@ -7920,7 +7967,7 @@ const struct Item gItems[] = [ITEM_BELUE_BERRY] = { .name = _("Belue Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow Belue."), @@ -7933,7 +7980,7 @@ const struct Item gItems[] = [ITEM_CHILAN_BERRY] = { .name = _("Chilan Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_NORMAL, .description = COMPOUND_STRING("A hold item that\n" @@ -7948,7 +7995,7 @@ const struct Item gItems[] = [ITEM_OCCA_BERRY] = { .name = _("Occa Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FIRE, .description = COMPOUND_STRING("A hold item that\n" @@ -7963,7 +8010,7 @@ const struct Item gItems[] = [ITEM_PASSHO_BERRY] = { .name = _("Passho Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_WATER, .description = COMPOUND_STRING("A hold item that\n" @@ -7978,7 +8025,7 @@ const struct Item gItems[] = [ITEM_WACAN_BERRY] = { .name = _("Wacan Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_ELECTRIC, .description = COMPOUND_STRING("A hold item that\n" @@ -7993,7 +8040,7 @@ const struct Item gItems[] = [ITEM_RINDO_BERRY] = { .name = _("Rindo Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_GRASS, .description = COMPOUND_STRING("A hold item that\n" @@ -8008,7 +8055,7 @@ const struct Item gItems[] = [ITEM_YACHE_BERRY] = { .name = _("Yache Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_ICE, .description = COMPOUND_STRING("A hold item that\n" @@ -8023,7 +8070,7 @@ const struct Item gItems[] = [ITEM_CHOPLE_BERRY] = { .name = _("Chople Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FIGHTING, .description = COMPOUND_STRING("A hold item that\n" @@ -8038,7 +8085,7 @@ const struct Item gItems[] = [ITEM_KEBIA_BERRY] = { .name = _("Kebia Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_POISON, .description = COMPOUND_STRING("A hold item that\n" @@ -8053,7 +8100,7 @@ const struct Item gItems[] = [ITEM_SHUCA_BERRY] = { .name = _("Shuca Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_GROUND, .description = COMPOUND_STRING("A hold item that\n" @@ -8068,7 +8115,7 @@ const struct Item gItems[] = [ITEM_COBA_BERRY] = { .name = _("Coba Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FLYING, .description = COMPOUND_STRING("A hold item that\n" @@ -8083,7 +8130,7 @@ const struct Item gItems[] = [ITEM_PAYAPA_BERRY] = { .name = _("Payapa Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_PSYCHIC, .description = COMPOUND_STRING("A hold item that\n" @@ -8098,7 +8145,7 @@ const struct Item gItems[] = [ITEM_TANGA_BERRY] = { .name = _("Tanga Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_BUG, .description = COMPOUND_STRING("A hold item that\n" @@ -8113,7 +8160,7 @@ const struct Item gItems[] = [ITEM_CHARTI_BERRY] = { .name = _("Charti Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_ROCK, .description = COMPOUND_STRING("A hold item that\n" @@ -8128,7 +8175,7 @@ const struct Item gItems[] = [ITEM_KASIB_BERRY] = { .name = _("Kasib Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_GHOST, .description = COMPOUND_STRING("A hold item that\n" @@ -8143,7 +8190,7 @@ const struct Item gItems[] = [ITEM_HABAN_BERRY] = { .name = _("Haban Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_DRAGON, .description = COMPOUND_STRING("A hold item that\n" @@ -8158,7 +8205,7 @@ const struct Item gItems[] = [ITEM_COLBUR_BERRY] = { .name = _("Colbur Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_DARK, .description = COMPOUND_STRING("A hold item that\n" @@ -8173,7 +8220,7 @@ const struct Item gItems[] = [ITEM_BABIRI_BERRY] = { .name = _("Babiri Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_STEEL, .description = COMPOUND_STRING("A hold item that\n" @@ -8188,7 +8235,7 @@ const struct Item gItems[] = [ITEM_ROSELI_BERRY] = { .name = _("Roseli Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FAIRY, .description = COMPOUND_STRING("A hold item that\n" @@ -8203,7 +8250,7 @@ const struct Item gItems[] = [ITEM_LIECHI_BERRY] = { .name = _("Liechi Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_ATTACK_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8218,7 +8265,7 @@ const struct Item gItems[] = [ITEM_GANLON_BERRY] = { .name = _("Ganlon Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_DEFENSE_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8233,7 +8280,7 @@ const struct Item gItems[] = [ITEM_SALAC_BERRY] = { .name = _("Salac Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_SPEED_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8248,7 +8295,7 @@ const struct Item gItems[] = [ITEM_PETAYA_BERRY] = { .name = _("Petaya Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8263,7 +8310,7 @@ const struct Item gItems[] = [ITEM_APICOT_BERRY] = { .name = _("Apicot Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8278,7 +8325,7 @@ const struct Item gItems[] = [ITEM_LANSAT_BERRY] = { .name = _("Lansat Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CRITICAL_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8293,7 +8340,7 @@ const struct Item gItems[] = [ITEM_STARF_BERRY] = { .name = _("Starf Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, .holdEffectParam = 4, .description = COMPOUND_STRING("A hold item that\n" @@ -8308,7 +8355,7 @@ const struct Item gItems[] = [ITEM_ENIGMA_BERRY] = { .name = _("Enigma Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_ENIGMA_BERRY, .description = COMPOUND_STRING("A hold item that\n" "heals from super\n" @@ -8322,7 +8369,7 @@ const struct Item gItems[] = [ITEM_MICLE_BERRY] = { .name = _("Micle Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_MICLE_BERRY, .holdEffectParam = 4, .description = COMPOUND_STRING("When held, it ups\n" @@ -8337,7 +8384,7 @@ const struct Item gItems[] = [ITEM_CUSTAP_BERRY] = { .name = _("Custap Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CUSTAP_BERRY, .holdEffectParam = 4, .description = COMPOUND_STRING("It allows a Pokémon\n" @@ -8352,7 +8399,7 @@ const struct Item gItems[] = [ITEM_JABOCA_BERRY] = { .name = _("Jaboca Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_JABOCA_BERRY, .description = COMPOUND_STRING("If hit by a physical\n" "move, it will hurt\n" @@ -8366,7 +8413,7 @@ const struct Item gItems[] = [ITEM_ROWAP_BERRY] = { .name = _("Rowap Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_ROWAP_BERRY, .description = COMPOUND_STRING("If hit by a special\n" "move, it will hurt\n" @@ -8380,7 +8427,7 @@ const struct Item gItems[] = [ITEM_KEE_BERRY] = { .name = _("Kee Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_KEE_BERRY, .description = COMPOUND_STRING("If hit by a physical\n" "move, it raises the\n" @@ -8394,7 +8441,7 @@ const struct Item gItems[] = [ITEM_MARANGA_BERRY] = { .name = _("Maranga Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_MARANGA_BERRY, .description = COMPOUND_STRING("If hit by a special\n" "move, it raises the\n" @@ -8408,7 +8455,7 @@ const struct Item gItems[] = [ITEM_ENIGMA_BERRY_E_READER] = { .name = _("Enigma Berry"), - .price = 20, + .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" "to grow a mystery."), @@ -10310,8 +10357,8 @@ const struct Item gItems[] = "Storage System."), .importance = 1, .pocket = POCKET_KEY_ITEMS, - .type = ITEM_USE_BAG_MENU, - .fieldUseFunc = ItemUseOutOfBattle_CannotUse, // Todo + .type = ITEM_USE_FIELD, + .fieldUseFunc = ItemUseOutOfBattle_PokemonBoxLink, }, [ITEM_COIN_CASE] = @@ -10841,6 +10888,8 @@ const struct Item gItems[] = .flingPower = 30, }, +// GEN 9 ITEMS + [ITEM_CLEAR_AMULET] = { .name = _("Clear Amulet"), @@ -11370,42 +11419,36 @@ const struct Item gItems[] = { .name = _("CornrstneMask"), .price = 0, - .holdEffect = HOLD_EFFECT_MASK, .description = COMPOUND_STRING("Allows Ogerpon to\n" "wield the Rock-\n" "type in battle."), .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_ROCK, }, [ITEM_WELLSPRING_MASK] = { .name = _("WellsprngMask"), .price = 0, - .holdEffect = HOLD_EFFECT_MASK, .description = COMPOUND_STRING("Allows Ogerpon to\n" "wield the Water-\n" "type in battle."), .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_WATER, }, [ITEM_HEARTHFLAME_MASK] = { .name = _("HrthflameMask"), .price = 0, - .holdEffect = HOLD_EFFECT_MASK, .description = COMPOUND_STRING("Allows Ogerpon to\n" "wield the Fire-\n" "type in battle."), .pocket = POCKET_ITEMS, .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, - .secondaryId = TYPE_FIRE, }, [ITEM_HEALTH_MOCHI] = @@ -11499,4 +11542,26 @@ const struct Item gItems[] = .type = ITEM_USE_BAG_MENU, .fieldUseFunc = ItemUseOutOfBattle_CannotUse, }, + + [ITEM_METAL_ALLOY] = + { + .name = _("Metal Alloy"), + .price = 6000, + .description = COMPOUND_STRING("A peculiar metal\n" + "that makes certain\n" + "Pokémon evolve."), + .pocket = POCKET_ITEMS, + .type = ITEM_USE_PARTY_MENU, + .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone, + }, + + [ITEM_STELLAR_TERA_SHARD] = + { + .name = _("StllrTeraShrd"), + .price = 0, + .description = sTeraShardDesc, + .pocket = POCKET_ITEMS, + .type = ITEM_USE_BAG_MENU, + .fieldUseFunc = ItemUseOutOfBattle_CannotUse, + }, }; diff --git a/src/data/object_events/berry_tree_graphics_tables.h b/src/data/object_events/berry_tree_graphics_tables.h index 2969b6a78e96..40495873b483 100755 --- a/src/data/object_events/berry_tree_graphics_tables.h +++ b/src/data/object_events/berry_tree_graphics_tables.h @@ -10,7 +10,7 @@ static const struct SpriteFrameImage sPicTable_CheriBerryTree[] = { overworld_frame(gObjectEventPic_CheriBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Cheri[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -24,7 +24,7 @@ static const struct SpriteFrameImage sPicTable_ChestoBerryTree[] = { overworld_frame(gObjectEventPic_ChestoBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Chesto[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_PechaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -38,7 +38,7 @@ static const struct SpriteFrameImage sPicTable_PechaBerryTree[] = { overworld_frame(gObjectEventPic_PechaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Pecha[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -52,7 +52,7 @@ static const struct SpriteFrameImage sPicTable_RawstBerryTree[] = { overworld_frame(gObjectEventPic_RawstBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Rawst[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -66,7 +66,7 @@ static const struct SpriteFrameImage sPicTable_AspearBerryTree[] = { overworld_frame(gObjectEventPic_AspearBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Aspear[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -80,7 +80,7 @@ static const struct SpriteFrameImage sPicTable_LeppaBerryTree[] = { overworld_frame(gObjectEventPic_LeppaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Leppa[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_OranBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -94,7 +94,7 @@ static const struct SpriteFrameImage sPicTable_OranBerryTree[] = { overworld_frame(gObjectEventPic_OranBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Oran[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -108,7 +108,7 @@ static const struct SpriteFrameImage sPicTable_PersimBerryTree[] = { overworld_frame(gObjectEventPic_PersimBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Persim[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_LumBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -122,7 +122,7 @@ static const struct SpriteFrameImage sPicTable_LumBerryTree[] = { overworld_frame(gObjectEventPic_LumBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Lum[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -136,7 +136,7 @@ static const struct SpriteFrameImage sPicTable_SitrusBerryTree[] = { overworld_frame(gObjectEventPic_SitrusBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Sitrus[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -150,7 +150,7 @@ static const struct SpriteFrameImage sPicTable_FigyBerryTree[] = { overworld_frame(gObjectEventPic_FigyBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Figy[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -164,7 +164,7 @@ static const struct SpriteFrameImage sPicTable_WikiBerryTree[] = { overworld_frame(gObjectEventPic_WikiBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Wiki[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -178,7 +178,7 @@ static const struct SpriteFrameImage sPicTable_MagoBerryTree[] = { overworld_frame(gObjectEventPic_MagoBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Mago[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -192,7 +192,7 @@ static const struct SpriteFrameImage sPicTable_AguavBerryTree[] = { overworld_frame(gObjectEventPic_AguavBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Aguav[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -206,7 +206,7 @@ static const struct SpriteFrameImage sPicTable_IapapaBerryTree[] = { overworld_frame(gObjectEventPic_IapapaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Iapapa[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -220,7 +220,7 @@ static const struct SpriteFrameImage sPicTable_RazzBerryTree[] = { overworld_frame(gObjectEventPic_RazzBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Razz[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -234,7 +234,7 @@ static const struct SpriteFrameImage sPicTable_WepearBerryTree[] = { overworld_frame(gObjectEventPic_WepearBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Wepear[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -248,7 +248,7 @@ static const struct SpriteFrameImage sPicTable_PomegBerryTree[] = { overworld_frame(gObjectEventPic_PomegBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Pomeg[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -262,7 +262,7 @@ static const struct SpriteFrameImage sPicTable_KelpsyBerryTree[] = { overworld_frame(gObjectEventPic_KelpsyBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Kelpsy[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -276,7 +276,7 @@ static const struct SpriteFrameImage sPicTable_HondewBerryTree[] = { overworld_frame(gObjectEventPic_HondewBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Hondew[] = {3, 4, 5, 5, 5, 5, 5}; static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -290,7 +290,7 @@ static const struct SpriteFrameImage sPicTable_GrepaBerryTree[] = { overworld_frame(gObjectEventPic_GrepaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Grepa[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -304,7 +304,7 @@ static const struct SpriteFrameImage sPicTable_TamatoBerryTree[] = { overworld_frame(gObjectEventPic_TamatoBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Tamato[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -318,7 +318,7 @@ static const struct SpriteFrameImage sPicTable_CornnBerryTree[] = { overworld_frame(gObjectEventPic_CornnBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Cornn[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -332,7 +332,7 @@ static const struct SpriteFrameImage sPicTable_RabutaBerryTree[] = { overworld_frame(gObjectEventPic_RabutaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Rabuta[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -346,7 +346,7 @@ static const struct SpriteFrameImage sPicTable_NomelBerryTree[] = { overworld_frame(gObjectEventPic_NomelBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Nomel[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -360,7 +360,7 @@ static const struct SpriteFrameImage sPicTable_SpelonBerryTree[] = { overworld_frame(gObjectEventPic_SpelonBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Spelon[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -374,7 +374,7 @@ static const struct SpriteFrameImage sPicTable_PamtreBerryTree[] = { overworld_frame(gObjectEventPic_PamtreBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Pamtre[] = {3, 4, 2, 2, 2, 2, 2}; static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -388,7 +388,7 @@ static const struct SpriteFrameImage sPicTable_DurinBerryTree[] = { overworld_frame(gObjectEventPic_DurinBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Durin[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_OccaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -402,7 +402,7 @@ static const struct SpriteFrameImage sPicTable_OccaBerryTree[] = { overworld_frame(gObjectEventPic_OccaBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Occa[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Occa[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_YacheBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -416,7 +416,7 @@ static const struct SpriteFrameImage sPicTable_YacheBerryTree[] = { overworld_frame(gObjectEventPic_YacheBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Yache[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Yache[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_ChopleBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -430,7 +430,7 @@ static const struct SpriteFrameImage sPicTable_ChopleBerryTree[] = { overworld_frame(gObjectEventPic_ChopleBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Chople[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Chople[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_KebiaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -444,7 +444,7 @@ static const struct SpriteFrameImage sPicTable_KebiaBerryTree[] = { overworld_frame(gObjectEventPic_KebiaBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Kebia[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Kebia[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_ShucaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -458,7 +458,7 @@ static const struct SpriteFrameImage sPicTable_ShucaBerryTree[] = { overworld_frame(gObjectEventPic_ShucaBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Shuca[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Shuca[] = {3, 4, 5, 5, 5, 5, 5}; static const struct SpriteFrameImage sPicTable_PayapaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -472,7 +472,7 @@ static const struct SpriteFrameImage sPicTable_PayapaBerryTree[] = { overworld_frame(gObjectEventPic_PayapaBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Payapa[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Payapa[] = {3, 4, 5, 5, 5, 5, 5}; static const struct SpriteFrameImage sPicTable_TangaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -486,7 +486,7 @@ static const struct SpriteFrameImage sPicTable_TangaBerryTree[] = { overworld_frame(gObjectEventPic_TangaBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Tanga[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Tanga[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_KasibBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -500,7 +500,7 @@ static const struct SpriteFrameImage sPicTable_KasibBerryTree[] = { overworld_frame(gObjectEventPic_KasibBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Kasib[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Kasib[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_HabanBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -514,7 +514,7 @@ static const struct SpriteFrameImage sPicTable_HabanBerryTree[] = { overworld_frame(gObjectEventPic_HabanBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Haban[] = {3, 4, 3, 3, 3}; +const u8 gBerryTreePaletteSlotTable_Haban[] = {3, 4, 3, 3, 3, 3, 3}; static const struct SpriteFrameImage sPicTable_ColburBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -528,7 +528,7 @@ static const struct SpriteFrameImage sPicTable_ColburBerryTree[] = { overworld_frame(gObjectEventPic_ColburBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Colbur[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Colbur[] = {3, 4, 5, 5, 5, 5, 5}; static const struct SpriteFrameImage sPicTable_RoseliBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -542,7 +542,7 @@ static const struct SpriteFrameImage sPicTable_RoseliBerryTree[] = { overworld_frame(gObjectEventPic_RoseliBerryTree, 2, 4, 5) }; -const u8 gBerryTreePaletteSlotTable_Roseli[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Roseli[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -556,7 +556,7 @@ static const struct SpriteFrameImage sPicTable_LiechiBerryTree[] = { overworld_frame(gObjectEventPic_LiechiBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Liechi[] = {3, 4, 4, 4, 4, 4, 4}; static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -570,7 +570,7 @@ static const struct SpriteFrameImage sPicTable_LansatBerryTree[] = { overworld_frame(gObjectEventPic_LansatBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2}; +const u8 gBerryTreePaletteSlotTable_Lansat[] = {3, 4, 2, 2, 2, 2, 2}; const struct SpriteFrameImage sPicTable_MicleBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -584,7 +584,7 @@ const struct SpriteFrameImage sPicTable_MicleBerryTree[] = { overworld_frame(gObjectEventPic_MicleBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Micle[] = {3, 4, 4, 4, 4}; +const u8 gBerryTreePaletteSlotTable_Micle[] = {3, 4, 4, 4, 4, 4, 4}; const struct SpriteFrameImage sPicTable_CustapBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -598,7 +598,7 @@ const struct SpriteFrameImage sPicTable_CustapBerryTree[] = { overworld_frame(gObjectEventPic_CustapBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Custap[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Custap[] = {3, 4, 5, 5, 5, 5, 5}; const struct SpriteFrameImage sPicTable_JabocaBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -612,7 +612,7 @@ const struct SpriteFrameImage sPicTable_JabocaBerryTree[] = { overworld_frame(gObjectEventPic_JabocaBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Jaboca[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Jaboca[] = {3, 4, 5, 5, 5, 5, 5}; const struct SpriteFrameImage sPicTable_RowapBerryTree[] = { overworld_frame(gObjectEventPic_BerryTreeDirtPile, 2, 2, 0), @@ -626,11 +626,11 @@ const struct SpriteFrameImage sPicTable_RowapBerryTree[] = { overworld_frame(gObjectEventPic_RowapBerryTree, 2, 4, 5), }; -const u8 gBerryTreePaletteSlotTable_Rowap[] = {3, 4, 5, 5, 5}; +const u8 gBerryTreePaletteSlotTable_Rowap[] = {3, 4, 5, 5, 5, 5, 5}; -const u8 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES}; +const u8 gDeadBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES}; -const u8 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES}; +const u8 gBerryTreeObjectEventGraphicsIdTable[] = {OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_EARLY_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES, OBJ_EVENT_GFX_BERRY_TREE_LATE_STAGES}; const struct SpriteFrameImage *const gBerryTreePicTablePointers[] = { [ITEM_CHERI_BERRY - FIRST_BERRY_INDEX] = sPicTable_CheriBerryTree, diff --git a/src/data/object_events/object_event_anims.h b/src/data/object_events/object_event_anims.h index 8bb579e01bc7..415fbeddd35e 100755 --- a/src/data/object_events/object_event_anims.h +++ b/src/data/object_events/object_event_anims.h @@ -1371,6 +1371,8 @@ static const union AnimCmd *const sAnimTable_BerryTree[] = { [BERRY_STAGE_PLANTED - 1] = sAnim_BerryTreeStage0, [BERRY_STAGE_SPROUTED - 1] = sAnim_BerryTreeStage1, [BERRY_STAGE_TALLER - 1] = sAnim_BerryTreeStage2, + [BERRY_STAGE_TRUNK - 1] = sAnim_BerryTreeStage2, + [BERRY_STAGE_BUDDING - 1] = sAnim_BerryTreeStage2, [BERRY_STAGE_FLOWERING - 1] = sAnim_BerryTreeStage3, [BERRY_STAGE_BERRIES - 1] = sAnim_BerryTreeStage4, }; diff --git a/src/data/party_menu.h b/src/data/party_menu.h index 86dd26f9ecbc..1886656a0119 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -64,7 +64,7 @@ static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] = // Each layout array has an array for each of the 6 party slots // The array for each slot has the sprite coords of its various sprites in the following order -// Pokemon icon (x, y), held item (x, y), status condition (x, y), menu pokeball (x, y) +// Pokémon icon (x, y), held item (x, y), status condition (x, y), menu Poké Ball (x, y) static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = { [PARTY_LAYOUT_SINGLE] = @@ -953,7 +953,7 @@ static const struct CompressedSpritePalette sSpritePalette_MenuPokeball = gPartyMenuPokeball_Pal, TAG_POKEBALL }; -// Used for the pokeball sprite on each party slot / Cancel button +// Used for the Poké Ball sprite on each party slot / Cancel button static const struct SpriteTemplate sSpriteTemplate_MenuPokeball = { .tileTag = TAG_POKEBALL, diff --git a/src/data/pokemon/experience_tables.h b/src/data/pokemon/experience_tables.h index 15bcadeb29c3..8f50e1091856 100644 --- a/src/data/pokemon/experience_tables.h +++ b/src/data/pokemon/experience_tables.h @@ -1,5 +1,5 @@ -#define SQUARE(n)(n * n) -#define CUBE(n)(n * n * n) +#define SQUARE(n)((n) * (n)) +#define CUBE(n)((n) * (n) * (n)) #define EXP_SLOW(n)((5 * CUBE(n)) / 4) // (5 * (n)^3) / 4 #define EXP_FAST(n)((4 * CUBE(n)) / 5) // (4 * (n)^3) / 5 diff --git a/src/data/pokemon/form_change_tables.h b/src/data/pokemon/form_change_tables.h index 241178372885..62ba52dd02a2 100644 --- a/src/data/pokemon/form_change_tables.h +++ b/src/data/pokemon/form_change_tables.h @@ -1092,5 +1092,14 @@ static const struct FormChange sOgerponFormChangeTable[] = { }; #endif //P_FAMILY_OGERPON +#if P_FAMILY_TERAPAGOS +static const struct FormChange sTerapagosFormChangeTable[] = { + {FORM_CHANGE_BEGIN_BATTLE, SPECIES_TERAPAGOS_TERASTAL}, //needs to be tied to the ability + //{FORM_CHANGE_TERASTALLIZATION, SPECIES_TERAPAGOS_STELLAR}, + {FORM_CHANGE_END_BATTLE, SPECIES_TERAPAGOS_NORMAL}, + {FORM_CHANGE_TERMINATOR}, +}; +#endif //P_FAMILY_TERAPAGOS + #undef WHEN_LEARNED #undef WHEN_FORGOTTEN diff --git a/src/data/pokemon/form_species_tables.h b/src/data/pokemon/form_species_tables.h index 997d5777b864..59d3ed17a513 100644 --- a/src/data/pokemon/form_species_tables.h +++ b/src/data/pokemon/form_species_tables.h @@ -2029,3 +2029,12 @@ static const u16 sOgerponFormSpeciesIdTable[] = { FORM_SPECIES_END, }; #endif //P_FAMILY_OGERPON + +#if P_FAMILY_TERAPAGOS +static const u16 sTerapagosFormSpeciesIdTable[] = { + SPECIES_TERAPAGOS_NORMAL, + SPECIES_TERAPAGOS_TERASTAL, + SPECIES_TERAPAGOS_STELLAR, + FORM_SPECIES_END, +}; +#endif //P_FAMILY_TERAPAGOS diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index e129d9505a7f..4273610b5ef7 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -629,6 +629,7 @@ const u8 *const gItemEffectTable[ITEMS_COUNT] = [ITEM_SYRUPY_APPLE] = gItemEffect_EvoItem, [ITEM_UNREMARKABLE_TEACUP] = gItemEffect_EvoItem, [ITEM_MASTERPIECE_TEACUP] = gItemEffect_EvoItem, + [ITEM_METAL_ALLOY] = gItemEffect_EvoItem, // Berries [ITEM_CHERI_BERRY] = gItemEffect_CheriBerry, diff --git a/src/data/pokemon/level_up_learnsets.h b/src/data/pokemon/level_up_learnsets.h index 3325cb2b8ae7..e41d0ca937d1 100644 --- a/src/data/pokemon/level_up_learnsets.h +++ b/src/data/pokemon/level_up_learnsets.h @@ -19855,6 +19855,26 @@ static const struct LevelUpMove sDipplinLevelUpLearnset[] = { LEVEL_UP_MOVE(44, MOVE_SUBSTITUTE), LEVEL_UP_END }; + +static const struct LevelUpMove sHydrappleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_FICKLE_BEAM), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_RECYCLE), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 4, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE( 8, MOVE_GROWTH), + LEVEL_UP_MOVE(12, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(16, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(28, MOVE_SYRUP_BOMB), + LEVEL_UP_MOVE(32, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(36, MOVE_RECOVER), + LEVEL_UP_MOVE(40, MOVE_ENERGY_BALL), + LEVEL_UP_MOVE(44, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(54, MOVE_POWER_WHIP), + LEVEL_UP_END +}; #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -20571,6 +20591,26 @@ static const struct LevelUpMove sDuraludonLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_HYPER_BEAM), LEVEL_UP_END }; + +#if P_GEN_9_CROSS_EVOS +static const struct LevelUpMove sArchaludonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 0, MOVE_ELECTRO_SHOT), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 6, MOVE_ROCK_SMASH), + LEVEL_UP_MOVE(12, MOVE_HONE_CLAWS), + LEVEL_UP_MOVE(18, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(24, MOVE_BREAKING_SWIPE), + LEVEL_UP_MOVE(30, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(36, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(42, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(48, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(54, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(60, MOVE_METAL_BURST), + LEVEL_UP_MOVE(66, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY @@ -23146,4 +23186,133 @@ static const struct LevelUpMove sOgerponLevelUpLearnset[] = { LEVEL_UP_MOVE(66, MOVE_WOOD_HAMMER), LEVEL_UP_END }; -#endif +#endif //P_FAMILY_OGERPON + +#if P_FAMILY_GOUGING_FIRE +static const struct LevelUpMove sGougingFireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_INCINERATE), + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 7, MOVE_FIRE_FANG), + LEVEL_UP_MOVE(14, MOVE_HOWL), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(35, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(42, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(49, MOVE_BURNING_BULWARK), + LEVEL_UP_MOVE(56, MOVE_DRAGON_RUSH), + LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(70, MOVE_LAVA_PLUME), + LEVEL_UP_MOVE(77, MOVE_OUTRAGE), + LEVEL_UP_MOVE(84, MOVE_FLARE_BLITZ), + LEVEL_UP_MOVE(91, MOVE_RAGING_FURY), + LEVEL_UP_END +}; +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT +static const struct LevelUpMove sRagingBoltLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 1, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE( 1, MOVE_SHOCK_WAVE), + LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 7, MOVE_CHARGE), + LEVEL_UP_MOVE(14, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(21, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE(28, MOVE_DISCHARGE), + LEVEL_UP_MOVE(35, MOVE_DRAGON_TAIL), + LEVEL_UP_MOVE(42, MOVE_CALM_MIND), + LEVEL_UP_MOVE(49, MOVE_THUNDERCLAP), + LEVEL_UP_MOVE(56, MOVE_DRAGON_HAMMER), + LEVEL_UP_MOVE(63, MOVE_RISING_VOLTAGE), + LEVEL_UP_MOVE(70, MOVE_DRAGON_PULSE), + LEVEL_UP_MOVE(77, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(84, MOVE_BODY_PRESS), + LEVEL_UP_MOVE(91, MOVE_THUNDER), + LEVEL_UP_END +}; +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER +static const struct LevelUpMove sIronBoulderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(14, MOVE_SLASH), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(28, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(35, MOVE_COUNTER), + LEVEL_UP_MOVE(42, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(49, MOVE_SACRED_SWORD), + LEVEL_UP_MOVE(56, MOVE_MIGHTY_CLEAVE), + LEVEL_UP_MOVE(63, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(70, MOVE_MEGAHORN), + LEVEL_UP_MOVE(77, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(84, MOVE_STONE_EDGE), + LEVEL_UP_MOVE(91, MOVE_GIGA_IMPACT), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN +static const struct LevelUpMove sIronCrownLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ELECTRIC_TERRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 7, MOVE_SMART_STRIKE), + LEVEL_UP_MOVE(14, MOVE_SLASH), + LEVEL_UP_MOVE(21, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(28, MOVE_PSYSHOCK), + LEVEL_UP_MOVE(35, MOVE_PSYCHO_CUT), + LEVEL_UP_MOVE(42, MOVE_FLASH_CANNON), + LEVEL_UP_MOVE(49, MOVE_SACRED_SWORD), + LEVEL_UP_MOVE(56, MOVE_TACHYON_CUTTER), + LEVEL_UP_MOVE(63, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(70, MOVE_VOLT_SWITCH), + LEVEL_UP_MOVE(77, MOVE_QUICK_GUARD), + LEVEL_UP_MOVE(84, MOVE_METAL_BURST), + LEVEL_UP_MOVE(91, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS +static const struct LevelUpMove sTerapagosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(10, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_HEADBUTT), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(40, MOVE_EARTH_POWER), + LEVEL_UP_MOVE(50, MOVE_HEAVY_SLAM), + LEVEL_UP_MOVE(60, MOVE_TERA_STARSTORM), + LEVEL_UP_MOVE(70, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(80, MOVE_ROCK_POLISH), + LEVEL_UP_MOVE(90, MOVE_GYRO_BALL), + LEVEL_UP_END +}; +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT +static const struct LevelUpMove sPecharuntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_MEMENTO), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_WITHDRAW), + LEVEL_UP_MOVE(16, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(24, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(32, MOVE_PARTING_SHOT), + LEVEL_UP_MOVE(40, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(48, MOVE_MALIGNANT_CHAIN), + LEVEL_UP_MOVE(56, MOVE_TOXIC), + LEVEL_UP_MOVE(64, MOVE_NASTY_PLOT), + LEVEL_UP_MOVE(72, MOVE_RECOVER), + LEVEL_UP_END +}; +#endif //P_FAMILY_PECHARUNT diff --git a/src/data/pokemon/pokedex_orders.h b/src/data/pokemon/pokedex_orders.h index e877bbb17f94..f7bd77cf12f5 100644 --- a/src/data/pokemon/pokedex_orders.h +++ b/src/data/pokemon/pokedex_orders.h @@ -26,6 +26,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_ARBOLIVA, NATIONAL_DEX_ARCANINE, NATIONAL_DEX_ARCEUS, + NATIONAL_DEX_ARCHALUDON, NATIONAL_DEX_ARCHEN, NATIONAL_DEX_ARCHEOPS, NATIONAL_DEX_ARCTIBAX, @@ -361,6 +362,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_GOTHITA, NATIONAL_DEX_GOTHITELLE, NATIONAL_DEX_GOTHORITA, + NATIONAL_DEX_GOUGING_FIRE, NATIONAL_DEX_GOURGEIST, NATIONAL_DEX_GRAFAIAI, NATIONAL_DEX_GRANBULL, @@ -416,6 +418,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_HOUNDOUR, NATIONAL_DEX_HOUNDSTONE, NATIONAL_DEX_HUNTAIL, + NATIONAL_DEX_HYDRAPPLE, NATIONAL_DEX_HYDREIGON, NATIONAL_DEX_HYPNO, @@ -427,7 +430,9 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_INFERNAPE, NATIONAL_DEX_INKAY, NATIONAL_DEX_INTELEON, + NATIONAL_DEX_IRON_BOULDER, NATIONAL_DEX_IRON_BUNDLE, + NATIONAL_DEX_IRON_CROWN, NATIONAL_DEX_IRON_HANDS, NATIONAL_DEX_IRON_JUGULIS, NATIONAL_DEX_IRON_LEAVES, @@ -658,6 +663,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_PAWMO, NATIONAL_DEX_PAWMOT, NATIONAL_DEX_PAWNIARD, + NATIONAL_DEX_PECHARUNT, NATIONAL_DEX_PELIPPER, NATIONAL_DEX_PERRSERKER, NATIONAL_DEX_PERSIAN, @@ -715,6 +721,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_RABOOT, NATIONAL_DEX_RABSCA, + NATIONAL_DEX_RAGING_BOLT, NATIONAL_DEX_RAICHU, NATIONAL_DEX_RAIKOU, NATIONAL_DEX_RALTS, @@ -906,6 +913,7 @@ const u16 gPokedexOrder_Alphabetical[] = NATIONAL_DEX_TENTACOOL, NATIONAL_DEX_TENTACRUEL, NATIONAL_DEX_TEPIG, + NATIONAL_DEX_TERAPAGOS, NATIONAL_DEX_TERRAKION, NATIONAL_DEX_THIEVUL, NATIONAL_DEX_THROH, @@ -1078,6 +1086,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_MINIOR_CORE_INDIGO, //NATIONAL_DEX_MINIOR_CORE_VIOLET, NATIONAL_DEX_MILCERY, + NATIONAL_DEX_PECHARUNT, // 0.9 lbs / 0.4 kg NATIONAL_DEX_POLTEAGEIST, NATIONAL_DEX_CURSOLA, @@ -1397,6 +1406,7 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_MELOETTA_PIROUETTE, NATIONAL_DEX_PAWMO, NATIONAL_DEX_SMOLIV, + NATIONAL_DEX_TERAPAGOS,//_NORMAL // 14.6 lbs / 6.6 kg NATIONAL_DEX_RALTS, NATIONAL_DEX_WHIMSICOTT, @@ -1662,6 +1672,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_CORVISQUIRE, NATIONAL_DEX_NACLI, NATIONAL_DEX_MASCHIFF, + //NATIONAL_DEX_TERAPAGOS_TERASTAL // 35.9 lbs / 16.3 kg NATIONAL_DEX_WHISMUR, NATIONAL_DEX_LILLIGANT, @@ -2281,6 +2292,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_LATIOS, //NATIONAL_DEX_GUMSHOOS_TOTEM_SIZED, NATIONAL_DEX_SANDY_SHOCKS, + NATIONAL_DEX_ARCHALUDON, // 132.7 lbs / 60.2 kg NATIONAL_DEX_FINIZEN, NATIONAL_DEX_PALAFIN,//_ZERO, @@ -2377,6 +2389,7 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_COFAGRIGUS, // 168.9 lbs / 76.6 kg NATIONAL_DEX_GOLDUCK, + //NATIONAL_DEX_TERAPAGOS_STELLAR // 170.6 lbs / 77.4 kg NATIONAL_DEX_CACTURNE, // 172.0 lbs / 78.0 kg @@ -2477,6 +2490,8 @@ const u16 gPokedexOrder_Weight[] = // 204.8 lbs / 92.9 kg NATIONAL_DEX_DARMANITAN,//_STANDARD_MODE, //NATIONAL_DEX_DARMANITAN_ZEN_MODE, + // 205.0 lbs / 93.0 kg + NATIONAL_DEX_HYDRAPPLE, // 208.6 lbs / 94.6 kg NATIONAL_DEX_BOUFFALANT, NATIONAL_DEX_SAMUROTT, @@ -2659,6 +2674,8 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_ARCANINE, // 342.8 lbs / 155.5 kg //NATIONAL_DEX_VENUSAUR_MEGA, + // 343.9 lbs / 156.0 kg + NATIONAL_DEX_IRON_CROWN, // 352.7 lbs / 160.0 kg NATIONAL_DEX_HYDREIGON, NATIONAL_DEX_FARIGIRAF, @@ -2666,6 +2683,8 @@ const u16 gPokedexOrder_Weight[] = //NATIONAL_DEX_SABLEYE_MEGA, // 357.1 lbs / 162.0 kg NATIONAL_DEX_MILOTIC, + // 358.2 lbs / 162.5 kg + NATIONAL_DEX_IRON_BOULDER, // 370.4 lbs / 168.0 kg //NATIONAL_DEX_ARCANINE_HISUIAN, NATIONAL_DEX_LUNATONE, @@ -2859,6 +2878,8 @@ const u16 gPokedexOrder_Weight[] = // 1014.1 lbs / 460.0 kg NATIONAL_DEX_SNORLAX, //NATIONAL_DEX_NECROZMA_DUSK_MANE, + // 1058.2 lbs / 480.0 kg + NATIONAL_DEX_RAGING_BOLT, // 1080.3 lbs / 490.0 kg //NATIONAL_DEX_HOOPA_UNBOUND, // 1113.3 lbs / 505.0 kg @@ -2867,6 +2888,8 @@ const u16 gPokedexOrder_Weight[] = NATIONAL_DEX_STONJOURNER, // 1212.5 lbs / 550.0 kg NATIONAL_DEX_METAGROSS, + // 1300.7 lbs / 590.0 kg + NATIONAL_DEX_GOUGING_FIRE, // 1344.8 lbs / 610.0 kg //NATIONAL_DEX_ZYGARDE_COMPLETE, // 1433.8 lbs / 650.0 kg @@ -2965,6 +2988,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_RELLOR, NATIONAL_DEX_FLITTLE, NATIONAL_DEX_SINISTCHA, + NATIONAL_DEX_TERAPAGOS,//_NORMAL // 1'00" / 0.3m NATIONAL_DEX_CATERPIE, NATIONAL_DEX_WEEDLE, @@ -3129,6 +3153,8 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_TATSUGIRI_DROOPY, //NATIONAL_DEX_TATSUGIRI_STRETCHY, NATIONAL_DEX_GIMMIGHOUL,//_CHEST, + //NATIONAL_DEX_TERAPAGOS_TERASTAL, + NATIONAL_DEX_PECHARUNT, // 0.4m NATIONAL_DEX_SPRIGATITO, NATIONAL_DEX_FUECOCO, @@ -3871,6 +3897,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GLIMMORA, NATIONAL_DEX_WO_CHIEN, NATIONAL_DEX_IRON_LEAVES, + NATIONAL_DEX_IRON_BOULDER, // 5'03" / 1.6m NATIONAL_DEX_BLASTOISE, //NATIONAL_DEX_BLASTOISE_MEGA, @@ -3918,6 +3945,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CYCLIZAR, NATIONAL_DEX_FLAMIGO, NATIONAL_DEX_IRON_THORNS, + NATIONAL_DEX_IRON_CROWN, // 5'07" / 1.7m NATIONAL_DEX_CHARIZARD, //NATIONAL_DEX_CHARIZARD_MEGA_X, @@ -3955,6 +3983,7 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_GOURGEIST_SUPER, NATIONAL_DEX_VOLCANION, NATIONAL_DEX_CRABOMINABLE, + //NATIONAL_DEX_TERAPAGOS_STELLAR // 5'11" / 1.8m NATIONAL_DEX_DODRIO, NATIONAL_DEX_AERODACTYL, @@ -3993,6 +4022,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_CLODSIRE, NATIONAL_DEX_IRON_HANDS, NATIONAL_DEX_OKIDOGI, + NATIONAL_DEX_HYDRAPPLE, // 6'03" / 1.9m NATIONAL_DEX_ARCANINE, NATIONAL_DEX_RHYDON, @@ -4053,6 +4083,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_HOUNDSTONE, NATIONAL_DEX_KINGAMBIT, NATIONAL_DEX_ROARING_MOON, + NATIONAL_DEX_ARCHALUDON, // 6'11" / 2.1m //NATIONAL_DEX_AERODACTYL_MEGA, NATIONAL_DEX_SNORLAX, @@ -4198,6 +4229,7 @@ const u16 gPokedexOrder_Height[] = NATIONAL_DEX_GROUDON, NATIONAL_DEX_MIRAIDON, NATIONAL_DEX_WALKING_WAKE, + NATIONAL_DEX_GOUGING_FIRE, // 11'10" / 3.6m //NATIONAL_DEX_KYUREM_WHITE, NATIONAL_DEX_NAGANADEL, @@ -4229,6 +4261,7 @@ const u16 gPokedexOrder_Height[] = //NATIONAL_DEX_ZYGARDE_50_POWER_CONSTRUCT, // 17'01" / 5.2m NATIONAL_DEX_LUGIA, + NATIONAL_DEX_RAGING_BOLT, // 17'09" / 5.4m NATIONAL_DEX_DIALGA, // 18'01" / 5.5m diff --git a/src/data/pokemon/species_info.h b/src/data/pokemon/species_info.h index e250403fbca0..0b0803f376a8 100644 --- a/src/data/pokemon/species_info.h +++ b/src/data/pokemon/species_info.h @@ -217,6 +217,12 @@ const u8 gOgerponCornerstoneMaskPokedexText[] = _( .levelUpLearnset = s ## learn##LevelUpLearnset, \ .teachableLearnset = s ## learn##TeachableLearnset +#if P_FOOTPRINTS +#define FOOTPRINT(sprite) .footprint = gMonFootprint_## sprite, +#else +#define FOOTPRINT(sprite) +#endif + // Maximum value for a female Pokémon is 254 (MON_FEMALE) which is 100% female. // 255 (MON_GENDERLESS) is reserved for genderless Pokémon. #define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100)) @@ -330,7 +336,7 @@ const struct SpeciesInfo gSpeciesInfo[] = //PALETTE_FEMALE(CircledQuestionMark), ICON(QuestionMark, 0), //ICON_FEMALE(QuestionMark, 1), - //.footprint = gMonFootprint_None, + //FOOTPRINT(None) LEARNSETS(None), .evolutions = EVOLUTION({EVO_LEVEL, 100, SPECIES_NONE}, {EVO_ITEM, ITEM_MOOMOO_MILK, SPECIES_NONE}), diff --git a/src/data/pokemon/species_info/gen_1.h b/src/data/pokemon/species_info/gen_1.h index af319cab9bd5..b503cb8334ed 100644 --- a/src/data/pokemon/species_info/gen_1.h +++ b/src/data/pokemon/species_info/gen_1.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Bulbasaur), ICON(Bulbasaur, 4), - .footprint = gMonFootprint_Bulbasaur, + FOOTPRINT(Bulbasaur) LEARNSETS(Bulbasaur), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_IVYSAUR}), }, @@ -96,7 +96,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Ivysaur), ICON(Ivysaur, 4), - .footprint = gMonFootprint_Ivysaur, + FOOTPRINT(Ivysaur) LEARNSETS(Ivysaur), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_VENUSAUR}), }, @@ -115,7 +115,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Venusaur"), \ .natDexNum = NATIONAL_DEX_VENUSAUR, \ .categoryName = _("Seed"), \ - .footprint = gMonFootprint_Venusaur, \ + FOOTPRINT(Venusaur) \ LEARNSETS(Venusaur), \ .formSpeciesIdTable = sVenusaurFormSpeciesIdTable, \ .formChangeTable = sVenusaurFormChangeTable @@ -274,7 +274,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Charmander), ICON(Charmander, 0), - .footprint = gMonFootprint_Charmander, + FOOTPRINT(Charmander) LEARNSETS(Charmander), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CHARMELEON}), }, @@ -323,7 +323,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Charmeleon), ICON(Charmeleon, 0), - .footprint = gMonFootprint_Charmeleon, + FOOTPRINT(Charmeleon) LEARNSETS(Charmeleon), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHARIZARD}), }, @@ -339,7 +339,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Charizard"), \ .natDexNum = NATIONAL_DEX_CHARIZARD, \ .categoryName = _("Flame"), \ - .footprint = gMonFootprint_Charizard, \ + FOOTPRINT(Charizard) \ LEARNSETS(Charizard), \ .formSpeciesIdTable = sCharizardFormSpeciesIdTable, \ .formChangeTable = sCharizardFormChangeTable @@ -539,7 +539,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Squirtle), ICON(Squirtle, 0), - .footprint = gMonFootprint_Squirtle, + FOOTPRINT(Squirtle) LEARNSETS(Squirtle), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_WARTORTLE}), }, @@ -588,7 +588,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Wartortle), ICON(Wartortle, 2), - .footprint = gMonFootprint_Wartortle, + FOOTPRINT(Wartortle) LEARNSETS(Wartortle), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLASTOISE}), }, @@ -606,7 +606,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Blastoise"), \ .natDexNum = NATIONAL_DEX_BLASTOISE, \ .categoryName = _("Shellfish"), \ - .footprint = gMonFootprint_Blastoise, \ + FOOTPRINT(Blastoise) \ LEARNSETS(Blastoise), \ .formSpeciesIdTable = sBlastoiseFormSpeciesIdTable, \ .formChangeTable = sBlastoiseFormChangeTable @@ -765,7 +765,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Caterpie), ICON(Caterpie, 1), - .footprint = gMonFootprint_Caterpie, + FOOTPRINT(Caterpie) LEARNSETS(Caterpie), .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_METAPOD}), }, @@ -813,7 +813,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Metapod), ICON(Metapod, 1), - .footprint = gMonFootprint_Metapod, + FOOTPRINT(Metapod) LEARNSETS(Metapod), .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BUTTERFREE}), }, @@ -842,7 +842,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_BUTTERFREE, \ .natDexNum = NATIONAL_DEX_BUTTERFREE, \ .categoryName = _("Butterfly"), \ - .footprint = gMonFootprint_Butterfree, \ + FOOTPRINT(Butterfree) \ LEARNSETS(Butterfree), \ .formSpeciesIdTable = sButterfreeFormSpeciesIdTable, \ .formChangeTable = sButterfreeFormChangeTable @@ -950,7 +950,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Weedle), ICON(Weedle, 2), - .footprint = gMonFootprint_Weedle, + FOOTPRINT(Weedle) LEARNSETS(Weedle), .evolutions = EVOLUTION({EVO_LEVEL, 7, SPECIES_KAKUNA}), }, @@ -999,7 +999,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Kakuna), ICON(Kakuna, 2), - .footprint = gMonFootprint_Kakuna, + FOOTPRINT(Kakuna) LEARNSETS(Kakuna), .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEEDRILL}), }, @@ -1021,7 +1021,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Beedrill"), \ .natDexNum = NATIONAL_DEX_BEEDRILL, \ .categoryName = _("Poison Bee"), \ - .footprint = gMonFootprint_Beedrill, \ + FOOTPRINT(Beedrill) \ LEARNSETS(Beedrill), \ .formSpeciesIdTable = sBeedrillFormSpeciesIdTable, \ .formChangeTable = sBeedrillFormChangeTable @@ -1144,7 +1144,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Pidgey), ICON(Pidgey, 0), - .footprint = gMonFootprint_Pidgey, + FOOTPRINT(Pidgey) LEARNSETS(Pidgey), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PIDGEOTTO}), }, @@ -1193,7 +1193,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Pidgeotto), ICON(Pidgeotto, 0), - .footprint = gMonFootprint_Pidgeotto, + FOOTPRINT(Pidgeotto) LEARNSETS(Pidgeotto), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_PIDGEOT}), }, @@ -1213,7 +1213,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Pidgeot"), \ .natDexNum = NATIONAL_DEX_PIDGEOT, \ .categoryName = _("Bird"), \ - .footprint = gMonFootprint_Pidgeot, \ + FOOTPRINT(Pidgeot) \ LEARNSETS(Pidgeot), \ .formSpeciesIdTable = sPidgeotFormSpeciesIdTable, \ .formChangeTable = sPidgeotFormChangeTable @@ -1313,7 +1313,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_RATTATA, \ .natDexNum = NATIONAL_DEX_RATTATA, \ .categoryName = _("Mouse"), \ - .footprint = gMonFootprint_Rattata, \ + FOOTPRINT(Rattata) \ .formSpeciesIdTable = sRattataFormSpeciesIdTable #define RATICATE_MISC_INFO \ @@ -1325,7 +1325,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .natDexNum = NATIONAL_DEX_RATICATE, \ .categoryName = _("Mouse"), \ .height = 7, \ - .footprint = gMonFootprint_Raticate,\ + FOOTPRINT(Raticate) \ .formSpeciesIdTable = sRaticateFormSpeciesIdTable [SPECIES_RATTATA] = @@ -1516,7 +1516,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Spearow), ICON(Spearow, 0), - .footprint = gMonFootprint_Spearow, + FOOTPRINT(Spearow) LEARNSETS(Spearow), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_FEAROW}), }, @@ -1567,7 +1567,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Fearow), ICON(Fearow, 0), - .footprint = gMonFootprint_Fearow, + FOOTPRINT(Fearow) LEARNSETS(Fearow), }, #endif //P_FAMILY_SPEAROW @@ -1617,7 +1617,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Ekans), ICON(Ekans, 2), - .footprint = gMonFootprint_Ekans, + FOOTPRINT(Ekans) LEARNSETS(Ekans), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARBOK}), }, @@ -1665,7 +1665,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Arbok), ICON(Arbok, 2), - .footprint = gMonFootprint_Arbok, + FOOTPRINT(Arbok) LEARNSETS(Arbok), }, #endif //P_FAMILY_EKANS @@ -1701,7 +1701,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 20, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Pichu, \ + FOOTPRINT(Pichu) \ LEARNSETS(Pichu), \ .formSpeciesIdTable = sPichuFormSpeciesIdTable @@ -1757,7 +1757,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_PIKACHU, \ .natDexNum = NATIONAL_DEX_PIKACHU, \ .categoryName = _("Mouse"), \ - .footprint = gMonFootprint_Pikachu, \ + FOOTPRINT(Pikachu) \ LEARNSETS(Pikachu), \ .formSpeciesIdTable = sPikachuFormSpeciesIdTable @@ -2102,7 +2102,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_RAICHU, \ .natDexNum = NATIONAL_DEX_RAICHU, \ .categoryName = _("Mouse"), \ - .footprint = gMonFootprint_Raichu, \ + FOOTPRINT(Raichu) \ .formSpeciesIdTable = sRaichuFormSpeciesIdTable [SPECIES_RAICHU] = @@ -2198,7 +2198,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_SANDSHREW, \ .natDexNum = NATIONAL_DEX_SANDSHREW, \ .categoryName = _("Mouse"), \ - .footprint = gMonFootprint_Sandshrew, \ + FOOTPRINT(Sandshrew) \ .formSpeciesIdTable = sSandshrewFormSpeciesIdTable, \ SANDSHREW_FAMILY_MISC_INFO @@ -2210,7 +2210,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_SANDSLASH, \ .natDexNum = NATIONAL_DEX_SANDSLASH, \ .categoryName = _("Mouse"), \ - .footprint = gMonFootprint_Sandslash, \ + FOOTPRINT(Sandslash) \ .formSpeciesIdTable = sSandslashFormSpeciesIdTable, \ SANDSHREW_FAMILY_MISC_INFO @@ -2406,7 +2406,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(NidoranF), ICON(NidoranF, 0), - .footprint = gMonFootprint_NidoranF, + FOOTPRINT(NidoranF) LEARNSETS(NidoranF), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINA}), }, @@ -2454,7 +2454,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Nidorina), ICON(Nidorina, 0), - .footprint = gMonFootprint_Nidorina, + FOOTPRINT(Nidorina) LEARNSETS(Nidorina), .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}), }, @@ -2502,7 +2502,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Nidoqueen), ICON(Nidoqueen, 2), - .footprint = gMonFootprint_Nidoqueen, + FOOTPRINT(Nidoqueen) LEARNSETS(Nidoqueen), }, @@ -2549,7 +2549,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(NidoranM), ICON(NidoranM, 2), - .footprint = gMonFootprint_NidoranM, + FOOTPRINT(NidoranM) LEARNSETS(NidoranM), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_NIDORINO}), }, @@ -2597,7 +2597,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Nidorino), ICON(Nidorino, 2), - .footprint = gMonFootprint_Nidorino, + FOOTPRINT(Nidorino) LEARNSETS(Nidorino), .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}), }, @@ -2646,7 +2646,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Nidoking), ICON(Nidoking, 2), - .footprint = gMonFootprint_Nidoking, + FOOTPRINT(Nidoking) LEARNSETS(Nidoking), }, #endif //P_FAMILY_NIDORAN @@ -2704,7 +2704,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Cleffa), ICON(Cleffa, 0), - .footprint = gMonFootprint_Cleffa, + FOOTPRINT(Cleffa) LEARNSETS(Cleffa), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}), }, @@ -2755,7 +2755,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Clefairy), ICON(Clefairy, 0), - .footprint = gMonFootprint_Clefairy, + FOOTPRINT(Clefairy) LEARNSETS(Clefairy), .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}), }, @@ -2805,7 +2805,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Clefable), ICON(Clefable, 0), - .footprint = gMonFootprint_Clefable, + FOOTPRINT(Clefable) LEARNSETS(Clefable), }, #endif //P_FAMILY_CLEFAIRY @@ -2838,7 +2838,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 19, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Vulpix, \ + FOOTPRINT(Vulpix) \ .formSpeciesIdTable = sVulpixFormSpeciesIdTable,\ VULPIX_FAMILY_MISC_INFO @@ -2857,7 +2857,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Ninetales, \ + FOOTPRINT(Ninetales) \ .formSpeciesIdTable = sNinetalesFormSpeciesIdTable, \ VULPIX_FAMILY_MISC_INFO @@ -3028,7 +3028,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Igglybuff), ICON(Igglybuff, 1), - .footprint = gMonFootprint_Igglybuff, + FOOTPRINT(Igglybuff) LEARNSETS(Igglybuff), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}), }, @@ -3079,7 +3079,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Jigglypuff), ICON(Jigglypuff, 0), - .footprint = gMonFootprint_Jigglypuff, + FOOTPRINT(Jigglypuff) LEARNSETS(Jigglypuff), .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}), }, @@ -3129,7 +3129,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Wigglytuff), ICON(Wigglytuff, 0), - .footprint = gMonFootprint_Wigglytuff, + FOOTPRINT(Wigglytuff) LEARNSETS(Wigglytuff), }, #endif //P_FAMILY_JIGGLYPUFF @@ -3181,7 +3181,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Zubat), ICON(Zubat, 2), - .footprint = gMonFootprint_Zubat, + FOOTPRINT(Zubat) LEARNSETS(Zubat), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_GOLBAT}), }, @@ -3232,7 +3232,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Golbat), ICON(Golbat, 2), - .footprint = gMonFootprint_Golbat, + FOOTPRINT(Golbat) LEARNSETS(Golbat), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_CROBAT}), }, @@ -3282,7 +3282,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Crobat), ICON(Crobat, 2), - .footprint = gMonFootprint_Crobat, + FOOTPRINT(Crobat) LEARNSETS(Crobat), }, #endif //P_GEN_2_CROSS_EVOS @@ -3333,7 +3333,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Oddish), ICON(Oddish, 4), - .footprint = gMonFootprint_Oddish, + FOOTPRINT(Oddish) LEARNSETS(Oddish), .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_GLOOM}), }, @@ -3384,7 +3384,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Gloom), ICON(Gloom, 0), - .footprint = gMonFootprint_Gloom, + FOOTPRINT(Gloom) LEARNSETS(Gloom), .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}), @@ -3436,7 +3436,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Vileplume), ICON(Vileplume, 0), - .footprint = gMonFootprint_Vileplume, + FOOTPRINT(Vileplume) LEARNSETS(Vileplume), }, @@ -3485,7 +3485,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Bellossom), ICON(Bellossom, 1), - .footprint = gMonFootprint_Bellossom, + FOOTPRINT(Bellossom) LEARNSETS(Bellossom), }, #endif //P_GEN_2_CROSS_EVOS @@ -3538,7 +3538,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Paras), ICON(Paras, 0), - .footprint = gMonFootprint_Paras, + FOOTPRINT(Paras) LEARNSETS(Paras), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_PARASECT}), }, @@ -3590,7 +3590,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Parasect), ICON(Parasect, 0), - .footprint = gMonFootprint_Parasect, + FOOTPRINT(Parasect) LEARNSETS(Parasect), }, #endif //P_FAMILY_PARAS @@ -3640,7 +3640,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Venonat), ICON(Venonat, 2), - .footprint = gMonFootprint_Venonat, + FOOTPRINT(Venonat) LEARNSETS(Venonat), .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_VENOMOTH}), }, @@ -3691,7 +3691,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Venomoth), ICON(Venomoth, 2), - .footprint = gMonFootprint_Venomoth, + FOOTPRINT(Venomoth) LEARNSETS(Venomoth), }, #endif //P_FAMILY_VENONAT @@ -3719,7 +3719,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 25, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Diglett, \ + FOOTPRINT(Diglett) \ .formSpeciesIdTable = sDiglettFormSpeciesIdTable, \ DIGLETT_FAMILY_MISC_INFO @@ -3881,7 +3881,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_MEOWTH, \ .natDexNum = NATIONAL_DEX_MEOWTH, \ .categoryName = _("Scratch Cat"), \ - .footprint = gMonFootprint_Meowth, \ + FOOTPRINT(Meowth) \ .formSpeciesIdTable = sMeowthFormSpeciesIdTable #define PERSIAN_MISC_INFO \ @@ -3898,7 +3898,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_PERSIAN, \ .natDexNum = NATIONAL_DEX_PERSIAN, \ .categoryName = _("Classy Cat"), \ - .footprint = gMonFootprint_Persian, \ + FOOTPRINT(Persian) \ .formSpeciesIdTable = sPersianFormSpeciesIdTable [SPECIES_MEOWTH] = @@ -4135,7 +4135,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Perrserker), ICON(Perrserker, 2), - .footprint = gMonFootprint_Perrserker, + FOOTPRINT(Perrserker) LEARNSETS(Perrserker), }, #endif //P_GALARIAN_FORMS @@ -4226,7 +4226,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Psyduck), ICON(Psyduck, 1), - .footprint = gMonFootprint_Psyduck, + FOOTPRINT(Psyduck) LEARNSETS(Psyduck), .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_GOLDUCK}), }, @@ -4274,7 +4274,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Golduck), ICON(Golduck, 0), - .footprint = gMonFootprint_Golduck, + FOOTPRINT(Golduck) LEARNSETS(Golduck), }, #endif //P_FAMILY_PSYDUCK @@ -4324,7 +4324,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Mankey), ICON(Mankey, 1), - .footprint = gMonFootprint_Mankey, + FOOTPRINT(Mankey) LEARNSETS(Mankey), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_PRIMEAPE}), }, @@ -4372,7 +4372,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Primeape), ICON(Primeape, 2), - .footprint = gMonFootprint_Primeape, + FOOTPRINT(Primeape) LEARNSETS(Primeape), .evolutions = EVOLUTION({EVO_MOVE, MOVE_RAGE_FIST, SPECIES_ANNIHILAPE}), }, @@ -4421,7 +4421,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Annihilape), ICON(Annihilape, 0), - //.footprint = gMonFootprint_Annihilape, + //FOOTPRINT(Annihilape) LEARNSETS(Annihilape), }, #endif //P_GEN_9_CROSS_EVOS @@ -4443,7 +4443,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Growlithe"), \ .cryId = CRY_GROWLITHE, \ .natDexNum = NATIONAL_DEX_GROWLITHE, \ - .footprint = gMonFootprint_Growlithe, \ + FOOTPRINT(Growlithe) \ .formSpeciesIdTable = sGrowlitheFormSpeciesIdTable, \ GROWLITHE_FAMILY_MISC_INFO @@ -4455,7 +4455,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_ARCANINE, \ .natDexNum = NATIONAL_DEX_ARCANINE, \ .categoryName = _("Legendary"), \ - .footprint = gMonFootprint_Arcanine, \ + FOOTPRINT(Arcanine) \ .formSpeciesIdTable = sArcanineFormSpeciesIdTable, \ GROWLITHE_FAMILY_MISC_INFO @@ -4651,7 +4651,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Poliwag), ICON(Poliwag, 0), - .footprint = gMonFootprint_Poliwag, + FOOTPRINT(Poliwag) LEARNSETS(Poliwag), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_POLIWHIRL}), }, @@ -4702,7 +4702,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Poliwhirl), ICON(Poliwhirl, 0), - .footprint = gMonFootprint_Poliwhirl, + FOOTPRINT(Poliwhirl) LEARNSETS(Poliwhirl), .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, @@ -4754,7 +4754,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Poliwrath), ICON(Poliwrath, 0), - .footprint = gMonFootprint_Poliwrath, + FOOTPRINT(Poliwrath) LEARNSETS(Poliwrath), }, @@ -4807,7 +4807,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Politoed), ICON(Politoed, 1), - .footprint = gMonFootprint_Politoed, + FOOTPRINT(Politoed) LEARNSETS(Politoed), }, #endif //P_GEN_2_CROSS_EVOS @@ -4858,7 +4858,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Abra), ICON(Abra, 2), - .footprint = gMonFootprint_Abra, + FOOTPRINT(Abra) LEARNSETS(Abra), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_KADABRA}), }, @@ -4910,7 +4910,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Kadabra), ICON(Kadabra, 2), - .footprint = gMonFootprint_Kadabra, + FOOTPRINT(Kadabra) LEARNSETS(Kadabra), .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_ALAKAZAM}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_ALAKAZAM}), @@ -4932,7 +4932,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Alakazam"), \ .natDexNum = NATIONAL_DEX_ALAKAZAM, \ .categoryName = _("Psi"), \ - .footprint = gMonFootprint_Alakazam, \ + FOOTPRINT(Alakazam) \ LEARNSETS(Alakazam), \ .formSpeciesIdTable = sAlakazamFormSpeciesIdTable, \ .formChangeTable = sAlakazamFormChangeTable @@ -5056,7 +5056,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Machop), ICON(Machop, 0), - .footprint = gMonFootprint_Machop, + FOOTPRINT(Machop) LEARNSETS(Machop), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MACHOKE}), }, @@ -5106,7 +5106,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Machoke), ICON(Machoke, 2), - .footprint = gMonFootprint_Machoke, + FOOTPRINT(Machoke) LEARNSETS(Machoke), .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_MACHAMP}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_MACHAMP}), @@ -5135,7 +5135,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_MACHAMP, \ .natDexNum = NATIONAL_DEX_MACHAMP, \ .categoryName = _("Superpower"), \ - .footprint = gMonFootprint_Machamp, \ + FOOTPRINT(Machamp) \ LEARNSETS(Machamp), \ .formSpeciesIdTable = sMachampFormSpeciesIdTable, \ .formChangeTable = sMachampFormChangeTable @@ -5238,7 +5238,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Bellsprout), ICON(Bellsprout, 1), - .footprint = gMonFootprint_Bellsprout, + FOOTPRINT(Bellsprout) LEARNSETS(Bellsprout), .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_WEEPINBELL}), }, @@ -5287,7 +5287,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Weepinbell), ICON(Weepinbell, 1), - .footprint = gMonFootprint_Weepinbell, + FOOTPRINT(Weepinbell) LEARNSETS(Weepinbell), .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}), }, @@ -5335,7 +5335,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Victreebel), ICON(Victreebel, 1), - .footprint = gMonFootprint_Victreebel, + FOOTPRINT(Victreebel) LEARNSETS(Victreebel), }, #endif //P_FAMILY_BELLSPROUT @@ -5385,7 +5385,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Tentacool), ICON(Tentacool, 0), - .footprint = gMonFootprint_Tentacool, + FOOTPRINT(Tentacool) LEARNSETS(Tentacool), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TENTACRUEL}), }, @@ -5434,7 +5434,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Tentacruel), ICON(Tentacruel, 0), - .footprint = gMonFootprint_Tentacruel, + FOOTPRINT(Tentacruel) LEARNSETS(Tentacruel), }, #endif //P_FAMILY_TENTACOOL @@ -5472,7 +5472,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 18, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Geodude, \ + FOOTPRINT(Geodude) \ .formSpeciesIdTable = sGeodudeFormSpeciesIdTable, \ GEODUDE_FAMILY_MISC_INFO @@ -5495,7 +5495,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 2, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Graveler, \ + FOOTPRINT(Graveler) \ .formSpeciesIdTable = sGravelerFormSpeciesIdTable, \ GEODUDE_FAMILY_MISC_INFO @@ -5515,7 +5515,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_GOLEM, \ .natDexNum = NATIONAL_DEX_GOLEM, \ .categoryName = _("Megaton"), \ - .footprint = gMonFootprint_Golem, \ + FOOTPRINT(Golem) \ .formSpeciesIdTable = sGolemFormSpeciesIdTable, \ GEODUDE_FAMILY_MISC_INFO @@ -5706,7 +5706,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Ponyta"), \ .cryId = CRY_PONYTA, \ .natDexNum = NATIONAL_DEX_PONYTA, \ - .footprint = gMonFootprint_Ponyta, \ + FOOTPRINT(Ponyta) \ .formSpeciesIdTable = sPonytaFormSpeciesIdTable,\ PONYTA_FAMILY_MISC_INFO @@ -5728,7 +5728,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 289, \ .trainerOffset = 1, \ - .footprint = gMonFootprint_Rapidash, \ + FOOTPRINT(Rapidash) \ .formSpeciesIdTable = sRapidashFormSpeciesIdTable, \ PONYTA_FAMILY_MISC_INFO @@ -5873,7 +5873,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 10, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Slowpoke, \ + FOOTPRINT(Slowpoke) \ .formSpeciesIdTable = sSlowpokeFormSpeciesIdTable #define SLOWBRO_MISC_INFO \ @@ -5889,7 +5889,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_SLOWBRO, \ .natDexNum = NATIONAL_DEX_SLOWBRO, \ .categoryName = _("Hermit Crab"), \ - .footprint = gMonFootprint_Slowbro, \ + FOOTPRINT(Slowbro) \ .formSpeciesIdTable = sSlowbroFormSpeciesIdTable #define SLOWKING_MISC_INFO \ @@ -5905,7 +5905,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_SLOWKING, \ .natDexNum = NATIONAL_DEX_SLOWKING, \ .weight = 795, \ - .footprint = gMonFootprint_Slowking, \ + FOOTPRINT(Slowking) \ .formSpeciesIdTable = sSlowkingFormSpeciesIdTable [SPECIES_SLOWPOKE] = @@ -6200,7 +6200,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Magnemite), ICON(Magnemite, 0), - .footprint = gMonFootprint_Magnemite, + FOOTPRINT(Magnemite) LEARNSETS(Magnemite), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGNETON}), }, @@ -6250,7 +6250,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Magneton), ICON(Magneton, 0), - .footprint = gMonFootprint_Magneton, + FOOTPRINT(Magneton) LEARNSETS(Magneton), .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_MAGNEZONE}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_MAGNEZONE}), @@ -6302,7 +6302,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Magnezone), ICON(Magnezone, 0), - .footprint = gMonFootprint_Magnezone, + FOOTPRINT(Magnezone) LEARNSETS(Magnezone), }, #endif //P_GEN_4_CROSS_EVOS @@ -6325,7 +6325,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_FARFETCHD, \ .natDexNum = NATIONAL_DEX_FARFETCHD, \ .categoryName = _("Wild Duck"), \ - .footprint = gMonFootprint_Farfetchd, \ + FOOTPRINT(Farfetchd) \ .formSpeciesIdTable = sFarfetchdFormSpeciesIdTable [SPECIES_FARFETCHD] = @@ -6445,7 +6445,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Sirfetchd), ICON(Sirfetchd, 1), - .footprint = gMonFootprint_Sirfetchd, + FOOTPRINT(Sirfetchd) LEARNSETS(Sirfetchd), }, #endif //P_GALARIAN_FORMS @@ -6498,7 +6498,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Doduo), ICON(Doduo, 2), - .footprint = gMonFootprint_Doduo, + FOOTPRINT(Doduo) LEARNSETS(Doduo), .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_DODRIO}), }, @@ -6549,7 +6549,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Dodrio), ICON(Dodrio, 2), - .footprint = gMonFootprint_Dodrio, + FOOTPRINT(Dodrio) LEARNSETS(Dodrio), }, #endif //P_FAMILY_DODUO @@ -6598,7 +6598,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Seel), ICON(Seel, 0), - .footprint = gMonFootprint_Seel, + FOOTPRINT(Seel) LEARNSETS(Seel), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DEWGONG}), }, @@ -6646,7 +6646,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Dewgong), ICON(Dewgong, 2), - .footprint = gMonFootprint_Dewgong, + FOOTPRINT(Dewgong) LEARNSETS(Dewgong), }, #endif //P_FAMILY_SEEL @@ -6674,7 +6674,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_GRIMER, \ .natDexNum = NATIONAL_DEX_GRIMER, \ .categoryName = _("Sludge"), \ - .footprint = gMonFootprint_Grimer, \ + FOOTPRINT(Grimer) \ .formSpeciesIdTable = sGrimerFormSpeciesIdTable,\ GRIMER_FAMILY_MISC_INFO @@ -6693,7 +6693,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_MUK, \ .natDexNum = NATIONAL_DEX_MUK, \ .categoryName = _("Sludge"), \ - .footprint = gMonFootprint_Muk, \ + FOOTPRINT(Muk) \ .formSpeciesIdTable = sMukFormSpeciesIdTable, \ GRIMER_FAMILY_MISC_INFO @@ -6870,7 +6870,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Shellder), ICON(Shellder, 2), - .footprint = gMonFootprint_Shellder, + FOOTPRINT(Shellder) LEARNSETS(Shellder), .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}), }, @@ -6920,7 +6920,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Cloyster), ICON(Cloyster, 2), - .footprint = gMonFootprint_Cloyster, + FOOTPRINT(Cloyster) LEARNSETS(Cloyster), }, #endif //P_FAMILY_SHELLDER @@ -6970,7 +6970,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Gastly), ICON(Gastly, 2), - .footprint = gMonFootprint_Gastly, + FOOTPRINT(Gastly) LEARNSETS(Gastly), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_HAUNTER}), }, @@ -7020,7 +7020,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Haunter), ICON(Haunter, 2), - .footprint = gMonFootprint_Haunter, + FOOTPRINT(Haunter) LEARNSETS(Haunter), .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GENGAR}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GENGAR}), @@ -7045,7 +7045,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Gengar"), \ .natDexNum = NATIONAL_DEX_GENGAR, \ .categoryName = _("Shadow"), \ - .footprint = gMonFootprint_Gengar, \ + FOOTPRINT(Gengar) \ LEARNSETS(Gengar), \ .formSpeciesIdTable = sGengarFormSpeciesIdTable, \ .formChangeTable = sGengarFormChangeTable @@ -7200,7 +7200,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Onix), ICON(Onix, 2), - .footprint = gMonFootprint_Onix, + FOOTPRINT(Onix) LEARNSETS(Onix), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, {EVO_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}), @@ -7221,7 +7221,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Steelix"), \ .natDexNum = NATIONAL_DEX_STEELIX, \ .categoryName = _("Iron Snake"), \ - .footprint = gMonFootprint_Steelix, \ + FOOTPRINT(Steelix) \ LEARNSETS(Steelix), \ .formSpeciesIdTable = sSteelixFormSpeciesIdTable, \ .formChangeTable = sSteelixFormChangeTable @@ -7347,7 +7347,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Drowzee), ICON(Drowzee, 2), - .footprint = gMonFootprint_Drowzee, + FOOTPRINT(Drowzee) LEARNSETS(Drowzee), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_HYPNO}), }, @@ -7398,7 +7398,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Hypno), ICON(Hypno, 2), - .footprint = gMonFootprint_Hypno, + FOOTPRINT(Hypno) LEARNSETS(Hypno), }, #endif //P_FAMILY_DROWZEE @@ -7447,7 +7447,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Krabby), ICON(Krabby, 0), - .footprint = gMonFootprint_Krabby, + FOOTPRINT(Krabby) LEARNSETS(Krabby), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_KINGLER}), }, @@ -7475,7 +7475,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_KINGLER, \ .natDexNum = NATIONAL_DEX_KINGLER, \ .categoryName = _("Pincer"), \ - .footprint = gMonFootprint_Kingler, \ + FOOTPRINT(Kingler) \ LEARNSETS(Kingler), \ .formSpeciesIdTable = sKinglerFormSpeciesIdTable, \ .formChangeTable = sKinglerFormChangeTable @@ -7563,7 +7563,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = -8, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Voltorb, \ + FOOTPRINT(Voltorb) \ .formSpeciesIdTable = sVoltorbFormSpeciesIdTable, \ VOLTORB_FAMILY_MISC_INFO @@ -7585,7 +7585,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Electrode, \ + FOOTPRINT(Electrode) \ .formSpeciesIdTable = sElectrodeFormSpeciesIdTable, \ VOLTORB_FAMILY_MISC_INFO @@ -7733,7 +7733,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Exeggcute), ICON(Exeggcute, 0), - .footprint = gMonFootprint_Exeggcute, + FOOTPRINT(Exeggcute) LEARNSETS(Exeggcute), .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, {EVO_NONE, 0, SPECIES_EXEGGUTOR_ALOLAN}), @@ -7753,7 +7753,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_EXEGGUTOR, \ .natDexNum = NATIONAL_DEX_EXEGGUTOR, \ .categoryName = _("Coconut"), \ - .footprint = gMonFootprint_Exeggutor, \ + FOOTPRINT(Exeggutor) \ .formSpeciesIdTable = sExeggutorFormSpeciesIdTable #define EXEGGUTOR_SP_DEF (P_UPDATED_STATS >= GEN_7 ? 75 : 65) @@ -7876,7 +7876,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Cubone), ICON(Cubone, 2), - .footprint = gMonFootprint_Cubone, + FOOTPRINT(Cubone) LEARNSETS(Cubone), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_MAROWAK}, {EVO_NONE, 0, SPECIES_MAROWAK_ALOLAN}), @@ -7907,7 +7907,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 12, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Marowak, \ + FOOTPRINT(Marowak) \ .formSpeciesIdTable = sMarowakFormSpeciesIdTable [SPECIES_MAROWAK] = @@ -8007,7 +8007,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Tyrogue), ICON(Tyrogue, 2), - .footprint = gMonFootprint_Tyrogue, + FOOTPRINT(Tyrogue) LEARNSETS(Tyrogue), .evolutions = EVOLUTION({EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, @@ -8058,7 +8058,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Hitmonlee), ICON(Hitmonlee, 2), - .footprint = gMonFootprint_Hitmonlee, + FOOTPRINT(Hitmonlee) LEARNSETS(Hitmonlee), }, @@ -8105,7 +8105,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Hitmonchan), ICON(Hitmonchan, 2), - .footprint = gMonFootprint_Hitmonchan, + FOOTPRINT(Hitmonchan) LEARNSETS(Hitmonchan), }, @@ -8153,7 +8153,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, PALETTES(Hitmontop), ICON(Hitmontop, 2), - .footprint = gMonFootprint_Hitmontop, + FOOTPRINT(Hitmontop) LEARNSETS(Hitmontop), }, #endif //P_GEN_2_CROSS_EVOS @@ -8204,7 +8204,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Lickitung), ICON(Lickitung, 0), - .footprint = gMonFootprint_Lickitung, + FOOTPRINT(Lickitung) LEARNSETS(Lickitung), .evolutions = EVOLUTION({EVO_MOVE, MOVE_ROLLOUT, SPECIES_LICKILICKY}), }, @@ -8254,7 +8254,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Lickilicky), ICON(Lickilicky, 1), - .footprint = gMonFootprint_Lickilicky, + FOOTPRINT(Lickilicky) LEARNSETS(Lickilicky), }, #endif //P_GEN_4_CROSS_EVOS @@ -8310,7 +8310,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Koffing), ICON(Koffing, 2), - .footprint = gMonFootprint_Koffing, + FOOTPRINT(Koffing) LEARNSETS(Koffing), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_WEEZING}, {EVO_NONE, 0, SPECIES_WEEZING_GALARIAN}), @@ -8336,7 +8336,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_WEEZING, \ .natDexNum = NATIONAL_DEX_WEEZING, \ .categoryName = _("Poison Gas"), \ - .footprint = gMonFootprint_Weezing, \ + FOOTPRINT(Weezing) \ .formSpeciesIdTable = sWeezingFormSpeciesIdTable [SPECIES_WEEZING] = @@ -8455,7 +8455,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Rhyhorn), ICON(Rhyhorn, 1), - .footprint = gMonFootprint_Rhyhorn, + FOOTPRINT(Rhyhorn) LEARNSETS(Rhyhorn), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_RHYDON}), }, @@ -8505,7 +8505,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Rhydon), ICON(Rhydon, 1), - .footprint = gMonFootprint_Rhydon, + FOOTPRINT(Rhydon) LEARNSETS(Rhydon), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}, {EVO_ITEM, ITEM_PROTECTOR, SPECIES_RHYPERIOR}), @@ -8557,7 +8557,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Rhyperior), ICON(Rhyperior, 0), - .footprint = gMonFootprint_Rhyperior, + FOOTPRINT(Rhyperior) LEARNSETS(Rhyperior), }, #endif //P_GEN_4_CROSS_EVOS @@ -8609,7 +8609,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Happiny), ICON(Happiny, 0), - .footprint = gMonFootprint_Happiny, + FOOTPRINT(Happiny) LEARNSETS(Happiny), .evolutions = EVOLUTION({EVO_ITEM_HOLD_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}, {EVO_ITEM_DAY, ITEM_OVAL_STONE, SPECIES_CHANSEY}), @@ -8660,7 +8660,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Chansey), ICON(Chansey, 0), - .footprint = gMonFootprint_Chansey, + FOOTPRINT(Chansey) LEARNSETS(Chansey), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}), }, @@ -8710,7 +8710,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Blissey), ICON(Blissey, 0), - .footprint = gMonFootprint_Blissey, + FOOTPRINT(Blissey) LEARNSETS(Blissey), }, #endif //P_GEN_2_CROSS_EVOS @@ -8760,7 +8760,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Tangela), ICON(Tangela, 0), - .footprint = gMonFootprint_Tangela, + FOOTPRINT(Tangela) LEARNSETS(Tangela), .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_TANGROWTH}), }, @@ -8810,7 +8810,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Tangrowth), ICON(Tangrowth, 0), - .footprint = gMonFootprint_Tangrowth, + FOOTPRINT(Tangrowth) LEARNSETS(Tangrowth), }, #endif //P_GEN_4_CROSS_EVOS @@ -8835,7 +8835,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 387, \ .trainerOffset = 8, \ - .footprint = gMonFootprint_Kangaskhan, \ + FOOTPRINT(Kangaskhan) \ LEARNSETS(Kangaskhan), \ .formSpeciesIdTable = sKangaskhanFormSpeciesIdTable, \ .formChangeTable = sKangaskhanFormChangeTable @@ -8947,7 +8947,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Horsea), ICON(Horsea, 0), - .footprint = gMonFootprint_Horsea, + FOOTPRINT(Horsea) LEARNSETS(Horsea), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEADRA}), }, @@ -8997,7 +8997,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Seadra), ICON(Seadra, 0), - .footprint = gMonFootprint_Seadra, + FOOTPRINT(Seadra) LEARNSETS(Seadra), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, {EVO_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}), @@ -9050,7 +9050,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Kingdra), ICON(Kingdra, 0), - .footprint = gMonFootprint_Kingdra, + FOOTPRINT(Kingdra) LEARNSETS(Kingdra), }, #endif //P_GEN_2_CROSS_EVOS @@ -9103,7 +9103,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Goldeen), ICON(Goldeen, 0), - .footprint = gMonFootprint_Goldeen, + FOOTPRINT(Goldeen) LEARNSETS(Goldeen), .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_SEAKING}), }, @@ -9154,7 +9154,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Seaking), ICON(Seaking, 0), - .footprint = gMonFootprint_Seaking, + FOOTPRINT(Seaking) LEARNSETS(Seaking), }, #endif //P_FAMILY_GOLDEEN @@ -9206,7 +9206,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Staryu), ICON(Staryu, 2), - .footprint = gMonFootprint_Staryu, + FOOTPRINT(Staryu) LEARNSETS(Staryu), .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}), }, @@ -9256,7 +9256,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Starmie), ICON(Starmie, 2), - .footprint = gMonFootprint_Starmie, + FOOTPRINT(Starmie) LEARNSETS(Starmie), }, #endif //P_FAMILY_STARYU @@ -9310,7 +9310,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(MimeJr), ICON(MimeJr, 0), - .footprint = gMonFootprint_MimeJr, + FOOTPRINT(MimeJr) LEARNSETS(MimeJr), .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_MR_MIME}, {EVO_NONE, 0, SPECIES_MR_MIME_GALARIAN}), @@ -9328,7 +9328,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Mr. Mime"), \ .cryId = CRY_MR_MIME, \ .natDexNum = NATIONAL_DEX_MR_MIME, \ - .footprint = gMonFootprint_MrMime, \ + FOOTPRINT(MrMime) \ .formSpeciesIdTable = sMrMimeFormSpeciesIdTable [SPECIES_MR_MIME] = @@ -9454,7 +9454,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(MrRime), ICON(MrRime, 0), - .footprint = gMonFootprint_MrRime, + FOOTPRINT(MrRime) LEARNSETS(MrRime), }, #endif //P_GALARIAN_FORMS @@ -9506,7 +9506,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Scyther), ICON(Scyther, 1), - .footprint = gMonFootprint_Scyther, + FOOTPRINT(Scyther) LEARNSETS(Scyther), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, {EVO_ITEM, ITEM_BLACK_AUGURITE, SPECIES_KLEAVOR}, @@ -9527,7 +9527,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Scizor"), \ .natDexNum = NATIONAL_DEX_SCIZOR, \ .categoryName = _("Pincer"), \ - .footprint = gMonFootprint_Scizor, \ + FOOTPRINT(Scizor) \ LEARNSETS(Scizor), \ .formSpeciesIdTable = sScizorFormSpeciesIdTable,\ .formChangeTable = sScizorFormChangeTable @@ -9650,7 +9650,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Kleavor), ICON(Kleavor, 2), - //.footprint = gMonFootprint_Kleavor, + //FOOTPRINT(Kleavor) LEARNSETS(Kleavor), }, #endif //P_GEN_8_CROSS_EVOS @@ -9702,7 +9702,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Smoochum), ICON(Smoochum, 1), - .footprint = gMonFootprint_Smoochum, + FOOTPRINT(Smoochum) LEARNSETS(Smoochum), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_JYNX}), }, @@ -9751,7 +9751,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Jynx), ICON(Jynx, 2), - .footprint = gMonFootprint_Jynx, + FOOTPRINT(Jynx) LEARNSETS(Jynx), }, #endif //P_FAMILY_JYNX @@ -9803,7 +9803,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Elekid), ICON(Elekid, 1), - .footprint = gMonFootprint_Elekid, + FOOTPRINT(Elekid) LEARNSETS(Elekid), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ELECTABUZZ}), }, @@ -9854,7 +9854,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Electabuzz), ICON(Electabuzz, 1), - .footprint = gMonFootprint_Electabuzz, + FOOTPRINT(Electabuzz) LEARNSETS(Electabuzz), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}, {EVO_ITEM, ITEM_ELECTIRIZER, SPECIES_ELECTIVIRE}), @@ -9905,7 +9905,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Electivire), ICON(Electivire, 1), - .footprint = gMonFootprint_Electivire, + FOOTPRINT(Electivire) LEARNSETS(Electivire), }, #endif //P_GEN_4_CROSS_EVOS @@ -9958,7 +9958,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Magby), ICON(Magby, 0), - .footprint = gMonFootprint_Magby, + FOOTPRINT(Magby) LEARNSETS(Magby), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MAGMAR}), }, @@ -10008,7 +10008,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Magmar), ICON(Magmar, 0), - .footprint = gMonFootprint_Magmar, + FOOTPRINT(Magmar) LEARNSETS(Magmar), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}, {EVO_ITEM, ITEM_MAGMARIZER, SPECIES_MAGMORTAR}), @@ -10060,7 +10060,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Magmortar), ICON(Magmortar, 0), - .footprint = gMonFootprint_Magmortar, + FOOTPRINT(Magmortar) LEARNSETS(Magmortar), }, #endif //P_GEN_4_CROSS_EVOS @@ -10079,7 +10079,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Pinsir"), \ .natDexNum = NATIONAL_DEX_PINSIR, \ .categoryName = _("Stag Beetle"), \ - .footprint = gMonFootprint_Pinsir, \ + FOOTPRINT(Pinsir) \ LEARNSETS(Pinsir), \ .formSpeciesIdTable = sPinsirFormSpeciesIdTable,\ .formChangeTable = sPinsirFormChangeTable @@ -10183,7 +10183,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Tauros, \ + FOOTPRINT(Tauros) \ .formSpeciesIdTable = sTaurosFormSpeciesIdTable [SPECIES_TAUROS] = @@ -10340,7 +10340,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Magikarp), ICON(Magikarp, 0), - .footprint = gMonFootprint_Magikarp, + FOOTPRINT(Magikarp) LEARNSETS(Magikarp), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_GYARADOS}), }, @@ -10362,7 +10362,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 6, \ .trainerScale = 481, \ .trainerOffset = 13, \ - .footprint = gMonFootprint_Gyarados, \ + FOOTPRINT(Gyarados) \ LEARNSETS(Gyarados), \ .formSpeciesIdTable = sGyaradosFormSpeciesIdTable, \ .formChangeTable = sGyaradosFormChangeTable @@ -10459,7 +10459,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_LAPRAS, \ .natDexNum = NATIONAL_DEX_LAPRAS, \ .categoryName = _("Transport"), \ - .footprint = gMonFootprint_Lapras, \ + FOOTPRINT(Lapras) \ LEARNSETS(Lapras), \ .formSpeciesIdTable = sLaprasFormSpeciesIdTable, \ .formChangeTable = sLaprasFormChangeTable @@ -10564,7 +10564,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Ditto), ICON(Ditto, 2), - .footprint = gMonFootprint_Ditto, + FOOTPRINT(Ditto) LEARNSETS(Ditto), }, #endif //P_FAMILY_DITTO @@ -10592,7 +10592,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_EEVEE, \ .natDexNum = NATIONAL_DEX_EEVEE, \ .categoryName = _("Evolution"), \ - .footprint = gMonFootprint_Eevee, \ + FOOTPRINT(Eevee) \ LEARNSETS(Eevee), \ .formSpeciesIdTable = sEeveeFormSpeciesIdTable, \ .formChangeTable = sEeveeFormChangeTable @@ -10705,7 +10705,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Vaporeon), ICON(Vaporeon, 0), - .footprint = gMonFootprint_Vaporeon, + FOOTPRINT(Vaporeon) LEARNSETS(Vaporeon), }, @@ -10752,7 +10752,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Jolteon), ICON(Jolteon, 2), - .footprint = gMonFootprint_Jolteon, + FOOTPRINT(Jolteon) LEARNSETS(Jolteon), }, @@ -10799,7 +10799,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Flareon), ICON(Flareon, 3), - .footprint = gMonFootprint_Flareon, + FOOTPRINT(Flareon) LEARNSETS(Flareon), }, @@ -10847,7 +10847,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Espeon), ICON(Espeon, 2), - .footprint = gMonFootprint_Espeon, + FOOTPRINT(Espeon) LEARNSETS(Espeon), }, @@ -10894,7 +10894,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Umbreon), ICON(Umbreon, 0), - .footprint = gMonFootprint_Umbreon, + FOOTPRINT(Umbreon) LEARNSETS(Umbreon), }, #endif //P_GEN_2_CROSS_EVOS @@ -10943,7 +10943,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Leafeon), ICON(Leafeon, 1), - .footprint = gMonFootprint_Leafeon, + FOOTPRINT(Leafeon) LEARNSETS(Leafeon), }, @@ -10990,7 +10990,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Glaceon), ICON(Glaceon, 0), - .footprint = gMonFootprint_Glaceon, + FOOTPRINT(Glaceon) LEARNSETS(Glaceon), }, #endif //P_GEN_4_CROSS_EVOS @@ -11040,7 +11040,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Sylveon), ICON(Sylveon, 0), - .footprint = gMonFootprint_Sylveon, + FOOTPRINT(Sylveon) LEARNSETS(Sylveon), }, #endif //P_GEN_6_CROSS_EVOS @@ -11090,7 +11090,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Porygon), ICON(Porygon, 0), - .footprint = gMonFootprint_Porygon, + FOOTPRINT(Porygon) LEARNSETS(Porygon), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}, {EVO_ITEM, ITEM_UPGRADE, SPECIES_PORYGON2}), @@ -11141,7 +11141,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Porygon2), ICON(Porygon2, 0), - .footprint = gMonFootprint_Porygon2, + FOOTPRINT(Porygon2) LEARNSETS(Porygon2), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}, {EVO_ITEM, ITEM_DUBIOUS_DISC, SPECIES_PORYGON_Z}), @@ -11192,7 +11192,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(PorygonZ), ICON(PorygonZ, 0), - .footprint = gMonFootprint_PorygonZ, + FOOTPRINT(PorygonZ) LEARNSETS(PorygonZ), }, #endif //P_GEN_4_CROSS_EVOS @@ -11243,7 +11243,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Omanyte), ICON(Omanyte, 0), - .footprint = gMonFootprint_Omanyte, + FOOTPRINT(Omanyte) LEARNSETS(Omanyte), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_OMASTAR}), }, @@ -11291,7 +11291,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Omastar), ICON(Omastar, 0), - .footprint = gMonFootprint_Omastar, + FOOTPRINT(Omastar) LEARNSETS(Omastar), }, #endif //P_FAMILY_OMANYTE @@ -11340,7 +11340,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Kabuto), ICON(Kabuto, 2), - .footprint = gMonFootprint_Kabuto, + FOOTPRINT(Kabuto) LEARNSETS(Kabuto), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KABUTOPS}), }, @@ -11388,7 +11388,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Kabutops), ICON(Kabutops, 2), - .footprint = gMonFootprint_Kabutops, + FOOTPRINT(Kabutops) LEARNSETS(Kabutops), }, #endif //P_FAMILY_KABUTO @@ -11407,7 +11407,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Aerodactyl"), \ .natDexNum = NATIONAL_DEX_AERODACTYL, \ .categoryName = _("Fossil"), \ - .footprint = gMonFootprint_Aerodactyl, \ + FOOTPRINT(Aerodactyl) \ LEARNSETS(Aerodactyl), \ .formSpeciesIdTable = sAerodactylFormSpeciesIdTable,\ .formChangeTable = sAerodactylFormChangeTable @@ -11532,7 +11532,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Munchlax), ICON(Munchlax, 3), - .footprint = gMonFootprint_Munchlax, + FOOTPRINT(Munchlax) LEARNSETS(Munchlax), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SNORLAX}), }, @@ -11562,7 +11562,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .cryId = CRY_SNORLAX, \ .natDexNum = NATIONAL_DEX_SNORLAX, \ .categoryName = _("Sleeping"), \ - .footprint = gMonFootprint_Snorlax, \ + FOOTPRINT(Snorlax) \ LEARNSETS(Snorlax), \ .formSpeciesIdTable = sSnorlaxFormSpeciesIdTable, \ .formChangeTable = sSnorlaxFormChangeTable @@ -11636,7 +11636,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 309, \ .trainerOffset = 2, \ - .footprint = gMonFootprint_Articuno, \ + FOOTPRINT(Articuno) \ .formSpeciesIdTable = sArticunoFormSpeciesIdTable, \ .isLegendary = TRUE @@ -11729,7 +11729,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 318, \ .trainerOffset = 3, \ - .footprint = gMonFootprint_Zapdos, \ + FOOTPRINT(Zapdos) \ .formSpeciesIdTable = sZapdosFormSpeciesIdTable, \ .isLegendary = TRUE @@ -11823,7 +11823,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .pokemonOffset = 0, \ .trainerScale = 387, \ .trainerOffset = 8, \ - .footprint = gMonFootprint_Moltres, \ + FOOTPRINT(Moltres) \ .formSpeciesIdTable = sMoltresFormSpeciesIdTable, \ .isLegendary = TRUE @@ -11944,7 +11944,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Dratini), ICON(Dratini, 0), - .footprint = gMonFootprint_Dratini, + FOOTPRINT(Dratini) LEARNSETS(Dratini), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_DRAGONAIR}), }, @@ -11993,7 +11993,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Dragonair), ICON(Dragonair, 0), - .footprint = gMonFootprint_Dragonair, + FOOTPRINT(Dragonair) LEARNSETS(Dragonair), .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_DRAGONITE}), }, @@ -12042,7 +12042,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Dragonite), ICON(Dragonite, 2), - .footprint = gMonFootprint_Dragonite, + FOOTPRINT(Dragonite) LEARNSETS(Dragonite), }, #endif //P_FAMILY_DRATINI @@ -12060,7 +12060,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .speciesName = _("Mewtwo"), \ .natDexNum = NATIONAL_DEX_MEWTWO, \ .categoryName = _("Genetic"), \ - .footprint = gMonFootprint_Mewtwo, \ + FOOTPRINT(Mewtwo) \ LEARNSETS(Mewtwo), \ .formSpeciesIdTable = sMewtwoFormSpeciesIdTable, \ .formChangeTable = sMewtwoFormChangeTable, \ @@ -12225,7 +12225,7 @@ const struct SpeciesInfo gSpeciesInfoGen1[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Mew), ICON(Mew, 0), - .footprint = gMonFootprint_Mew, + FOOTPRINT(Mew) LEARNSETS(Mew), }, #endif //P_FAMILY_MEW diff --git a/src/data/pokemon/species_info/gen_2.h b/src/data/pokemon/species_info/gen_2.h index 9ac992ea1fcb..f5af710a1948 100644 --- a/src/data/pokemon/species_info/gen_2.h +++ b/src/data/pokemon/species_info/gen_2.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Chikorita), ICON(Chikorita, 1), - .footprint = gMonFootprint_Chikorita, + FOOTPRINT(Chikorita) LEARNSETS(Chikorita), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BAYLEEF}), }, @@ -96,7 +96,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Bayleef), ICON(Bayleef, 1), - .footprint = gMonFootprint_Bayleef, + FOOTPRINT(Bayleef) LEARNSETS(Bayleef), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MEGANIUM}), }, @@ -147,7 +147,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Meganium), ICON(Meganium, 1), - .footprint = gMonFootprint_Meganium, + FOOTPRINT(Meganium) LEARNSETS(Meganium), }, #endif //P_FAMILY_CHIKORITA @@ -196,7 +196,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Cyndaquil), ICON(Cyndaquil, 3), - .footprint = gMonFootprint_Cyndaquil, + FOOTPRINT(Cyndaquil) LEARNSETS(Cyndaquil), .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_QUILAVA}), }, @@ -245,7 +245,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Quilava), ICON(Quilava, 3), - .footprint = gMonFootprint_Quilava, + FOOTPRINT(Quilava) LEARNSETS(Quilava), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_TYPHLOSION}, {EVO_NONE, 0, SPECIES_TYPHLOSION_HISUIAN}), @@ -264,7 +264,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .speciesName = _("Typhlosion"), \ .cryId = CRY_TYPHLOSION, \ .natDexNum = NATIONAL_DEX_TYPHLOSION, \ - .footprint = gMonFootprint_Typhlosion, \ + FOOTPRINT(Typhlosion) \ .formSpeciesIdTable = sTyphlosionFormSpeciesIdTable [SPECIES_TYPHLOSION] = @@ -386,7 +386,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Totodile), ICON(Totodile, 0), - .footprint = gMonFootprint_Totodile, + FOOTPRINT(Totodile) LEARNSETS(Totodile), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CROCONAW}), }, @@ -436,7 +436,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Croconaw), ICON(Croconaw, 0), - .footprint = gMonFootprint_Croconaw, + FOOTPRINT(Croconaw) LEARNSETS(Croconaw), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_FERALIGATR}), }, @@ -486,7 +486,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Feraligatr), ICON(Feraligatr, 0), - .footprint = gMonFootprint_Feraligatr, + FOOTPRINT(Feraligatr) LEARNSETS(Feraligatr), }, #endif //P_FAMILY_TOTODILE @@ -535,7 +535,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Sentret), ICON(Sentret, 2), - .footprint = gMonFootprint_Sentret, + FOOTPRINT(Sentret) LEARNSETS(Sentret), .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FURRET}), }, @@ -583,7 +583,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Furret), ICON(Furret, 2), - .footprint = gMonFootprint_Furret, + FOOTPRINT(Furret) LEARNSETS(Furret), }, #endif //P_FAMILY_SENTRET @@ -632,7 +632,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Hoothoot), ICON(Hoothoot, 2), - .footprint = gMonFootprint_Hoothoot, + FOOTPRINT(Hoothoot) LEARNSETS(Hoothoot), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_NOCTOWL}), }, @@ -680,7 +680,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Noctowl), ICON(Noctowl, 2), - .footprint = gMonFootprint_Noctowl, + FOOTPRINT(Noctowl) LEARNSETS(Noctowl), }, #endif //P_FAMILY_HOOTHOOT @@ -731,7 +731,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Ledyba), ICON(Ledyba, 0), - .footprint = gMonFootprint_Ledyba, + FOOTPRINT(Ledyba) LEARNSETS(Ledyba), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_LEDIAN}), }, @@ -782,7 +782,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Ledian), ICON(Ledian, 0), - .footprint = gMonFootprint_Ledian, + FOOTPRINT(Ledian) LEARNSETS(Ledian), }, #endif //P_FAMILY_LEDYBA @@ -831,7 +831,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Spinarak), ICON(Spinarak, 1), - .footprint = gMonFootprint_Spinarak, + FOOTPRINT(Spinarak) LEARNSETS(Spinarak), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARIADOS}), }, @@ -879,7 +879,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Ariados), ICON(Ariados, 0), - .footprint = gMonFootprint_Ariados, + FOOTPRINT(Ariados) LEARNSETS(Ariados), }, #endif //P_FAMILY_SPINARAK @@ -929,7 +929,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Chinchou), ICON(Chinchou, 2), - .footprint = gMonFootprint_Chinchou, + FOOTPRINT(Chinchou) LEARNSETS(Chinchou), .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_LANTURN}), }, @@ -978,7 +978,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Lanturn), ICON(Lanturn, 0), - .footprint = gMonFootprint_Lanturn, + FOOTPRINT(Lanturn) LEARNSETS(Lanturn), }, #endif //P_FAMILY_CHINCHOU @@ -1029,7 +1029,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Togepi), ICON(Togepi, 0), - .footprint = gMonFootprint_Togepi, + FOOTPRINT(Togepi) LEARNSETS(Togepi), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}), }, @@ -1077,7 +1077,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Togetic), ICON(Togetic, 0), - .footprint = gMonFootprint_Togetic, + FOOTPRINT(Togetic) LEARNSETS(Togetic), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_TOGEKISS}), }, @@ -1133,7 +1133,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Togekiss), ICON(Togekiss, 2), - .footprint = gMonFootprint_Togekiss, + FOOTPRINT(Togekiss) LEARNSETS(Togekiss), }, #endif //P_GEN_4_CROSS_EVOS @@ -1184,7 +1184,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Natu), ICON(Natu, 1), - .footprint = gMonFootprint_Natu, + FOOTPRINT(Natu) LEARNSETS(Natu), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_XATU}), }, @@ -1234,7 +1234,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Xatu), ICON(Xatu, 1), - .footprint = gMonFootprint_Xatu, + FOOTPRINT(Xatu) LEARNSETS(Xatu), }, #endif //P_FAMILY_NATU @@ -1284,7 +1284,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Mareep), ICON(Mareep, 0), - .footprint = gMonFootprint_Mareep, + FOOTPRINT(Mareep) LEARNSETS(Mareep), .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_FLAAFFY}), }, @@ -1332,7 +1332,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Flaaffy), ICON(Flaaffy, 0), - .footprint = gMonFootprint_Flaaffy, + FOOTPRINT(Flaaffy) LEARNSETS(Flaaffy), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_AMPHAROS}), }, @@ -1355,7 +1355,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 4, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Ampharos, \ + FOOTPRINT(Ampharos) \ LEARNSETS(Ampharos), \ .formSpeciesIdTable = sAmpharosFormSpeciesIdTable, \ .formChangeTable = sAmpharosFormChangeTable @@ -1474,7 +1474,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Azurill), ICON(Azurill, 0), - .footprint = gMonFootprint_Azurill, + FOOTPRINT(Azurill) LEARNSETS(Azurill), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_MARILL}), }, @@ -1527,7 +1527,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Marill), ICON(Marill, 0), - .footprint = gMonFootprint_Marill, + FOOTPRINT(Marill) LEARNSETS(Marill), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_AZUMARILL}), }, @@ -1579,7 +1579,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Azumarill), ICON(Azumarill, 0), - .footprint = gMonFootprint_Azumarill, + FOOTPRINT(Azumarill) LEARNSETS(Azumarill), }, #endif //P_FAMILY_MARILL @@ -1629,7 +1629,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Bonsly), ICON(Bonsly, 1), - .footprint = gMonFootprint_Bonsly, + FOOTPRINT(Bonsly) LEARNSETS(Bonsly), .evolutions = EVOLUTION({EVO_MOVE, MOVE_MIMIC, SPECIES_SUDOWOODO}), }, @@ -1680,7 +1680,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Sudowoodo), ICON(Sudowoodo, 1), - .footprint = gMonFootprint_Sudowoodo, + FOOTPRINT(Sudowoodo) LEARNSETS(Sudowoodo), }, #endif //P_FAMILY_SUDOWOODO @@ -1730,7 +1730,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Hoppip), ICON(Hoppip, 1), - .footprint = gMonFootprint_Hoppip, + FOOTPRINT(Hoppip) LEARNSETS(Hoppip), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_SKIPLOOM}), }, @@ -1779,7 +1779,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Skiploom), ICON(Skiploom, 1), - .footprint = gMonFootprint_Skiploom, + FOOTPRINT(Skiploom) LEARNSETS(Skiploom), .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_JUMPLUFF}), }, @@ -1828,7 +1828,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Jumpluff), ICON(Jumpluff, 2), - .footprint = gMonFootprint_Jumpluff, + FOOTPRINT(Jumpluff) LEARNSETS(Jumpluff), }, #endif //P_FAMILY_HOPPIP @@ -1879,7 +1879,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Aipom), ICON(Aipom, 2), - .footprint = gMonFootprint_Aipom, + FOOTPRINT(Aipom) LEARNSETS(Aipom), .evolutions = EVOLUTION({EVO_MOVE, MOVE_DOUBLE_HIT, SPECIES_AMBIPOM}), }, @@ -1930,7 +1930,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Ambipom), ICON(Ambipom, 2), - .footprint = gMonFootprint_Ambipom, + FOOTPRINT(Ambipom) LEARNSETS(Ambipom), }, #endif //P_GEN_4_CROSS_EVOS @@ -1980,7 +1980,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Sunkern), ICON(Sunkern, 1), - .footprint = gMonFootprint_Sunkern, + FOOTPRINT(Sunkern) LEARNSETS(Sunkern), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}), }, @@ -2028,7 +2028,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Sunflora), ICON(Sunflora, 1), - .footprint = gMonFootprint_Sunflora, + FOOTPRINT(Sunflora) LEARNSETS(Sunflora), }, #endif //P_FAMILY_SUNKERN @@ -2079,7 +2079,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Yanma), ICON(Yanma, 1), - .footprint = gMonFootprint_Yanma, + FOOTPRINT(Yanma) LEARNSETS(Yanma), .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_YANMEGA}), }, @@ -2130,7 +2130,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Yanmega), ICON(Yanmega, 1), - .footprint = gMonFootprint_Yanmega, + FOOTPRINT(Yanmega) LEARNSETS(Yanmega), }, #endif //P_GEN_4_CROSS_EVOS @@ -2160,7 +2160,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 21, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Wooper, \ + FOOTPRINT(Wooper) \ .formSpeciesIdTable = sWooperFormSpeciesIdTable [SPECIES_WOOPER] = @@ -2236,7 +2236,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Quagsire), ICON(Quagsire, 0), - .footprint = gMonFootprint_Quagsire, + FOOTPRINT(Quagsire) LEARNSETS(Quagsire), }, @@ -2311,7 +2311,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Clodsire), ICON(Clodsire, 2), - //.footprint = gMonFootprint_Clodsire, + //FOOTPRINT(Clodsire) LEARNSETS(Clodsire), }, #endif //P_PALDEAN_FORMS @@ -2364,7 +2364,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Murkrow), ICON(Murkrow, 2), - .footprint = gMonFootprint_Murkrow, + FOOTPRINT(Murkrow) LEARNSETS(Murkrow), .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_HONCHKROW}), }, @@ -2413,7 +2413,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Honchkrow), ICON(Honchkrow, 2), - .footprint = gMonFootprint_Honchkrow, + FOOTPRINT(Honchkrow) LEARNSETS(Honchkrow), }, #endif //P_GEN_4_CROSS_EVOS @@ -2464,7 +2464,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Misdreavus), ICON(Misdreavus, 0), - .footprint = gMonFootprint_Misdreavus, + FOOTPRINT(Misdreavus) LEARNSETS(Misdreavus), .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_MISMAGIUS}), }, @@ -2515,7 +2515,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Mismagius), ICON(Mismagius, 2), - .footprint = gMonFootprint_Mismagius, + FOOTPRINT(Mismagius) LEARNSETS(Mismagius), }, #endif //P_GEN_4_CROSS_EVOS @@ -2559,7 +2559,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ PALETTES(Unown), \ ICON(Unown ##letter, 0), \ - .footprint = gMonFootprint_Unown, \ + FOOTPRINT(Unown) \ LEARNSETS(Unown), \ .formSpeciesIdTable = sUnownFormSpeciesIdTable @@ -2852,7 +2852,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Wynaut), ICON(Wynaut, 0), - .footprint = gMonFootprint_Wynaut, + FOOTPRINT(Wynaut) LEARNSETS(Wynaut), .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_WOBBUFFET}), }, @@ -2906,7 +2906,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE ICON_FEMALE(Wobbuffet, 0), #endif - .footprint = gMonFootprint_Wobbuffet, + FOOTPRINT(Wobbuffet) LEARNSETS(Wobbuffet), }, #endif //P_FAMILY_WOBBUFFET @@ -2957,7 +2957,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Girafarig), ICON(Girafarig, 1), - .footprint = gMonFootprint_Girafarig, + FOOTPRINT(Girafarig) LEARNSETS(Girafarig), .evolutions = EVOLUTION({EVO_MOVE, MOVE_TWIN_BEAM, SPECIES_FARIGIRAF}), }, @@ -3006,7 +3006,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Farigiraf), ICON(Farigiraf, 0), - //.footprint = gMonFootprint_Farigiraf, + //FOOTPRINT(Farigiraf) LEARNSETS(Farigiraf), }, #endif //P_GEN_9_CROSS_EVOS @@ -3056,7 +3056,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Pineco), ICON(Pineco, 0), - .footprint = gMonFootprint_Pineco, + FOOTPRINT(Pineco) LEARNSETS(Pineco), .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_FORRETRESS}), }, @@ -3104,7 +3104,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Forretress), ICON(Forretress, 2), - .footprint = gMonFootprint_Forretress, + FOOTPRINT(Forretress) LEARNSETS(Forretress), }, #endif //P_FAMILY_PINECO @@ -3154,7 +3154,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Dunsparce), ICON(Dunsparce, 0), - .footprint = gMonFootprint_Dunsparce, + FOOTPRINT(Dunsparce) LEARNSETS(Dunsparce), .evolutions = EVOLUTION({EVO_MOVE_TWO_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_TWO_SEGMENT}, {EVO_MOVE_THREE_SEGMENT, MOVE_HYPER_DRILL, SPECIES_DUDUNSPARCE_THREE_SEGMENT}), @@ -3198,7 +3198,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .formSpeciesIdTable = sDudunsparceFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Dudunsparce, + //FOOTPRINT(Dudunsparce) [SPECIES_DUDUNSPARCE_TWO_SEGMENT] = { @@ -3273,7 +3273,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Gligar), ICON(Gligar, 0), - .footprint = gMonFootprint_Gligar, + FOOTPRINT(Gligar) LEARNSETS(Gligar), .evolutions = EVOLUTION({EVO_ITEM_HOLD_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}, {EVO_ITEM_NIGHT, ITEM_RAZOR_FANG, SPECIES_GLISCOR}), @@ -3324,7 +3324,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Gliscor), ICON(Gliscor, 2), - .footprint = gMonFootprint_Gliscor, + FOOTPRINT(Gliscor) LEARNSETS(Gliscor), }, #endif //P_GEN_4_CROSS_EVOS @@ -3378,7 +3378,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Snubbull), ICON(Snubbull, 0), - .footprint = gMonFootprint_Snubbull, + FOOTPRINT(Snubbull) LEARNSETS(Snubbull), .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_GRANBULL}), }, @@ -3430,7 +3430,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Granbull), ICON(Granbull, 2), - .footprint = gMonFootprint_Granbull, + FOOTPRINT(Granbull) LEARNSETS(Granbull), }, #endif //P_FAMILY_SNUBBULL @@ -3463,7 +3463,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 0, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Qwilfish, \ + FOOTPRINT(Qwilfish) \ .formSpeciesIdTable = sQwilfishFormSpeciesIdTable [SPECIES_QWILFISH] = @@ -3558,7 +3558,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Overqwil), ICON(Overqwil, 2), - //.footprint = gMonFootprint_Overqwil, + //FOOTPRINT(Overqwil) LEARNSETS(Overqwil), }, #endif //P_HISUIAN_FORMS @@ -3611,7 +3611,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Shuckle), ICON(Shuckle, 1), - .footprint = gMonFootprint_Shuckle, + FOOTPRINT(Shuckle) LEARNSETS(Shuckle), }, #endif //P_FAMILY_SHUCKLE @@ -3630,7 +3630,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .speciesName = _("Heracross"), \ .natDexNum = NATIONAL_DEX_HERACROSS, \ .categoryName = _("Single Horn"), \ - .footprint = gMonFootprint_Heracross, \ + FOOTPRINT(Heracross) \ LEARNSETS(Heracross), \ .formSpeciesIdTable = sHeracrossFormSpeciesIdTable, \ .formChangeTable = sHeracrossFormChangeTable @@ -3736,7 +3736,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = -3, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Sneasel, \ + FOOTPRINT(Sneasel) \ .formSpeciesIdTable = sSneaselFormSpeciesIdTable [SPECIES_SNEASEL] = @@ -3815,7 +3815,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Weavile), ICON(Weavile, 0), - .footprint = gMonFootprint_Weavile, + FOOTPRINT(Weavile) LEARNSETS(Weavile), }, #endif //P_GEN_4_CROSS_EVOS @@ -3893,7 +3893,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Sneasler), ICON(Sneasler, 2), - //.footprint = gMonFootprint_Sneasler, + //FOOTPRINT(Sneasler) LEARNSETS(Sneasler), }, #endif //P_HISUIAN_FORMS @@ -3944,7 +3944,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Teddiursa), ICON(Teddiursa, 0), - .footprint = gMonFootprint_Teddiursa, + FOOTPRINT(Teddiursa) LEARNSETS(Teddiursa), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_URSARING}), }, @@ -3994,7 +3994,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Ursaring), ICON(Ursaring, 2), - .footprint = gMonFootprint_Ursaring, + FOOTPRINT(Ursaring) LEARNSETS(Ursaring), .evolutions = EVOLUTION({EVO_ITEM_NIGHT, ITEM_PEAT_BLOCK, SPECIES_URSALUNA}, {EVO_NONE, 0, SPECIES_URSALUNA_BLOODMOON}), @@ -4047,7 +4047,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Ursaluna), ICON(Ursaluna, 2), - //.footprint = gMonFootprint_Ursaluna, + //FOOTPRINT(Ursaluna) LEARNSETS(Ursaluna), }, @@ -4084,7 +4084,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(UrsalunaBloodmoon), //ICON(UrsalunaBloodmoon, 0), - //.footprint = gMonFootprint_UrsalunaBloodmoon, + //FOOTPRINT(UrsalunaBloodmoon) LEARNSETS(UrsalunaBloodmoon), }, #endif //P_GEN_8_CROSS_EVOS @@ -4134,7 +4134,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Slugma), ICON(Slugma, 0), - .footprint = gMonFootprint_Slugma, + FOOTPRINT(Slugma) LEARNSETS(Slugma), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_MAGCARGO}), }, @@ -4183,7 +4183,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Magcargo), ICON(Magcargo, 0), - .footprint = gMonFootprint_Magcargo, + FOOTPRINT(Magcargo) LEARNSETS(Magcargo), }, #endif //P_FAMILY_SLUGMA @@ -4232,7 +4232,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Swinub), ICON(Swinub, 2), - .footprint = gMonFootprint_Swinub, + FOOTPRINT(Swinub) LEARNSETS(Swinub), .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_PILOSWINE}), }, @@ -4283,7 +4283,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Piloswine), ICON(Piloswine, 2), - .footprint = gMonFootprint_Piloswine, + FOOTPRINT(Piloswine) LEARNSETS(Piloswine), .evolutions = EVOLUTION({EVO_MOVE, MOVE_ANCIENT_POWER, SPECIES_MAMOSWINE}), }, @@ -4333,7 +4333,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Mamoswine), ICON(Mamoswine, 2), - .footprint = gMonFootprint_Mamoswine, + FOOTPRINT(Mamoswine) LEARNSETS(Mamoswine), }, #endif //P_GEN_4_CROSS_EVOS @@ -4361,7 +4361,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .pokemonOffset = 15, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Corsola, \ + FOOTPRINT(Corsola) \ .formSpeciesIdTable = sCorsolaFormSpeciesIdTable [SPECIES_CORSOLA] = @@ -4472,7 +4472,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cursola), ICON(Cursola, 0), - .footprint = gMonFootprint_Cursola, + FOOTPRINT(Cursola) LEARNSETS(Cursola), }, #endif //P_GALARIAN_FORMS @@ -4522,7 +4522,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Remoraid), ICON(Remoraid, 0), - .footprint = gMonFootprint_Remoraid, + FOOTPRINT(Remoraid) LEARNSETS(Remoraid), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_OCTILLERY}), }, @@ -4574,7 +4574,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Octillery), ICON(Octillery, 0), - .footprint = gMonFootprint_Octillery, + FOOTPRINT(Octillery) LEARNSETS(Octillery), }, #endif //P_FAMILY_REMORAID @@ -4623,7 +4623,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Delibird), ICON(Delibird, 1), - .footprint = gMonFootprint_Delibird, + FOOTPRINT(Delibird) LEARNSETS(Delibird), }, #endif //P_FAMILY_DELIBIRD @@ -4673,7 +4673,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Mantyke), ICON(Mantyke, 0), - .footprint = gMonFootprint_Mantyke, + FOOTPRINT(Mantyke) LEARNSETS(Mantyke), .evolutions = EVOLUTION({EVO_SPECIFIC_MON_IN_PARTY, SPECIES_REMORAID, SPECIES_MANTINE}), }, @@ -4723,7 +4723,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Mantine), ICON(Mantine, 2), - .footprint = gMonFootprint_Mantine, + FOOTPRINT(Mantine) LEARNSETS(Mantine), }, #endif //P_FAMILY_MANTINE @@ -4773,7 +4773,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Skarmory), ICON(Skarmory, 0), - .footprint = gMonFootprint_Skarmory, + FOOTPRINT(Skarmory) LEARNSETS(Skarmory), }, #endif //P_FAMILY_SKARMORY @@ -4822,7 +4822,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Houndour), ICON(Houndour, 0), - .footprint = gMonFootprint_Houndour, + FOOTPRINT(Houndour) LEARNSETS(Houndour), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HOUNDOOM}), }, @@ -4840,7 +4840,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .speciesName = _("Houndoom"), \ .natDexNum = NATIONAL_DEX_HOUNDOOM, \ .categoryName = _("Dark"), \ - .footprint = gMonFootprint_Houndoom, \ + FOOTPRINT(Houndoom) \ LEARNSETS(Houndoom), \ .formSpeciesIdTable = sHoundoomFormSpeciesIdTable, \ .formChangeTable = sHoundoomFormChangeTable @@ -4962,7 +4962,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Phanpy), ICON(Phanpy, 0), - .footprint = gMonFootprint_Phanpy, + FOOTPRINT(Phanpy) LEARNSETS(Phanpy), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DONPHAN}), }, @@ -5013,7 +5013,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Donphan), ICON(Donphan, 0), - .footprint = gMonFootprint_Donphan, + FOOTPRINT(Donphan) LEARNSETS(Donphan), }, #endif //P_FAMILY_PHANPY @@ -5062,7 +5062,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Stantler), ICON(Stantler, 2), - .footprint = gMonFootprint_Stantler, + FOOTPRINT(Stantler) LEARNSETS(Stantler), .evolutions = EVOLUTION({EVO_MOVE, MOVE_PSYSHIELD_BASH, SPECIES_WYRDEER}), }, @@ -5112,7 +5112,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Wyrdeer), ICON(Wyrdeer, 2), - //.footprint = gMonFootprint_Wyrdeer, + //FOOTPRINT(Wyrdeer) LEARNSETS(Wyrdeer), }, #endif //P_GEN_8_CROSS_EVOS @@ -5162,7 +5162,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Smeargle), ICON(Smeargle, 1), - .footprint = gMonFootprint_Smeargle, + FOOTPRINT(Smeargle) LEARNSETS(Smeargle), }, #endif //P_FAMILY_SMEARGLE @@ -5213,7 +5213,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Miltank), ICON(Miltank, 0), - .footprint = gMonFootprint_Miltank, + FOOTPRINT(Miltank) LEARNSETS(Miltank), }, #endif //P_FAMILY_MILTANK @@ -5268,7 +5268,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Raikou), ICON(Raikou, 2), - .footprint = gMonFootprint_Raikou, + FOOTPRINT(Raikou) LEARNSETS(Raikou), }, #endif //P_FAMILY_RAIKOU @@ -5323,7 +5323,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Entei), ICON(Entei, 2), - .footprint = gMonFootprint_Entei, + FOOTPRINT(Entei) LEARNSETS(Entei), }, #endif //P_FAMILY_ENTEI @@ -5378,7 +5378,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Suicune), ICON(Suicune, 2), - .footprint = gMonFootprint_Suicune, + FOOTPRINT(Suicune) LEARNSETS(Suicune), }, #endif //P_FAMILY_SUICUNE @@ -5427,7 +5427,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Larvitar), ICON(Larvitar, 1), - .footprint = gMonFootprint_Larvitar, + FOOTPRINT(Larvitar) LEARNSETS(Larvitar), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_PUPITAR}), }, @@ -5475,7 +5475,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Pupitar), ICON(Pupitar, 2), - .footprint = gMonFootprint_Pupitar, + FOOTPRINT(Pupitar) LEARNSETS(Pupitar), .evolutions = EVOLUTION({EVO_LEVEL, 55, SPECIES_TYRANITAR}), }, @@ -5493,7 +5493,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .speciesName = _("Tyranitar"), \ .natDexNum = NATIONAL_DEX_TYRANITAR, \ .categoryName = _("Armor"), \ - .footprint = gMonFootprint_Tyranitar, \ + FOOTPRINT(Tyranitar) \ LEARNSETS(Tyranitar), \ .formSpeciesIdTable = sTyranitarFormSpeciesIdTable, \ .formChangeTable = sTyranitarFormChangeTable @@ -5618,7 +5618,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Lugia), ICON(Lugia, 0), - .footprint = gMonFootprint_Lugia, + FOOTPRINT(Lugia) LEARNSETS(Lugia), }, #endif //P_FAMILY_LUGIA @@ -5671,7 +5671,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(HoOh), ICON(HoOh, 1), - .footprint = gMonFootprint_HoOh, + FOOTPRINT(HoOh) LEARNSETS(HoOh), }, #endif //P_FAMILY_HO_OH @@ -5724,7 +5724,7 @@ const struct SpeciesInfo gSpeciesInfoGen2[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, PALETTES(Celebi), ICON(Celebi, 1), - .footprint = gMonFootprint_Celebi, + FOOTPRINT(Celebi) LEARNSETS(Celebi), }, #endif //P_FAMILY_CELEBI diff --git a/src/data/pokemon/species_info/gen_3.h b/src/data/pokemon/species_info/gen_3.h index 586444950523..51ebee6f43e9 100644 --- a/src/data/pokemon/species_info/gen_3.h +++ b/src/data/pokemon/species_info/gen_3.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Treecko), ICON(Treecko, 1), - .footprint = gMonFootprint_Treecko, + FOOTPRINT(Treecko) LEARNSETS(Treecko), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_GROVYLE}), }, @@ -95,7 +95,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Grovyle), ICON(Grovyle, 1), - .footprint = gMonFootprint_Grovyle, + FOOTPRINT(Grovyle) LEARNSETS(Grovyle), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SCEPTILE}), }, @@ -112,7 +112,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Sceptile"), \ .natDexNum = NATIONAL_DEX_SCEPTILE, \ .categoryName = _("Forest"), \ - .footprint = gMonFootprint_Sceptile, \ + FOOTPRINT(Sceptile) \ LEARNSETS(Sceptile), \ .formSpeciesIdTable = sSceptileFormSpeciesIdTable, \ .formChangeTable = sSceptileFormChangeTable @@ -236,7 +236,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Torchic), ICON(Torchic, 0), - .footprint = gMonFootprint_Torchic, + FOOTPRINT(Torchic) LEARNSETS(Torchic), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_COMBUSKEN}), }, @@ -287,7 +287,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Combusken), ICON(Combusken, 0), - .footprint = gMonFootprint_Combusken, + FOOTPRINT(Combusken) LEARNSETS(Combusken), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_BLAZIKEN}), }, @@ -311,7 +311,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, \ .trainerScale = 301, \ .trainerOffset = 4, \ - .footprint = gMonFootprint_Blaziken, \ + FOOTPRINT(Blaziken) \ LEARNSETS(Blaziken), \ .formSpeciesIdTable = sBlazikenFormSpeciesIdTable, \ .formChangeTable = sBlazikenFormChangeTable @@ -422,7 +422,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Mudkip), ICON(Mudkip, 0), - .footprint = gMonFootprint_Mudkip, + FOOTPRINT(Mudkip) LEARNSETS(Mudkip), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_MARSHTOMP}), }, @@ -470,7 +470,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Marshtomp), ICON(Marshtomp, 0), - .footprint = gMonFootprint_Marshtomp, + FOOTPRINT(Marshtomp) LEARNSETS(Marshtomp), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SWAMPERT}), }, @@ -488,7 +488,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Swampert"), \ .natDexNum = NATIONAL_DEX_SWAMPERT, \ .categoryName = _("Mud Fish"), \ - .footprint = gMonFootprint_Swampert, \ + FOOTPRINT(Swampert) \ LEARNSETS(Swampert), \ .formSpeciesIdTable = sSwampertFormSpeciesIdTable, \ .formChangeTable = sSwampertFormChangeTable @@ -609,7 +609,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Poochyena), ICON(Poochyena, 2), - .footprint = gMonFootprint_Poochyena, + FOOTPRINT(Poochyena) LEARNSETS(Poochyena), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_MIGHTYENA}), }, @@ -657,7 +657,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Mightyena), ICON(Mightyena, 2), - .footprint = gMonFootprint_Mightyena, + FOOTPRINT(Mightyena) LEARNSETS(Mightyena), }, #endif //P_FAMILY_POOCHYENA @@ -689,7 +689,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 22, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Zigzagoon, \ + FOOTPRINT(Zigzagoon) \ .formSpeciesIdTable = sZigzagoonFormSpeciesIdTable #define LINOONE_MISC_INFO \ @@ -719,7 +719,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 7, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Linoone, \ + FOOTPRINT(Linoone) \ .formSpeciesIdTable = sLinooneFormSpeciesIdTable [SPECIES_ZIGZAGOON] = @@ -861,7 +861,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Obstagoon), ICON(Obstagoon, 0), - .footprint = gMonFootprint_Obstagoon, + FOOTPRINT(Obstagoon) LEARNSETS(Obstagoon), }, #endif //P_GALARIAN_FORMS @@ -913,7 +913,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Wurmple), ICON(Wurmple, 0), - .footprint = gMonFootprint_Wurmple, + FOOTPRINT(Wurmple) LEARNSETS(Wurmple), .evolutions = EVOLUTION({EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}), @@ -962,7 +962,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Silcoon), ICON(Silcoon, 2), - .footprint = gMonFootprint_Silcoon, + FOOTPRINT(Silcoon) LEARNSETS(Silcoon), .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_BEAUTIFLY}), }, @@ -1014,7 +1014,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Beautifly), ICON(Beautifly, 0), - .footprint = gMonFootprint_Beautifly, + FOOTPRINT(Beautifly) LEARNSETS(Beautifly), }, @@ -1061,7 +1061,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Cascoon), ICON(Cascoon, 2), - .footprint = gMonFootprint_Cascoon, + FOOTPRINT(Cascoon) LEARNSETS(Cascoon), .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DUSTOX}), }, @@ -1113,7 +1113,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Dustox), ICON(Dustox, 5), - .footprint = gMonFootprint_Dustox, + FOOTPRINT(Dustox) LEARNSETS(Dustox), }, #endif //P_FAMILY_WURMPLE @@ -1163,7 +1163,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Lotad), ICON(Lotad, 4), - .footprint = gMonFootprint_Lotad, + FOOTPRINT(Lotad) LEARNSETS(Lotad), .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_LOMBRE}), }, @@ -1212,7 +1212,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Lombre), ICON(Lombre, 1), - .footprint = gMonFootprint_Lombre, + FOOTPRINT(Lombre) LEARNSETS(Lombre), .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}), }, @@ -1263,7 +1263,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Ludicolo), ICON(Ludicolo, 1), - .footprint = gMonFootprint_Ludicolo, + FOOTPRINT(Ludicolo) LEARNSETS(Ludicolo), }, #endif //P_FAMILY_LOTAD @@ -1313,7 +1313,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Seedot), ICON(Seedot, 2), - .footprint = gMonFootprint_Seedot, + FOOTPRINT(Seedot) LEARNSETS(Seedot), .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_NUZLEAF}), }, @@ -1364,7 +1364,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Nuzleaf), ICON(Nuzleaf, 1), - .footprint = gMonFootprint_Nuzleaf, + FOOTPRINT(Nuzleaf) LEARNSETS(Nuzleaf), .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}), }, @@ -1419,7 +1419,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Shiftry), ICON(Shiftry, 5), - .footprint = gMonFootprint_Shiftry, + FOOTPRINT(Shiftry) LEARNSETS(Shiftry), }, #endif //P_FAMILY_SEEDOT @@ -1468,7 +1468,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Taillow), ICON(Taillow, 2), - .footprint = gMonFootprint_Taillow, + FOOTPRINT(Taillow) LEARNSETS(Taillow), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_SWELLOW}), }, @@ -1516,7 +1516,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Swellow), ICON(Swellow, 2), - .footprint = gMonFootprint_Swellow, + FOOTPRINT(Swellow) LEARNSETS(Swellow), }, #endif //P_FAMILY_TAILLOW @@ -1567,7 +1567,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Wingull), ICON(Wingull, 0), - .footprint = gMonFootprint_Wingull, + FOOTPRINT(Wingull) LEARNSETS(Wingull), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PELIPPER}), }, @@ -1617,7 +1617,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Pelipper), ICON(Pelipper, 2), - .footprint = gMonFootprint_Pelipper, + FOOTPRINT(Pelipper) LEARNSETS(Pelipper), }, #endif //P_FAMILY_WINGULL @@ -1674,7 +1674,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Ralts), ICON(Ralts, 1), - .footprint = gMonFootprint_Ralts, + FOOTPRINT(Ralts) LEARNSETS(Ralts), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_KIRLIA}), }, @@ -1722,7 +1722,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Kirlia), ICON(Kirlia, 1), - .footprint = gMonFootprint_Kirlia, + FOOTPRINT(Kirlia) LEARNSETS(Kirlia), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GARDEVOIR}, {EVO_ITEM_MALE, ITEM_DAWN_STONE, SPECIES_GALLADE}), @@ -1747,7 +1747,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Gardevoir, \ + FOOTPRINT(Gardevoir) \ LEARNSETS(Gardevoir), \ .formSpeciesIdTable = sGardevoirFormSpeciesIdTable, \ .formChangeTable = sGardevoirFormChangeTable @@ -1830,7 +1830,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 1, \ .trainerScale = 296, \ .trainerOffset = 1, \ - .footprint = gMonFootprint_Gallade, \ + FOOTPRINT(Gallade) \ LEARNSETS(Gallade), \ .formSpeciesIdTable = sGalladeFormSpeciesIdTable, \ .formChangeTable = sGalladeFormChangeTable @@ -1947,7 +1947,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SPRING, PALETTES(Surskit), ICON(Surskit, 0), - .footprint = gMonFootprint_Surskit, + FOOTPRINT(Surskit) LEARNSETS(Surskit), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_MASQUERAIN}), }, @@ -2003,7 +2003,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Masquerain), ICON(Masquerain, 0), - .footprint = gMonFootprint_Masquerain, + FOOTPRINT(Masquerain) LEARNSETS(Masquerain), }, #endif //P_FAMILY_SURSKIT @@ -2054,7 +2054,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Shroomish), ICON(Shroomish, 1), - .footprint = gMonFootprint_Shroomish, + FOOTPRINT(Shroomish) LEARNSETS(Shroomish), .evolutions = EVOLUTION({EVO_LEVEL, 23, SPECIES_BRELOOM}), }, @@ -2104,7 +2104,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Breloom), ICON(Breloom, 1), - .footprint = gMonFootprint_Breloom, + FOOTPRINT(Breloom) LEARNSETS(Breloom), }, #endif //P_FAMILY_SHROOMISH @@ -2153,7 +2153,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Slakoth), ICON(Slakoth, 2), - .footprint = gMonFootprint_Slakoth, + FOOTPRINT(Slakoth) LEARNSETS(Slakoth), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_VIGOROTH}), }, @@ -2201,7 +2201,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Vigoroth), ICON(Vigoroth, 2), - .footprint = gMonFootprint_Vigoroth, + FOOTPRINT(Vigoroth) LEARNSETS(Vigoroth), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SLAKING}), }, @@ -2249,7 +2249,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Slaking), ICON(Slaking, 2), - .footprint = gMonFootprint_Slaking, + FOOTPRINT(Slaking) LEARNSETS(Slaking), }, #endif //P_FAMILY_SLAKOTH @@ -2299,7 +2299,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Nincada), ICON(Nincada, 1), - .footprint = gMonFootprint_Nincada, + FOOTPRINT(Nincada) LEARNSETS(Nincada), .evolutions = EVOLUTION({EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}), @@ -2349,7 +2349,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Ninjask), ICON(Ninjask, 1), - .footprint = gMonFootprint_Ninjask, + FOOTPRINT(Ninjask) LEARNSETS(Ninjask), }, @@ -2397,7 +2397,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Shedinja), ICON(Shedinja, 1), - .footprint = gMonFootprint_Shedinja, + FOOTPRINT(Shedinja) LEARNSETS(Shedinja), }, #endif //P_FAMILY_NINCADA @@ -2446,7 +2446,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Whismur), ICON(Whismur, 1), - .footprint = gMonFootprint_Whismur, + FOOTPRINT(Whismur) LEARNSETS(Whismur), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LOUDRED}), }, @@ -2494,7 +2494,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Loudred), ICON(Loudred, 2), - .footprint = gMonFootprint_Loudred, + FOOTPRINT(Loudred) LEARNSETS(Loudred), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_EXPLOUD}), }, @@ -2542,7 +2542,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Exploud), ICON(Exploud, 2), - .footprint = gMonFootprint_Exploud, + FOOTPRINT(Exploud) LEARNSETS(Exploud), }, #endif //P_FAMILY_WHISMUR @@ -2592,7 +2592,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Makuhita), ICON(Makuhita, 1), - .footprint = gMonFootprint_Makuhita, + FOOTPRINT(Makuhita) LEARNSETS(Makuhita), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_HARIYAMA}), }, @@ -2641,7 +2641,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Hariyama), ICON(Hariyama, 2), - .footprint = gMonFootprint_Hariyama, + FOOTPRINT(Hariyama) LEARNSETS(Hariyama), }, #endif //P_FAMILY_MAKUHITA @@ -2691,7 +2691,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Nosepass), ICON(Nosepass, 0), - .footprint = gMonFootprint_Nosepass, + FOOTPRINT(Nosepass) LEARNSETS(Nosepass), .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_PROBOPASS}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_PROBOPASS}), @@ -2744,7 +2744,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Probopass), ICON(Probopass, 0), - .footprint = gMonFootprint_Probopass, + FOOTPRINT(Probopass) LEARNSETS(Probopass), }, #endif //P_GEN_4_CROSS_EVOS @@ -2794,7 +2794,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Skitty), ICON(Skitty, 0), - .footprint = gMonFootprint_Skitty, + FOOTPRINT(Skitty) LEARNSETS(Skitty), .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}), }, @@ -2843,7 +2843,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Delcatty), ICON(Delcatty, 2), - .footprint = gMonFootprint_Delcatty, + FOOTPRINT(Delcatty) LEARNSETS(Delcatty), }, #endif //P_FAMILY_SKITTY @@ -2864,7 +2864,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .natDexNum = NATIONAL_DEX_SABLEYE, \ .categoryName = _("Darkness"), \ .height = 5, \ - .footprint = gMonFootprint_Sableye, \ + FOOTPRINT(Sableye) \ LEARNSETS(Sableye), \ .formSpeciesIdTable = sSableyeFormSpeciesIdTable, \ .formChangeTable = sSableyeFormChangeTable @@ -2960,7 +2960,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Mawile"), \ .natDexNum = NATIONAL_DEX_MAWILE, \ .categoryName = _("Deceiver"), \ - .footprint = gMonFootprint_Mawile, \ + FOOTPRINT(Mawile) \ LEARNSETS(Mawile), \ .formSpeciesIdTable = sMawileFormSpeciesIdTable, \ .formChangeTable = sMawileFormChangeTable @@ -3083,7 +3083,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Aron), ICON(Aron, 2), - .footprint = gMonFootprint_Aron, + FOOTPRINT(Aron) LEARNSETS(Aron), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_LAIRON}), }, @@ -3132,7 +3132,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Lairon), ICON(Lairon, 2), - .footprint = gMonFootprint_Lairon, + FOOTPRINT(Lairon) LEARNSETS(Lairon), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_AGGRON}), }, @@ -3150,7 +3150,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Aggron"), \ .natDexNum = NATIONAL_DEX_AGGRON, \ .categoryName = _("Iron Armor"), \ - .footprint = gMonFootprint_Aggron, \ + FOOTPRINT(Aggron) \ LEARNSETS(Aggron), \ .formSpeciesIdTable = sAggronFormSpeciesIdTable, \ .formChangeTable = sAggronFormChangeTable @@ -3275,7 +3275,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Meditite), ICON(Meditite, 0), - .footprint = gMonFootprint_Meditite, + FOOTPRINT(Meditite) LEARNSETS(Meditite), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_MEDICHAM}), }, @@ -3299,7 +3299,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 5, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Medicham, \ + FOOTPRINT(Medicham) \ LEARNSETS(Medicham), \ .formSpeciesIdTable = sMedichamFormSpeciesIdTable, \ .formChangeTable = sMedichamFormChangeTable @@ -3410,7 +3410,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Electrike), ICON(Electrike, 1), - .footprint = gMonFootprint_Electrike, + FOOTPRINT(Electrike) LEARNSETS(Electrike), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_MANECTRIC}), }, @@ -3428,7 +3428,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Manectric"), \ .natDexNum = NATIONAL_DEX_MANECTRIC, \ .categoryName = _("Discharge"), \ - .footprint = gMonFootprint_Manectric, \ + FOOTPRINT(Manectric) \ LEARNSETS(Manectric), \ .formSpeciesIdTable = sManectricFormSpeciesIdTable, \ .formChangeTable = sManectricFormChangeTable @@ -3549,7 +3549,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Plusle), ICON(Plusle, 0), - .footprint = gMonFootprint_Plusle, + FOOTPRINT(Plusle) LEARNSETS(Plusle), }, #endif //P_FAMILY_PLUSLE @@ -3599,7 +3599,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Minun), ICON(Minun, 0), - .footprint = gMonFootprint_Minun, + FOOTPRINT(Minun) LEARNSETS(Minun), }, #endif //P_FAMILY_MINUN @@ -3654,7 +3654,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Volbeat), ICON(Volbeat, 0), - .footprint = gMonFootprint_Volbeat, + FOOTPRINT(Volbeat) LEARNSETS(Volbeat), }, @@ -3707,7 +3707,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Illumise), ICON(Illumise, 2), - .footprint = gMonFootprint_Illumise, + FOOTPRINT(Illumise) LEARNSETS(Illumise), }, #endif //P_FAMILY_VOLBEAT_ILLUMISE @@ -3759,7 +3759,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Budew), ICON(Budew, 1), - .footprint = gMonFootprint_Budew, + FOOTPRINT(Budew) LEARNSETS(Budew), .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_ROSELIA}), }, @@ -3812,7 +3812,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, PALETTES(Roselia), ICON(Roselia, 4), - .footprint = gMonFootprint_Roselia, + FOOTPRINT(Roselia) LEARNSETS(Roselia), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_ROSERADE}), }, @@ -3865,7 +3865,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Roserade), ICON(Roserade, 0), - .footprint = gMonFootprint_Roserade, + FOOTPRINT(Roserade) LEARNSETS(Roserade), }, #endif //P_GEN_4_CROSS_EVOS @@ -3919,7 +3919,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Gulpin), ICON(Gulpin, 1), - .footprint = gMonFootprint_Gulpin, + FOOTPRINT(Gulpin) LEARNSETS(Gulpin), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_SWALOT}), }, @@ -3971,7 +3971,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Swalot), ICON(Swalot, 2), - .footprint = gMonFootprint_Swalot, + FOOTPRINT(Swalot) LEARNSETS(Swalot), }, #endif //P_FAMILY_GULPIN @@ -4021,7 +4021,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SPRING_REPEATED, PALETTES(Carvanha), ICON(Carvanha, 0), - .footprint = gMonFootprint_Carvanha, + FOOTPRINT(Carvanha) LEARNSETS(Carvanha), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHARPEDO}), }, @@ -4040,7 +4040,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Sharpedo"), \ .natDexNum = NATIONAL_DEX_SHARPEDO, \ .categoryName = _("Brutal"), \ - .footprint = gMonFootprint_Sharpedo, \ + FOOTPRINT(Sharpedo) \ LEARNSETS(Sharpedo), \ .formSpeciesIdTable = sSharpedoFormSpeciesIdTable, \ .formChangeTable = sSharpedoFormChangeTable @@ -4162,7 +4162,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Wailmer), ICON(Wailmer, 2), - .footprint = gMonFootprint_Wailmer, + FOOTPRINT(Wailmer) LEARNSETS(Wailmer), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_WAILORD}), }, @@ -4211,7 +4211,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Wailord), ICON(Wailord, 0), - .footprint = gMonFootprint_Wailord, + FOOTPRINT(Wailord) LEARNSETS(Wailord), }, #endif //P_FAMILY_WAILMER @@ -4262,7 +4262,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Numel), ICON(Numel, 1), - .footprint = gMonFootprint_Numel, + FOOTPRINT(Numel) LEARNSETS(Numel), .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_CAMERUPT}), }, @@ -4281,7 +4281,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Camerupt"), \ .natDexNum = NATIONAL_DEX_CAMERUPT, \ .categoryName = _("Eruption"), \ - .footprint = gMonFootprint_Camerupt, \ + FOOTPRINT(Camerupt) \ LEARNSETS(Camerupt), \ .formSpeciesIdTable = sCameruptFormSpeciesIdTable, \ .formChangeTable = sCameruptFormChangeTable @@ -4405,7 +4405,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Torkoal), ICON(Torkoal, 2), - .footprint = gMonFootprint_Torkoal, + FOOTPRINT(Torkoal) LEARNSETS(Torkoal), }, #endif //P_FAMILY_TORKOAL @@ -4454,7 +4454,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Spoink), ICON(Spoink, 0), - .footprint = gMonFootprint_Spoink, + FOOTPRINT(Spoink) LEARNSETS(Spoink), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GRUMPIG}), }, @@ -4503,7 +4503,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Grumpig), ICON(Grumpig, 2), - .footprint = gMonFootprint_Grumpig, + FOOTPRINT(Grumpig) LEARNSETS(Grumpig), }, #endif //P_FAMILY_SPOINK @@ -4553,7 +4553,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, PALETTES(Spinda), ICON(Spinda, 1), - .footprint = gMonFootprint_Spinda, + FOOTPRINT(Spinda) LEARNSETS(Spinda), }, #endif //P_FAMILY_SPINDA @@ -4607,7 +4607,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Trapinch), ICON(Trapinch, 0), - .footprint = gMonFootprint_Trapinch, + FOOTPRINT(Trapinch) LEARNSETS(Trapinch), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VIBRAVA}), }, @@ -4660,7 +4660,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Vibrava), ICON(Vibrava, 1), - .footprint = gMonFootprint_Vibrava, + FOOTPRINT(Vibrava) LEARNSETS(Vibrava), .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_FLYGON}), }, @@ -4714,7 +4714,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Flygon), ICON(Flygon, 1), - .footprint = gMonFootprint_Flygon, + FOOTPRINT(Flygon) LEARNSETS(Flygon), }, #endif //P_FAMILY_TRAPINCH @@ -4764,7 +4764,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Cacnea), ICON(Cacnea, 1), - .footprint = gMonFootprint_Cacnea, + FOOTPRINT(Cacnea) LEARNSETS(Cacnea), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_CACTURNE}), }, @@ -4815,7 +4815,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Cacturne), ICON(Cacturne, 1), - .footprint = gMonFootprint_Cacturne, + FOOTPRINT(Cacturne) LEARNSETS(Cacturne), }, #endif //P_FAMILY_CACNEA @@ -4864,7 +4864,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Swablu), ICON(Swablu, 0), - .footprint = gMonFootprint_Swablu, + FOOTPRINT(Swablu) LEARNSETS(Swablu), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ALTARIA}), }, @@ -4881,7 +4881,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Altaria"), \ .natDexNum = NATIONAL_DEX_ALTARIA, \ .categoryName = _("Humming"), \ - .footprint = gMonFootprint_Altaria, \ + FOOTPRINT(Altaria) \ LEARNSETS(Altaria), \ .formSpeciesIdTable = sAltariaFormSpeciesIdTable, \ .formChangeTable = sAltariaFormChangeTable @@ -5007,7 +5007,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Zangoose), ICON(Zangoose, 0), - .footprint = gMonFootprint_Zangoose, + FOOTPRINT(Zangoose) LEARNSETS(Zangoose), }, #endif //P_FAMILY_ZANGOOSE @@ -5059,7 +5059,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Seviper), ICON(Seviper, 2), - .footprint = gMonFootprint_Seviper, + FOOTPRINT(Seviper) LEARNSETS(Seviper), }, #endif //P_FAMILY_SEVIPER @@ -5111,7 +5111,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Lunatone), ICON(Lunatone, 1), - .footprint = gMonFootprint_Lunatone, + FOOTPRINT(Lunatone) LEARNSETS(Lunatone), }, #endif //P_FAMILY_LUNATONE @@ -5163,7 +5163,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Solrock), ICON(Solrock, 0), - .footprint = gMonFootprint_Solrock, + FOOTPRINT(Solrock) LEARNSETS(Solrock), }, #endif //P_FAMILY_SOLROCK @@ -5213,7 +5213,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Barboach), ICON(Barboach, 0), - .footprint = gMonFootprint_Barboach, + FOOTPRINT(Barboach) LEARNSETS(Barboach), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_WHISCASH}), }, @@ -5261,7 +5261,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Whiscash), ICON(Whiscash, 0), - .footprint = gMonFootprint_Whiscash, + FOOTPRINT(Whiscash) LEARNSETS(Whiscash), }, #endif //P_FAMILY_BARBOACH @@ -5310,7 +5310,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Corphish), ICON(Corphish, 0), - .footprint = gMonFootprint_Corphish, + FOOTPRINT(Corphish) LEARNSETS(Corphish), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_CRAWDAUNT}), }, @@ -5358,7 +5358,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Crawdaunt), ICON(Crawdaunt, 0), - .footprint = gMonFootprint_Crawdaunt, + FOOTPRINT(Crawdaunt) LEARNSETS(Crawdaunt), }, #endif //P_FAMILY_CORPHISH @@ -5409,7 +5409,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Baltoy), ICON(Baltoy, 2), - .footprint = gMonFootprint_Baltoy, + FOOTPRINT(Baltoy) LEARNSETS(Baltoy), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CLAYDOL}), }, @@ -5459,7 +5459,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Claydol), ICON(Claydol, 0), - .footprint = gMonFootprint_Claydol, + FOOTPRINT(Claydol) LEARNSETS(Claydol), }, #endif //P_FAMILY_BALTOY @@ -5509,7 +5509,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Lileep), ICON(Lileep, 2), - .footprint = gMonFootprint_Lileep, + FOOTPRINT(Lileep) LEARNSETS(Lileep), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_CRADILY}), }, @@ -5558,7 +5558,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Cradily), ICON(Cradily, 1), - .footprint = gMonFootprint_Cradily, + FOOTPRINT(Cradily) LEARNSETS(Cradily), }, #endif //P_FAMILY_LILEEP @@ -5607,7 +5607,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Anorith), ICON(Anorith, 0), - .footprint = gMonFootprint_Anorith, + FOOTPRINT(Anorith) LEARNSETS(Anorith), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ARMALDO}), }, @@ -5655,7 +5655,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Armaldo), ICON(Armaldo, 2), - .footprint = gMonFootprint_Armaldo, + FOOTPRINT(Armaldo) LEARNSETS(Armaldo), }, #endif //P_FAMILY_ANORITH @@ -5704,7 +5704,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SPRING, PALETTES(Feebas), ICON(Feebas, 2), - .footprint = gMonFootprint_Feebas, + FOOTPRINT(Feebas) LEARNSETS(Feebas), .evolutions = EVOLUTION({EVO_BEAUTY, 170, SPECIES_MILOTIC}, {EVO_TRADE_ITEM, ITEM_PRISM_SCALE, SPECIES_MILOTIC}, @@ -5757,7 +5757,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Milotic), ICON(Milotic, 2), - .footprint = gMonFootprint_Milotic, + FOOTPRINT(Milotic) LEARNSETS(Milotic), }, #endif //P_FAMILY_FEEBAS @@ -5791,7 +5791,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = -5, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Castform, \ + FOOTPRINT(Castform) \ LEARNSETS(Castform), \ .formSpeciesIdTable = sCastformFormSpeciesIdTable, \ .formChangeTable = sCastformFormChangeTable @@ -5930,7 +5930,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Kecleon), ICON(Kecleon, 1), - .footprint = gMonFootprint_Kecleon, + FOOTPRINT(Kecleon) LEARNSETS(Kecleon), }, #endif //P_FAMILY_KECLEON @@ -5981,7 +5981,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Shuppet), ICON(Shuppet, 0), - .footprint = gMonFootprint_Shuppet, + FOOTPRINT(Shuppet) LEARNSETS(Shuppet), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BANETTE}), }, @@ -6000,7 +6000,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Banette"), \ .natDexNum = NATIONAL_DEX_BANETTE, \ .categoryName = _("Marionette"), \ - .footprint = gMonFootprint_Banette, \ + FOOTPRINT(Banette) \ LEARNSETS(Banette), \ .formSpeciesIdTable = sBanetteFormSpeciesIdTable, \ .formChangeTable = sBanetteFormChangeTable @@ -6123,7 +6123,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Duskull), ICON(Duskull, 0), - .footprint = gMonFootprint_Duskull, + FOOTPRINT(Duskull) LEARNSETS(Duskull), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_DUSCLOPS}), }, @@ -6174,7 +6174,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Dusclops), ICON(Dusclops, 0), - .footprint = gMonFootprint_Dusclops, + FOOTPRINT(Dusclops) LEARNSETS(Dusclops), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}, {EVO_ITEM, ITEM_REAPER_CLOTH, SPECIES_DUSKNOIR}), @@ -6227,7 +6227,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Dusknoir), ICON(Dusknoir, 2), - .footprint = gMonFootprint_Dusknoir, + FOOTPRINT(Dusknoir) LEARNSETS(Dusknoir), }, #endif //P_GEN_4_CROSS_EVOS @@ -6277,7 +6277,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Tropius), ICON(Tropius, 1), - .footprint = gMonFootprint_Tropius, + FOOTPRINT(Tropius) LEARNSETS(Tropius), }, #endif //P_FAMILY_TROPIUS @@ -6328,7 +6328,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Chingling), ICON(Chingling, 1), - .footprint = gMonFootprint_Chingling, + FOOTPRINT(Chingling) LEARNSETS(Chingling), .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_CHIMECHO}), }, @@ -6386,7 +6386,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Chimecho), ICON(Chimecho, 0), - .footprint = gMonFootprint_Chimecho, + FOOTPRINT(Chimecho) LEARNSETS(Chimecho), }, #endif //P_FAMILY_CHIMECHO @@ -6411,7 +6411,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 3, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Absol, \ + FOOTPRINT(Absol) \ LEARNSETS(Absol), \ .formSpeciesIdTable = sAbsolFormSpeciesIdTable, \ .formChangeTable = sAbsolFormChangeTable @@ -6525,7 +6525,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Snorunt), ICON(Snorunt, 2), - .footprint = gMonFootprint_Snorunt, + FOOTPRINT(Snorunt) LEARNSETS(Snorunt), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GLALIE}, {EVO_ITEM_FEMALE, ITEM_DAWN_STONE, SPECIES_FROSLASS}), @@ -6544,7 +6544,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Glalie"), \ .natDexNum = NATIONAL_DEX_GLALIE, \ .categoryName = _("Face"), \ - .footprint = gMonFootprint_Glalie, \ + FOOTPRINT(Glalie) \ LEARNSETS(Glalie), \ .formSpeciesIdTable = sGlalieFormSpeciesIdTable, \ .formChangeTable = sGlalieFormChangeTable @@ -6666,7 +6666,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Froslass), ICON(Froslass, 0), - .footprint = gMonFootprint_Froslass, + FOOTPRINT(Froslass) LEARNSETS(Froslass), }, #endif //P_GEN_4_CROSS_EVOS @@ -6717,7 +6717,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Spheal), ICON(Spheal, 2), - .footprint = gMonFootprint_Spheal, + FOOTPRINT(Spheal) LEARNSETS(Spheal), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_SEALEO}), }, @@ -6765,7 +6765,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Sealeo), ICON(Sealeo, 2), - .footprint = gMonFootprint_Sealeo, + FOOTPRINT(Sealeo) LEARNSETS(Sealeo), .evolutions = EVOLUTION({EVO_LEVEL, 44, SPECIES_WALREIN}), }, @@ -6813,7 +6813,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Walrein), ICON(Walrein, 0), - .footprint = gMonFootprint_Walrein, + FOOTPRINT(Walrein) LEARNSETS(Walrein), }, #endif //P_FAMILY_SPHEAL @@ -6864,7 +6864,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Clamperl), ICON(Clamperl, 0), - .footprint = gMonFootprint_Clamperl, + FOOTPRINT(Clamperl) LEARNSETS(Clamperl), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, @@ -6917,7 +6917,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Huntail), ICON(Huntail, 0), - .footprint = gMonFootprint_Huntail, + FOOTPRINT(Huntail) LEARNSETS(Huntail), }, @@ -6965,7 +6965,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Gorebyss), ICON(Gorebyss, 0), - .footprint = gMonFootprint_Gorebyss, + FOOTPRINT(Gorebyss) LEARNSETS(Gorebyss), }, #endif //P_FAMILY_CLAMPERL @@ -7018,7 +7018,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Relicanth), ICON(Relicanth, 2), - .footprint = gMonFootprint_Relicanth, + FOOTPRINT(Relicanth) LEARNSETS(Relicanth), }, #endif //P_FAMILY_RELICANTH @@ -7068,7 +7068,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_H_SPRING_REPEATED, PALETTES(Luvdisc), ICON(Luvdisc, 0), - .footprint = gMonFootprint_Luvdisc, + FOOTPRINT(Luvdisc) LEARNSETS(Luvdisc), }, #endif //P_FAMILY_LUVDISC @@ -7118,7 +7118,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Bagon), ICON(Bagon, 0), - .footprint = gMonFootprint_Bagon, + FOOTPRINT(Bagon) LEARNSETS(Bagon), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SHELGON}), }, @@ -7167,7 +7167,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Shelgon), ICON(Shelgon, 2), - .footprint = gMonFootprint_Shelgon, + FOOTPRINT(Shelgon) LEARNSETS(Shelgon), .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_SALAMENCE}), }, @@ -7186,7 +7186,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Salamence"), \ .natDexNum = NATIONAL_DEX_SALAMENCE, \ .categoryName = _("Dragon"), \ - .footprint = gMonFootprint_Salamence, \ + FOOTPRINT(Salamence) \ LEARNSETS(Salamence), \ .formSpeciesIdTable = sSalamenceFormSpeciesIdTable, \ .formChangeTable = sSalamenceFormChangeTable @@ -7310,7 +7310,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Beldum), ICON(Beldum, 0), - .footprint = gMonFootprint_Beldum, + FOOTPRINT(Beldum) LEARNSETS(Beldum), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_METANG}), }, @@ -7359,7 +7359,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Metang), ICON(Metang, 0), - .footprint = gMonFootprint_Metang, + FOOTPRINT(Metang) LEARNSETS(Metang), .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_METAGROSS}), }, @@ -7378,7 +7378,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Metagross"), \ .natDexNum = NATIONAL_DEX_METAGROSS, \ .categoryName = _("Iron Leg"), \ - .footprint = gMonFootprint_Metagross, \ + FOOTPRINT(Metagross) \ LEARNSETS(Metagross), \ .formSpeciesIdTable = sMetagrossFormSpeciesIdTable, \ .formChangeTable = sMetagrossFormChangeTable @@ -7501,7 +7501,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Regirock), ICON(Regirock, 2), - .footprint = gMonFootprint_Regirock, + FOOTPRINT(Regirock) LEARNSETS(Regirock), }, #endif //P_FAMILY_REGIROCK @@ -7551,7 +7551,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Regice), ICON(Regice, 0), - .footprint = gMonFootprint_Regice, + FOOTPRINT(Regice) LEARNSETS(Regice), }, #endif //P_FAMILY_REGICE @@ -7602,7 +7602,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Registeel), ICON(Registeel, 2), - .footprint = gMonFootprint_Registeel, + FOOTPRINT(Registeel) LEARNSETS(Registeel), }, #endif //P_FAMILY_REGISTEEL @@ -7620,7 +7620,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Latias"), \ .natDexNum = NATIONAL_DEX_LATIAS, \ .categoryName = _("Eon"), \ - .footprint = gMonFootprint_Latias, \ + FOOTPRINT(Latias) \ LEARNSETS(Latias), \ .formSpeciesIdTable = sLatiasFormSpeciesIdTable, \ .formChangeTable = sLatiasFormChangeTable, \ @@ -7716,7 +7716,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Latios"), \ .natDexNum = NATIONAL_DEX_LATIOS, \ .categoryName = _("Eon"), \ - .footprint = gMonFootprint_Latios, \ + FOOTPRINT(Latios) \ LEARNSETS(Latios), \ .formSpeciesIdTable = sLatiosFormSpeciesIdTable, \ .formChangeTable = sLatiosFormChangeTable @@ -7813,7 +7813,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .speciesName = _("Kyogre"), \ .natDexNum = NATIONAL_DEX_KYOGRE, \ .categoryName = _("Sea Basin"), \ - .footprint = gMonFootprint_Kyogre, \ + FOOTPRINT(Kyogre) \ LEARNSETS(Kyogre), \ .formSpeciesIdTable = sKyogreFormSpeciesIdTable, \ .formChangeTable = sKyogreFormChangeTable @@ -7904,7 +7904,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .cryId = CRY_GROUDON, \ .natDexNum = NATIONAL_DEX_GROUDON, \ .categoryName = _("Continent"), \ - .footprint = gMonFootprint_Groudon, \ + FOOTPRINT(Groudon) \ LEARNSETS(Groudon), \ .formSpeciesIdTable = sGroudonFormSpeciesIdTable, \ .formChangeTable = sGroudonFormChangeTable @@ -7997,7 +7997,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .cryId = CRY_RAYQUAZA, \ .natDexNum = NATIONAL_DEX_RAYQUAZA, \ .categoryName = _("Sky High"), \ - .footprint = gMonFootprint_Rayquaza, \ + FOOTPRINT(Rayquaza) \ LEARNSETS(Rayquaza), \ .formSpeciesIdTable = sRayquazaFormSpeciesIdTable, \ .formChangeTable = sRayquazaFormChangeTable, \ @@ -8122,7 +8122,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Jirachi), ICON(Jirachi, 0), - .footprint = gMonFootprint_Jirachi, + FOOTPRINT(Jirachi) LEARNSETS(Jirachi), }, #endif //P_FAMILY_JIRACHI @@ -8151,7 +8151,7 @@ const struct SpeciesInfo gSpeciesInfoGen3[] = .pokemonOffset = 0, \ .trainerScale = 290, \ .trainerOffset = 2, \ - .footprint = gMonFootprint_Deoxys, \ + FOOTPRINT(Deoxys) \ .formSpeciesIdTable = sDeoxysFormSpeciesIdTable [SPECIES_DEOXYS_NORMAL] = diff --git a/src/data/pokemon/species_info/gen_4.h b/src/data/pokemon/species_info/gen_4.h index fd2f008cd5e7..e9c95ddd7784 100644 --- a/src/data/pokemon/species_info/gen_4.h +++ b/src/data/pokemon/species_info/gen_4.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Turtwig), ICON(Turtwig, 1), - .footprint = gMonFootprint_Turtwig, + FOOTPRINT(Turtwig) LEARNSETS(Turtwig), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_GROTLE}), }, @@ -96,7 +96,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Grotle), ICON(Grotle, 1), - .footprint = gMonFootprint_Grotle, + FOOTPRINT(Grotle) LEARNSETS(Grotle), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_TORTERRA}), }, @@ -146,7 +146,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_GREEN, PALETTES(Torterra), ICON(Torterra, 1), - .footprint = gMonFootprint_Torterra, + FOOTPRINT(Torterra) LEARNSETS(Torterra), }, #endif //P_FAMILY_TURTWIG @@ -196,7 +196,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Chimchar), ICON(Chimchar, 1), - .footprint = gMonFootprint_Chimchar, + FOOTPRINT(Chimchar) LEARNSETS(Chimchar), .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_MONFERNO}), }, @@ -246,7 +246,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Monferno), ICON(Monferno, 0), - .footprint = gMonFootprint_Monferno, + FOOTPRINT(Monferno) LEARNSETS(Monferno), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_INFERNAPE}), }, @@ -296,7 +296,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Infernape), ICON(Infernape, 0), - .footprint = gMonFootprint_Infernape, + FOOTPRINT(Infernape) LEARNSETS(Infernape), }, #endif //P_FAMILY_CHIMCHAR @@ -349,7 +349,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Piplup), ICON(Piplup, 0), - .footprint = gMonFootprint_Piplup, + FOOTPRINT(Piplup) LEARNSETS(Piplup), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_PRINPLUP}), }, @@ -401,7 +401,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Prinplup), ICON(Prinplup, 0), - .footprint = gMonFootprint_Prinplup, + FOOTPRINT(Prinplup) LEARNSETS(Prinplup), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMPOLEON}), }, @@ -453,7 +453,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Empoleon), ICON(Empoleon, 0), - .footprint = gMonFootprint_Empoleon, + FOOTPRINT(Empoleon) LEARNSETS(Empoleon), }, #endif //P_FAMILY_PIPLUP @@ -504,7 +504,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Starly), ICON(Starly, 0), - .footprint = gMonFootprint_Starly, + FOOTPRINT(Starly) LEARNSETS(Starly), .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_STARAVIA}), }, @@ -554,7 +554,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Staravia), ICON(Staravia, 0), - .footprint = gMonFootprint_Staravia, + FOOTPRINT(Staravia) LEARNSETS(Staravia), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_STARAPTOR}), }, @@ -603,7 +603,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Staraptor), ICON(Staraptor, 0), - .footprint = gMonFootprint_Staraptor, + FOOTPRINT(Staraptor) LEARNSETS(Staraptor), }, #endif //P_FAMILY_STARLY @@ -654,7 +654,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Bidoof), ICON(Bidoof, 2), - .footprint = gMonFootprint_Bidoof, + FOOTPRINT(Bidoof) LEARNSETS(Bidoof), .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_BIBAREL}), }, @@ -703,7 +703,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Bibarel), ICON(Bibarel, 2), - .footprint = gMonFootprint_Bibarel, + FOOTPRINT(Bibarel) LEARNSETS(Bibarel), }, #endif //P_FAMILY_BIDOOF @@ -755,7 +755,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Kricketot), ICON(Kricketot, 2), - .footprint = gMonFootprint_Kricketot, + FOOTPRINT(Kricketot) LEARNSETS(Kricketot), .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_KRICKETUNE}), }, @@ -806,7 +806,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Kricketune), ICON(Kricketune, 2), - .footprint = gMonFootprint_Kricketune, + FOOTPRINT(Kricketune) LEARNSETS(Kricketune), }, #endif //P_FAMILY_KRICKETOT @@ -857,7 +857,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Shinx), ICON(Shinx, 0), - .footprint = gMonFootprint_Shinx, + FOOTPRINT(Shinx) LEARNSETS(Shinx), .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_LUXIO}), }, @@ -907,7 +907,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Luxio), ICON(Luxio, 0), - .footprint = gMonFootprint_Luxio, + FOOTPRINT(Luxio) LEARNSETS(Luxio), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_LUXRAY}), }, @@ -957,7 +957,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Luxray), ICON(Luxray, 0), - .footprint = gMonFootprint_Luxray, + FOOTPRINT(Luxray) LEARNSETS(Luxray), }, #endif //P_FAMILY_SHINX @@ -1006,7 +1006,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Cranidos), ICON(Cranidos, 0), - .footprint = gMonFootprint_Cranidos, + FOOTPRINT(Cranidos) LEARNSETS(Cranidos), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_RAMPARDOS}), }, @@ -1054,7 +1054,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Rampardos), ICON(Rampardos, 0), - .footprint = gMonFootprint_Rampardos, + FOOTPRINT(Rampardos) LEARNSETS(Rampardos), }, #endif //P_FAMILY_CRANIDOS @@ -1103,7 +1103,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Shieldon), ICON(Shieldon, 1), - .footprint = gMonFootprint_Shieldon, + FOOTPRINT(Shieldon) LEARNSETS(Shieldon), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_BASTIODON}), }, @@ -1151,7 +1151,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Bastiodon), ICON(Bastiodon, 1), - .footprint = gMonFootprint_Bastiodon, + FOOTPRINT(Bastiodon) LEARNSETS(Bastiodon), }, #endif //P_FAMILY_SHIELDON @@ -1188,7 +1188,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontAnimId = ANIM_V_STRETCH, \ .enemyMonElevation = 10, \ .backAnimId = BACK_ANIM_H_SHAKE, \ - .footprint = gMonFootprint_Burmy, \ + FOOTPRINT(Burmy) \ LEARNSETS(Burmy), \ .formSpeciesIdTable = sBurmyFormSpeciesIdTable, \ .formChangeTable = sBurmyFormChangeTable @@ -1276,7 +1276,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .enemyMonElevation = 8, \ .backPicYOffset = 2, \ .backAnimId = BACK_ANIM_V_SHAKE, \ - .footprint = gMonFootprint_Wormadam, \ + FOOTPRINT(Wormadam) \ .formSpeciesIdTable = sWormadamFormSpeciesIdTable [SPECIES_WORMADAM_PLANT_CLOAK] = @@ -1398,7 +1398,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Mothim), ICON(Mothim, 0), - .footprint = gMonFootprint_Mothim, + FOOTPRINT(Mothim) LEARNSETS(Mothim), }, #endif //P_FAMILY_BURMY @@ -1450,7 +1450,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = PALETTES(Combee), PALETTE_FEMALE(Combee), ICON(Combee, 0), - .footprint = gMonFootprint_Combee, + FOOTPRINT(Combee) LEARNSETS(Combee), .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 21, SPECIES_VESPIQUEN}), }, @@ -1501,7 +1501,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, PALETTES(Vespiquen), ICON(Vespiquen, 0), - .footprint = gMonFootprint_Vespiquen, + FOOTPRINT(Vespiquen) LEARNSETS(Vespiquen), }, #endif //P_FAMILY_COMBEE @@ -1551,7 +1551,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Pachirisu), ICON(Pachirisu, 0), - .footprint = gMonFootprint_Pachirisu, + FOOTPRINT(Pachirisu) LEARNSETS(Pachirisu), }, #endif //P_FAMILY_PACHIRISU @@ -1601,7 +1601,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Buizel), ICON(Buizel, 0), - .footprint = gMonFootprint_Buizel, + FOOTPRINT(Buizel) LEARNSETS(Buizel), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_FLOATZEL}), }, @@ -1650,7 +1650,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Floatzel), ICON(Floatzel, 0), - .footprint = gMonFootprint_Floatzel, + FOOTPRINT(Floatzel) LEARNSETS(Floatzel), }, #endif //P_FAMILY_BUIZEL @@ -1700,7 +1700,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Cherubi), ICON(Cherubi, 1), - .footprint = gMonFootprint_Cherubi, + FOOTPRINT(Cherubi) LEARNSETS(Cherubi), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_CHERRIM_OVERCAST}), }, @@ -1733,7 +1733,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Cherrim, \ + FOOTPRINT(Cherrim) \ LEARNSETS(Cherrim), \ .formSpeciesIdTable = sCherrimFormSpeciesIdTable, \ .formChangeTable = sCherrimFormChangeTable @@ -1811,7 +1811,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontAnimId = ANIM_V_STRETCH, \ .backPicYOffset = 8, \ .backAnimId = BACK_ANIM_H_SPRING, \ - .footprint = gMonFootprint_Shellos, \ + FOOTPRINT(Shellos) \ LEARNSETS(Shellos), \ .formSpeciesIdTable = sShellosFormSpeciesIdTable @@ -1881,7 +1881,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .frontAnimId = ANIM_CIRCULAR_STRETCH_TWICE, \ .backPicYOffset = 3, \ .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ - .footprint = gMonFootprint_Gastrodon, \ + FOOTPRINT(Gastrodon) \ LEARNSETS(Gastrodon), \ .formSpeciesIdTable = sGastrodonFormSpeciesIdTable @@ -1961,7 +1961,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Drifloon), ICON(Drifloon, 2), - .footprint = gMonFootprint_Drifloon, + FOOTPRINT(Drifloon) LEARNSETS(Drifloon), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_DRIFBLIM}), }, @@ -2010,7 +2010,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Drifblim), ICON(Drifblim, 2), - .footprint = gMonFootprint_Drifblim, + FOOTPRINT(Drifblim) LEARNSETS(Drifblim), }, #endif //P_FAMILY_DRIFLOON @@ -2059,7 +2059,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Buneary), ICON(Buneary, 2), - .footprint = gMonFootprint_Buneary, + FOOTPRINT(Buneary) LEARNSETS(Buneary), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LOPUNNY}), }, @@ -2076,7 +2076,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .speciesName = _("Lopunny"), \ .natDexNum = NATIONAL_DEX_LOPUNNY, \ .categoryName = _("Rabbit"), \ - .footprint = gMonFootprint_Lopunny, \ + FOOTPRINT(Lopunny) \ LEARNSETS(Lopunny), \ .formSpeciesIdTable = sLopunnyFormSpeciesIdTable, \ .formChangeTable = sLopunnyFormChangeTable @@ -2199,7 +2199,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Glameow), ICON(Glameow, 0), - .footprint = gMonFootprint_Glameow, + FOOTPRINT(Glameow) LEARNSETS(Glameow), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PURUGLY}), }, @@ -2247,7 +2247,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Purugly), ICON(Purugly, 0), - .footprint = gMonFootprint_Purugly, + FOOTPRINT(Purugly) LEARNSETS(Purugly), }, #endif //P_FAMILY_GLAMEOW @@ -2296,7 +2296,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Stunky), ICON(Stunky, 2), - .footprint = gMonFootprint_Stunky, + FOOTPRINT(Stunky) LEARNSETS(Stunky), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_SKUNTANK}), }, @@ -2344,7 +2344,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Skuntank), ICON(Skuntank, 2), - .footprint = gMonFootprint_Skuntank, + FOOTPRINT(Skuntank) LEARNSETS(Skuntank), }, #endif //P_FAMILY_STUNKY @@ -2395,7 +2395,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Bronzor), ICON(Bronzor, 0), - .footprint = gMonFootprint_Bronzor, + FOOTPRINT(Bronzor) LEARNSETS(Bronzor), .evolutions = EVOLUTION({EVO_LEVEL, 33, SPECIES_BRONZONG}), }, @@ -2446,7 +2446,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Bronzong), ICON(Bronzong, 0), - .footprint = gMonFootprint_Bronzong, + FOOTPRINT(Bronzong) LEARNSETS(Bronzong), }, #endif //P_FAMILY_BRONZOR @@ -2496,7 +2496,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Chatot), ICON(Chatot, 0), - .footprint = gMonFootprint_Chatot, + FOOTPRINT(Chatot) LEARNSETS(Chatot), }, #endif //P_FAMILY_CHATOT @@ -2546,7 +2546,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Spiritomb), ICON(Spiritomb, 5), - .footprint = gMonFootprint_Spiritomb, + FOOTPRINT(Spiritomb) LEARNSETS(Spiritomb), }, #endif //P_FAMILY_SPIRITOMB @@ -2597,7 +2597,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Gible), ICON(Gible, 0), - .footprint = gMonFootprint_Gible, + FOOTPRINT(Gible) LEARNSETS(Gible), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GABITE}), }, @@ -2647,7 +2647,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Gabite), ICON(Gabite, 0), - .footprint = gMonFootprint_Gabite, + FOOTPRINT(Gabite) LEARNSETS(Gabite), .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_GARCHOMP}), }, @@ -2671,7 +2671,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 1, \ .trainerScale = 326, \ .trainerOffset = 4, \ - .footprint = gMonFootprint_Garchomp, \ + FOOTPRINT(Garchomp) \ LEARNSETS(Garchomp), \ .formSpeciesIdTable = sGarchompFormSpeciesIdTable, \ .formChangeTable = sGarchompFormChangeTable @@ -2781,7 +2781,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Riolu), ICON(Riolu, 2), - .footprint = gMonFootprint_Riolu, + FOOTPRINT(Riolu) LEARNSETS(Riolu), .evolutions = EVOLUTION({EVO_FRIENDSHIP_DAY, 0, SPECIES_LUCARIO}), }, @@ -2800,7 +2800,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .speciesName = _("Lucario"), \ .natDexNum = NATIONAL_DEX_LUCARIO, \ .categoryName = _("Aura"), \ - .footprint = gMonFootprint_Lucario, \ + FOOTPRINT(Lucario) \ LEARNSETS(Lucario), \ .formSpeciesIdTable = sLucarioFormSpeciesIdTable, \ .formChangeTable = sLucarioFormChangeTable @@ -2925,7 +2925,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE ICON_FEMALE(Hippopotas, 1), #endif - .footprint = gMonFootprint_Hippopotas, + FOOTPRINT(Hippopotas) LEARNSETS(Hippopotas), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_HIPPOWDON}), }, @@ -2977,7 +2977,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = #if P_CUSTOM_GENDER_DIFF_ICONS == TRUE ICON_FEMALE(Hippowdon, 1), #endif - .footprint = gMonFootprint_Hippowdon, + FOOTPRINT(Hippowdon) LEARNSETS(Hippowdon), }, #endif //P_FAMILY_HIPPOPOTAS @@ -3027,7 +3027,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Skorupi), ICON(Skorupi, 0), - .footprint = gMonFootprint_Skorupi, + FOOTPRINT(Skorupi) LEARNSETS(Skorupi), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_DRAPION}), }, @@ -3076,7 +3076,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Drapion), ICON(Drapion, 2), - .footprint = gMonFootprint_Drapion, + FOOTPRINT(Drapion) LEARNSETS(Drapion), }, #endif //P_FAMILY_SKORUPI @@ -3128,7 +3128,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Croagunk), ICON(Croagunk, 0), - .footprint = gMonFootprint_Croagunk, + FOOTPRINT(Croagunk) LEARNSETS(Croagunk), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_TOXICROAK}), }, @@ -3179,7 +3179,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Toxicroak), ICON(Toxicroak, 0), - .footprint = gMonFootprint_Toxicroak, + FOOTPRINT(Toxicroak) LEARNSETS(Toxicroak), }, #endif //P_FAMILY_CROAGUNK @@ -3229,7 +3229,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Carnivine), ICON(Carnivine, 1), - .footprint = gMonFootprint_Carnivine, + FOOTPRINT(Carnivine) LEARNSETS(Carnivine), }, #endif //P_FAMILY_CARNIVINE @@ -3280,7 +3280,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Finneon), ICON(Finneon, 0), - .footprint = gMonFootprint_Finneon, + FOOTPRINT(Finneon) LEARNSETS(Finneon), .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_LUMINEON}), }, @@ -3330,7 +3330,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Lumineon), ICON(Lumineon, 0), - .footprint = gMonFootprint_Lumineon, + FOOTPRINT(Lumineon) LEARNSETS(Lumineon), }, #endif //P_FAMILY_FINNEON @@ -3382,7 +3382,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Snover), ICON(Snover, 1), - .footprint = gMonFootprint_Snover, + FOOTPRINT(Snover) LEARNSETS(Snover), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_ABOMASNOW}), }, @@ -3402,7 +3402,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .speciesName = _("Abomasnow"), \ .natDexNum = NATIONAL_DEX_ABOMASNOW, \ .categoryName = _("Frost Tree"), \ - .footprint = gMonFootprint_Abomasnow, \ + FOOTPRINT(Abomasnow) \ LEARNSETS(Abomasnow), \ .formSpeciesIdTable = sAbomasnowFormSpeciesIdTable, \ .formChangeTable = sAbomasnowFormChangeTable @@ -3502,7 +3502,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .pokemonOffset = 13, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Rotom, \ + FOOTPRINT(Rotom) \ LEARNSETS(Rotom), \ .formSpeciesIdTable = sRotomFormSpeciesIdTable, \ .formChangeTable = sRotomFormChangeTable @@ -3704,7 +3704,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Uxie), ICON(Uxie, 0), - .footprint = gMonFootprint_Uxie, + FOOTPRINT(Uxie) LEARNSETS(Uxie), }, #endif //P_FAMILY_UXIE @@ -3757,7 +3757,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Mesprit), ICON(Mesprit, 0), - .footprint = gMonFootprint_Mesprit, + FOOTPRINT(Mesprit) LEARNSETS(Mesprit), }, #endif //P_FAMILY_MESPRIT @@ -3809,7 +3809,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Azelf), ICON(Azelf, 0), - .footprint = gMonFootprint_Azelf, + FOOTPRINT(Azelf) LEARNSETS(Azelf), }, #endif //P_FAMILY_AZELF @@ -3831,7 +3831,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .cryId = CRY_DIALGA, \ .natDexNum = NATIONAL_DEX_DIALGA, \ .categoryName = _("Temporal"), \ - .footprint = gMonFootprint_Dialga, \ + FOOTPRINT(Dialga) \ LEARNSETS(Dialga), \ .formSpeciesIdTable = sDialgaFormSpeciesIdTable, \ .formChangeTable = sDialgaFormChangeTable, \ @@ -3917,7 +3917,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .cryId = CRY_PALKIA, \ .natDexNum = NATIONAL_DEX_PALKIA, \ .categoryName = _("Spatial"), \ - .footprint = gMonFootprint_Palkia, \ + FOOTPRINT(Palkia) \ LEARNSETS(Palkia), \ .formSpeciesIdTable = sPalkiaFormSpeciesIdTable, \ .formChangeTable = sPalkiaFormChangeTable, \ @@ -4031,7 +4031,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Heatran), ICON(Heatran, 0), - .footprint = gMonFootprint_Heatran, + FOOTPRINT(Heatran) LEARNSETS(Heatran), }, #endif //P_FAMILY_HEATRAN @@ -4081,7 +4081,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Regigigas), ICON(Regigigas, 0), - .footprint = gMonFootprint_Regigigas, + FOOTPRINT(Regigigas) LEARNSETS(Regigigas), }, #endif //P_FAMILY_REGIGIGAS @@ -4102,7 +4102,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .cryId = CRY_GIRATINA, \ .natDexNum = NATIONAL_DEX_GIRATINA, \ .categoryName = _("Renegade"), \ - .footprint = gMonFootprint_Giratina, \ + FOOTPRINT(Giratina) \ LEARNSETS(Giratina), \ .formSpeciesIdTable = sGiratinaFormSpeciesIdTable, \ .formChangeTable = sGiratinaFormChangeTable, \ @@ -4220,7 +4220,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Cresselia), ICON(Cresselia, 0), - .footprint = gMonFootprint_Cresselia, + FOOTPRINT(Cresselia) LEARNSETS(Cresselia), }, #endif //P_FAMILY_CRESSELIA @@ -4271,7 +4271,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Phione), ICON(Phione, 0), - .footprint = gMonFootprint_Phione, + FOOTPRINT(Phione) LEARNSETS(Phione), }, @@ -4320,7 +4320,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Manaphy), ICON(Manaphy, 0), - .footprint = gMonFootprint_Manaphy, + FOOTPRINT(Manaphy) LEARNSETS(Manaphy), }, #endif //P_FAMILY_MANAPHY @@ -4372,7 +4372,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Darkrai), ICON(Darkrai, 0), - .footprint = gMonFootprint_Darkrai, + FOOTPRINT(Darkrai) LEARNSETS(Darkrai), }, #endif //P_FAMILY_DARKRAI @@ -4393,7 +4393,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .speciesName = _("Shaymin"), \ .natDexNum = NATIONAL_DEX_SHAYMIN, \ .categoryName = _("Gratitude"), \ - .footprint = gMonFootprint_Shaymin, \ + FOOTPRINT(Shaymin) \ .formSpeciesIdTable = sShayminFormSpeciesIdTable, \ .formChangeTable = sShayminFormChangeTable, \ .isMythical = TRUE @@ -4510,7 +4510,7 @@ const struct SpeciesInfo gSpeciesInfoGen4[] = .backAnimId = BACK_ANIM_GROW_STUTTER, \ PALETTES(Arceus ##typeName), \ ICON(Arceus, 1), \ - .footprint = gMonFootprint_Arceus, \ + FOOTPRINT(Arceus) \ LEARNSETS(Arceus), \ .formSpeciesIdTable = sArceusFormSpeciesIdTable, \ .formChangeTable = sArceusFormChangeTable, \ diff --git a/src/data/pokemon/species_info/gen_5.h b/src/data/pokemon/species_info/gen_5.h index 7553f1c17a43..adaae4bd8aa7 100644 --- a/src/data/pokemon/species_info/gen_5.h +++ b/src/data/pokemon/species_info/gen_5.h @@ -48,7 +48,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Victini), ICON(Victini, 0), - .footprint = gMonFootprint_Victini, + FOOTPRINT(Victini) LEARNSETS(Victini), }, #endif //P_FAMILY_VICTINI @@ -97,7 +97,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Snivy), ICON(Snivy, 1), - .footprint = gMonFootprint_Snivy, + FOOTPRINT(Snivy) LEARNSETS(Snivy), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_SERVINE}), }, @@ -145,7 +145,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Servine), ICON(Servine, 1), - .footprint = gMonFootprint_Servine, + FOOTPRINT(Servine) LEARNSETS(Servine), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SERPERIOR}), }, @@ -193,7 +193,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Serperior), ICON(Serperior, 1), - .footprint = gMonFootprint_Serperior, + FOOTPRINT(Serperior) LEARNSETS(Serperior), }, #endif //P_FAMILY_SNIVY @@ -242,7 +242,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Tepig), ICON(Tepig, 0), - .footprint = gMonFootprint_Tepig, + FOOTPRINT(Tepig) LEARNSETS(Tepig), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_PIGNITE}), }, @@ -290,7 +290,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Pignite), ICON(Pignite, 0), - .footprint = gMonFootprint_Pignite, + FOOTPRINT(Pignite) LEARNSETS(Pignite), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_EMBOAR}), }, @@ -339,7 +339,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Emboar), ICON(Emboar, 0), - .footprint = gMonFootprint_Emboar, + FOOTPRINT(Emboar) LEARNSETS(Emboar), }, #endif //P_FAMILY_TEPIG @@ -388,7 +388,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Oshawott), ICON(Oshawott, 0), - .footprint = gMonFootprint_Oshawott, + FOOTPRINT(Oshawott) LEARNSETS(Oshawott), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DEWOTT}), }, @@ -436,7 +436,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Dewott), ICON(Dewott, 0), - .footprint = gMonFootprint_Dewott, + FOOTPRINT(Dewott) LEARNSETS(Dewott), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SAMUROTT}, {EVO_NONE, 0, SPECIES_SAMUROTT_HISUIAN}), @@ -460,7 +460,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, \ .trainerScale = 271, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Samurott, \ + FOOTPRINT(Samurott) \ .formSpeciesIdTable = sSamurottFormSpeciesIdTable [SPECIES_SAMUROTT] = @@ -571,7 +571,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Patrat), ICON(Patrat, 2), - .footprint = gMonFootprint_Patrat, + FOOTPRINT(Patrat) LEARNSETS(Patrat), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_WATCHOG}), }, @@ -619,7 +619,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Watchog), ICON(Watchog, 2), - .footprint = gMonFootprint_Watchog, + FOOTPRINT(Watchog) LEARNSETS(Watchog), }, #endif //P_FAMILY_PATRAT @@ -668,7 +668,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Lillipup), ICON(Lillipup, 2), - .footprint = gMonFootprint_Lillipup, + FOOTPRINT(Lillipup) LEARNSETS(Lillipup), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_HERDIER}), }, @@ -716,7 +716,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Herdier), ICON(Herdier, 2), - .footprint = gMonFootprint_Herdier, + FOOTPRINT(Herdier) LEARNSETS(Herdier), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_STOUTLAND}), }, @@ -764,7 +764,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Stoutland), ICON(Stoutland, 2), - .footprint = gMonFootprint_Stoutland, + FOOTPRINT(Stoutland) LEARNSETS(Stoutland), }, #endif //P_FAMILY_LILLIPUP @@ -813,7 +813,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Purrloin), ICON(Purrloin, 0), - .footprint = gMonFootprint_Purrloin, + FOOTPRINT(Purrloin) LEARNSETS(Purrloin), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_LIEPARD}), }, @@ -861,7 +861,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Liepard), ICON(Liepard, 0), - .footprint = gMonFootprint_Liepard, + FOOTPRINT(Liepard) LEARNSETS(Liepard), }, #endif //P_FAMILY_PURRLOIN @@ -910,7 +910,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Pansage), ICON(Pansage, 1), - .footprint = gMonFootprint_Pansage, + FOOTPRINT(Pansage) LEARNSETS(Pansage), .evolutions = EVOLUTION({EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SIMISAGE}), }, @@ -958,7 +958,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Simisage), ICON(Simisage, 1), - .footprint = gMonFootprint_Simisage, + FOOTPRINT(Simisage) LEARNSETS(Simisage), }, #endif //P_FAMILY_PANSAGE @@ -1008,7 +1008,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Pansear), ICON(Pansear, 2), - .footprint = gMonFootprint_Pansear, + FOOTPRINT(Pansear) LEARNSETS(Pansear), .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SIMISEAR}), }, @@ -1057,7 +1057,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Simisear), ICON(Simisear, 2), - .footprint = gMonFootprint_Simisear, + FOOTPRINT(Simisear) LEARNSETS(Simisear), }, #endif //P_FAMILY_PANSEAR @@ -1106,7 +1106,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Panpour), ICON(Panpour, 2), - .footprint = gMonFootprint_Panpour, + FOOTPRINT(Panpour) LEARNSETS(Panpour), .evolutions = EVOLUTION({EVO_ITEM, ITEM_WATER_STONE, SPECIES_SIMIPOUR}), }, @@ -1154,7 +1154,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Simipour), ICON(Simipour, 2), - .footprint = gMonFootprint_Simipour, + FOOTPRINT(Simipour) LEARNSETS(Simipour), }, #endif //P_FAMILY_PANPOUR @@ -1204,7 +1204,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Munna), ICON(Munna, 0), - .footprint = gMonFootprint_Munna, + FOOTPRINT(Munna) LEARNSETS(Munna), .evolutions = EVOLUTION({EVO_ITEM, ITEM_MOON_STONE, SPECIES_MUSHARNA}), }, @@ -1253,7 +1253,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Musharna), ICON(Musharna, 0), - .footprint = gMonFootprint_Musharna, + FOOTPRINT(Musharna) LEARNSETS(Musharna), }, #endif //P_FAMILY_MUNNA @@ -1302,7 +1302,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Pidove), ICON(Pidove, 0), - .footprint = gMonFootprint_Pidove, + FOOTPRINT(Pidove) LEARNSETS(Pidove), .evolutions = EVOLUTION({EVO_LEVEL, 21, SPECIES_TRANQUILL}), }, @@ -1350,7 +1350,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Tranquill), ICON(Tranquill, 0), - .footprint = gMonFootprint_Tranquill, + FOOTPRINT(Tranquill) LEARNSETS(Tranquill), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_UNFEZANT}), }, @@ -1402,7 +1402,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = PALETTE_FEMALE(Unfezant), ICON(Unfezant, 1), ICON_FEMALE(Unfezant, 1), - .footprint = gMonFootprint_Unfezant, + FOOTPRINT(Unfezant) LEARNSETS(Unfezant), }, #endif //P_FAMILY_PIDOVE @@ -1451,7 +1451,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Blitzle), ICON(Blitzle, 2), - .footprint = gMonFootprint_Blitzle, + FOOTPRINT(Blitzle) LEARNSETS(Blitzle), .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_ZEBSTRIKA}), }, @@ -1499,7 +1499,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Zebstrika), ICON(Zebstrika, 2), - .footprint = gMonFootprint_Zebstrika, + FOOTPRINT(Zebstrika) LEARNSETS(Zebstrika), }, #endif //P_FAMILY_BLITZLE @@ -1550,7 +1550,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Roggenrola), ICON(Roggenrola, 2), - .footprint = gMonFootprint_Roggenrola, + FOOTPRINT(Roggenrola) LEARNSETS(Roggenrola), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLDORE}), }, @@ -1601,7 +1601,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Boldore), ICON(Boldore, 0), - .footprint = gMonFootprint_Boldore, + FOOTPRINT(Boldore) LEARNSETS(Boldore), .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_GIGALITH}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_GIGALITH}), @@ -1652,7 +1652,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Gigalith), ICON(Gigalith, 0), - .footprint = gMonFootprint_Gigalith, + FOOTPRINT(Gigalith) LEARNSETS(Gigalith), }, #endif //P_FAMILY_ROGGENROLA @@ -1702,7 +1702,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Woobat), ICON(Woobat, 0), - .footprint = gMonFootprint_Woobat, + FOOTPRINT(Woobat) LEARNSETS(Woobat), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SWOOBAT}), }, @@ -1751,7 +1751,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Swoobat), ICON(Swoobat, 0), - .footprint = gMonFootprint_Swoobat, + FOOTPRINT(Swoobat) LEARNSETS(Swoobat), }, #endif //P_FAMILY_WOOBAT @@ -1801,7 +1801,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Drilbur), ICON(Drilbur, 0), - .footprint = gMonFootprint_Drilbur, + FOOTPRINT(Drilbur) LEARNSETS(Drilbur), .evolutions = EVOLUTION({EVO_LEVEL, 31, SPECIES_EXCADRILL}), }, @@ -1850,7 +1850,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Excadrill), ICON(Excadrill, 0), - .footprint = gMonFootprint_Excadrill, + FOOTPRINT(Excadrill) LEARNSETS(Excadrill), }, #endif //P_FAMILY_DRILBUR @@ -1868,7 +1868,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .speciesName = _("Audino"), \ .natDexNum = NATIONAL_DEX_AUDINO, \ .categoryName = _("Hearing"), \ - .footprint = gMonFootprint_Audino, \ + FOOTPRINT(Audino) \ LEARNSETS(Audino), \ .formSpeciesIdTable = sAudinoFormSpeciesIdTable, \ .formChangeTable = sAudinoFormChangeTable @@ -1994,7 +1994,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Timburr), ICON(Timburr, 1), - .footprint = gMonFootprint_Timburr, + FOOTPRINT(Timburr) LEARNSETS(Timburr), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_GURDURR}), }, @@ -2042,7 +2042,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Gurdurr), ICON(Gurdurr, 1), - .footprint = gMonFootprint_Gurdurr, + FOOTPRINT(Gurdurr) LEARNSETS(Gurdurr), .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_CONKELDURR}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_CONKELDURR}), @@ -2091,7 +2091,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Conkeldurr), ICON(Conkeldurr, 1), - .footprint = gMonFootprint_Conkeldurr, + FOOTPRINT(Conkeldurr) LEARNSETS(Conkeldurr), }, #endif //P_FAMILY_TIMBURR @@ -2140,7 +2140,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SPRING, PALETTES(Tympole), ICON(Tympole, 2), - .footprint = gMonFootprint_Tympole, + FOOTPRINT(Tympole) LEARNSETS(Tympole), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_PALPITOAD}), }, @@ -2188,7 +2188,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Palpitoad), ICON(Palpitoad, 2), - .footprint = gMonFootprint_Palpitoad, + FOOTPRINT(Palpitoad) LEARNSETS(Palpitoad), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SEISMITOAD}), }, @@ -2236,7 +2236,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Seismitoad), ICON(Seismitoad, 0), - .footprint = gMonFootprint_Seismitoad, + FOOTPRINT(Seismitoad) LEARNSETS(Seismitoad), }, #endif //P_FAMILY_TYMPOLE @@ -2286,7 +2286,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Throh), ICON(Throh, 0), - .footprint = gMonFootprint_Throh, + FOOTPRINT(Throh) LEARNSETS(Throh), }, #endif //P_FAMILY_THROH @@ -2337,7 +2337,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Sawk), ICON(Sawk, 0), - .footprint = gMonFootprint_Sawk, + FOOTPRINT(Sawk) LEARNSETS(Sawk), }, #endif //P_FAMILY_SAWK @@ -2387,7 +2387,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Sewaddle), ICON(Sewaddle, 1), - .footprint = gMonFootprint_Sewaddle, + FOOTPRINT(Sewaddle) LEARNSETS(Sewaddle), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_SWADLOON}), }, @@ -2436,7 +2436,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Swadloon), ICON(Swadloon, 1), - .footprint = gMonFootprint_Swadloon, + FOOTPRINT(Swadloon) LEARNSETS(Swadloon), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_LEAVANNY}), }, @@ -2485,7 +2485,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Leavanny), ICON(Leavanny, 1), - .footprint = gMonFootprint_Leavanny, + FOOTPRINT(Leavanny) LEARNSETS(Leavanny), }, #endif //P_FAMILY_SEWADDLE @@ -2539,7 +2539,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Venipede), ICON(Venipede, 1), - .footprint = gMonFootprint_Venipede, + FOOTPRINT(Venipede) LEARNSETS(Venipede), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_WHIRLIPEDE}), }, @@ -2592,7 +2592,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Whirlipede), ICON(Whirlipede, 2), - .footprint = gMonFootprint_Whirlipede, + FOOTPRINT(Whirlipede) LEARNSETS(Whirlipede), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_SCOLIPEDE}), }, @@ -2645,7 +2645,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Scolipede), ICON(Scolipede, 2), - .footprint = gMonFootprint_Scolipede, + FOOTPRINT(Scolipede) LEARNSETS(Scolipede), }, #endif //P_FAMILY_VENIPEDE @@ -2701,7 +2701,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Cottonee), ICON(Cottonee, 1), - .footprint = gMonFootprint_Cottonee, + FOOTPRINT(Cottonee) LEARNSETS(Cottonee), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_WHIMSICOTT}), }, @@ -2750,7 +2750,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Whimsicott), ICON(Whimsicott, 1), - .footprint = gMonFootprint_Whimsicott, + FOOTPRINT(Whimsicott) LEARNSETS(Whimsicott), }, #endif //P_FAMILY_COTTONEE @@ -2801,7 +2801,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Petilil), ICON(Petilil, 1), - .footprint = gMonFootprint_Petilil, + FOOTPRINT(Petilil) LEARNSETS(Petilil), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_LILLIGANT}, {EVO_NONE, 0, SPECIES_LILLIGANT_HISUIAN}), @@ -2821,7 +2821,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .speciesName = _("Lilligant"), \ .cryId = CRY_LILLIGANT, \ .natDexNum = NATIONAL_DEX_LILLIGANT, \ - .footprint = gMonFootprint_Lilligant, \ + FOOTPRINT(Lilligant) \ .formSpeciesIdTable = sLilligantFormSpeciesIdTable [SPECIES_LILLIGANT] = @@ -2929,7 +2929,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .trainerScale = 257, \ .trainerOffset = 0, \ .enemyMonElevation = 6, \ - .footprint = gMonFootprint_Basculin, \ + FOOTPRINT(Basculin) \ .formSpeciesIdTable = sBasculinFormSpeciesIdTable [SPECIES_BASCULIN_RED_STRIPED] = @@ -3033,7 +3033,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .formSpeciesIdTable = sBasculegionFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Basculegion, + //FOOTPRINT(Basculegion) [SPECIES_BASCULEGION_MALE] = { @@ -3123,7 +3123,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Sandile), ICON(Sandile, 1), - .footprint = gMonFootprint_Sandile, + FOOTPRINT(Sandile) LEARNSETS(Sandile), .evolutions = EVOLUTION({EVO_LEVEL, 29, SPECIES_KROKOROK}), }, @@ -3172,7 +3172,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Krokorok), ICON(Krokorok, 1), - .footprint = gMonFootprint_Krokorok, + FOOTPRINT(Krokorok) LEARNSETS(Krokorok), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_KROOKODILE}), }, @@ -3221,7 +3221,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Krookodile), ICON(Krookodile, 0), - .footprint = gMonFootprint_Krookodile, + FOOTPRINT(Krookodile) LEARNSETS(Krookodile), }, #endif //P_FAMILY_SANDILE @@ -3247,7 +3247,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .cryId = CRY_DARUMAKA, \ .natDexNum = NATIONAL_DEX_DARUMAKA, \ .categoryName = _("Zen Charm"), \ - .footprint = gMonFootprint_Darumaka, \ + FOOTPRINT(Darumaka) \ .formSpeciesIdTable = sDarumakaFormSpeciesIdTable [SPECIES_DARUMAKA] = @@ -3289,7 +3289,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .speciesName = _("Darmanitan"), \ .cryId = CRY_DARMANITAN, \ .natDexNum = NATIONAL_DEX_DARMANITAN, \ - .footprint = gMonFootprint_Darmanitan, \ + FOOTPRINT(Darmanitan) \ .formSpeciesIdTable = sDarmanitanFormSpeciesIdTable #define DARMANITAN_STANDARD_MISC_INFO \ @@ -3510,7 +3510,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Maractus), ICON(Maractus, 1), - .footprint = gMonFootprint_Maractus, + FOOTPRINT(Maractus) LEARNSETS(Maractus), }, #endif //P_FAMILY_MARACTUS @@ -3560,7 +3560,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Dwebble), ICON(Dwebble, 0), - .footprint = gMonFootprint_Dwebble, + FOOTPRINT(Dwebble) LEARNSETS(Dwebble), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_CRUSTLE}), }, @@ -3609,7 +3609,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Crustle), ICON(Crustle, 2), - .footprint = gMonFootprint_Crustle, + FOOTPRINT(Crustle) LEARNSETS(Crustle), }, #endif //P_FAMILY_DWEBBLE @@ -3659,7 +3659,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Scraggy), ICON(Scraggy, 2), - .footprint = gMonFootprint_Scraggy, + FOOTPRINT(Scraggy) LEARNSETS(Scraggy), .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_SCRAFTY}), }, @@ -3709,7 +3709,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Scrafty), ICON(Scrafty, 0), - .footprint = gMonFootprint_Scrafty, + FOOTPRINT(Scrafty) LEARNSETS(Scrafty), }, #endif //P_FAMILY_SCRAGGY @@ -3759,7 +3759,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Sigilyph), ICON(Sigilyph, 0), - .footprint = gMonFootprint_Sigilyph, + FOOTPRINT(Sigilyph) LEARNSETS(Sigilyph), }, #endif //P_FAMILY_SIGILYPH @@ -3785,7 +3785,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 13, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Yamask, \ + FOOTPRINT(Yamask) \ .formSpeciesIdTable = sYamaskFormSpeciesIdTable [SPECIES_YAMASK] = @@ -3863,7 +3863,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Cofagrigus), ICON(Cofagrigus, 0), - .footprint = gMonFootprint_Cofagrigus, + FOOTPRINT(Cofagrigus) LEARNSETS(Cofagrigus), }, @@ -3942,7 +3942,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Runerigus), ICON(Runerigus, 2), - .footprint = gMonFootprint_Runerigus, + FOOTPRINT(Runerigus) LEARNSETS(Runerigus), }, #endif //P_GALARIAN_FORMS @@ -3992,7 +3992,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Tirtouga), ICON(Tirtouga, 2), - .footprint = gMonFootprint_Tirtouga, + FOOTPRINT(Tirtouga) LEARNSETS(Tirtouga), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CARRACOSTA}), }, @@ -4040,7 +4040,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Carracosta), ICON(Carracosta, 2), - .footprint = gMonFootprint_Carracosta, + FOOTPRINT(Carracosta) LEARNSETS(Carracosta), }, #endif //P_FAMILY_TIRTOUGA @@ -4089,7 +4089,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Archen), ICON(Archen, 0), - .footprint = gMonFootprint_Archen, + FOOTPRINT(Archen) LEARNSETS(Archen), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_ARCHEOPS}), }, @@ -4138,7 +4138,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Archeops), ICON(Archeops, 0), - .footprint = gMonFootprint_Archeops, + FOOTPRINT(Archeops) LEARNSETS(Archeops), }, #endif //P_FAMILY_ARCHEN @@ -4188,7 +4188,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Trubbish), ICON(Trubbish, 1), - .footprint = gMonFootprint_Trubbish, + FOOTPRINT(Trubbish) LEARNSETS(Trubbish), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GARBODOR}), }, @@ -4218,7 +4218,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .cryId = CRY_GARBODOR, \ .natDexNum = NATIONAL_DEX_GARBODOR, \ .categoryName = _("Trash Heap"), \ - .footprint = gMonFootprint_Garbodor, \ + FOOTPRINT(Garbodor) \ LEARNSETS(Garbodor), \ .formSpeciesIdTable = sGarbodorFormSpeciesIdTable, \ .formChangeTable = sGarbodorFormChangeTable @@ -4298,7 +4298,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Zorua, \ + FOOTPRINT(Zorua) \ .formSpeciesIdTable = sZoruaFormSpeciesIdTable #define ZOROARK_MISC_INFO \ @@ -4320,7 +4320,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 1, \ .trainerScale = 296, \ .trainerOffset = 1, \ - .footprint = gMonFootprint_Zoroark, \ + FOOTPRINT(Zoroark) \ .formSpeciesIdTable = sZoroarkFormSpeciesIdTable [SPECIES_ZORUA] = @@ -4488,7 +4488,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Minccino), ICON(Minccino, 0), - .footprint = gMonFootprint_Minccino, + FOOTPRINT(Minccino) LEARNSETS(Minccino), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SHINY_STONE, SPECIES_CINCCINO}), }, @@ -4537,7 +4537,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Cinccino), ICON(Cinccino, 0), - .footprint = gMonFootprint_Cinccino, + FOOTPRINT(Cinccino) LEARNSETS(Cinccino), }, #endif //P_FAMILY_MINCCINO @@ -4586,7 +4586,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Gothita), ICON(Gothita, 2), - .footprint = gMonFootprint_Gothita, + FOOTPRINT(Gothita) LEARNSETS(Gothita), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOTHORITA}), }, @@ -4634,7 +4634,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Gothorita), ICON(Gothorita, 2), - .footprint = gMonFootprint_Gothorita, + FOOTPRINT(Gothorita) LEARNSETS(Gothorita), .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_GOTHITELLE}), }, @@ -4682,7 +4682,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Gothitelle), ICON(Gothitelle, 2), - .footprint = gMonFootprint_Gothitelle, + FOOTPRINT(Gothitelle) LEARNSETS(Gothitelle), }, #endif //P_FAMILY_GOTHITA @@ -4733,7 +4733,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Solosis), ICON(Solosis, 1), - .footprint = gMonFootprint_Solosis, + FOOTPRINT(Solosis) LEARNSETS(Solosis), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_DUOSION}), }, @@ -4782,7 +4782,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Duosion), ICON(Duosion, 1), - .footprint = gMonFootprint_Duosion, + FOOTPRINT(Duosion) LEARNSETS(Duosion), .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_REUNICLUS}), }, @@ -4831,7 +4831,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Reuniclus), ICON(Reuniclus, 1), - .footprint = gMonFootprint_Reuniclus, + FOOTPRINT(Reuniclus) LEARNSETS(Reuniclus), }, #endif //P_FAMILY_SOLOSIS @@ -4880,7 +4880,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Ducklett), ICON(Ducklett, 0), - .footprint = gMonFootprint_Ducklett, + FOOTPRINT(Ducklett) LEARNSETS(Ducklett), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_SWANNA}), }, @@ -4928,7 +4928,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Swanna), ICON(Swanna, 2), - .footprint = gMonFootprint_Swanna, + FOOTPRINT(Swanna) LEARNSETS(Swanna), }, #endif //P_FAMILY_DUCKLETT @@ -4978,7 +4978,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Vanillite), ICON(Vanillite, 0), - .footprint = gMonFootprint_Vanillite, + FOOTPRINT(Vanillite) LEARNSETS(Vanillite), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_VANILLISH}), }, @@ -5027,7 +5027,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Vanillish), ICON(Vanillish, 2), - .footprint = gMonFootprint_Vanillish, + FOOTPRINT(Vanillish) LEARNSETS(Vanillish), .evolutions = EVOLUTION({EVO_LEVEL, 47, SPECIES_VANILLUXE}), }, @@ -5076,7 +5076,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Vanilluxe), ICON(Vanilluxe, 2), - .footprint = gMonFootprint_Vanilluxe, + FOOTPRINT(Vanilluxe) LEARNSETS(Vanilluxe), }, #endif //P_FAMILY_VANILLITE @@ -5116,7 +5116,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = BACK_PIC(Deerling, 48, 56), \ .backPicYOffset = 9, \ .backAnimId = BACK_ANIM_H_SLIDE, \ - .footprint = gMonFootprint_Deerling, \ + FOOTPRINT(Deerling) \ LEARNSETS(Deerling), \ .formSpeciesIdTable = sDeerlingFormSpeciesIdTable @@ -5206,7 +5206,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, \ .backPicYOffset = 5, \ .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, \ - .footprint = gMonFootprint_Sawsbuck, \ + FOOTPRINT(Sawsbuck) \ LEARNSETS(Sawsbuck), \ .formSpeciesIdTable = sSawsbuckFormSpeciesIdTable @@ -5313,7 +5313,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Emolga), ICON(Emolga, 2), - .footprint = gMonFootprint_Emolga, + FOOTPRINT(Emolga) LEARNSETS(Emolga), }, #endif //P_FAMILY_EMOLGA @@ -5362,7 +5362,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Karrablast), ICON(Karrablast, 0), - .footprint = gMonFootprint_Karrablast, + FOOTPRINT(Karrablast) LEARNSETS(Karrablast), .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_SHELMET, SPECIES_ESCAVALIER}), }, @@ -5410,7 +5410,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Escavalier), ICON(Escavalier, 0), - .footprint = gMonFootprint_Escavalier, + FOOTPRINT(Escavalier) LEARNSETS(Escavalier), }, #endif //P_FAMILY_KARRABLAST @@ -5461,7 +5461,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Foongus), ICON(Foongus, 0), - .footprint = gMonFootprint_Foongus, + FOOTPRINT(Foongus) LEARNSETS(Foongus), .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_AMOONGUSS}), }, @@ -5512,7 +5512,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Amoonguss), ICON(Amoonguss, 1), - .footprint = gMonFootprint_Amoonguss, + FOOTPRINT(Amoonguss) LEARNSETS(Amoonguss), }, #endif //P_FAMILY_FOONGUS @@ -5565,7 +5565,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = PALETTE_FEMALE(Frillish), ICON(Frillish, 0), ICON_FEMALE(Frillish, 1), - .footprint = gMonFootprint_Frillish, + FOOTPRINT(Frillish) LEARNSETS(Frillish), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_JELLICENT}), }, @@ -5617,7 +5617,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = PALETTE_FEMALE(Jellicent), ICON(Jellicent, 0), ICON_FEMALE(Jellicent, 1), - .footprint = gMonFootprint_Jellicent, + FOOTPRINT(Jellicent) LEARNSETS(Jellicent), }, #endif //P_FAMILY_FRILLISH @@ -5666,7 +5666,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Alomomola), ICON(Alomomola, 0), - .footprint = gMonFootprint_Alomomola, + FOOTPRINT(Alomomola) LEARNSETS(Alomomola), }, #endif //P_FAMILY_ALOMOMOLA @@ -5715,7 +5715,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Joltik), ICON(Joltik, 0), - .footprint = gMonFootprint_Joltik, + FOOTPRINT(Joltik) LEARNSETS(Joltik), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GALVANTULA}), }, @@ -5763,7 +5763,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Galvantula), ICON(Galvantula, 2), - .footprint = gMonFootprint_Galvantula, + FOOTPRINT(Galvantula) LEARNSETS(Galvantula), }, #endif //P_FAMILY_JOLTIK @@ -5813,7 +5813,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Ferroseed), ICON(Ferroseed, 1), - .footprint = gMonFootprint_Ferroseed, + FOOTPRINT(Ferroseed) LEARNSETS(Ferroseed), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_FERROTHORN}), }, @@ -5863,7 +5863,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Ferrothorn), ICON(Ferrothorn, 1), - .footprint = gMonFootprint_Ferrothorn, + FOOTPRINT(Ferrothorn) LEARNSETS(Ferrothorn), }, #endif //P_FAMILY_FERROSEED @@ -5914,7 +5914,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Klink), ICON(Klink, 0), - .footprint = gMonFootprint_Klink, + FOOTPRINT(Klink) LEARNSETS(Klink), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_KLANG}), }, @@ -5964,7 +5964,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Klang), ICON(Klang, 0), - .footprint = gMonFootprint_Klang, + FOOTPRINT(Klang) LEARNSETS(Klang), .evolutions = EVOLUTION({EVO_LEVEL, 49, SPECIES_KLINKLANG}), }, @@ -6014,7 +6014,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, PALETTES(Klinklang), ICON(Klinklang, 0), - .footprint = gMonFootprint_Klinklang, + FOOTPRINT(Klinklang) LEARNSETS(Klinklang), }, #endif //P_FAMILY_KLINK @@ -6064,7 +6064,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Tynamo), ICON(Tynamo, 0), - .footprint = gMonFootprint_Tynamo, + FOOTPRINT(Tynamo) LEARNSETS(Tynamo), .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_EELEKTRIK}), }, @@ -6113,7 +6113,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Eelektrik), ICON(Eelektrik, 0), - .footprint = gMonFootprint_Eelektrik, + FOOTPRINT(Eelektrik) LEARNSETS(Eelektrik), .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_EELEKTROSS}), }, @@ -6162,7 +6162,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Eelektross), ICON(Eelektross, 0), - .footprint = gMonFootprint_Eelektross, + FOOTPRINT(Eelektross) LEARNSETS(Eelektross), }, #endif //P_FAMILY_TYNAMO @@ -6211,7 +6211,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Elgyem), ICON(Elgyem, 0), - .footprint = gMonFootprint_Elgyem, + FOOTPRINT(Elgyem) LEARNSETS(Elgyem), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_BEHEEYEM}), }, @@ -6259,7 +6259,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Beheeyem), ICON(Beheeyem, 2), - .footprint = gMonFootprint_Beheeyem, + FOOTPRINT(Beheeyem) LEARNSETS(Beheeyem), }, #endif //P_FAMILY_ELGYEM @@ -6313,7 +6313,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Litwick), ICON(Litwick, 2), - .footprint = gMonFootprint_Litwick, + FOOTPRINT(Litwick) LEARNSETS(Litwick), .evolutions = EVOLUTION({EVO_LEVEL, 41, SPECIES_LAMPENT}), }, @@ -6366,7 +6366,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Lampent), ICON(Lampent, 2), - .footprint = gMonFootprint_Lampent, + FOOTPRINT(Lampent) LEARNSETS(Lampent), .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_CHANDELURE}), }, @@ -6419,7 +6419,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Chandelure), ICON(Chandelure, 2), - .footprint = gMonFootprint_Chandelure, + FOOTPRINT(Chandelure) LEARNSETS(Chandelure), }, #endif //P_FAMILY_LITWICK @@ -6468,7 +6468,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Axew), ICON(Axew, 1), - .footprint = gMonFootprint_Axew, + FOOTPRINT(Axew) LEARNSETS(Axew), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_FRAXURE}), }, @@ -6516,7 +6516,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Fraxure), ICON(Fraxure, 1), - .footprint = gMonFootprint_Fraxure, + FOOTPRINT(Fraxure) LEARNSETS(Fraxure), .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_HAXORUS}), }, @@ -6564,7 +6564,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Haxorus), ICON(Haxorus, 2), - .footprint = gMonFootprint_Haxorus, + FOOTPRINT(Haxorus) LEARNSETS(Haxorus), }, #endif //P_FAMILY_AXEW @@ -6613,7 +6613,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Cubchoo), ICON(Cubchoo, 0), - .footprint = gMonFootprint_Cubchoo, + FOOTPRINT(Cubchoo) LEARNSETS(Cubchoo), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_BEARTIC}), }, @@ -6661,7 +6661,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Beartic), ICON(Beartic, 0), - .footprint = gMonFootprint_Beartic, + FOOTPRINT(Beartic) LEARNSETS(Beartic), }, #endif //P_FAMILY_CUBCHOO @@ -6717,7 +6717,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Cryogonal), ICON(Cryogonal, 0), - .footprint = gMonFootprint_Cryogonal, + FOOTPRINT(Cryogonal) LEARNSETS(Cryogonal), }, #endif //P_FAMILY_CRYOGONAL @@ -6766,7 +6766,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Shelmet), ICON(Shelmet, 1), - .footprint = gMonFootprint_Shelmet, + FOOTPRINT(Shelmet) LEARNSETS(Shelmet), .evolutions = EVOLUTION({EVO_TRADE_SPECIFIC_MON, SPECIES_KARRABLAST, SPECIES_ACCELGOR}), }, @@ -6814,7 +6814,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SPRING_REPEATED, PALETTES(Accelgor), ICON(Accelgor, 1), - .footprint = gMonFootprint_Accelgor, + FOOTPRINT(Accelgor) LEARNSETS(Accelgor), }, #endif //P_FAMILY_SHELMET @@ -6837,7 +6837,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 14, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Stunfisk, \ + FOOTPRINT(Stunfisk) \ .formSpeciesIdTable = sStunfiskFormSpeciesIdTable [SPECIES_STUNFISK] = @@ -6951,7 +6951,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Mienfoo), ICON(Mienfoo, 1), - .footprint = gMonFootprint_Mienfoo, + FOOTPRINT(Mienfoo) LEARNSETS(Mienfoo), .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_MIENSHAO}), }, @@ -6999,7 +6999,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Mienshao), ICON(Mienshao, 2), - .footprint = gMonFootprint_Mienshao, + FOOTPRINT(Mienshao) LEARNSETS(Mienshao), }, #endif //P_FAMILY_MIENFOO @@ -7049,7 +7049,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Druddigon), ICON(Druddigon, 0), - .footprint = gMonFootprint_Druddigon, + FOOTPRINT(Druddigon) LEARNSETS(Druddigon), }, #endif //P_FAMILY_DRUDDIGON @@ -7100,7 +7100,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Golett), ICON(Golett, 0), - .footprint = gMonFootprint_Golett, + FOOTPRINT(Golett) LEARNSETS(Golett), .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_GOLURK}), }, @@ -7150,7 +7150,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Golurk), ICON(Golurk, 0), - .footprint = gMonFootprint_Golurk, + FOOTPRINT(Golurk) LEARNSETS(Golurk), }, #endif //P_FAMILY_GOLETT @@ -7199,7 +7199,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Pawniard), ICON(Pawniard, 0), - .footprint = gMonFootprint_Pawniard, + FOOTPRINT(Pawniard) LEARNSETS(Pawniard), .evolutions = EVOLUTION({EVO_LEVEL, 52, SPECIES_BISHARP}), }, @@ -7247,7 +7247,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Bisharp), ICON(Bisharp, 0), - .footprint = gMonFootprint_Bisharp, + FOOTPRINT(Bisharp) LEARNSETS(Bisharp), .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_KINGAMBIT}), }, @@ -7296,7 +7296,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Kingambit), ICON(Kingambit, 3), - //.footprint = gMonFootprint_Kingambit, + //FOOTPRINT(Kingambit) LEARNSETS(Kingambit), }, #endif //P_GEN_9_CROSS_EVOS @@ -7346,7 +7346,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Bouffalant), ICON(Bouffalant, 2), - .footprint = gMonFootprint_Bouffalant, + FOOTPRINT(Bouffalant) LEARNSETS(Bouffalant), }, #endif //P_FAMILY_BOUFFALANT @@ -7395,7 +7395,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Rufflet), ICON(Rufflet, 2), - .footprint = gMonFootprint_Rufflet, + FOOTPRINT(Rufflet) LEARNSETS(Rufflet), .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BRAVIARY}, {EVO_NONE, 0, SPECIES_BRAVIARY_HISUIAN}), @@ -7412,7 +7412,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .speciesName = _("Braviary"), \ .cryId = CRY_BRAVIARY, \ .natDexNum = NATIONAL_DEX_BRAVIARY, \ - .footprint = gMonFootprint_Braviary, \ + FOOTPRINT(Braviary) \ .formSpeciesIdTable = sBraviaryFormSpeciesIdTable [SPECIES_BRAVIARY] = @@ -7538,7 +7538,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Vullaby), ICON(Vullaby, 0), - .footprint = gMonFootprint_Vullaby, + FOOTPRINT(Vullaby) LEARNSETS(Vullaby), .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_MANDIBUZZ}), }, @@ -7586,7 +7586,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Mandibuzz), ICON(Mandibuzz, 1), - .footprint = gMonFootprint_Mandibuzz, + FOOTPRINT(Mandibuzz) LEARNSETS(Mandibuzz), }, #endif //P_FAMILY_VULLABY @@ -7635,7 +7635,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Heatmor), ICON(Heatmor, 2), - .footprint = gMonFootprint_Heatmor, + FOOTPRINT(Heatmor) LEARNSETS(Heatmor), }, #endif //P_FAMILY_HEATMOR @@ -7684,7 +7684,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Durant), ICON(Durant, 0), - .footprint = gMonFootprint_Durant, + FOOTPRINT(Durant) LEARNSETS(Durant), }, #endif //P_FAMILY_DURANT @@ -7733,7 +7733,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Deino), ICON(Deino, 2), - .footprint = gMonFootprint_Deino, + FOOTPRINT(Deino) LEARNSETS(Deino), .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_ZWEILOUS}), }, @@ -7781,7 +7781,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Zweilous), ICON(Zweilous, 2), - .footprint = gMonFootprint_Zweilous, + FOOTPRINT(Zweilous) LEARNSETS(Zweilous), .evolutions = EVOLUTION({EVO_LEVEL, 64, SPECIES_HYDREIGON}), }, @@ -7830,7 +7830,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Hydreigon), ICON(Hydreigon, 2), - .footprint = gMonFootprint_Hydreigon, + FOOTPRINT(Hydreigon) LEARNSETS(Hydreigon), }, #endif //P_FAMILY_DEINO @@ -7879,7 +7879,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Larvesta), ICON(Larvesta, 0), - .footprint = gMonFootprint_Larvesta, + FOOTPRINT(Larvesta) LEARNSETS(Larvesta), .evolutions = EVOLUTION({EVO_LEVEL, 59, SPECIES_VOLCARONA}), }, @@ -7930,7 +7930,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Volcarona), ICON(Volcarona, 0), - .footprint = gMonFootprint_Volcarona, + FOOTPRINT(Volcarona) LEARNSETS(Volcarona), }, #endif //P_FAMILY_LARVESTA @@ -7980,7 +7980,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Cobalion), ICON(Cobalion, 0), - .footprint = gMonFootprint_Cobalion, + FOOTPRINT(Cobalion) LEARNSETS(Cobalion), }, #endif //P_FAMILY_COBALION @@ -8030,7 +8030,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Terrakion), ICON(Terrakion, 2), - .footprint = gMonFootprint_Terrakion, + FOOTPRINT(Terrakion) LEARNSETS(Terrakion), }, #endif //P_FAMILY_TERRAKION @@ -8080,7 +8080,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Virizion), ICON(Virizion, 1), - .footprint = gMonFootprint_Virizion, + FOOTPRINT(Virizion) LEARNSETS(Virizion), }, #endif //P_FAMILY_VIRIZION @@ -8102,7 +8102,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .natDexNum = NATIONAL_DEX_TORNADUS, \ .categoryName = _("Cyclone"), \ .weight = 630, \ - .footprint = gMonFootprint_Tornadus, \ + FOOTPRINT(Tornadus) \ LEARNSETS(Tornadus), \ .formSpeciesIdTable = sTornadusFormSpeciesIdTable, \ .formChangeTable = sTornadusFormChangeTable @@ -8189,7 +8189,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .natDexNum = NATIONAL_DEX_THUNDURUS, \ .categoryName = _("Bolt Strike"), \ .weight = 610, \ - .footprint = gMonFootprint_Thundurus, \ + FOOTPRINT(Thundurus) \ LEARNSETS(Thundurus), \ .formSpeciesIdTable = sThundurusFormSpeciesIdTable, \ .formChangeTable = sThundurusFormChangeTable @@ -8308,7 +8308,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Reshiram), ICON(Reshiram, 0), - .footprint = gMonFootprint_Reshiram, + FOOTPRINT(Reshiram) LEARNSETS(Reshiram), }, #endif //P_FAMILY_RESHIRAM @@ -8358,7 +8358,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, PALETTES(Zekrom), ICON(Zekrom, 2), - .footprint = gMonFootprint_Zekrom, + FOOTPRINT(Zekrom) LEARNSETS(Zekrom), }, #endif //P_FAMILY_ZEKROM @@ -8379,7 +8379,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .natDexNum = NATIONAL_DEX_LANDORUS, \ .categoryName = _("Abundance"), \ .weight = 680, \ - .footprint = gMonFootprint_Landorus, \ + FOOTPRINT(Landorus) \ LEARNSETS(Landorus), \ .formSpeciesIdTable = sLandorusFormSpeciesIdTable, \ .formChangeTable = sLandorusFormChangeTable @@ -8467,7 +8467,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .natDexNum = NATIONAL_DEX_KYUREM, \ .categoryName = _("Boundary"), \ .weight = 3250, \ - .footprint = gMonFootprint_Kyurem, \ + FOOTPRINT(Kyurem) \ .formSpeciesIdTable = sKyuremFormSpeciesIdTable, \ .isLegendary = TRUE @@ -8615,7 +8615,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 2, \ .trainerScale = 262, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Keldeo, \ + FOOTPRINT(Keldeo) \ LEARNSETS(Keldeo), \ .formSpeciesIdTable = sKeldeoFormSpeciesIdTable, \ .formChangeTable = sKeldeoFormChangeTable @@ -8686,7 +8686,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .pokemonOffset = 12, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Meloetta, \ + FOOTPRINT(Meloetta) \ LEARNSETS(Meloetta), \ .formSpeciesIdTable = sMeloettaFormSpeciesIdTable, \ .formChangeTable = sMeloettaFormChangeTable @@ -8789,7 +8789,7 @@ const struct SpeciesInfo gSpeciesInfoGen5[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ PALETTES(form), \ ICON(Genesect, 2), \ - .footprint = gMonFootprint_Genesect, \ + FOOTPRINT(Genesect) \ LEARNSETS(Genesect), \ .formSpeciesIdTable = sGenesectFormSpeciesIdTable, \ .formChangeTable = sGenesectFormChangeTable, \ diff --git a/src/data/pokemon/species_info/gen_6.h b/src/data/pokemon/species_info/gen_6.h index 00e2d20a4ecc..ba7d05493417 100644 --- a/src/data/pokemon/species_info/gen_6.h +++ b/src/data/pokemon/species_info/gen_6.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Chespin), ICON(Chespin, 1), - .footprint = gMonFootprint_Chespin, + FOOTPRINT(Chespin) LEARNSETS(Chespin), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUILLADIN}), }, @@ -95,7 +95,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_GROW, PALETTES(Quilladin), ICON(Quilladin, 1), - .footprint = gMonFootprint_Quilladin, + FOOTPRINT(Quilladin) LEARNSETS(Quilladin), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_CHESNAUGHT}), }, @@ -143,7 +143,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Chesnaught), ICON(Chesnaught, 1), - .footprint = gMonFootprint_Chesnaught, + FOOTPRINT(Chesnaught) LEARNSETS(Chesnaught), }, #endif //P_FAMILY_CHESPIN @@ -192,7 +192,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Fennekin), ICON(Fennekin, 0), - .footprint = gMonFootprint_Fennekin, + FOOTPRINT(Fennekin) LEARNSETS(Fennekin), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_BRAIXEN}), }, @@ -240,7 +240,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Braixen), ICON(Braixen, 0), - .footprint = gMonFootprint_Braixen, + FOOTPRINT(Braixen) LEARNSETS(Braixen), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_DELPHOX}), }, @@ -288,7 +288,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Delphox), ICON(Delphox, 0), - .footprint = gMonFootprint_Delphox, + FOOTPRINT(Delphox) LEARNSETS(Delphox), }, #endif //P_FAMILY_FENNEKIN @@ -337,7 +337,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Froakie), ICON(Froakie, 0), - .footprint = gMonFootprint_Froakie, + FOOTPRINT(Froakie) LEARNSETS(Froakie), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FROGADIER}), }, @@ -385,7 +385,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Frogadier), ICON(Frogadier, 0), - .footprint = gMonFootprint_Frogadier, + FOOTPRINT(Frogadier) LEARNSETS(Frogadier), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_GRENINJA}), }, @@ -426,7 +426,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 2, \ .trainerScale = 271, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Greninja, \ + FOOTPRINT(Greninja) \ LEARNSETS(Greninja), \ .formSpeciesIdTable = sGreninjaFormSpeciesIdTable @@ -528,7 +528,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Bunnelby), ICON(Bunnelby, 2), - .footprint = gMonFootprint_Bunnelby, + FOOTPRINT(Bunnelby) LEARNSETS(Bunnelby), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_DIGGERSBY}), }, @@ -576,7 +576,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Diggersby), ICON(Diggersby, 2), - .footprint = gMonFootprint_Diggersby, + FOOTPRINT(Diggersby) LEARNSETS(Diggersby), }, #endif //P_FAMILY_BUNNELBY @@ -625,7 +625,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Fletchling), ICON(Fletchling, 2), - .footprint = gMonFootprint_Fletchling, + FOOTPRINT(Fletchling) LEARNSETS(Fletchling), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_FLETCHINDER}), }, @@ -674,7 +674,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Fletchinder), ICON(Fletchinder, 2), - .footprint = gMonFootprint_Fletchinder, + FOOTPRINT(Fletchinder) LEARNSETS(Fletchinder), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_TALONFLAME}), }, @@ -723,7 +723,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Talonflame), ICON(Talonflame, 2), - .footprint = gMonFootprint_Talonflame, + FOOTPRINT(Talonflame) LEARNSETS(Talonflame), }, #endif //P_FAMILY_FLETCHLING @@ -772,7 +772,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Scatterbug), ICON(Scatterbug, 1), - .footprint = gMonFootprint_Scatterbug, + FOOTPRINT(Scatterbug) LEARNSETS(Scatterbug), .evolutions = EVOLUTION({EVO_LEVEL, 9, SPECIES_SPEWPA}), }, @@ -820,7 +820,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Spewpa), ICON(Spewpa, 1), - .footprint = gMonFootprint_Spewpa, + FOOTPRINT(Spewpa) LEARNSETS(Spewpa), .evolutions = EVOLUTION({EVO_LEVEL, 12, SPECIES_VIVILLON_ICY_SNOW}), }, @@ -863,9 +863,9 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = BACK_PIC(Vivillon ##form, 64, 64), \ .backPicYOffset = 0, \ .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, \ - PALETTES(Vivillon ##form), \ + PALETTES(Vivillon ##form), \ ICON(Vivillon ##form, iconPal), \ - .footprint = gMonFootprint_Vivillon, \ + FOOTPRINT(Vivillon) \ LEARNSETS(Vivillon), \ .formSpeciesIdTable = sVivillonFormSpeciesIdTable @@ -1095,7 +1095,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Litleo), ICON(Litleo, 2), - .footprint = gMonFootprint_Litleo, + FOOTPRINT(Litleo) LEARNSETS(Litleo), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_PYROAR}), }, @@ -1146,7 +1146,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = PALETTES(Pyroar), ICON(Pyroar, 2), ICON_FEMALE(Pyroar, 2), - .footprint = gMonFootprint_Pyroar, + FOOTPRINT(Pyroar) LEARNSETS(Pyroar), }, #endif //P_FAMILY_LITLEO @@ -1188,9 +1188,9 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = BACK_PIC(Flabebe, 64, 40), \ .backPicYOffset = 12, \ .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, \ - PALETTES(Flabebe##Form##Flower), \ + PALETTES(Flabebe##Form##Flower), \ ICON(Flabebe##Form##Flower, iconPal), \ - .footprint = gMonFootprint_Flabebe, \ + FOOTPRINT(Flabebe) \ LEARNSETS(Flabebe), \ .formSpeciesIdTable = sFlabebeFormSpeciesIdTable, \ .evolutions = EVOLUTION({EVO_LEVEL, 19, SPECIES_FLOETTE_ ##FORM##_FLOWER}) @@ -1263,9 +1263,9 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .frontAnimFrames = sAnims_Floette, \ .frontAnimId = ANIM_V_SLIDE_WOBBLE, \ .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, \ - PALETTES(Floette ##form##Flower), \ + PALETTES(Floette ##form##Flower), \ ICON(Floette##form##Flower, iconPal), \ - .footprint = gMonFootprint_Floette, \ + FOOTPRINT(Floette) \ .formSpeciesIdTable = sFloetteFormSpeciesIdTable #define FLOETTE_NORMAL_INFO(form, FORM, iconPal) \ @@ -1392,9 +1392,9 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = BACK_PIC(Florges, 64, 48), \ .backPicYOffset = 9, \ .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, \ - PALETTES(Florges##Form##Flower), \ + PALETTES(Florges##Form##Flower), \ ICON(Florges##Form##Flower, iconPal), \ - .footprint = gMonFootprint_Florges, \ + FOOTPRINT(Florges) \ LEARNSETS(Florges), \ .formSpeciesIdTable = sFlorgesFormSpeciesIdTable @@ -1488,7 +1488,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Skiddo), ICON(Skiddo, 1), - .footprint = gMonFootprint_Skiddo, + FOOTPRINT(Skiddo) LEARNSETS(Skiddo), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_GOGOAT}), }, @@ -1536,7 +1536,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_DIP_RIGHT_SIDE, PALETTES(Gogoat), ICON(Gogoat, 1), - .footprint = gMonFootprint_Gogoat, + FOOTPRINT(Gogoat) LEARNSETS(Gogoat), }, #endif //P_FAMILY_SKIDDO @@ -1586,7 +1586,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, PALETTES(Pancham), ICON(Pancham, 1), - .footprint = gMonFootprint_Pancham, + FOOTPRINT(Pancham) LEARNSETS(Pancham), .evolutions = EVOLUTION({EVO_LEVEL_DARK_TYPE_MON_IN_PARTY, 32, SPECIES_PANGORO}), }, @@ -1635,7 +1635,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Pangoro), ICON(Pangoro, 1), - .footprint = gMonFootprint_Pangoro, + FOOTPRINT(Pangoro) LEARNSETS(Pangoro), }, #endif //P_FAMILY_PANCHAM @@ -1673,7 +1673,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .frontAnimFrames = sAnims_Furfrou, \ .frontAnimId = ANIM_H_SLIDE, \ .backAnimId = BACK_ANIM_V_STRETCH, \ - .footprint = gMonFootprint_Furfrou, \ + FOOTPRINT(Furfrou) \ LEARNSETS(Furfrou), \ .formSpeciesIdTable = sFurfrouFormSpeciesIdTable @@ -1824,7 +1824,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Espurr), ICON(Espurr, 2), - .footprint = gMonFootprint_Espurr, + FOOTPRINT(Espurr) LEARNSETS(Espurr), .evolutions = EVOLUTION({EVO_LEVEL_MALE, 25, SPECIES_MEOWSTIC_MALE}, {EVO_LEVEL_FEMALE, 25, SPECIES_MEOWSTIC_FEMALE}), @@ -1859,7 +1859,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .frontAnimId = ANIM_GROW_VIBRATE, \ .backPicYOffset = 9, \ .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, \ - .footprint = gMonFootprint_Meowstic, \ + FOOTPRINT(Meowstic) \ .formSpeciesIdTable = sMeowsticFormSpeciesIdTable [SPECIES_MEOWSTIC_MALE] = @@ -1946,7 +1946,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Honedge), ICON(Honedge, 2), - .footprint = gMonFootprint_Honedge, + FOOTPRINT(Honedge) LEARNSETS(Honedge), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_DOUBLADE}), }, @@ -1995,7 +1995,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Doublade), ICON(Doublade, 2), - .footprint = gMonFootprint_Doublade, + FOOTPRINT(Doublade) LEARNSETS(Doublade), .evolutions = EVOLUTION({EVO_ITEM, ITEM_DUSK_STONE, SPECIES_AEGISLASH_SHIELD}), }, @@ -2021,7 +2021,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .pokemonOffset = 0, \ .trainerScale = 290, \ .trainerOffset = 1, \ - .footprint = gMonFootprint_Aegislash, \ + FOOTPRINT(Aegislash) \ LEARNSETS(Aegislash), \ .formSpeciesIdTable = sAegislashFormSpeciesIdTable, \ .formChangeTable = sAegislashFormChangeTable @@ -2130,7 +2130,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Spritzee), ICON(Spritzee, 0), - .footprint = gMonFootprint_Spritzee, + FOOTPRINT(Spritzee) LEARNSETS(Spritzee), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}, {EVO_ITEM, ITEM_SACHET, SPECIES_AROMATISSE}), @@ -2179,7 +2179,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Aromatisse), ICON(Aromatisse, 0), - .footprint = gMonFootprint_Aromatisse, + FOOTPRINT(Aromatisse) LEARNSETS(Aromatisse), }, #endif //P_FAMILY_SPRITZEE @@ -2228,7 +2228,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SPRING, PALETTES(Swirlix), ICON(Swirlix, 1), - .footprint = gMonFootprint_Swirlix, + FOOTPRINT(Swirlix) LEARNSETS(Swirlix), .evolutions = EVOLUTION({EVO_TRADE_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}, {EVO_ITEM, ITEM_WHIPPED_DREAM, SPECIES_SLURPUFF}), @@ -2277,7 +2277,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Slurpuff), ICON(Slurpuff, 1), - .footprint = gMonFootprint_Slurpuff, + FOOTPRINT(Slurpuff) LEARNSETS(Slurpuff), }, #endif //P_FAMILY_SWIRLIX @@ -2327,7 +2327,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Inkay), ICON(Inkay, 0), - .footprint = gMonFootprint_Inkay, + FOOTPRINT(Inkay) LEARNSETS(Inkay), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MALAMAR}), }, @@ -2375,7 +2375,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Malamar), ICON(Malamar, 2), - .footprint = gMonFootprint_Malamar, + FOOTPRINT(Malamar) LEARNSETS(Malamar), }, #endif //P_FAMILY_INKAY @@ -2424,7 +2424,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Binacle), ICON(Binacle, 2), - .footprint = gMonFootprint_Binacle, + FOOTPRINT(Binacle) LEARNSETS(Binacle), .evolutions = EVOLUTION({EVO_LEVEL, 39, SPECIES_BARBARACLE}), }, @@ -2473,7 +2473,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Barbaracle), ICON(Barbaracle, 2), - .footprint = gMonFootprint_Barbaracle, + FOOTPRINT(Barbaracle) LEARNSETS(Barbaracle), }, #endif //P_FAMILY_BINACLE @@ -2522,7 +2522,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Skrelp), ICON(Skrelp, 2), - .footprint = gMonFootprint_Skrelp, + FOOTPRINT(Skrelp) LEARNSETS(Skrelp), .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_DRAGALGE}), }, @@ -2570,7 +2570,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Dragalge), ICON(Dragalge, 5), - .footprint = gMonFootprint_Dragalge, + FOOTPRINT(Dragalge) LEARNSETS(Dragalge), }, #endif //P_FAMILY_SKRELP @@ -2620,7 +2620,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Clauncher), ICON(Clauncher, 0), - .footprint = gMonFootprint_Clauncher, + FOOTPRINT(Clauncher) LEARNSETS(Clauncher), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_CLAWITZER}), }, @@ -2669,7 +2669,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE, PALETTES(Clawitzer), ICON(Clawitzer, 0), - .footprint = gMonFootprint_Clawitzer, + FOOTPRINT(Clawitzer) LEARNSETS(Clawitzer), }, #endif //P_FAMILY_CLAUNCHER @@ -2718,7 +2718,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Helioptile), ICON(Helioptile, 2), - .footprint = gMonFootprint_Helioptile, + FOOTPRINT(Helioptile) LEARNSETS(Helioptile), .evolutions = EVOLUTION({EVO_ITEM, ITEM_SUN_STONE, SPECIES_HELIOLISK}), }, @@ -2767,7 +2767,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Heliolisk), ICON(Heliolisk, 2), - .footprint = gMonFootprint_Heliolisk, + FOOTPRINT(Heliolisk) LEARNSETS(Heliolisk), }, #endif //P_FAMILY_HELIOPTILE @@ -2816,7 +2816,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Tyrunt), ICON(Tyrunt, 2), - .footprint = gMonFootprint_Tyrunt, + FOOTPRINT(Tyrunt) LEARNSETS(Tyrunt), .evolutions = EVOLUTION({EVO_LEVEL_DAY, 39, SPECIES_TYRANTRUM}), }, @@ -2864,7 +2864,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_H_SLIDE, PALETTES(Tyrantrum), ICON(Tyrantrum, 0), - .footprint = gMonFootprint_Tyrantrum, + FOOTPRINT(Tyrantrum) LEARNSETS(Tyrantrum), }, #endif //P_FAMILY_TYRUNT @@ -2913,7 +2913,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Amaura), ICON(Amaura, 0), - .footprint = gMonFootprint_Amaura, + FOOTPRINT(Amaura) LEARNSETS(Amaura), .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 39, SPECIES_AURORUS}), }, @@ -2961,7 +2961,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Aurorus), ICON(Aurorus, 0), - .footprint = gMonFootprint_Aurorus, + FOOTPRINT(Aurorus) LEARNSETS(Aurorus), }, #endif //P_FAMILY_AMAURA @@ -3015,7 +3015,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Hawlucha), ICON(Hawlucha, 0), - .footprint = gMonFootprint_Hawlucha, + FOOTPRINT(Hawlucha) LEARNSETS(Hawlucha), }, #endif //P_FAMILY_HAWLUCHA @@ -3064,7 +3064,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHAKE_FLASH_YELLOW, PALETTES(Dedenne), ICON(Dedenne, 0), - .footprint = gMonFootprint_Dedenne, + FOOTPRINT(Dedenne) LEARNSETS(Dedenne), }, #endif //P_FAMILY_DEDENNE @@ -3115,7 +3115,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_VIBRATE, PALETTES(Carbink), ICON(Carbink, 2), - .footprint = gMonFootprint_Carbink, + FOOTPRINT(Carbink) LEARNSETS(Carbink), }, #endif //P_FAMILY_CARBINK @@ -3165,7 +3165,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SPRING, PALETTES(Goomy), ICON(Goomy, 5), - .footprint = gMonFootprint_Goomy, + FOOTPRINT(Goomy) LEARNSETS(Goomy), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_SLIGGOO}, {EVO_NONE, 0, SPECIES_SLIGGOO_HISUIAN}), @@ -3185,7 +3185,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .speciesName = _("Sliggoo"), \ .cryId = CRY_SLIGGOO, \ .natDexNum = NATIONAL_DEX_SLIGGOO, \ - .footprint = gMonFootprint_Sliggoo, \ + FOOTPRINT(Sliggoo) \ .formSpeciesIdTable = sSliggooFormSpeciesIdTable [SPECIES_SLIGGOO] = @@ -3238,7 +3238,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .speciesName = _("Goodra"), \ .cryId = CRY_GOODRA, \ .natDexNum = NATIONAL_DEX_GOODRA, \ - .footprint = gMonFootprint_Goodra, \ + FOOTPRINT(Goodra) \ .formSpeciesIdTable = sGoodraFormSpeciesIdTable [SPECIES_GOODRA] = @@ -3399,7 +3399,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Klefki), ICON(Klefki, 0), - .footprint = gMonFootprint_Klefki, + FOOTPRINT(Klefki) LEARNSETS(Klefki), }, #endif //P_FAMILY_KLEFKI @@ -3449,7 +3449,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_CIRCLE_COUNTERCLOCKWISE, PALETTES(Phantump), ICON(Phantump, 1), - .footprint = gMonFootprint_Phantump, + FOOTPRINT(Phantump) LEARNSETS(Phantump), .evolutions = EVOLUTION({EVO_TRADE, 0, SPECIES_TREVENANT}, {EVO_ITEM, ITEM_LINKING_CORD, SPECIES_TREVENANT}), @@ -3498,7 +3498,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_SHAKE_LOW, PALETTES(Trevenant), ICON(Trevenant, 1), - .footprint = gMonFootprint_Trevenant, + FOOTPRINT(Trevenant) LEARNSETS(Trevenant), }, #endif //P_FAMILY_PHANTUMP @@ -3524,7 +3524,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, \ PALETTES(Pumpkaboo), \ ICON(Pumpkaboo, 2), \ - .footprint = gMonFootprint_Pumpkaboo, \ + FOOTPRINT(Pumpkaboo) \ LEARNSETS(Pumpkaboo), \ .formSpeciesIdTable = sPumpkabooFormSpeciesIdTable @@ -3663,7 +3663,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_V_STRETCH, \ PALETTES(Gourgeist), \ ICON(Gourgeist, 2), \ - .footprint = gMonFootprint_Gourgeist, \ + FOOTPRINT(Gourgeist) \ LEARNSETS(Gourgeist), \ .formSpeciesIdTable = sGourgeistFormSpeciesIdTable @@ -3828,7 +3828,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Bergmite), ICON(Bergmite, 0), - .footprint = gMonFootprint_Bergmite, + FOOTPRINT(Bergmite) LEARNSETS(Bergmite), .evolutions = EVOLUTION({EVO_LEVEL, 37, SPECIES_AVALUGG}, {EVO_NONE, 0, SPECIES_AVALUGG_HISUIAN}), @@ -3848,7 +3848,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .cryId = CRY_AVALUGG, \ .natDexNum = NATIONAL_DEX_AVALUGG, \ .categoryName = _("Iceberg"), \ - .footprint = gMonFootprint_Avalugg, \ + FOOTPRINT(Avalugg) \ .formSpeciesIdTable = sAvaluggFormSpeciesIdTable [SPECIES_AVALUGG] = @@ -3972,7 +3972,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_TRIANGLE_DOWN, PALETTES(Noibat), ICON(Noibat, 2), - .footprint = gMonFootprint_Noibat, + FOOTPRINT(Noibat) LEARNSETS(Noibat), .evolutions = EVOLUTION({EVO_LEVEL, 48, SPECIES_NOIVERN}), }, @@ -4024,7 +4024,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_JOLT_RIGHT, PALETTES(Noivern), ICON(Noivern, 2), - .footprint = gMonFootprint_Noivern, + FOOTPRINT(Noivern) LEARNSETS(Noivern), }, #endif //P_FAMILY_NOIBAT @@ -4069,7 +4069,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_BLUE, \ PALETTES(Xerneas##Form), \ ICON(Xerneas##Form, 0), \ - .footprint = gMonFootprint_Xerneas, \ + FOOTPRINT(Xerneas) \ LEARNSETS(Xerneas), \ .formSpeciesIdTable = sXerneasFormSpeciesIdTable, \ .formChangeTable = sXerneasFormChangeTable, \ @@ -4126,7 +4126,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Yveltal), ICON(Yveltal, 0), - .footprint = gMonFootprint_Yveltal, + FOOTPRINT(Yveltal) LEARNSETS(Yveltal), }, #endif //P_FAMILY_YVELTAL @@ -4146,7 +4146,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .speciesName = _("Zygarde"), \ .natDexNum = NATIONAL_DEX_ZYGARDE, \ .categoryName = _("Order"), \ - .footprint = gMonFootprint_Zygarde, \ + FOOTPRINT(Zygarde) \ LEARNSETS(Zygarde), \ .formSpeciesIdTable = sZygardeFormSpeciesIdTable, \ .isLegendary = TRUE @@ -4276,7 +4276,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .speciesName = _("Diancie"), \ .natDexNum = NATIONAL_DEX_DIANCIE, \ .categoryName = _("Jewel"), \ - .footprint = gMonFootprint_Diancie, \ + FOOTPRINT(Diancie) \ LEARNSETS(Diancie), \ .formSpeciesIdTable = sDiancieFormSpeciesIdTable, \ .formChangeTable = sDiancieFormChangeTable, \ @@ -4364,7 +4364,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .bodyColor = BODY_COLOR_PURPLE, \ .speciesName = _("Hoopa"), \ .natDexNum = NATIONAL_DEX_HOOPA, \ - .footprint = gMonFootprint_Hoopa, \ + FOOTPRINT(Hoopa) \ .formSpeciesIdTable = sHoopaFormSpeciesIdTable, \ .formChangeTable = sHoopaFormChangeTable, \ .isMythical = TRUE @@ -4486,7 +4486,7 @@ const struct SpeciesInfo gSpeciesInfoGen6[] = .backAnimId = BACK_ANIM_SHAKE_GLOW_RED, PALETTES(Volcanion), ICON(Volcanion, 0), - .footprint = gMonFootprint_Volcanion, + FOOTPRINT(Volcanion) LEARNSETS(Volcanion), }, #endif //P_FAMILY_VOLCANION diff --git a/src/data/pokemon/species_info/gen_7.h b/src/data/pokemon/species_info/gen_7.h index f9496af08a5f..d3f223ab460f 100644 --- a/src/data/pokemon/species_info/gen_7.h +++ b/src/data/pokemon/species_info/gen_7.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_SMALL, PALETTES(Rowlet), ICON(Rowlet, 0), - .footprint = gMonFootprint_Rowlet, + FOOTPRINT(Rowlet) LEARNSETS(Rowlet), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_DARTRIX}), }, @@ -96,7 +96,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_V_STRETCH, PALETTES(Dartrix), ICON(Dartrix, 1), - .footprint = gMonFootprint_Dartrix, + FOOTPRINT(Dartrix) LEARNSETS(Dartrix), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_DECIDUEYE}, {EVO_NONE, 0, SPECIES_DECIDUEYE_HISUIAN}), @@ -121,7 +121,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 1, \ .trainerScale = 296, \ .trainerOffset = 1, \ - .footprint = gMonFootprint_Decidueye, \ + FOOTPRINT(Decidueye) \ .formSpeciesIdTable = sDecidueyeFormSpeciesIdTable [SPECIES_DECIDUEYE] = @@ -230,7 +230,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Litten), ICON(Litten, 0), - .footprint = gMonFootprint_Litten, + FOOTPRINT(Litten) LEARNSETS(Litten), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_TORRACAT}), }, @@ -278,7 +278,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Torracat), ICON(Torracat, 0), - .footprint = gMonFootprint_Torracat, + FOOTPRINT(Torracat) LEARNSETS(Torracat), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_INCINEROAR}), }, @@ -326,7 +326,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Incineroar), ICON(Incineroar, 0), - .footprint = gMonFootprint_Incineroar, + FOOTPRINT(Incineroar) LEARNSETS(Incineroar), }, #endif //P_FAMILY_LITTEN @@ -375,7 +375,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Popplio), ICON(Popplio, 0), - .footprint = gMonFootprint_Popplio, + FOOTPRINT(Popplio) LEARNSETS(Popplio), .evolutions = EVOLUTION({EVO_LEVEL, 17, SPECIES_BRIONNE}), }, @@ -423,7 +423,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Brionne), ICON(Brionne, 0), - .footprint = gMonFootprint_Brionne, + FOOTPRINT(Brionne) LEARNSETS(Brionne), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_PRIMARINA}), }, @@ -471,7 +471,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Primarina), ICON(Primarina, 0), - .footprint = gMonFootprint_Primarina, + FOOTPRINT(Primarina) LEARNSETS(Primarina), }, #endif //P_FAMILY_POPPLIO @@ -521,7 +521,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_SHRINK_GROW, PALETTES(Pikipek), ICON(Pikipek, 2), - .footprint = gMonFootprint_Pikipek, + FOOTPRINT(Pikipek) LEARNSETS(Pikipek), .evolutions = EVOLUTION({EVO_LEVEL, 14, SPECIES_TRUMBEAK}), }, @@ -570,7 +570,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(Trumbeak), ICON(Trumbeak, 0), - .footprint = gMonFootprint_Trumbeak, + FOOTPRINT(Trumbeak) LEARNSETS(Trumbeak), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_TOUCANNON}), }, @@ -619,7 +619,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(Toucannon), ICON(Toucannon, 0), - .footprint = gMonFootprint_Toucannon, + FOOTPRINT(Toucannon) LEARNSETS(Toucannon), }, #endif //P_FAMILY_PIKIPEK @@ -669,7 +669,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Yungoos), ICON(Yungoos, 2), - .footprint = gMonFootprint_Yungoos, + FOOTPRINT(Yungoos) LEARNSETS(Yungoos), .evolutions = EVOLUTION({EVO_LEVEL_DAY, 20, SPECIES_GUMSHOOS}), }, @@ -718,7 +718,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Gumshoos), ICON(Gumshoos, 2), - .footprint = gMonFootprint_Gumshoos, + FOOTPRINT(Gumshoos) LEARNSETS(Gumshoos), }, #endif //P_FAMILY_YUNGOOS @@ -767,7 +767,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Grubbin), ICON(Grubbin, 0), - .footprint = gMonFootprint_Grubbin, + FOOTPRINT(Grubbin) LEARNSETS(Grubbin), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_CHARJABUG}), }, @@ -816,7 +816,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Charjabug), ICON(Charjabug, 1), - .footprint = gMonFootprint_Charjabug, + FOOTPRINT(Charjabug) LEARNSETS(Charjabug), .evolutions = EVOLUTION({EVO_MAPSEC, MAPSEC_NEW_MAUVILLE, SPECIES_VIKAVOLT}, {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_VIKAVOLT}), @@ -866,7 +866,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Vikavolt), ICON(Vikavolt, 0), - .footprint = gMonFootprint_Vikavolt, + FOOTPRINT(Vikavolt) LEARNSETS(Vikavolt), }, #endif //P_FAMILY_GRUBBIN @@ -916,7 +916,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Crabrawler), ICON(Crabrawler, 2), - .footprint = gMonFootprint_Crabrawler, + FOOTPRINT(Crabrawler) LEARNSETS(Crabrawler), .evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE}, {EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}), @@ -966,7 +966,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Crabominable), ICON(Crabominable, 2), - .footprint = gMonFootprint_Crabominable, + FOOTPRINT(Crabominable) LEARNSETS(Crabominable), }, #endif //P_FAMILY_CRABRAWLER @@ -1000,7 +1000,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .trainerOffset = 0, \ .frontAnimFrames = sAnims_Oricorio, \ .backPicYOffset = 0, \ - .footprint = gMonFootprint_Oricorio, \ + FOOTPRINT(Oricorio) \ LEARNSETS(Oricorio), \ .formSpeciesIdTable = sOricorioFormSpeciesIdTable, \ .formChangeTable = sOricorioFormChangeTable @@ -1133,7 +1133,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_CONCAVE_ARC_LARGE, PALETTES(Cutiefly), ICON(Cutiefly, 2), - .footprint = gMonFootprint_Cutiefly, + FOOTPRINT(Cutiefly) LEARNSETS(Cutiefly), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_RIBOMBEE}), }, @@ -1183,7 +1183,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_CONVEX_DOUBLE_ARC, PALETTES(Ribombee), ICON(Ribombee, 2), - .footprint = gMonFootprint_Ribombee, + FOOTPRINT(Ribombee) LEARNSETS(Ribombee), }, #endif //P_FAMILY_CUTIEFLY @@ -1223,7 +1223,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backPicYOffset = 7, \ PALETTES(Rockruff), \ ICON(Rockruff, 2), \ - .footprint = gMonFootprint_Rockruff, \ + FOOTPRINT(Rockruff) \ LEARNSETS(Rockruff), \ .formSpeciesIdTable = sRockruffFormSpeciesIdTable @@ -1267,7 +1267,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .trainerScale = 257, \ .trainerOffset = 0, \ BACK_PIC(LycanrocMidday, 64, 56), \ - .footprint = gMonFootprint_Lycanroc, \ + FOOTPRINT(Lycanroc) \ .formSpeciesIdTable = sLycanrocFormSpeciesIdTable [SPECIES_LYCANROC_MIDDAY] = @@ -1378,7 +1378,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Wishiwashi, \ + FOOTPRINT(Wishiwashi) \ LEARNSETS(Wishiwashi), \ .formSpeciesIdTable = sWishiwashiFormSpeciesIdTable, \ .formChangeTable = sWishiwashiFormChangeTable @@ -1486,7 +1486,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Mareanie), ICON(Mareanie, 2), - .footprint = gMonFootprint_Mareanie, + FOOTPRINT(Mareanie) LEARNSETS(Mareanie), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TOXAPEX}), }, @@ -1535,7 +1535,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Toxapex), ICON(Toxapex, 0), - .footprint = gMonFootprint_Toxapex, + FOOTPRINT(Toxapex) LEARNSETS(Toxapex), }, #endif //P_FAMILY_MAREANIE @@ -1585,7 +1585,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Mudbray), ICON(Mudbray, 2), - .footprint = gMonFootprint_Mudbray, + FOOTPRINT(Mudbray) LEARNSETS(Mudbray), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MUDSDALE}), }, @@ -1634,7 +1634,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Mudsdale), ICON(Mudsdale, 0), - .footprint = gMonFootprint_Mudsdale, + FOOTPRINT(Mudsdale) LEARNSETS(Mudsdale), }, #endif //P_FAMILY_MUDBRAY @@ -1684,7 +1684,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dewpider), ICON(Dewpider, 0), - .footprint = gMonFootprint_Dewpider, + FOOTPRINT(Dewpider) LEARNSETS(Dewpider), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_ARAQUANID}), }, @@ -1733,7 +1733,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Araquanid), ICON(Araquanid, 2), - .footprint = gMonFootprint_Araquanid, + FOOTPRINT(Araquanid) LEARNSETS(Araquanid), }, #endif //P_FAMILY_DEWPIDER @@ -1783,7 +1783,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Fomantis), ICON(Fomantis, 1), - .footprint = gMonFootprint_Fomantis, + FOOTPRINT(Fomantis) LEARNSETS(Fomantis), .evolutions = EVOLUTION({EVO_LEVEL_DAY, 34, SPECIES_LURANTIS}), }, @@ -1832,7 +1832,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Lurantis), ICON(Lurantis, 1), - .footprint = gMonFootprint_Lurantis, + FOOTPRINT(Lurantis) LEARNSETS(Lurantis), }, #endif //P_FAMILY_FOMANTIS @@ -1883,7 +1883,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Morelull), ICON(Morelull, 0), - .footprint = gMonFootprint_Morelull, + FOOTPRINT(Morelull) LEARNSETS(Morelull), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_SHIINOTIC}), }, @@ -1933,7 +1933,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Shiinotic), ICON(Shiinotic, 1), - .footprint = gMonFootprint_Shiinotic, + FOOTPRINT(Shiinotic) LEARNSETS(Shiinotic), }, #endif //P_FAMILY_MORELULL @@ -1983,7 +1983,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Salandit), ICON(Salandit, 2), - .footprint = gMonFootprint_Salandit, + FOOTPRINT(Salandit) LEARNSETS(Salandit), .evolutions = EVOLUTION({EVO_LEVEL_FEMALE, 33, SPECIES_SALAZZLE}), }, @@ -2032,7 +2032,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Salazzle), ICON(Salazzle, 0), - .footprint = gMonFootprint_Salazzle, + FOOTPRINT(Salazzle) LEARNSETS(Salazzle), }, #endif //P_FAMILY_SALANDIT @@ -2081,7 +2081,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Stufful), ICON(Stufful, 0), - .footprint = gMonFootprint_Stufful, + FOOTPRINT(Stufful) LEARNSETS(Stufful), .evolutions = EVOLUTION({EVO_LEVEL, 27, SPECIES_BEWEAR}), }, @@ -2129,7 +2129,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Bewear), ICON(Bewear, 0), - .footprint = gMonFootprint_Bewear, + FOOTPRINT(Bewear) LEARNSETS(Bewear), }, #endif //P_FAMILY_STUFFUL @@ -2179,7 +2179,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Bounsweet), ICON(Bounsweet, 1), - .footprint = gMonFootprint_Bounsweet, + FOOTPRINT(Bounsweet) LEARNSETS(Bounsweet), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_STEENEE}), }, @@ -2229,7 +2229,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Steenee), ICON(Steenee, 1), - .footprint = gMonFootprint_Steenee, + FOOTPRINT(Steenee) LEARNSETS(Steenee), .evolutions = EVOLUTION({EVO_MOVE, MOVE_STOMP, SPECIES_TSAREENA}), }, @@ -2279,7 +2279,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tsareena), ICON(Tsareena, 1), - .footprint = gMonFootprint_Tsareena, + FOOTPRINT(Tsareena) LEARNSETS(Tsareena), }, #endif //P_FAMILY_BOUNSWEET @@ -2331,7 +2331,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Comfey), ICON(Comfey, 1), - .footprint = gMonFootprint_Comfey, + FOOTPRINT(Comfey) LEARNSETS(Comfey), }, #endif //P_FAMILY_COMFEY @@ -2380,7 +2380,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Oranguru), ICON(Oranguru, 0), - .footprint = gMonFootprint_Oranguru, + FOOTPRINT(Oranguru) LEARNSETS(Oranguru), }, #endif //P_FAMILY_ORANGURU @@ -2429,7 +2429,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_H_SHAKE, PALETTES(Passimian), ICON(Passimian, 1), - .footprint = gMonFootprint_Passimian, + FOOTPRINT(Passimian) LEARNSETS(Passimian), }, #endif //P_FAMILY_PASSIMIAN @@ -2478,7 +2478,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Wimpod), ICON(Wimpod, 2), - .footprint = gMonFootprint_Wimpod, + FOOTPRINT(Wimpod) LEARNSETS(Wimpod), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_GOLISOPOD}), }, @@ -2526,7 +2526,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Golisopod), ICON(Golisopod, 2), - .footprint = gMonFootprint_Golisopod, + FOOTPRINT(Golisopod) LEARNSETS(Golisopod), }, #endif //P_FAMILY_WIMPOD @@ -2576,7 +2576,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Sandygast), ICON(Sandygast, 1), - .footprint = gMonFootprint_Sandygast, + FOOTPRINT(Sandygast) LEARNSETS(Sandygast), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_PALOSSAND}), }, @@ -2625,7 +2625,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Palossand), ICON(Palossand, 2), - .footprint = gMonFootprint_Palossand, + FOOTPRINT(Palossand) LEARNSETS(Palossand), }, #endif //P_FAMILY_SANDYGAST @@ -2674,7 +2674,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Pyukumuku), ICON(Pyukumuku, 0), - .footprint = gMonFootprint_Pyukumuku, + FOOTPRINT(Pyukumuku) LEARNSETS(Pyukumuku), }, #endif //P_FAMILY_PYUKUMUKU @@ -2724,7 +2724,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(TypeNull), ICON(TypeNull, 0), - .footprint = gMonFootprint_Type_Null, + FOOTPRINT(Type_Null) LEARNSETS(TypeNull), .evolutions = EVOLUTION({EVO_FRIENDSHIP, 0, SPECIES_SILVALLY_NORMAL}), }, @@ -2770,7 +2770,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backPicYOffset = 0, \ PALETTES(palette), \ ICON(Silvally, 0), \ - .footprint = gMonFootprint_Silvally, \ + FOOTPRINT(Silvally) \ LEARNSETS(Silvally), \ .formSpeciesIdTable = sSilvallyFormSpeciesIdTable, \ .formChangeTable = sSilvallyFormChangeTable, \ @@ -2822,7 +2822,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 13, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Minior, \ + FOOTPRINT(Minior) \ LEARNSETS(Minior), \ .formSpeciesIdTable = sMiniorFormSpeciesIdTable @@ -2934,7 +2934,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Komala), ICON(Komala, 2), - .footprint = gMonFootprint_Komala, + FOOTPRINT(Komala) LEARNSETS(Komala), }, #endif //P_FAMILY_KOMALA @@ -2984,7 +2984,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Turtonator), ICON(Turtonator, 0), - .footprint = gMonFootprint_Turtonator, + FOOTPRINT(Turtonator) LEARNSETS(Turtonator), }, #endif //P_FAMILY_TURTONATOR @@ -3034,7 +3034,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(Togedemaru), ICON(Togedemaru, 2), - .footprint = gMonFootprint_Togedemaru, + FOOTPRINT(Togedemaru) LEARNSETS(Togedemaru), }, #endif //P_FAMILY_TOGEDEMARU @@ -3069,7 +3069,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 24, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Mimikyu, \ + FOOTPRINT(Mimikyu) \ LEARNSETS(Mimikyu), \ .formSpeciesIdTable = sMimikyuFormSpeciesIdTable, \ .formChangeTable = sMimikyuFormChangeTable @@ -3158,7 +3158,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Bruxish), ICON(Bruxish, 0), - .footprint = gMonFootprint_Bruxish, + FOOTPRINT(Bruxish) LEARNSETS(Bruxish), }, #endif //P_FAMILY_BRUXISH @@ -3208,7 +3208,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_H_SLIDE, PALETTES(Drampa), ICON(Drampa, 0), - .footprint = gMonFootprint_Drampa, + FOOTPRINT(Drampa) LEARNSETS(Drampa), }, #endif //P_FAMILY_DRAMPA @@ -3259,7 +3259,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dhelmise), ICON(Dhelmise, 1), - .footprint = gMonFootprint_Dhelmise, + FOOTPRINT(Dhelmise) LEARNSETS(Dhelmise), }, #endif //P_FAMILY_DHELMISE @@ -3309,7 +3309,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_GROW_STUTTER, PALETTES(JangmoO), ICON(JangmoO, 2), - .footprint = gMonFootprint_JangmoO, + FOOTPRINT(JangmoO) LEARNSETS(JangmoO), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_HAKAMO_O}), }, @@ -3358,7 +3358,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_H_STRETCH, PALETTES(HakamoO), ICON(HakamoO, 2), - .footprint = gMonFootprint_HakamoO, + FOOTPRINT(HakamoO) LEARNSETS(HakamoO), .evolutions = EVOLUTION({EVO_LEVEL, 45, SPECIES_KOMMO_O}), }, @@ -3407,7 +3407,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backAnimId = BACK_ANIM_SHRINK_GROW_VIBRATE, PALETTES(KommoO), ICON(KommoO, 2), - .footprint = gMonFootprint_KommoO, + FOOTPRINT(KommoO) LEARNSETS(KommoO), }, #endif //P_FAMILY_JANGMO_O @@ -3458,7 +3458,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(TapuKoko), ICON(TapuKoko, 0), - .footprint = gMonFootprint_Tapu_Koko, + FOOTPRINT(Tapu_Koko) LEARNSETS(TapuKoko), }, #endif //P_FAMILY_TAPU_KOKO @@ -3509,7 +3509,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(TapuLele), ICON(TapuLele, 0), - .footprint = gMonFootprint_Tapu_Lele, + FOOTPRINT(Tapu_Lele) LEARNSETS(TapuLele), }, #endif //P_FAMILY_TAPU_LELE @@ -3560,7 +3560,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(TapuBulu), ICON(TapuBulu, 2), - .footprint = gMonFootprint_Tapu_Bulu, + FOOTPRINT(Tapu_Bulu) LEARNSETS(TapuBulu), }, #endif //P_FAMILY_TAPU_BULU @@ -3612,7 +3612,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(TapuFini), ICON(TapuFini, 0), - .footprint = gMonFootprint_Tapu_Fini, + FOOTPRINT(Tapu_Fini) LEARNSETS(TapuFini), }, #endif //P_FAMILY_TAPU_FINI @@ -3663,7 +3663,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cosmog), ICON(Cosmog, 2), - .footprint = gMonFootprint_Cosmog, + FOOTPRINT(Cosmog) LEARNSETS(Cosmog), .evolutions = EVOLUTION({EVO_LEVEL, 43, SPECIES_COSMOEM}), }, @@ -3714,7 +3714,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cosmoem), ICON(Cosmoem, 0), - .footprint = gMonFootprint_Cosmoem, + FOOTPRINT(Cosmoem) LEARNSETS(Cosmoem), .evolutions = EVOLUTION({EVO_LEVEL_DAY, 53, SPECIES_SOLGALEO}, {EVO_LEVEL_NIGHT, 53, SPECIES_LUNALA}), @@ -3764,7 +3764,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Solgaleo), ICON(Solgaleo, 0), - .footprint = gMonFootprint_Solgaleo, + FOOTPRINT(Solgaleo) LEARNSETS(Solgaleo), }, @@ -3813,7 +3813,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Lunala), ICON(Lunala, 2), - .footprint = gMonFootprint_Lunala, + FOOTPRINT(Lunala) LEARNSETS(Lunala), }, #endif //P_FAMILY_COSMOG @@ -3864,7 +3864,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Nihilego), ICON(Nihilego, 0), - .footprint = gMonFootprint_Nihilego, + FOOTPRINT(Nihilego) LEARNSETS(Nihilego), }, #endif //P_FAMILY_NIHILEGO @@ -3915,7 +3915,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Buzzwole), ICON(Buzzwole, 0), - .footprint = gMonFootprint_Buzzwole, + FOOTPRINT(Buzzwole) LEARNSETS(Buzzwole), }, #endif //P_FAMILY_BUZZWOLE @@ -3965,7 +3965,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Pheromosa), ICON(Pheromosa, 2), - .footprint = gMonFootprint_Pheromosa, + FOOTPRINT(Pheromosa) LEARNSETS(Pheromosa), }, #endif //P_FAMILY_PHEROMOSA @@ -4015,7 +4015,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Xurkitree), ICON(Xurkitree, 0), - .footprint = gMonFootprint_Xurkitree, + FOOTPRINT(Xurkitree) LEARNSETS(Xurkitree), }, #endif //P_FAMILY_XURKITREE @@ -4067,7 +4067,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Celesteela), ICON(Celesteela, 0), - .footprint = gMonFootprint_Celesteela, + FOOTPRINT(Celesteela) LEARNSETS(Celesteela), }, #endif //P_FAMILY_CELESTEELA @@ -4118,7 +4118,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Kartana), ICON(Kartana, 0), - .footprint = gMonFootprint_Kartana, + FOOTPRINT(Kartana) LEARNSETS(Kartana), }, #endif //P_FAMILY_KARTANA @@ -4168,7 +4168,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Guzzlord), ICON(Guzzlord, 0), - .footprint = gMonFootprint_Guzzlord, + FOOTPRINT(Guzzlord) LEARNSETS(Guzzlord), }, #endif //P_FAMILY_GUZZLORD @@ -4188,7 +4188,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 3, \ .trainerScale = 369, \ .trainerOffset = 7, \ - .footprint = gMonFootprint_Necrozma, \ + FOOTPRINT(Necrozma) \ LEARNSETS(Necrozma), \ .formSpeciesIdTable = sNecrozmaFormSpeciesIdTable, \ .isLegendary = TRUE @@ -4382,7 +4382,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .backPicYOffset = 4, \ PALETTES(Form), \ ICON(Form, 0), \ - .footprint = gMonFootprint_Magearna, \ + FOOTPRINT(Magearna) \ LEARNSETS(Magearna), \ .formSpeciesIdTable = sMagearnaFormSpeciesIdTable, \ .isMythical = TRUE @@ -4456,7 +4456,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Marshadow), ICON(Marshadow, 0), - .footprint = gMonFootprint_Marshadow, + FOOTPRINT(Marshadow) LEARNSETS(Marshadow), .isMythical = TRUE, }, @@ -4507,7 +4507,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Poipole), ICON(Poipole, 0), - .footprint = gMonFootprint_Poipole, + FOOTPRINT(Poipole) LEARNSETS(Poipole), .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_PULSE, SPECIES_NAGANADEL}), }, @@ -4556,7 +4556,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Naganadel), ICON(Naganadel, 0), - .footprint = gMonFootprint_Naganadel, + FOOTPRINT(Naganadel) LEARNSETS(Naganadel), }, #endif //P_FAMILY_POIPOLE @@ -4606,7 +4606,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Stakataka), ICON(Stakataka, 0), - .footprint = gMonFootprint_Stakataka, + FOOTPRINT(Stakataka) LEARNSETS(Stakataka), }, #endif //P_FAMILY_STAKATAKA @@ -4656,7 +4656,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Blacephalon), ICON(Blacephalon, 0), - .footprint = gMonFootprint_Blacephalon, + FOOTPRINT(Blacephalon) LEARNSETS(Blacephalon), }, #endif //P_FAMILY_BLACEPHALON @@ -4705,7 +4705,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Zeraora), ICON(Zeraora, 0), - .footprint = gMonFootprint_Zeraora, + FOOTPRINT(Zeraora) LEARNSETS(Zeraora), }, #endif //P_FAMILY_ZERAORA @@ -4754,7 +4754,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Meltan), ICON(Meltan, 2), - .footprint = gMonFootprint_Meltan, + FOOTPRINT(Meltan) LEARNSETS(Meltan), }, @@ -4784,7 +4784,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] = .pokemonOffset = 10, \ .trainerScale = 423, \ .trainerOffset = 8, \ - .footprint = gMonFootprint_Melmetal, \ + FOOTPRINT(Melmetal) \ LEARNSETS(Melmetal), \ .formSpeciesIdTable = sMelmetalFormSpeciesIdTable, \ .formChangeTable = sMelmetalFormChangeTable, \ diff --git a/src/data/pokemon/species_info/gen_8.h b/src/data/pokemon/species_info/gen_8.h index d3eca0b39756..89a176bc55a7 100644 --- a/src/data/pokemon/species_info/gen_8.h +++ b/src/data/pokemon/species_info/gen_8.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Grookey), ICON(Grookey, 1), - .footprint = gMonFootprint_Grookey, + FOOTPRINT(Grookey) LEARNSETS(Grookey), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_THWACKEY}), }, @@ -94,7 +94,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Thwackey), ICON(Thwackey, 1), - .footprint = gMonFootprint_Thwackey, + FOOTPRINT(Thwackey) LEARNSETS(Thwackey), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_RILLABOOM}), }, @@ -121,7 +121,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_RILLABOOM, \ .natDexNum = NATIONAL_DEX_RILLABOOM, \ .categoryName = _("Drummer"), \ - .footprint = gMonFootprint_Rillaboom, \ + FOOTPRINT(Rillaboom) \ LEARNSETS(Rillaboom), \ .formSpeciesIdTable = sRillaboomFormSpeciesIdTable, \ .formChangeTable = sRillaboomFormChangeTable @@ -222,7 +222,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Scorbunny), ICON(Scorbunny, 0), - .footprint = gMonFootprint_Scorbunny, + FOOTPRINT(Scorbunny) LEARNSETS(Scorbunny), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_RABOOT}), }, @@ -269,7 +269,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Raboot), ICON(Raboot, 0), - .footprint = gMonFootprint_Raboot, + FOOTPRINT(Raboot) LEARNSETS(Raboot), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_CINDERACE}), }, @@ -296,7 +296,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_CINDERACE, \ .natDexNum = NATIONAL_DEX_CINDERACE, \ .categoryName = _("Striker"), \ - .footprint = gMonFootprint_Cinderace, \ + FOOTPRINT(Cinderace) \ LEARNSETS(Cinderace), \ .formSpeciesIdTable = sCinderaceFormSpeciesIdTable, \ .formChangeTable = sCinderaceFormChangeTable @@ -400,7 +400,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Sobble), ICON(Sobble, 2), - .footprint = gMonFootprint_Sobble, + FOOTPRINT(Sobble) LEARNSETS(Sobble), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_DRIZZILE}), }, @@ -447,7 +447,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Drizzile), ICON(Drizzile, 2), - .footprint = gMonFootprint_Drizzile, + FOOTPRINT(Drizzile) LEARNSETS(Drizzile), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_INTELEON}), }, @@ -474,7 +474,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_INTELEON, \ .natDexNum = NATIONAL_DEX_INTELEON, \ .categoryName = _("Secret Agent"), \ - .footprint = gMonFootprint_Inteleon, \ + FOOTPRINT(Inteleon) \ LEARNSETS(Inteleon), \ .formSpeciesIdTable = sInteleonFormSpeciesIdTable, \ .formChangeTable = sInteleonFormChangeTable @@ -577,7 +577,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Skwovet), ICON(Skwovet, 2), - .footprint = gMonFootprint_Skwovet, + FOOTPRINT(Skwovet) LEARNSETS(Skwovet), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_GREEDENT}), }, @@ -626,7 +626,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Greedent), ICON(Greedent, 0), - .footprint = gMonFootprint_Greedent, + FOOTPRINT(Greedent) LEARNSETS(Greedent), }, #endif //P_FAMILY_SKWOVET @@ -675,7 +675,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Rookidee), ICON(Rookidee, 0), - .footprint = gMonFootprint_Rookidee, + FOOTPRINT(Rookidee) LEARNSETS(Rookidee), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CORVISQUIRE}), }, @@ -724,7 +724,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Corvisquire), ICON(Corvisquire, 0), - .footprint = gMonFootprint_Corvisquire, + FOOTPRINT(Corvisquire) LEARNSETS(Corvisquire), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_CORVIKNIGHT}), }, @@ -751,7 +751,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_CORVIKNIGHT, \ .natDexNum = NATIONAL_DEX_CORVIKNIGHT, \ .categoryName = _("Raven"), \ - .footprint = gMonFootprint_Corviknight, \ + FOOTPRINT(Corviknight) \ LEARNSETS(Corviknight), \ .formSpeciesIdTable = sCorviknightFormSpeciesIdTable, \ .formChangeTable = sCorviknightFormChangeTable @@ -853,7 +853,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Blipbug), ICON(Blipbug, 0), - .footprint = gMonFootprint_Blipbug, + FOOTPRINT(Blipbug) LEARNSETS(Blipbug), .evolutions = EVOLUTION({EVO_LEVEL, 10, SPECIES_DOTTLER}), }, @@ -902,7 +902,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dottler), ICON(Dottler, 2), - .footprint = gMonFootprint_Dottler, + FOOTPRINT(Dottler) LEARNSETS(Dottler), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_ORBEETLE}), }, @@ -930,7 +930,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_ORBEETLE, \ .natDexNum = NATIONAL_DEX_ORBEETLE, \ .categoryName = _("Seven Spot"), \ - .footprint = gMonFootprint_Orbeetle, \ + FOOTPRINT(Orbeetle) \ LEARNSETS(Orbeetle), \ .formSpeciesIdTable = sOrbeetleFormSpeciesIdTable, \ .formChangeTable = sOrbeetleFormChangeTable @@ -1034,7 +1034,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Nickit), ICON(Nickit, 2), - .footprint = gMonFootprint_Nickit, + FOOTPRINT(Nickit) LEARNSETS(Nickit), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_THIEVUL}), }, @@ -1082,7 +1082,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Thievul), ICON(Thievul, 2), - .footprint = gMonFootprint_Thievul, + FOOTPRINT(Thievul) LEARNSETS(Thievul), }, #endif //P_FAMILY_NICKIT @@ -1131,7 +1131,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Gossifleur), ICON(Gossifleur, 1), - .footprint = gMonFootprint_Gossifleur, + FOOTPRINT(Gossifleur) LEARNSETS(Gossifleur), .evolutions = EVOLUTION({EVO_LEVEL, 20, SPECIES_ELDEGOSS}), }, @@ -1179,7 +1179,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Eldegoss), ICON(Eldegoss, 1), - .footprint = gMonFootprint_Eldegoss, + FOOTPRINT(Eldegoss) LEARNSETS(Eldegoss), }, #endif //P_FAMILY_GOSSIFLEUR @@ -1228,7 +1228,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Wooloo), ICON(Wooloo, 0), - .footprint = gMonFootprint_Wooloo, + FOOTPRINT(Wooloo) LEARNSETS(Wooloo), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_DUBWOOL}), }, @@ -1276,7 +1276,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dubwool), ICON(Dubwool, 2), - .footprint = gMonFootprint_Dubwool, + FOOTPRINT(Dubwool) LEARNSETS(Dubwool), }, #endif //P_FAMILY_WOOLOO @@ -1324,7 +1324,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Chewtle), ICON(Chewtle, 0), - .footprint = gMonFootprint_Chewtle, + FOOTPRINT(Chewtle) LEARNSETS(Chewtle), .evolutions = EVOLUTION({EVO_LEVEL, 22, SPECIES_DREDNAW}), }, @@ -1351,7 +1351,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_DREDNAW, \ .natDexNum = NATIONAL_DEX_DREDNAW, \ .categoryName = _("Bite"), \ - .footprint = gMonFootprint_Drednaw, \ + FOOTPRINT(Drednaw) \ LEARNSETS(Drednaw), \ .formSpeciesIdTable = sDrednawFormSpeciesIdTable, \ .formChangeTable = sDrednawFormChangeTable @@ -1453,7 +1453,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Yamper), ICON(Yamper, 1), - .footprint = gMonFootprint_Yamper, + FOOTPRINT(Yamper) LEARNSETS(Yamper), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_BOLTUND}), }, @@ -1501,7 +1501,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Boltund), ICON(Boltund, 1), - .footprint = gMonFootprint_Boltund, + FOOTPRINT(Boltund) LEARNSETS(Boltund), }, #endif //P_FAMILY_YAMPER @@ -1550,7 +1550,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Rolycoly), ICON(Rolycoly, 0), - .footprint = gMonFootprint_Rolycoly, + FOOTPRINT(Rolycoly) LEARNSETS(Rolycoly), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_CARKOL}), }, @@ -1597,7 +1597,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Carkol), ICON(Carkol, 0), - .footprint = gMonFootprint_Carkol, + FOOTPRINT(Carkol) LEARNSETS(Carkol), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COALOSSAL}), }, @@ -1624,7 +1624,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_COALOSSAL, \ .natDexNum = NATIONAL_DEX_COALOSSAL, \ .categoryName = _("Coal"), \ - .footprint = gMonFootprint_Coalossal, \ + FOOTPRINT(Coalossal) \ LEARNSETS(Coalossal), \ .formSpeciesIdTable = sCoalossalFormSpeciesIdTable, \ .formChangeTable = sCoalossalFormChangeTable @@ -1727,7 +1727,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Applin), ICON(Applin, 1), - .footprint = gMonFootprint_Applin, + FOOTPRINT(Applin) LEARNSETS(Applin), .evolutions = EVOLUTION({EVO_ITEM, ITEM_TART_APPLE, SPECIES_FLAPPLE}, {EVO_ITEM, ITEM_SWEET_APPLE, SPECIES_APPLETUN}, @@ -1756,7 +1756,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_FLAPPLE, \ .natDexNum = NATIONAL_DEX_FLAPPLE, \ .categoryName = _("Apple Wing"), \ - .footprint = gMonFootprint_Flapple, \ + FOOTPRINT(Flapple) \ LEARNSETS(Flapple), \ .formSpeciesIdTable = sFlappleFormSpeciesIdTable, \ .formChangeTable = sFlappleFormChangeTable @@ -1836,7 +1836,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_APPLETUN, \ .natDexNum = NATIONAL_DEX_APPLETUN, \ .categoryName = _("Apple Nectar"), \ - .footprint = gMonFootprint_Appletun, \ + FOOTPRINT(Appletun) \ LEARNSETS(Appletun), \ .formSpeciesIdTable = sAppletunFormSpeciesIdTable, \ .formChangeTable = sAppletunFormChangeTable @@ -1936,8 +1936,56 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dipplin), ICON(Dipplin, 1), - //.footprint = gMonFootprint_Dipplin, + //FOOTPRINT(Dipplin) LEARNSETS(Dipplin), + .evolutions = EVOLUTION({EVO_MOVE, MOVE_DRAGON_CHEER, SPECIES_HYDRAPPLE}), + }, + + [SPECIES_HYDRAPPLE] = + { + .baseHP = 106, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 44, + .baseSpAttack = 120, + .baseSpDefense = 80, + .types = { TYPE_GRASS, TYPE_DRAGON }, + .catchRate = 10, + .expYield = 170, //Currently unknown + .evYield_SpAttack = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 20, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_ERRATIC, + .eggGroups = { EGG_GROUP_GRASS, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_SUPERSWEET_SYRUP, ABILITY_REGENERATOR, ABILITY_STICKY_HOLD }, + .bodyColor = BODY_COLOR_GREEN, + .speciesName = _("Hydrapple"), + //.cryId = CRY_HYDRAPPLE, + .natDexNum = NATIONAL_DEX_HYDRAPPLE, + .categoryName = _("Apple Hydra"), + .height = 18, + .weight = 930, + .description = COMPOUND_STRING( + "These capricious syrpents have\n" + "banded together. On the rare\n" + "occasion that their moods align,\n" + "their true power is unleashed."), + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + //FRONT_PIC(Hydrapple, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Hydrapple, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(Hydrapple, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(Hydrapple), + //ICON(Hydrapple, 0), + //FOOTPRINT(Hydrapple) + LEARNSETS(Hydrapple), }, #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -1985,7 +2033,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Silicobra), ICON(Silicobra, 1), - .footprint = gMonFootprint_Silicobra, + FOOTPRINT(Silicobra) LEARNSETS(Silicobra), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SANDACONDA}), }, @@ -2012,7 +2060,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_SANDACONDA, \ .natDexNum = NATIONAL_DEX_SANDACONDA, \ .categoryName = _("Sand Snake"), \ - .footprint = gMonFootprint_Sandaconda, \ + FOOTPRINT(Sandaconda) \ LEARNSETS(Sandaconda), \ .formSpeciesIdTable = sSandacondaFormSpeciesIdTable, \ .formChangeTable = sSandacondaFormChangeTable @@ -2098,7 +2146,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, \ .trainerScale = 257, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Cramorant, \ + FOOTPRINT(Cramorant) \ LEARNSETS(Cramorant), \ .formSpeciesIdTable = sCramorantFormSpeciesIdTable, \ .formChangeTable = sCramorantFormChangeTable @@ -2204,7 +2252,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Arrokuda), ICON(Arrokuda, 2), - .footprint = gMonFootprint_Arrokuda, + FOOTPRINT(Arrokuda) LEARNSETS(Arrokuda), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_BARRASKEWDA}), }, @@ -2252,7 +2300,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Barraskewda), ICON(Barraskewda, 2), - .footprint = gMonFootprint_Barraskewda, + FOOTPRINT(Barraskewda) LEARNSETS(Barraskewda), }, #endif //P_FAMILY_ARROKUDA @@ -2301,7 +2349,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Toxel), ICON(Toxel, 2), - .footprint = gMonFootprint_Toxel, + FOOTPRINT(Toxel) LEARNSETS(Toxel), .evolutions = EVOLUTION({EVO_LEVEL_NATURE_AMPED, 30, SPECIES_TOXTRICITY_AMPED}, {EVO_LEVEL_NATURE_LOW_KEY, 30, SPECIES_TOXTRICITY_LOW_KEY}), @@ -2355,7 +2403,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ToxtricityAmped), ICON(ToxtricityAmped, 2), - .footprint = gMonFootprint_Toxtricity, + FOOTPRINT(Toxtricity) LEARNSETS(ToxtricityAmped), }, @@ -2382,7 +2430,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ToxtricityGigantamax), ICON(ToxtricityGigantamax, 0), - .footprint = gMonFootprint_Toxtricity, + FOOTPRINT(Toxtricity) LEARNSETS(ToxtricityAmped), .isGigantamax = TRUE, }, @@ -2412,7 +2460,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ToxtricityLowKey), ICON(ToxtricityLowKey, 2), - .footprint = gMonFootprint_Toxtricity, + FOOTPRINT(Toxtricity) LEARNSETS(ToxtricityLowKey), }, @@ -2438,7 +2486,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ToxtricityGigantamax), ICON(ToxtricityGigantamax, 0), - .footprint = gMonFootprint_Toxtricity, + FOOTPRINT(Toxtricity) LEARNSETS(ToxtricityLowKey), .isGigantamax = TRUE, }, @@ -2488,7 +2536,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Sizzlipede), ICON(Sizzlipede, 0), - .footprint = gMonFootprint_Sizzlipede, + FOOTPRINT(Sizzlipede) LEARNSETS(Sizzlipede), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_CENTISKORCH}), }, @@ -2515,7 +2563,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_CENTISKORCH, \ .natDexNum = NATIONAL_DEX_CENTISKORCH, \ .categoryName = _("Radiator"), \ - .footprint = gMonFootprint_Centiskorch, \ + FOOTPRINT(Centiskorch) \ LEARNSETS(Centiskorch), \ .formSpeciesIdTable = sCentiskorchFormSpeciesIdTable, \ .formChangeTable = sCentiskorchFormChangeTable @@ -2618,7 +2666,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Clobbopus), ICON(Clobbopus, 0), - .footprint = gMonFootprint_Clobbopus, + FOOTPRINT(Clobbopus) LEARNSETS(Clobbopus), .evolutions = EVOLUTION({EVO_MOVE, MOVE_TAUNT, SPECIES_GRAPPLOCT}), }, @@ -2665,7 +2713,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Grapploct), ICON(Grapploct, 2), - .footprint = gMonFootprint_Grapploct, + FOOTPRINT(Grapploct) LEARNSETS(Grapploct), }, #endif //P_FAMILY_CLOBBOPUS @@ -2706,7 +2754,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .backPicYOffset = 16, \ PALETTES(Sinistea), \ ICON(Sinistea, 2), \ - .footprint = gMonFootprint_Sinistea, \ + FOOTPRINT(Sinistea) \ LEARNSETS(Sinistea), \ .formSpeciesIdTable = sSinisteaFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, @@ -2770,7 +2818,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .backPicYOffset = 13, \ PALETTES(Polteageist), \ ICON(Polteageist, 2), \ - .footprint = gMonFootprint_Polteageist, \ + FOOTPRINT(Polteageist) \ LEARNSETS(Polteageist), \ .formSpeciesIdTable = sPolteageistFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, @@ -2842,7 +2890,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Hatenna), ICON(Hatenna, 0), - .footprint = gMonFootprint_Hatenna, + FOOTPRINT(Hatenna) LEARNSETS(Hatenna), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_HATTREM}), }, @@ -2889,7 +2937,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Hattrem), ICON(Hattrem, 0), - .footprint = gMonFootprint_Hattrem, + FOOTPRINT(Hattrem) LEARNSETS(Hattrem), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_HATTERENE}), }, @@ -2916,7 +2964,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_HATTERENE, \ .natDexNum = NATIONAL_DEX_HATTERENE, \ .categoryName = _("Silent"), \ - .footprint = gMonFootprint_Hatterene, \ + FOOTPRINT(Hatterene) \ LEARNSETS(Hatterene), \ .formSpeciesIdTable = sHattereneFormSpeciesIdTable, \ .formChangeTable = sHattereneFormChangeTable @@ -3018,7 +3066,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Impidimp), ICON(Impidimp, 0), - .footprint = gMonFootprint_Impidimp, + FOOTPRINT(Impidimp) LEARNSETS(Impidimp), .evolutions = EVOLUTION({EVO_LEVEL, 32, SPECIES_MORGREM}), }, @@ -3066,7 +3114,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Morgrem), ICON(Morgrem, 0), - .footprint = gMonFootprint_Morgrem, + FOOTPRINT(Morgrem) LEARNSETS(Morgrem), .evolutions = EVOLUTION({EVO_LEVEL, 42, SPECIES_GRIMMSNARL}), }, @@ -3093,7 +3141,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_GRIMMSNARL, \ .natDexNum = NATIONAL_DEX_GRIMMSNARL, \ .categoryName = _("Bulk Up"), \ - .footprint = gMonFootprint_Grimmsnarl, \ + FOOTPRINT(Grimmsnarl) \ LEARNSETS(Grimmsnarl), \ .formSpeciesIdTable = sGrimmsnarlFormSpeciesIdTable, \ .formChangeTable = sGrimmsnarlFormChangeTable @@ -3195,7 +3243,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Milcery), ICON(Milcery, 1), - .footprint = gMonFootprint_Milcery, + FOOTPRINT(Milcery) LEARNSETS(Milcery), .evolutions = EVOLUTION({EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_VANILLA_CREAM}, {EVO_LEVEL, 0, SPECIES_ALCREMIE_STRAWBERRY_RUBY_CREAM}, @@ -3249,7 +3297,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .palette = gMonPalette_Alcremie ##sweet##cream, \ .shinyPalette = gMonShinyPalette_Alcremie ##sweet, \ ICON(AlcremieStrawberryVanillaCream, 1), \ - .footprint = gMonFootprint_Alcremie, \ + FOOTPRINT(Alcremie) \ LEARNSETS(Alcremie), \ .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, \ .formChangeTable = sAlcremieFormChangeTable, \ @@ -3350,7 +3398,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(AlcremieGigantamax), ICON(AlcremieGigantamax, 1), - .footprint = gMonFootprint_Alcremie, + FOOTPRINT(Alcremie) LEARNSETS(Alcremie), .formSpeciesIdTable = sAlcremieFormSpeciesIdTable, .formChangeTable = sAlcremieFormChangeTable, @@ -3401,7 +3449,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Falinks), ICON(Falinks, 0), - .footprint = gMonFootprint_Falinks, + FOOTPRINT(Falinks) LEARNSETS(Falinks), }, #endif //P_FAMILY_FALINKS @@ -3449,7 +3497,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Pincurchin), ICON(Pincurchin, 0), - .footprint = gMonFootprint_Pincurchin, + FOOTPRINT(Pincurchin) LEARNSETS(Pincurchin), }, #endif //P_FAMILY_PINCURCHIN @@ -3499,7 +3547,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Snom), ICON(Snom, 0), - .footprint = gMonFootprint_Snom, + FOOTPRINT(Snom) LEARNSETS(Snom), .evolutions = EVOLUTION({EVO_FRIENDSHIP_NIGHT, 0, SPECIES_FROSMOTH}), }, @@ -3548,7 +3596,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Frosmoth), ICON(Frosmoth, 0), - .footprint = gMonFootprint_Frosmoth, + FOOTPRINT(Frosmoth) LEARNSETS(Frosmoth), }, #endif //P_FAMILY_SNOM @@ -3597,7 +3645,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Stonjourner), ICON(Stonjourner, 2), - .footprint = gMonFootprint_Stonjourner, + FOOTPRINT(Stonjourner) LEARNSETS(Stonjourner), }, #endif //P_FAMILY_STONJOURNER @@ -3624,7 +3672,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, \ .trainerScale = 262, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Eiscue, \ + FOOTPRINT(Eiscue) \ LEARNSETS(Eiscue), \ .formSpeciesIdTable = sEiscueFormSpeciesIdTable, \ .formChangeTable = sEiscueFormChangeTable @@ -3701,7 +3749,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 8, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Indeedee, \ + FOOTPRINT(Indeedee) \ .formSpeciesIdTable = sIndeedeeFormSpeciesIdTable [SPECIES_INDEEDEE_MALE] = @@ -3793,7 +3841,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 13, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Morpeko, \ + FOOTPRINT(Morpeko) \ LEARNSETS(Morpeko), \ .formSpeciesIdTable = sMorpekoFormSpeciesIdTable, \ .formChangeTable = sMorpekoFormChangeTable @@ -3884,7 +3932,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cufant), ICON(Cufant, 0), - .footprint = gMonFootprint_Cufant, + FOOTPRINT(Cufant) LEARNSETS(Cufant), .evolutions = EVOLUTION({EVO_LEVEL, 34, SPECIES_COPPERAJAH}), }, @@ -3912,7 +3960,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_COPPERAJAH, \ .natDexNum = NATIONAL_DEX_COPPERAJAH, \ .categoryName = _("Copperderm"), \ - .footprint = gMonFootprint_Copperajah, \ + FOOTPRINT(Copperajah) \ LEARNSETS(Copperajah), \ .formSpeciesIdTable = sCopperajahFormSpeciesIdTable, \ .formChangeTable = sCopperajahFormChangeTable @@ -4014,7 +4062,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dracozolt), ICON(Dracozolt, 1), - .footprint = gMonFootprint_Dracozolt, + FOOTPRINT(Dracozolt) LEARNSETS(Dracozolt), }, #endif //P_FAMILY_DRACOZOLT @@ -4062,7 +4110,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Arctozolt), ICON(Arctozolt, 2), - .footprint = gMonFootprint_Arctozolt, + FOOTPRINT(Arctozolt) LEARNSETS(Arctozolt), }, #endif //P_FAMILY_ARCTOZOLT @@ -4111,7 +4159,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dracovish), ICON(Dracovish, 0), - .footprint = gMonFootprint_Dracovish, + FOOTPRINT(Dracovish) LEARNSETS(Dracovish), }, #endif //P_FAMILY_DRACOVISH @@ -4160,7 +4208,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Arctovish), ICON(Arctovish, 0), - .footprint = gMonFootprint_Arctovish, + FOOTPRINT(Arctovish) LEARNSETS(Arctovish), }, #endif //P_FAMILY_ARCTOVISH @@ -4188,7 +4236,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .cryId = CRY_DURALUDON, \ .natDexNum = NATIONAL_DEX_DURALUDON, \ .categoryName = _("Alloy"), \ - .footprint = gMonFootprint_Duraludon, \ + FOOTPRINT(Duraludon) \ LEARNSETS(Duraludon), \ .formSpeciesIdTable = sDuraludonFormSpeciesIdTable, \ .formChangeTable = sDuraludonFormChangeTable @@ -4215,6 +4263,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Duraludon), ICON(Duraludon, 0), + .evolutions = EVOLUTION({EVO_ITEM, ITEM_METAL_ALLOY, SPECIES_ARCHALUDON}), }, #if P_GIGANTAMAX_FORMS @@ -4244,6 +4293,55 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .isGigantamax = TRUE, }, #endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS + [SPECIES_ARCHALUDON] = + { + .baseHP = 90, + .baseAttack = 105, + .baseDefense = 130, + .baseSpeed = 85, + .baseSpAttack = 125, + .baseSpDefense = 65, + .types = { TYPE_STEEL, TYPE_DRAGON }, + .catchRate = 10, + .expYield = 187, //Currently unknown + .evYield_Defense = 3, + .genderRatio = PERCENT_FEMALE(50), + .eggCycles = 30, + .friendship = STANDARD_FRIENDSHIP, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroups = { EGG_GROUP_MINERAL, EGG_GROUP_DRAGON }, + .abilities = { ABILITY_STAMINA, ABILITY_STURDY, ABILITY_STALWART }, + .bodyColor = BODY_COLOR_WHITE, + .speciesName = _("Archaludon"), + //.cryId = CRY_ARCHALUDON, + .natDexNum = NATIONAL_DEX_ARCHALUDON, + .categoryName = _("Alloy"), + .height = 20, + .weight = 600, + .description = COMPOUND_STRING( + "It gathers static electricity\n" + "from its surroundings. The beams\n" + "it launches when down on all fours\n" + "are tremendously powerful."), + .pokemonScale = 267, + .pokemonOffset = 2, + .trainerScale = 286, + .trainerOffset = 1, + //FRONT_PIC(Archaludon, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Archaludon, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(Archaludon, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(Archaludon), + //ICON(Archaludon, 0), + //FOOTPRINT(Archaludon) + LEARNSETS(Archaludon), + }, +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY @@ -4291,7 +4389,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dreepy), ICON(Dreepy, 0), - .footprint = gMonFootprint_Dreepy, + FOOTPRINT(Dreepy) LEARNSETS(Dreepy), .evolutions = EVOLUTION({EVO_LEVEL, 50, SPECIES_DRAKLOAK}), }, @@ -4339,7 +4437,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Drakloak), ICON(Drakloak, 0), - .footprint = gMonFootprint_Drakloak, + FOOTPRINT(Drakloak) LEARNSETS(Drakloak), .evolutions = EVOLUTION({EVO_LEVEL, 60, SPECIES_DRAGAPULT}), }, @@ -4388,7 +4486,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dragapult), ICON(Dragapult, 0), - .footprint = gMonFootprint_Dragapult, + FOOTPRINT(Dragapult) LEARNSETS(Dragapult), }, #endif //P_FAMILY_DREEPY @@ -4413,7 +4511,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Zacian, \ + FOOTPRINT(Zacian) \ LEARNSETS(Zacian), \ .formSpeciesIdTable = sZacianFormSpeciesIdTable, \ .formChangeTable = sZacianFormChangeTable @@ -4496,7 +4594,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 7, \ .trainerScale = 256, \ .trainerOffset = 0, \ - .footprint = gMonFootprint_Zamazenta, \ + FOOTPRINT(Zamazenta) \ LEARNSETS(Zamazenta), \ .formSpeciesIdTable = sZamazentaFormSpeciesIdTable, \ .formChangeTable = sZamazentaFormChangeTable @@ -4576,7 +4674,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .speciesName = _("Eternatus"), \ .natDexNum = NATIONAL_DEX_ETERNATUS, \ .categoryName = _("Gigantic"), \ - .footprint = gMonFootprint_Eternatus, \ + FOOTPRINT(Eternatus) \ LEARNSETS(Eternatus), \ .formSpeciesIdTable = sEternatusFormSpeciesIdTable @@ -4693,7 +4791,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Kubfu), ICON(Kubfu, 1), - .footprint = gMonFootprint_Kubfu, + FOOTPRINT(Kubfu) LEARNSETS(Kubfu), .evolutions = EVOLUTION({EVO_DARK_SCROLL, 0, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, {EVO_ITEM, ITEM_SCROLL_OF_DARKNESS, SPECIES_URSHIFU_SINGLE_STRIKE_STYLE}, @@ -4722,7 +4820,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .speciesName = _("Urshifu"), \ .natDexNum = NATIONAL_DEX_URSHIFU, \ .categoryName = _("Wushu"), \ - .footprint = gMonFootprint_Urshifu, \ + FOOTPRINT(Urshifu) \ .formSpeciesIdTable = sUrshifuFormSpeciesIdTable #define URSHIFU_SINGLE_STRIKE_STYLE_MISC_INFO \ @@ -4877,7 +4975,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = .pokemonOffset = 2, \ .trainerScale = 286, \ .trainerOffset = 1, \ - .footprint = gMonFootprint_Zarude, \ + FOOTPRINT(Zarude) \ LEARNSETS(Zarude), \ .formSpeciesIdTable = sZarudeFormSpeciesIdTable @@ -4964,7 +5062,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Regieleki), ICON(Regieleki, 0), - .footprint = gMonFootprint_Regieleki, + FOOTPRINT(Regieleki) LEARNSETS(Regieleki), .isLegendary = TRUE, }, @@ -5016,7 +5114,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Regidrago), ICON(Regidrago, 0), - .footprint = gMonFootprint_Regidrago, + FOOTPRINT(Regidrago) LEARNSETS(Regidrago), }, #endif //P_FAMILY_REGIDRAGO @@ -5065,7 +5163,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Glastrier), ICON(Glastrier, 0), - .footprint = gMonFootprint_Glastrier, + FOOTPRINT(Glastrier) LEARNSETS(Glastrier), }, #endif //P_FAMILY_GLASTRIER @@ -5115,7 +5213,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Spectrier), ICON(Spectrier, 0), - .footprint = gMonFootprint_Spectrier, + FOOTPRINT(Spectrier) LEARNSETS(Spectrier), }, #endif //P_FAMILY_SPECTRIER @@ -5123,7 +5221,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = #define CALYREX_MISC_INFO \ .speciesName = _("Calyrex"), \ .natDexNum = NATIONAL_DEX_CALYREX, \ - .footprint = gMonFootprint_Calyrex, \ + FOOTPRINT(Calyrex) \ .formSpeciesIdTable = sCalyrexFormSpeciesIdTable, \ .isLegendary = TRUE @@ -5319,7 +5417,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(EnamorusIncarnate), ICON(EnamorusIncarnate, 1), - //.footprint = gMonFootprint_EnamorusIncarnate, + //FOOTPRINT(EnamorusIncarnate) }, [SPECIES_ENAMORUS_THERIAN] = @@ -5347,7 +5445,7 @@ const struct SpeciesInfo gSpeciesInfoGen8[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(EnamorusTherian), ICON(EnamorusTherian, 1), - //.footprint = gMonFootprint_Enamorus, + //FOOTPRINT(Enamorus) }, #endif //P_FAMILY_ENAMORUS diff --git a/src/data/pokemon/species_info/gen_9.h b/src/data/pokemon/species_info/gen_9.h index 2f5f0ad76aa7..2a9321f2d135 100644 --- a/src/data/pokemon/species_info/gen_9.h +++ b/src/data/pokemon/species_info/gen_9.h @@ -47,7 +47,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Sprigatito), ICON(Sprigatito, 4), - //.footprint = gMonFootprint_Sprigatito, + //FOOTPRINT(Sprigatito) LEARNSETS(Sprigatito), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_FLORAGATO}), }, @@ -95,7 +95,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Floragato), ICON(Floragato, 1), - //.footprint = gMonFootprint_Floragato, + //FOOTPRINT(Floragato) LEARNSETS(Floragato), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_MEOWSCARADA}), }, @@ -143,7 +143,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Meowscarada), ICON(Meowscarada, 1), - //.footprint = gMonFootprint_Meowscarada, + //FOOTPRINT(Meowscarada) LEARNSETS(Meowscarada), }, #endif //P_FAMILY_SPRIGATITO @@ -192,7 +192,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Fuecoco), ICON(Fuecoco, 0), - //.footprint = gMonFootprint_Fuecoco, + //FOOTPRINT(Fuecoco) LEARNSETS(Fuecoco), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_CROCALOR}), }, @@ -240,7 +240,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Crocalor), ICON(Crocalor, 0), - //.footprint = gMonFootprint_Crocalor, + //FOOTPRINT(Crocalor) LEARNSETS(Crocalor), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_SKELEDIRGE}), }, @@ -288,7 +288,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Skeledirge), ICON(Skeledirge, 0), - //.footprint = gMonFootprint_Skeledirge, + //FOOTPRINT(Skeledirge) LEARNSETS(Skeledirge), }, #endif //P_FAMILY_FUECOCO @@ -337,7 +337,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Quaxly), ICON(Quaxly, 2), - //.footprint = gMonFootprint_Quaxly, + //FOOTPRINT(Quaxly) LEARNSETS(Quaxly), .evolutions = EVOLUTION({EVO_LEVEL, 16, SPECIES_QUAXWELL}), }, @@ -385,7 +385,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Quaxwell), ICON(Quaxwell, 0), - //.footprint = gMonFootprint_Quaxwell, + //FOOTPRINT(Quaxwell) LEARNSETS(Quaxwell), .evolutions = EVOLUTION({EVO_LEVEL, 36, SPECIES_QUAQUAVAL}), }, @@ -433,7 +433,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Quaquaval), ICON(Quaquaval, 0), - //.footprint = gMonFootprint_Quaquaval, + //FOOTPRINT(Quaquaval) LEARNSETS(Quaquaval), }, #endif //P_FAMILY_QUAXLY @@ -482,7 +482,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Lechonk), ICON(Lechonk, 1), - //.footprint = gMonFootprint_Lechonk, + //FOOTPRINT(Lechonk) LEARNSETS(Lechonk), .evolutions = EVOLUTION({EVO_LEVEL_MALE, 18, SPECIES_OINKOLOGNE_MALE}, {EVO_LEVEL_FEMALE, 18, SPECIES_OINKOLOGNE_FEMALE}), @@ -534,7 +534,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(OinkologneMale), ICON(OinkologneMale, 1), - //.footprint = gMonFootprint_Oinkologne, + //FOOTPRINT(Oinkologne) LEARNSETS(OinkologneMale), }, @@ -565,7 +565,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(OinkologneFemale), ICON(OinkologneFemale, 2), - //.footprint = gMonFootprint_Oinkologne, + //FOOTPRINT(Oinkologne) LEARNSETS(OinkologneFemale), }, #endif //P_FAMILY_LECHONK @@ -614,7 +614,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tarountula), ICON(Tarountula, 1), - //.footprint = gMonFootprint_Tarountula, + //FOOTPRINT(Tarountula) LEARNSETS(Tarountula), .evolutions = EVOLUTION({EVO_LEVEL, 15, SPECIES_SPIDOPS}), }, @@ -662,7 +662,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Spidops), ICON(Spidops, 1), - //.footprint = gMonFootprint_Spidops, + //FOOTPRINT(Spidops) LEARNSETS(Spidops), }, #endif //P_FAMILY_TAROUNTULA @@ -711,7 +711,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Nymble), ICON(Nymble, 0), - //.footprint = gMonFootprint_Nymble, + //FOOTPRINT(Nymble) LEARNSETS(Nymble), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_LOKIX}), }, @@ -759,7 +759,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Lokix), ICON(Lokix, 0), - //.footprint = gMonFootprint_Lokix, + //FOOTPRINT(Lokix) LEARNSETS(Lokix), }, #endif //P_FAMILY_NYMBLE @@ -808,7 +808,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Pawmi), ICON(Pawmi, 3), - //.footprint = gMonFootprint_Pawmi, + //FOOTPRINT(Pawmi) LEARNSETS(Pawmi), .evolutions = EVOLUTION({EVO_LEVEL, 18, SPECIES_PAWMO}), }, @@ -856,7 +856,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Pawmo), ICON(Pawmo, 3), - //.footprint = gMonFootprint_Pawmo, + //FOOTPRINT(Pawmo) LEARNSETS(Pawmo), .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_PAWMOT}), }, @@ -904,7 +904,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Pawmot), ICON(Pawmot, 3), - //.footprint = gMonFootprint_Pawmot, + //FOOTPRINT(Pawmot) LEARNSETS(Pawmot), }, #endif //P_FAMILY_PAWMI @@ -953,7 +953,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tandemaus), ICON(Tandemaus, 0), - //.footprint = gMonFootprint_Tandemaus, + //FOOTPRINT(Tandemaus) LEARNSETS(Tandemaus), .evolutions = EVOLUTION({EVO_LEVEL_FAMILY_OF_FOUR, 25, SPECIES_MAUSHOLD_FAMILY_OF_FOUR}, {EVO_LEVEL_FAMILY_OF_THREE, 25, SPECIES_MAUSHOLD_FAMILY_OF_THREE}), @@ -993,7 +993,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sMausholdFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Maushold, + //FOOTPRINT(Maushold) [SPECIES_MAUSHOLD_FAMILY_OF_THREE] = { @@ -1069,7 +1069,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Fidough), ICON(Fidough, 1), - //.footprint = gMonFootprint_Fidough, + //FOOTPRINT(Fidough) LEARNSETS(Fidough), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_DACHSBUN}), }, @@ -1117,7 +1117,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dachsbun), ICON(Dachsbun, 0), // TODO - //.footprint = gMonFootprint_Dachsbun, + //FOOTPRINT(Dachsbun) LEARNSETS(Dachsbun), }, #endif //P_FAMILY_FIDOUGH @@ -1166,7 +1166,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Smoliv), ICON(Smoliv, 1), - //.footprint = gMonFootprint_Smoliv, + //FOOTPRINT(Smoliv) LEARNSETS(Smoliv), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_DOLLIV}), }, @@ -1214,7 +1214,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dolliv), ICON(Dolliv, 1), - //.footprint = gMonFootprint_Dolliv, + //FOOTPRINT(Dolliv) LEARNSETS(Dolliv), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARBOLIVA}), }, @@ -1262,7 +1262,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Arboliva), ICON(Arboliva, 5), - //.footprint = gMonFootprint_Arboliva, + //FOOTPRINT(Arboliva) LEARNSETS(Arboliva), }, #endif //P_FAMILY_SMOLIV @@ -1303,7 +1303,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sSquawkabillyFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Squawkabilly, + //FOOTPRINT(Squawkabilly) [SPECIES_SQUAWKABILLY_GREEN_PLUMAGE] = { @@ -1406,7 +1406,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Nacli), ICON(Nacli, 2), - //.footprint = gMonFootprint_Nacli, + //FOOTPRINT(Nacli) LEARNSETS(Nacli), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_NACLSTACK}), }, @@ -1454,7 +1454,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Naclstack), ICON(Naclstack, 2), // TODO: recolor - //.footprint = gMonFootprint_Naclstack, + //FOOTPRINT(Naclstack) LEARNSETS(Naclstack), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_GARGANACL}), }, @@ -1502,7 +1502,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Garganacl), ICON(Garganacl, 2), - //.footprint = gMonFootprint_Garganacl, + //FOOTPRINT(Garganacl) LEARNSETS(Garganacl), }, #endif //P_FAMILY_NACLI @@ -1551,7 +1551,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Charcadet), ICON(Charcadet, 1), - //.footprint = gMonFootprint_Charcadet, + //FOOTPRINT(Charcadet) LEARNSETS(Charcadet), .evolutions = EVOLUTION({EVO_ITEM, ITEM_AUSPICIOUS_ARMOR, SPECIES_ARMAROUGE}, {EVO_ITEM, ITEM_MALICIOUS_ARMOR, SPECIES_CERULEDGE}), @@ -1600,7 +1600,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Armarouge), ICON(Armarouge, 0), - //.footprint = gMonFootprint_Armarouge, + //FOOTPRINT(Armarouge) LEARNSETS(Armarouge), }, @@ -1647,7 +1647,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Ceruledge), ICON(Ceruledge, 2), - //.footprint = gMonFootprint_Ceruledge, + //FOOTPRINT(Ceruledge) LEARNSETS(Ceruledge), }, #endif //P_FAMILY_CHARCADET @@ -1697,7 +1697,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tadbulb), ICON(Tadbulb, 5), // TODO: Redo to 0 - //.footprint = gMonFootprint_Tadbulb, + //FOOTPRINT(Tadbulb) LEARNSETS(Tadbulb), .evolutions = EVOLUTION({EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_BELLIBOLT}), }, @@ -1745,7 +1745,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Bellibolt), ICON(Bellibolt, 0), - //.footprint = gMonFootprint_Bellibolt, + //FOOTPRINT(Bellibolt) LEARNSETS(Bellibolt), }, #endif //P_FAMILY_TADBULB @@ -1794,7 +1794,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Wattrel), ICON(Wattrel, 3), - //.footprint = gMonFootprint_Wattrel, + //FOOTPRINT(Wattrel) LEARNSETS(Wattrel), .evolutions = EVOLUTION({EVO_LEVEL, 25, SPECIES_KILOWATTREL}), }, @@ -1842,7 +1842,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Kilowattrel), ICON(Kilowattrel, 3), - //.footprint = gMonFootprint_Kilowattrel, + //FOOTPRINT(Kilowattrel) LEARNSETS(Kilowattrel), }, #endif //P_FAMILY_WATTREL @@ -1891,7 +1891,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Maschiff), ICON(Maschiff, 3), - //.footprint = gMonFootprint_Maschiff, + //FOOTPRINT(Maschiff) LEARNSETS(Maschiff), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_MABOSSTIFF}), }, @@ -1939,7 +1939,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Mabosstiff), ICON(Mabosstiff, 5), - //.footprint = gMonFootprint_Mabosstiff, + //FOOTPRINT(Mabosstiff) LEARNSETS(Mabosstiff), }, #endif //P_FAMILY_MASCHIFF @@ -1988,7 +1988,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Shroodle), ICON(Shroodle, 0), - //.footprint = gMonFootprint_Shroodle, + //FOOTPRINT(Shroodle) LEARNSETS(Shroodle), .evolutions = EVOLUTION({EVO_LEVEL, 28, SPECIES_GRAFAIAI}), }, @@ -2036,7 +2036,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Grafaiai), ICON(Grafaiai, 0), - //.footprint = gMonFootprint_Grafaiai, + //FOOTPRINT(Grafaiai) LEARNSETS(Grafaiai), }, #endif //P_FAMILY_SHROODLE @@ -2085,7 +2085,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Bramblin), ICON(Bramblin, 3), - //.footprint = gMonFootprint_Bramblin, + //FOOTPRINT(Bramblin) LEARNSETS(Bramblin), .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_BRAMBLEGHAST}), }, @@ -2133,7 +2133,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Brambleghast), ICON(Brambleghast, 5), - //.footprint = gMonFootprint_Brambleghast, + //FOOTPRINT(Brambleghast) LEARNSETS(Brambleghast), }, #endif //P_FAMILY_BRAMBLIN @@ -2182,7 +2182,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Toedscool), ICON(Toedscool, 0), - //.footprint = gMonFootprint_Toedscool, + //FOOTPRINT(Toedscool) LEARNSETS(Toedscool), .evolutions = EVOLUTION({EVO_LEVEL, 30, SPECIES_TOEDSCRUEL}), }, @@ -2230,7 +2230,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Toedscruel), ICON(Toedscruel, 0), - //.footprint = gMonFootprint_Toedscruel, + //FOOTPRINT(Toedscruel) LEARNSETS(Toedscruel), }, #endif //P_FAMILY_TOEDSCOOL @@ -2279,7 +2279,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Klawf), ICON(Klawf, 0), - //.footprint = gMonFootprint_Klawf, + //FOOTPRINT(Klawf) LEARNSETS(Klawf), }, #endif //P_FAMILY_KLAWF @@ -2328,7 +2328,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Capsakid), ICON(Capsakid, 1), - //.footprint = gMonFootprint_Capsakid, + //FOOTPRINT(Capsakid) LEARNSETS(Capsakid), .evolutions = EVOLUTION({EVO_ITEM, ITEM_FIRE_STONE, SPECIES_SCOVILLAIN}), }, @@ -2376,7 +2376,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Scovillain), ICON(Scovillain, 1), - //.footprint = gMonFootprint_Scovillain, + //FOOTPRINT(Scovillain) LEARNSETS(Scovillain), }, #endif //P_FAMILY_CAPSAKID @@ -2425,7 +2425,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Rellor), ICON(Rellor, 5), - //.footprint = gMonFootprint_Rellor, + //FOOTPRINT(Rellor) LEARNSETS(Rellor), .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_RABSCA}), }, @@ -2473,7 +2473,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Rabsca), ICON(Rabsca, 0), - //.footprint = gMonFootprint_Rabsca, + //FOOTPRINT(Rabsca) LEARNSETS(Rabsca), }, #endif //P_FAMILY_RELLOR @@ -2522,7 +2522,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Flittle), ICON(Flittle, 3), - //.footprint = gMonFootprint_Flittle, + //FOOTPRINT(Flittle) LEARNSETS(Flittle), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ESPATHRA}), }, @@ -2570,7 +2570,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Espathra), ICON(Espathra, 5), - //.footprint = gMonFootprint_Espathra, + //FOOTPRINT(Espathra) LEARNSETS(Espathra), }, #endif //P_FAMILY_FLITTLE @@ -2619,7 +2619,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tinkatink), ICON(Tinkatink, 1), - //.footprint = gMonFootprint_Tinkatink, + //FOOTPRINT(Tinkatink) LEARNSETS(Tinkatink), .evolutions = EVOLUTION({EVO_LEVEL, 24, SPECIES_TINKATUFF}), }, @@ -2667,7 +2667,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tinkatuff), ICON(Tinkatuff, 4), - //.footprint = gMonFootprint_Tinkatuff, + //FOOTPRINT(Tinkatuff) LEARNSETS(Tinkatuff), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_TINKATON}), }, @@ -2715,7 +2715,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Tinkaton), ICON(Tinkaton, 4), - //.footprint = gMonFootprint_Tinkaton, + //FOOTPRINT(Tinkaton) LEARNSETS(Tinkaton), }, #endif //P_FAMILY_TINKATINK @@ -2763,7 +2763,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Wiglett), ICON(Wiglett, 0), - //.footprint = gMonFootprint_Wiglett, + //FOOTPRINT(Wiglett) LEARNSETS(Wiglett), .evolutions = EVOLUTION({EVO_LEVEL, 26, SPECIES_WUGTRIO}), }, @@ -2810,7 +2810,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Wugtrio), ICON(Wugtrio, 0), - //.footprint = gMonFootprint_Wugtrio, + //FOOTPRINT(Wugtrio) LEARNSETS(Wugtrio), }, #endif //P_FAMILY_WIGLETT @@ -2860,7 +2860,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Bombirdier), ICON(Bombirdier, 0), - //.footprint = gMonFootprint_Bombirdier, + //FOOTPRINT(Bombirdier) LEARNSETS(Bombirdier), }, #endif //P_FAMILY_BOMBIRDIER @@ -2908,7 +2908,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Finizen), ICON(Finizen, 0), - //.footprint = gMonFootprint_Finizen, + //FOOTPRINT(Finizen) LEARNSETS(Finizen), .evolutions = EVOLUTION({EVO_LEVEL, 38, SPECIES_PALAFIN_ZERO}), }, @@ -2935,7 +2935,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sPalafinFormSpeciesIdTable, \ .formChangeTable = sPalafinZeroFormChangeTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, - //.footprint = gMonFootprint_Palafin, + //FOOTPRINT(Palafin) [SPECIES_PALAFIN_ZERO] = { @@ -3038,7 +3038,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Varoom), ICON(Varoom, 5), - //.footprint = gMonFootprint_Varoom, + //FOOTPRINT(Varoom) LEARNSETS(Varoom), .evolutions = EVOLUTION({EVO_LEVEL, 40, SPECIES_REVAVROOM}), }, @@ -3086,7 +3086,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Revavroom), ICON(Revavroom, 5), - //.footprint = gMonFootprint_Revavroom, + //FOOTPRINT(Revavroom) LEARNSETS(Revavroom), }, #endif //P_FAMILY_VAROOM @@ -3135,7 +3135,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cyclizar), ICON(Cyclizar, 1), - //.footprint = gMonFootprint_Cyclizar, + //FOOTPRINT(Cyclizar) LEARNSETS(Cyclizar), }, #endif //P_FAMILY_CYCLIZAR @@ -3184,7 +3184,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Orthworm), ICON(Orthworm, 4), - //.footprint = gMonFootprint_Orthworm, + //FOOTPRINT(Orthworm) LEARNSETS(Orthworm), }, #endif //P_FAMILY_ORTHWORM @@ -3234,7 +3234,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Glimmet), ICON(Glimmet, 0), - //.footprint = gMonFootprint_Glimmet, + //FOOTPRINT(Glimmet) LEARNSETS(Glimmet), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_GLIMMORA}), }, @@ -3283,7 +3283,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Glimmora), ICON(Glimmora, 0), - //.footprint = gMonFootprint_Glimmora, + //FOOTPRINT(Glimmora) LEARNSETS(Glimmora), }, #endif //P_FAMILY_GLIMMET @@ -3332,7 +3332,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Greavard), ICON(Greavard, 2), - //.footprint = gMonFootprint_Greavard, + //FOOTPRINT(Greavard) LEARNSETS(Greavard), .evolutions = EVOLUTION({EVO_LEVEL_NIGHT, 30, SPECIES_HOUNDSTONE}), }, @@ -3380,7 +3380,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Houndstone), ICON(Houndstone, 5), - //.footprint = gMonFootprint_Houndstone, + //FOOTPRINT(Houndstone) LEARNSETS(Houndstone), }, #endif //P_FAMILY_GREAVARD @@ -3429,7 +3429,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Flamigo), ICON(Flamigo, 4), - //.footprint = gMonFootprint_Flamigo, + //FOOTPRINT(Flamigo) LEARNSETS(Flamigo), }, #endif //P_FAMILY_FLAMIGO @@ -3478,7 +3478,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cetoddle), ICON(Cetoddle, 0), - //.footprint = gMonFootprint_Cetoddle, + //FOOTPRINT(Cetoddle) LEARNSETS(Cetoddle), .evolutions = EVOLUTION({EVO_ITEM, ITEM_ICE_STONE, SPECIES_CETITAN}), }, @@ -3526,7 +3526,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Cetitan), ICON(Cetitan, 0), - //.footprint = gMonFootprint_Cetitan, + //FOOTPRINT(Cetitan) LEARNSETS(Cetitan), }, #endif //P_FAMILY_CETODDLE @@ -3576,7 +3576,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Veluza), ICON(Veluza, 4), - //.footprint = gMonFootprint_Veluza, + //FOOTPRINT(Veluza) LEARNSETS(Veluza), }, #endif //P_FAMILY_VELUZA @@ -3626,7 +3626,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Dondozo), ICON(Dondozo, 0), - //.footprint = gMonFootprint_Dondozo, + //FOOTPRINT(Dondozo) LEARNSETS(Dondozo), }, #endif //P_FAMILY_DONDOZO @@ -3665,7 +3665,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .formSpeciesIdTable = sTatsugiriFormSpeciesIdTable //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Tatsugiri, + //FOOTPRINT(Tatsugiri) [SPECIES_TATSUGIRI_CURLY] = { @@ -3759,7 +3759,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(GreatTusk), ICON(GreatTusk, 0), - //.footprint = gMonFootprint_GreatTusk, + //FOOTPRINT(GreatTusk) LEARNSETS(GreatTusk), }, #endif //P_FAMILY_GREAT_TUSK @@ -3809,7 +3809,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ScreamTail), ICON(ScreamTail, 0), - //.footprint = gMonFootprint_ScreamTail, + //FOOTPRINT(ScreamTail) LEARNSETS(ScreamTail), }, #endif //P_FAMILY_SCREAM_TAIL @@ -3859,7 +3859,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(BruteBonnet), ICON(BruteBonnet, 1), - //.footprint = gMonFootprint_BruteBonnet, + //FOOTPRINT(BruteBonnet) LEARNSETS(BruteBonnet), }, #endif //P_FAMILY_BRUTE_BONNET @@ -3912,7 +3912,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(FlutterMane), ICON(FlutterMane, 4), - //.footprint = gMonFootprint_FlutterMane, + //FOOTPRINT(FlutterMane) LEARNSETS(FlutterMane), }, #endif //P_FAMILY_FLUTTER_MANE @@ -3961,7 +3961,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(SlitherWing), ICON(SlitherWing, 3), - //.footprint = gMonFootprint_SlitherWing, + //FOOTPRINT(SlitherWing) LEARNSETS(SlitherWing), }, #endif //P_FAMILY_SLITHER_WING @@ -4011,7 +4011,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(SandyShocks), ICON(SandyShocks, 0), - //.footprint = gMonFootprint_SandyShocks, + //FOOTPRINT(SandyShocks) LEARNSETS(SandyShocks), }, #endif //P_FAMILY_SANDY_SHOCKS @@ -4061,7 +4061,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronTreads), ICON(IronTreads, 0), - //.footprint = gMonFootprint_IronTreads, + //FOOTPRINT(IronTreads) LEARNSETS(IronTreads), }, #endif //P_FAMILY_IRON_TREADS @@ -4111,7 +4111,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronBundle), ICON(IronBundle, 0), - //.footprint = gMonFootprint_IronBundle, + //FOOTPRINT(IronBundle) LEARNSETS(IronBundle), }, #endif //P_FAMILY_IRON_BUNDLE @@ -4161,7 +4161,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronHands), ICON(IronHands, 0), - //.footprint = gMonFootprint_IronHands, + //FOOTPRINT(IronHands) LEARNSETS(IronHands), }, #endif //P_FAMILY_IRON_HANDS @@ -4212,7 +4212,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronJugulis), ICON(IronJugulis, 2), - //.footprint = gMonFootprint_IronJugulis, + //FOOTPRINT(IronJugulis) LEARNSETS(IronJugulis), }, #endif //P_FAMILY_IRON_JUGULIS @@ -4263,7 +4263,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronMoth), ICON(IronMoth, 3), - //.footprint = gMonFootprint_IronMoth, + //FOOTPRINT(IronMoth) LEARNSETS(IronMoth), }, #endif //P_FAMILY_IRON_MOTH @@ -4313,7 +4313,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronThorns), ICON(IronThorns, 1), - //.footprint = gMonFootprint_IronThorns, + //FOOTPRINT(IronThorns) LEARNSETS(IronThorns), }, #endif //P_FAMILY_IRON_THORNS @@ -4362,7 +4362,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Frigibax), ICON(Frigibax, 3), - //.footprint = gMonFootprint_Frigibax, + //FOOTPRINT(Frigibax) LEARNSETS(Frigibax), .evolutions = EVOLUTION({EVO_LEVEL, 35, SPECIES_ARCTIBAX}), }, @@ -4410,7 +4410,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Arctibax), ICON(Arctibax, 0), - //.footprint = gMonFootprint_Arctibax, + //FOOTPRINT(Arctibax) LEARNSETS(Arctibax), .evolutions = EVOLUTION({EVO_LEVEL, 54, SPECIES_BAXCALIBUR}), }, @@ -4458,7 +4458,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Baxcalibur), ICON(Baxcalibur, 0), - //.footprint = gMonFootprint_Baxcalibur, + //FOOTPRINT(Baxcalibur) LEARNSETS(Baxcalibur), }, #endif //P_FAMILY_FRIGIBAX @@ -4483,7 +4483,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .evolutions = EVOLUTION({EVO_NONE, 0, SPECIES_GHOLDENGO}) //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Gimmighoul, + //FOOTPRINT(Gimmighoul) [SPECIES_GIMMIGHOUL_CHEST] = { @@ -4590,7 +4590,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Gholdengo), ICON(Gholdengo, 0), - //.footprint = gMonFootprint_Gholdengo, + //FOOTPRINT(Gholdengo) LEARNSETS(Gholdengo), }, #endif //P_FAMILY_GIMMIGHOUL @@ -4640,7 +4640,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(WoChien), ICON(WoChien, 5), - //.footprint = gMonFootprint_WoChien, + //FOOTPRINT(WoChien) LEARNSETS(WoChien), }, #endif //P_FAMILY_WO_CHIEN @@ -4690,7 +4690,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ChienPao), ICON(ChienPao, 0), - //.footprint = gMonFootprint_ChienPao, + //FOOTPRINT(ChienPao) LEARNSETS(ChienPao), }, #endif //P_FAMILY_CHIEN_PAO @@ -4740,7 +4740,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(TingLu), ICON(TingLu, 0), - //.footprint = gMonFootprint_TingLu, + //FOOTPRINT(TingLu) LEARNSETS(TingLu), }, #endif //P_FAMILY_TING_LU @@ -4791,7 +4791,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(ChiYu), ICON(ChiYu, 0), - //.footprint = gMonFootprint_ChiYu, + //FOOTPRINT(ChiYu) LEARNSETS(ChiYu), }, #endif //P_FAMILY_CHI_YU @@ -4842,7 +4842,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(RoaringMoon), ICON(RoaringMoon, 3), - //.footprint = gMonFootprint_RoaringMoon, + //FOOTPRINT(RoaringMoon) LEARNSETS(RoaringMoon), }, #endif //P_FAMILY_ROARING_MOON @@ -4891,7 +4891,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronValiant), ICON(IronValiant, 4), - //.footprint = gMonFootprint_IronValiant, + //FOOTPRINT(IronValiant) LEARNSETS(IronValiant), }, #endif //P_FAMILY_IRON_VALIANT @@ -4942,7 +4942,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Koraidon), ICON(Koraidon, 0), - //.footprint = gMonFootprint_Koraidon, + //FOOTPRINT(Koraidon) LEARNSETS(Koraidon), }, #endif //P_FAMILY_KORAIDON @@ -4993,7 +4993,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Miraidon), ICON(Miraidon, 2), - //.footprint = gMonFootprint_Miraidon, + //FOOTPRINT(Miraidon) LEARNSETS(Miraidon), }, #endif //P_FAMILY_MIRAIDON @@ -5026,7 +5026,9 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .height = 35, .weight = 2800, .description = COMPOUND_STRING( - "Ecology under research."), + "This ferocious creature is shrouded in\n" + "mystery. It's named after an aquatic\n" + "monster mentioned in an old journal."), .pokemonScale = 356, .pokemonOffset = 17, .trainerScale = 256, @@ -5040,7 +5042,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(WalkingWake), ICON(WalkingWake, 2), - //.footprint = gMonFootprint_WalkingWake, + //FOOTPRINT(WalkingWake) LEARNSETS(WalkingWake), }, #endif //P_FAMILY_WALKING_WAKE @@ -5073,7 +5075,9 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = .height = 15, .weight = 1250, .description = COMPOUND_STRING( - "Ecology under analysis."), + "According to the few eyewitness accounts\n" + "that exist, it used its shining blades\n" + "to julienne large trees and boulders."), .pokemonScale = 356, .pokemonOffset = 17, .trainerScale = 256, @@ -5087,7 +5091,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(IronLeaves), ICON(IronLeaves, 1), - //.footprint = gMonFootprint_IronLeaves, + //FOOTPRINT(IronLeaves) LEARNSETS(IronLeaves), }, #endif //P_FAMILY_IRON_LEAVES @@ -5132,7 +5136,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = LEARNSETS(Poltchageist) //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Poltchageist, + //FOOTPRINT(Poltchageist) [SPECIES_POLTCHAGEIST_COUNTERFEIT] = { @@ -5194,7 +5198,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = LEARNSETS(Sinistcha) //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, //.backAnimId = BACK_ANIM_NONE, - //.footprint = gMonFootprint_Sinistcha, + //FOOTPRINT(Sinistcha) [SPECIES_SINISTCHA_UNREMARKABLE] = { @@ -5260,7 +5264,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Okidogi), ICON(Okidogi, 1), - //.footprint = gMonFootprint_Okidogi, + //FOOTPRINT(Okidogi) LEARNSETS(Okidogi), .isLegendary = TRUE, }, @@ -5311,7 +5315,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Munkidori), ICON(Munkidori, 0), - //.footprint = gMonFootprint_Munkidori, + //FOOTPRINT(Munkidori) LEARNSETS(Munkidori), }, #endif //P_FAMILY_MUNKIDORI @@ -5361,7 +5365,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, PALETTES(Fezandipiti), ICON(Fezandipiti, 0), - //.footprint = gMonFootprint_Fezandipiti, + //FOOTPRINT(Fezandipiti) LEARNSETS(Fezandipiti), }, #endif //P_FAMILY_FEZANDIPITI @@ -5413,7 +5417,7 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = //.backAnimId = BACK_ANIM_NONE, //.shinyPalette = gMonShinyPalette_OgerponTealMask, //ICON(Ogerpon##Form##, 1), - //.footprint = gMonFootprint_Ogerpon, + //FOOTPRINT(Ogerpon) [SPECIES_OGERPON_TEAL_MASK] = OGERPON_SPECIES_INFO(TealMask, TYPE_GRASS, ABILITY_DEFIANT, BODY_COLOR_GREEN, FALSE), [SPECIES_OGERPON_WELLSPRING_MASK] = OGERPON_SPECIES_INFO(WellspringMask, TYPE_WATER, ABILITY_WATER_ABSORB, BODY_COLOR_BLUE, FALSE), @@ -5428,6 +5432,376 @@ const struct SpeciesInfo gSpeciesInfoGen9[] = #endif //P_FAMILY_OGERPON +#if P_FAMILY_GOUGING_FIRE + [SPECIES_GOUGING_FIRE] = + { + .baseHP = 105, + .baseAttack = 115, + .baseDefense = 121, + .baseSpeed = 91, + .baseSpAttack = 65, + .baseSpDefense = 93, + .types = { TYPE_FIRE, TYPE_DRAGON }, + .catchRate = 10, + .expYield = 261, //Currently unknown + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BROWN, + .isParadoxForm = TRUE, + .speciesName = _("GouginFire"), + //.cryId = CRY_GOUGING_FIRE, + .natDexNum = NATIONAL_DEX_GOUGING_FIRE, + .categoryName = _("Paradox"), + .height = 35, + .weight = 5900, + .description = COMPOUND_STRING( + "There are scant few reports of\n" + "this creature being sighted.\n" + "One short video shows it rampaging,\n" + "and spouting pillars of flame."), + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + //FRONT_PIC(GougingFire, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_GougingFire, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(GougingFire, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(GougingFire), + //ICON(GougingFire, 0), + //FOOTPRINT(GougingFire) + LEARNSETS(GougingFire), + }, +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT + [SPECIES_RAGING_BOLT] = + { + .baseHP = 125, + .baseAttack = 73, + .baseDefense = 91, + .baseSpeed = 75, + .baseSpAttack = 137, + .baseSpDefense = 89, + .types = { TYPE_ELECTRIC, TYPE_DRAGON }, + .catchRate = 10, + .expYield = 261, //Currently unknown + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_PROTOSYNTHESIS, ABILITY_NONE }, + .bodyColor = BODY_COLOR_YELLOW, + .isParadoxForm = TRUE, + .speciesName = _("RagingBolt"), + //.cryId = CRY_RAGING_BOLT, + .natDexNum = NATIONAL_DEX_RAGING_BOLT, + .categoryName = _("Paradox"), + .height = 52, + .weight = 4800, + .description = COMPOUND_STRING( + "It bears resemblance to a Pokémon\n" + "that became a hot topic for a short\n" + "while after a paranomal magazine\n" + "touted it as Raikou's ancestor."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + //FRONT_PIC(RagingBolt, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_RagingBolt, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(RagingBolt, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(RagingBolt), + //ICON(RagingBolt, 0), + //FOOTPRINT(RagingBolt) + LEARNSETS(RagingBolt), + }, +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER + [SPECIES_IRON_BOULDER] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 80, + .baseSpeed = 124, + .baseSpAttack = 68, + .baseSpDefense = 108, + .types = { TYPE_ROCK, TYPE_PSYCHIC }, + .catchRate = 10, + .expYield = 261, //Currently unknown + .evYield_Speed = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_GRAY, + .isParadoxForm = TRUE, + .speciesName = _("IronBouldr"), + //.cryId = CRY_IRON_BOULDER, + .natDexNum = NATIONAL_DEX_IRON_BOULDER, + .categoryName = _("Paradox"), + .height = 15, + .weight = 1625, + .description = COMPOUND_STRING( + "It was named after a mysterious\n" + "object recorded in an old book.\n" + "Its body seems to be metallic."), + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 336, + .trainerOffset = 4, + //FRONT_PIC(IronBoulder, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_IronBoulder, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(IronBoulder, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(IronBoulder), + //ICON(IronBoulder, 0), + //FOOTPRINT(IronBoulder) + LEARNSETS(IronBoulder), + }, +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN + [SPECIES_IRON_CROWN] = + { + .baseHP = 90, + .baseAttack = 72, + .baseDefense = 100, + .baseSpeed = 98, + .baseSpAttack = 122, + .baseSpDefense = 108, + .types = { TYPE_STEEL, TYPE_PSYCHIC }, + .catchRate = 10, + .expYield = 261, //Currently unknown + .evYield_SpAttack = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_QUARK_DRIVE, ABILITY_NONE }, + .bodyColor = BODY_COLOR_BLUE, + .isParadoxForm = TRUE, + .speciesName = _("Iron Crown"), + //.cryId = CRY_IRON_CROWN, + .natDexNum = NATIONAL_DEX_IRON_CROWN, + .categoryName = _("Paradox"), + .height = 16, + .weight = 1560, + .description = COMPOUND_STRING( + "It resembles a mysterious object\n" + "introduced in a paranormal magazine\n" + "as a cutting-edge weapon\n" + "shaped like Cobalion."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + //FRONT_PIC(IronCrown, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_IronCrown, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(IronCrown, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(IronCrown), + //ICON(IronCrown, 0), + //FOOTPRINT(IronCrown) + LEARNSETS(IronCrown), + }, +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS +#define TERAPAGOS_MISC_INFO \ + .types = { TYPE_NORMAL, TYPE_NORMAL }, \ + .catchRate = 255, \ + .expYield = 275, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 20, \ + .friendship = STANDARD_FRIENDSHIP, \ + .growthRate = GROWTH_SLOW, \ + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, \ + .bodyColor = BODY_COLOR_BLUE, \ + .speciesName = _("Terapagos"), \ + .natDexNum = NATIONAL_DEX_TERAPAGOS, \ + .categoryName = _("Tera"), \ + LEARNSETS(Terapagos), \ + .formSpeciesIdTable = sTerapagosFormSpeciesIdTable, \ + .formChangeTable = sTerapagosFormChangeTable, \ + .isLegendary = TRUE + //.cryId = CRY_TERAPAGOS, + //FOOTPRINT(Terapagos) + + [SPECIES_TERAPAGOS_NORMAL] = + { + TERAPAGOS_MISC_INFO, + .baseHP = 90, + .baseAttack = 65, + .baseDefense = 85, + .baseSpeed = 60, + .baseSpAttack = 65, + .baseSpDefense = 85, + .evYield_Defense = 1, + .abilities = { ABILITY_TERA_SHIFT, ABILITY_NONE }, + .height = 2, + .weight = 65, + .description = COMPOUND_STRING( + "Terapagos protects itself using its\n" + "power to transform energy into hard\n" + "crystals. This Pokémon is the source\n" + "of the Terastal phenomenon."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + //FRONT_PIC(TerapagosNormal, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TerapagosNormal, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(TerapagosNormal, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(TerapagosNormal), + //ICON(TerapagosNormal, 0), + }, + + [SPECIES_TERAPAGOS_TERASTAL] = + { + TERAPAGOS_MISC_INFO, + .baseHP = 95, + .baseAttack = 95, + .baseDefense = 110, + .baseSpeed = 85, + .baseSpAttack = 105, + .baseSpDefense = 110, + .evYield_Defense = 2, + .abilities = { ABILITY_TERA_SHELL, ABILITY_NONE }, + .height = 3, + .weight = 160, + .description = COMPOUND_STRING( + "The shell is made of crystallized\n" + "Terastal energy. When struck by a move,\n" + "this shell absorbs the move's energy\n" + "and transfers it to Terapagos."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + //FRONT_PIC(TerapagosTerastal, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TerapagosTerastal, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(TerapagosTerastal, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(TerapagosTerastal), + //ICON(TerapagosTerastal, 0), + }, + + [SPECIES_TERAPAGOS_STELLAR] = + { + TERAPAGOS_MISC_INFO, + .baseHP = 160, + .baseAttack = 105, + .baseDefense = 110, + .baseSpeed = 85, + .baseSpAttack = 130, + .baseSpDefense = 110, + .evYield_HP = 3, + .abilities = { ABILITY_TERAFORM_ZERO, ABILITY_NONE }, + .height = 17, + .weight = 770, + .description = COMPOUND_STRING( + "An old expedition journal describes the\n" + "sight of this Pokémon buried in the,\n" + "depths of the earth as resembling a\n" + "planet floating in space."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + //FRONT_PIC(TerapagosStellar, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_TerapagosStellar, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(TerapagosStellar, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(TerapagosStellar), + //ICON(TerapagosStellar, 0), + }, +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT + [SPECIES_PECHARUNT] = + { + .baseHP = 88, + .baseAttack = 88, + .baseDefense = 160, + .baseSpeed = 88, + .baseSpAttack = 88, + .baseSpDefense = 88, + .types = { TYPE_POISON, TYPE_GHOST }, + .catchRate = 3, + .expYield = 261, //Currently unknown + .evYield_Defense = 3, + .genderRatio = MON_GENDERLESS, + .eggCycles = 50, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroups = { EGG_GROUP_NO_EGGS_DISCOVERED, EGG_GROUP_NO_EGGS_DISCOVERED }, + .abilities = { ABILITY_POISON_PUPPETEER, ABILITY_NONE }, + .bodyColor = BODY_COLOR_PURPLE, + .isMythical = TRUE, + .speciesName = _("Pecharunt"), + //.cryId = CRY_PECHARUNT, + .natDexNum = NATIONAL_DEX_PECHARUNT, + .categoryName = _("Subjugation"), + .height = 3, + .weight = 3, + .description = COMPOUND_STRING( + "It feeds others toxic mochi that\n" + "draw out desires and capabilities.\n" + "Those who eat the mochi fall under\n" + "Pecharunt's control, chained to its will."), + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 365, + .trainerOffset = 7, + //FRONT_PIC(Pecharunt, 64, 64), + .frontPicYOffset = 0, + .frontAnimFrames = sAnims_Pecharunt, + //.frontAnimId = ANIM_V_SQUISH_AND_BOUNCE, + //BACK_PIC(Pecharunt, 64, 64), + .backPicYOffset = 0, + //.backAnimId = BACK_ANIM_NONE, + //PALETTES(Pecharunt), + //ICON(Pecharunt, 0), + //FOOTPRINT(Pecharunt) + LEARNSETS(Pecharunt), + }, +#endif //P_FAMILY_PECHARUNT + #ifdef __INTELLISENSE__ }; -#endif \ No newline at end of file +#endif diff --git a/src/data/pokemon/teachable_learnsets.h b/src/data/pokemon/teachable_learnsets.h index f274363f61a8..b8f2a39e301f 100644 --- a/src/data/pokemon/teachable_learnsets.h +++ b/src/data/pokemon/teachable_learnsets.h @@ -33821,6 +33821,10 @@ static const u16 sAppletunTeachableLearnset[] = { static const u16 sDipplinTeachableLearnset[] = { MOVE_UNAVAILABLE, }; + +static const u16 sHydrappleTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -34654,6 +34658,12 @@ static const u16 sDuraludonTeachableLearnset[] = { MOVE_THUNDER_WAVE, MOVE_UNAVAILABLE, }; + +#if P_GEN_9_CROSS_EVOS +static const u16 sArchaludonTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY @@ -39114,3 +39124,39 @@ static const u16 sOgerponTeachableLearnset[] = { MOVE_UNAVAILABLE, }; #endif //P_FAMILY_OGERPON + +#if P_FAMILY_GOUGING_FIRE +static const u16 sGougingFireTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT +static const u16 sRagingBoltTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER +static const u16 sIronBoulderTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN +static const u16 sIronCrownTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS +static const u16 sTerapagosTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT +static const u16 sPecharuntTeachableLearnset[] = { + MOVE_UNAVAILABLE, +}; +#endif //P_FAMILY_PECHARUNT diff --git a/src/data/pokemon_graphics/front_pic_anims.h b/src/data/pokemon_graphics/front_pic_anims.h index 75cb52732cfd..77a3ef8d6910 100644 --- a/src/data/pokemon_graphics/front_pic_anims.h +++ b/src/data/pokemon_graphics/front_pic_anims.h @@ -9567,6 +9567,7 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(AppletunGigantamax); #if P_GEN_9_CROSS_EVOS PLACEHOLDER_ANIM_SINGLE_FRAME(Dipplin); +PLACEHOLDER_ANIM_SINGLE_FRAME(Hydrapple); #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN @@ -9718,6 +9719,10 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(Duraludon); #if P_GIGANTAMAX_FORMS PLACEHOLDER_ANIM_SINGLE_FRAME(DuraludonGigantamax); #endif //P_GIGANTAMAX_FORMS + +#if P_GEN_9_CROSS_EVOS +PLACEHOLDER_ANIM_SINGLE_FRAME(Archaludon); +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY @@ -10084,6 +10089,32 @@ PLACEHOLDER_ANIM_SINGLE_FRAME(Fezandipiti); PLACEHOLDER_ANIM_SINGLE_FRAME(Ogerpon); #endif //P_FAMILY_OGERPON +#if P_FAMILY_GOUGING_FIRE +PLACEHOLDER_ANIM_SINGLE_FRAME(GougingFire); +#endif //P_FAMILY_GOUGING_FIRE + +#if P_FAMILY_RAGING_BOLT +PLACEHOLDER_ANIM_SINGLE_FRAME(RagingBolt); +#endif //P_FAMILY_RAGING_BOLT + +#if P_FAMILY_IRON_BOULDER +PLACEHOLDER_ANIM_SINGLE_FRAME(IronBoulder); +#endif //P_FAMILY_IRON_BOULDER + +#if P_FAMILY_IRON_CROWN +PLACEHOLDER_ANIM_SINGLE_FRAME(IronCrown); +#endif //P_FAMILY_IRON_CROWN + +#if P_FAMILY_TERAPAGOS +PLACEHOLDER_ANIM_SINGLE_FRAME(TerapagosNormal); +PLACEHOLDER_ANIM_SINGLE_FRAME(TerapagosTerastal); +PLACEHOLDER_ANIM_SINGLE_FRAME(TerapagosStellar); +#endif //P_FAMILY_TERAPAGOS + +#if P_FAMILY_PECHARUNT +PLACEHOLDER_ANIM_SINGLE_FRAME(Pecharunt); +#endif //P_FAMILY_PECHARUNT + static const union AnimCmd sAnim_Egg_1[] = { ANIMCMD_FRAME(0, 6), @@ -12341,6 +12372,7 @@ SINGLE_ANIMATION(AppletunGigantamax); #endif //P_GIGANTAMAX_FORMS #if P_GEN_9_CROSS_EVOS SINGLE_ANIMATION(Dipplin); +SINGLE_ANIMATION(Hydrapple); #endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_APPLIN #if P_FAMILY_SILICOBRA @@ -12448,6 +12480,9 @@ SINGLE_ANIMATION(Duraludon); #if P_GIGANTAMAX_FORMS SINGLE_ANIMATION(DuraludonGigantamax); #endif //P_GIGANTAMAX_FORMS +#if P_GEN_9_CROSS_EVOS +SINGLE_ANIMATION(Archaludon); +#endif //P_GEN_9_CROSS_EVOS #endif //P_FAMILY_DURALUDON #if P_FAMILY_DREEPY SINGLE_ANIMATION(Dreepy); @@ -12731,4 +12766,24 @@ SINGLE_ANIMATION(Fezandipiti); #if P_FAMILY_OGERPON SINGLE_ANIMATION(Ogerpon); #endif //P_FAMILY_OGERPON +#if P_FAMILY_GOUGING_FIRE +SINGLE_ANIMATION(GougingFire); +#endif //P_FAMILY_GOUGING_FIRE +#if P_FAMILY_RAGING_BOLT +SINGLE_ANIMATION(RagingBolt); +#endif //P_FAMILY_RAGING_BOLT +#if P_FAMILY_IRON_BOULDER +SINGLE_ANIMATION(IronBoulder); +#endif //P_FAMILY_IRON_BOULDER +#if P_FAMILY_IRON_CROWN +SINGLE_ANIMATION(IronCrown); +#endif //P_FAMILY_IRON_CROWN +#if P_FAMILY_TERAPAGOS +SINGLE_ANIMATION(TerapagosNormal); +SINGLE_ANIMATION(TerapagosTerastal); +SINGLE_ANIMATION(TerapagosStellar); +#endif //P_FAMILY_TERAPAGOS +#if P_FAMILY_PECHARUNT +SINGLE_ANIMATION(Pecharunt); +#endif //P_FAMILY_PECHARUNT SINGLE_ANIMATION(Egg); diff --git a/src/data/script_menu.h b/src/data/script_menu.h index 79355748c706..c5afa87043a9 100644 --- a/src/data/script_menu.h +++ b/src/data/script_menu.h @@ -771,6 +771,13 @@ static const struct MenuAction MultichoiceList_TagMatchType[] = {gText_Exit}, }; +static const struct MenuAction MultichoiceList_BerryPlot[] = +{ + {gText_Fertilize}, + {gText_PlantBerry}, + {gText_Exit}, +}; + static const struct MenuAction MultichoiceList_Exit[] = { {gText_Exit}, @@ -898,6 +905,7 @@ static const struct MultichoiceListStruct sMultichoiceLists[] = [MULTI_SLATEPORT_TENT_RULES] = MULTICHOICE(MultichoiceList_SlateportTentRules), [MULTI_FALLARBOR_TENT_RULES] = MULTICHOICE(MultichoiceList_FallarborTentRules), [MULTI_TAG_MATCH_TYPE] = MULTICHOICE(MultichoiceList_TagMatchType), + [MULTI_BERRY_PLOT] = MULTICHOICE(MultichoiceList_BerryPlot), }; const u8 *const gStdStrings[] = diff --git a/src/data/text/abilities.h b/src/data/text/abilities.h deleted file mode 100644 index 41f58e5b43cf..000000000000 --- a/src/data/text/abilities.h +++ /dev/null @@ -1,1234 +0,0 @@ -static const u8 sNoneDescription[] = _("No special ability."); -static const u8 sStenchDescription[] = _("May cause a foe to flinch."); -static const u8 sDrizzleDescription[] = _("Summons rain in battle."); -static const u8 sSpeedBoostDescription[] = _("Gradually boosts Speed."); -static const u8 sBattleArmorDescription[] = _("Blocks critical hits."); -static const u8 sSturdyDescription[] = _("Negates 1-hit KO attacks."); -static const u8 sDampDescription[] = _("Prevents self-destruction."); -static const u8 sLimberDescription[] = _("Prevents paralysis."); -static const u8 sSandVeilDescription[] = _("Ups evasion in a sandstorm."); -static const u8 sStaticDescription[] = _("Paralyzes on contact."); -static const u8 sVoltAbsorbDescription[] = _("Turns electricity into HP."); -static const u8 sWaterAbsorbDescription[] = _("Changes water into HP."); -static const u8 sObliviousDescription[] = _("Prevents attraction."); -static const u8 sCloudNineDescription[] = _("Negates weather effects."); -static const u8 sCompoundEyesDescription[] = _("Raises accuracy."); -static const u8 sInsomniaDescription[] = _("Prevents sleep."); -static const u8 sColorChangeDescription[] = _("Changes type to foe's move."); -static const u8 sImmunityDescription[] = _("Prevents poisoning."); -static const u8 sFlashFireDescription[] = _("Powers up if hit by fire."); -static const u8 sShieldDustDescription[] = _("Prevents added effects."); -static const u8 sOwnTempoDescription[] = _("Prevents confusion."); -static const u8 sSuctionCupsDescription[] = _("Firmly anchors the body."); -static const u8 sIntimidateDescription[] = _("Lowers the foe's Attack."); -static const u8 sShadowTagDescription[] = _("Prevents the foe's escape."); -static const u8 sRoughSkinDescription[] = _("Hurts to touch."); -static const u8 sWonderGuardDescription[] = _("“Super effective” hits."); -static const u8 sLevitateDescription[] = _("Not hit by Ground attacks."); -static const u8 sEffectSporeDescription[] = _("Leaves spores on contact."); -static const u8 sSynchronizeDescription[] = _("Passes on status problems."); -static const u8 sClearBodyDescription[] = _("Prevents ability reduction."); -static const u8 sNaturalCureDescription[] = _("Heals upon switching out."); -static const u8 sLightningRodDescription[] = _("Draws electrical moves."); -static const u8 sSereneGraceDescription[] = _("Promotes added effects."); -static const u8 sSwiftSwimDescription[] = _("Raises Speed in rain."); -static const u8 sChlorophyllDescription[] = _("Raises Speed in sunshine."); -static const u8 sIlluminateDescription[] = _("Encounter rate increases."); -static const u8 sTraceDescription[] = _("Copies special ability."); -static const u8 sHugePowerDescription[] = _("Raises Attack."); -static const u8 sPoisonPointDescription[] = _("Poisons foe on contact."); -static const u8 sInnerFocusDescription[] = _("Prevents flinching."); -static const u8 sMagmaArmorDescription[] = _("Prevents freezing."); -static const u8 sWaterVeilDescription[] = _("Prevents burns."); -static const u8 sMagnetPullDescription[] = _("Traps Steel-type Pokémon."); -static const u8 sSoundproofDescription[] = _("Avoids sound-based moves."); -static const u8 sRainDishDescription[] = _("Slight HP recovery in rain."); -static const u8 sSandStreamDescription[] = _("Summons a sandstorm."); -static const u8 sPressureDescription[] = _("Raises foe's PP usage."); -static const u8 sThickFatDescription[] = _("Heat-and-cold protection."); -static const u8 sEarlyBirdDescription[] = _("Awakens quickly from sleep."); -static const u8 sFlameBodyDescription[] = _("Burns the foe on contact."); -static const u8 sRunAwayDescription[] = _("Makes escaping easier."); -static const u8 sKeenEyeDescription[] = _("Prevents loss of accuracy."); -static const u8 sHyperCutterDescription[] = _("Prevents Attack reduction."); -static const u8 sPickupDescription[] = _("May pick up items."); -static const u8 sTruantDescription[] = _("Moves only every two turns."); -static const u8 sHustleDescription[] = _("Trades accuracy for power."); -static const u8 sCuteCharmDescription[] = _("Infatuates on contact."); -static const u8 sPlusDescription[] = _("Powers up with Minus."); -static const u8 sMinusDescription[] = _("Powers up with Plus."); -static const u8 sForecastDescription[] = _("Changes with the weather."); -static const u8 sStickyHoldDescription[] = _("Prevents item theft."); -static const u8 sShedSkinDescription[] = _("Heals the body by shedding."); -static const u8 sGutsDescription[] = _("Ups Attack if suffering."); -static const u8 sMarvelScaleDescription[] = _("Ups Defense if suffering."); -static const u8 sLiquidOozeDescription[] = _("Draining causes injury."); -static const u8 sOvergrowDescription[] = _("Ups Grass moves in a pinch."); -static const u8 sBlazeDescription[] = _("Ups Fire moves in a pinch."); -static const u8 sTorrentDescription[] = _("Ups Water moves in a pinch."); -static const u8 sSwarmDescription[] = _("Ups Bug moves in a pinch."); -static const u8 sRockHeadDescription[] = _("Prevents recoil damage."); -static const u8 sDroughtDescription[] = _("Summons sunlight in battle."); -static const u8 sArenaTrapDescription[] = _("Prevents fleeing."); -static const u8 sVitalSpiritDescription[] = _("Prevents sleep."); -static const u8 sWhiteSmokeDescription[] = _("Prevents ability reduction."); -static const u8 sPurePowerDescription[] = _("Raises Attack."); -static const u8 sShellArmorDescription[] = _("Blocks critical hits."); -static const u8 sAirLockDescription[] = _("Negates weather effects."); -static const u8 sTangledFeetDescription[] = _("Ups evasion if confused."); -static const u8 sMotorDriveDescription[] = _("Electricity raises Speed."); -static const u8 sRivalryDescription[] = _("Powers up against rivals."); -static const u8 sSteadfastDescription[] = _("Flinching raises Speed."); -static const u8 sSnowCloakDescription[] = _("Ups evasion in Hail or Snow."); -static const u8 sGluttonyDescription[] = _("Eats Berries early."); -static const u8 sAngerPointDescription[] = _("Critical hits raise Attack."); -static const u8 sUnburdenDescription[] = _("Using a hold item ups Speed."); -static const u8 sHeatproofDescription[] = _("Heat and burn protection."); -static const u8 sSimpleDescription[] = _("Prone to wild stat changes."); -static const u8 sDrySkinDescription[] = _("Prefers moisture to heat."); -static const u8 sDownloadDescription[] = _("Adjusts power favorably."); -static const u8 sIronFistDescription[] = _("Boosts punching moves."); -static const u8 sPoisonHealDescription[] = _("Restores HP if poisoned."); -static const u8 sAdaptabilityDescription[] = _("Boosts same type attacks."); -static const u8 sSkillLinkDescription[] = _("Multi-hit moves hit 5 times."); -static const u8 sHydrationDescription[] = _("Cures status in rain."); -static const u8 sSolarPowerDescription[] = _("Powers up in sunshine."); -static const u8 sQuickFeetDescription[] = _("Ups Speed if suffering."); -static const u8 sNormalizeDescription[] = _("Moves become Normal-type."); -static const u8 sSniperDescription[] = _("Boosts critical hits."); -static const u8 sMagicGuardDescription[] = _("Only damaged by attacks."); -static const u8 sNoGuardDescription[] = _("Ensures that all moves hit."); -static const u8 sStallDescription[] = _("Always moves last."); -static const u8 sTechnicianDescription[] = _("Boosts weaker moves."); -static const u8 sLeafGuardDescription[] = _("Blocks status in sunshine."); -static const u8 sKlutzDescription[] = _("Can't use hold items."); -static const u8 sMoldBreakerDescription[] = _("Moves hit through abilities."); -static const u8 sSuperLuckDescription[] = _("Critical hits land often."); -static const u8 sAftermathDescription[] = _("Fainting damages the foe."); -static const u8 sAnticipationDescription[] = _("Senses dangerous moves."); -static const u8 sForewarnDescription[] = _("Determines a foe's move."); -static const u8 sUnawareDescription[] = _("Ignores stat changes."); -static const u8 sTintedLensDescription[] = _("Ups “not very effective”."); -static const u8 sFilterDescription[] = _("Weakens “supereffective”."); -static const u8 sSlowStartDescription[] = _("Takes a while to get going."); -static const u8 sScrappyDescription[] = _("Hits Ghost-type Pokémon."); -static const u8 sStormDrainDescription[] = _("Draws in Water moves."); -static const u8 sIceBodyDescription[] = _("HP recovery in Hail or Snow."); -#if B_SNOW_WARNING < GEN_9 -static const u8 sSnowWarningDescription[] = _("Summons a Hailstorm."); -#elif B_SNOW_WARNING >= GEN_9 -static const u8 sSnowWarningDescription[] = _("Summons a Snowstorm."); -#endif -static const u8 sHoneyGatherDescription[] = _("May gather Honey."); -static const u8 sFriskDescription[] = _("Checks a foe's item."); -static const u8 sRecklessDescription[] = _("Boosts moves with recoil."); -static const u8 sMultitypeDescription[] = _("Changes type to its Plate."); -static const u8 sFlowerGiftDescription[] = _("Allies power up in sunshine."); -static const u8 sBadDreamsDescription[] = _("Damages sleeping Pokémon."); -static const u8 sPickpocketDescription[] = _("Steals the foe's held item."); -static const u8 sSheerForceDescription[] = _("Trades effects for power."); -static const u8 sContraryDescription[] = _("Inverts stat changes."); -static const u8 sUnnerveDescription[] = _("Foes can't eat Berries."); -static const u8 sDefiantDescription[] = _("Lowered stats up Attack."); -static const u8 sDefeatistDescription[] = _("Gives up at half HP."); -static const u8 sCursedBodyDescription[] = _("Disables moves on contact."); -static const u8 sHealerDescription[] = _("Heals partner Pokémon."); -static const u8 sFriendGuardDescription[] = _("Lowers damage to partner."); -static const u8 sWeakArmorDescription[] = _("Its stats change when hit."); -static const u8 sHeavyMetalDescription[] = _("Doubles weight."); -static const u8 sLightMetalDescription[] = _("Halves weight."); -static const u8 sMultiscaleDescription[] = _("Halves damage at full HP."); -static const u8 sToxicBoostDescription[] = _("Ups Attack if poisoned."); -static const u8 sFlareBoostDescription[] = _("Ups Sp. Atk if burned."); -static const u8 sHarvestDescription[] = _("May recycle a used Berry."); -static const u8 sTelepathyDescription[] = _("Can't be damaged by an ally."); -static const u8 sMoodyDescription[] = _("Stats change gradually."); -static const u8 sOvercoatDescription[] = _("Blocks weather and powder."); -static const u8 sBigPecksDescription[] = _("Prevents Defense loss."); -static const u8 sSandRushDescription[] = _("Ups Speed in a sandstorm."); -static const u8 sWonderSkinDescription[] = _("May avoid status problems."); -static const u8 sAnalyticDescription[] = _("Moving last boosts power."); -static const u8 sIllusionDescription[] = _("Appears as a partner."); -static const u8 sImposterDescription[] = _("Transforms into the foe."); -static const u8 sInfiltratorDescription[] = _("Passes through barriers."); -static const u8 sMummyDescription[] = _("Spreads with contact."); -static const u8 sMoxieDescription[] = _("KOs raise Attack."); -static const u8 sJustifiedDescription[] = _("Dark hits raise Attack."); -static const u8 sRattledDescription[] = _("Raises Speed when scared."); -static const u8 sMagicBounceDescription[] = _("Reflects status moves."); -static const u8 sSapSipperDescription[] = _("Grass increases Attack."); -static const u8 sPranksterDescription[] = _("Status moves go first."); -static const u8 sSandForceDescription[] = _("Powers up in a sandstorm."); -static const u8 sZenModeDescription[] = _("Transforms at half HP."); -static const u8 sVictoryStarDescription[] = _("Raises party accuracy."); -static const u8 sAromaVeilDescription[] = _("Prevents limiting of moves."); -static const u8 sFlowerVeilDescription[] = _("Protects Grass-types."); -static const u8 sCheekPouchDescription[] = _("Eating Berries restores HP."); -static const u8 sProteanDescription[] = _("Changes type to used move."); -static const u8 sFurCoatDescription[] = _("Raises Defense."); -static const u8 sBulletproofDescription[] = _("Avoids some projectiles."); -static const u8 sCompetitiveDescription[] = _("Lowered stats up Sp. Atk."); -static const u8 sStrongJawDescription[] = _("Boosts biting moves."); -static const u8 sRefrigerateDescription[] = _("Normal moves become Ice."); -static const u8 sSweetVeilDescription[] = _("Prevents party from sleep."); -static const u8 sStanceChangeDescription[] = _("Transforms as it battles."); -static const u8 sGaleWingsDescription[] = _("Flying moves go first."); -static const u8 sMegaLauncherDescription[] = _("Boosts pulse moves."); -static const u8 sGrassPeltDescription[] = _("Ups Defense in grass."); -static const u8 sSymbiosisDescription[] = _("Passes its item to an ally."); -static const u8 sToughClawsDescription[] = _("Boosts contact moves."); -static const u8 sPixilateDescription[] = _("Normal moves become Fairy."); -static const u8 sGooeyDescription[] = _("Lowers Speed on contact."); -static const u8 sAerilateDescription[] = _("Normal moves become Flying."); -static const u8 sParentalBondDescription[] = _("Moves hit twice."); -static const u8 sDarkAuraDescription[] = _("Boosts Dark moves."); -static const u8 sFairyAuraDescription[] = _("Boosts Fairy moves."); -static const u8 sAuraBreakDescription[] = _("Reverse aura abilities."); -static const u8 sPrimordialSeaDescription[] = _("Summons heavy rain."); -static const u8 sDesolateLandDescription[] = _("Summons intense sunlight."); -static const u8 sDeltaStreamDescription[] = _("Summons strong winds."); -static const u8 sStaminaDescription[] = _("Boosts Defense when hit."); -static const u8 sWimpOutDescription[] = _("Flees at half HP."); -static const u8 sWaterCompactionDescription[] = _("Water boosts Defense."); -static const u8 sMercilessDescription[] = _("Criticals poisoned foes."); -static const u8 sShieldsDownDescription[] = _("Shell breaks at half HP."); -static const u8 sStakeoutDescription[] = _("Stronger as foes switch in."); -static const u8 sWaterBubbleDescription[] = _("Guards from fire and burns."); -static const u8 sSteelworkerDescription[] = _("Powers up Steel moves."); -static const u8 sBerserkDescription[] = _("Boosts Sp. Atk at low HP."); -static const u8 sSlushRushDescription[] = _("Raises Speed in Hail or Snow."); -static const u8 sLongReachDescription[] = _("Never makes contact."); -static const u8 sLiquidVoiceDescription[] = _("Makes sound moves Water."); -static const u8 sTriageDescription[] = _("Healing moves go first."); -static const u8 sGalvanizeDescription[] = _("Normal moves turn Electric."); -static const u8 sSurgeSurferDescription[] = _("Faster on electricity."); -static const u8 sSchoolingDescription[] = _("Forms a school when strong."); -static const u8 sDisguiseDescription[] = _("Decoy protects it once."); -static const u8 sBattleBondDescription[] = _("Changes form after a KO."); -static const u8 sPowerConstructDescription[] = _("Cells aid it when weakened."); -static const u8 sCorrosionDescription[] = _("Poisons any type."); -static const u8 sComatoseDescription[] = _("Always drowsing."); -static const u8 sQueenlyMajestyDescription[] = _("Protects from priority."); -static const u8 sInnardsOutDescription[] = _("Hurts foe when defeated."); -static const u8 sDancerDescription[] = _("Dances along with others."); -static const u8 sBatteryDescription[] = _("Boosts ally's Sp. Atk."); -static const u8 sFluffyDescription[] = _("Tougher but flammable."); -static const u8 sSoulHeartDescription[] = _("KOs raise Sp. Atk."); -static const u8 sTanglingHairDescription[] = _("Contact lowers Speed."); -static const u8 sReceiverDescription[] = _("Copies ally's ability."); -static const u8 sBeastBoostDescription[] = _("KOs boost best stat."); -static const u8 sRKSSystemDescription[] = _("Memories change its type."); -static const u8 sElectricSurgeDescription[] = _("Field becomes Electric."); -static const u8 sPsychicSurgeDescription[] = _("Field becomes weird."); -static const u8 sMistySurgeDescription[] = _("Field becomes misty."); -static const u8 sGrassySurgeDescription[] = _("Field becomes grassy."); -static const u8 sFullMetalBodyDescription[] = _("Prevents stat reduction."); -static const u8 sNeuroforceDescription[] = _("Ups “supereffective”."); -static const u8 sIntrepidSwordDescription[] = _("Ups Attack on entry."); -static const u8 sDauntlessShieldDescription[] = _("Ups Defense on entry."); -static const u8 sLiberoDescription[] = _("Changes type to move's."); -static const u8 sBallFetchDescription[] = _("Fetches failed Poké Ball."); -static const u8 sCottonDownDescription[] = _("Lower Speed of all when hit."); -static const u8 sPropellerTailDescription[] = _("Ignores foe's redirection."); -static const u8 sMirrorArmorDescription[] = _("Reflect stat decreases."); -static const u8 sGulpMissileDescription[] = _("If hit, spits prey from sea."); -static const u8 sStalwartDescription[] = _("Ignores foe's redirection."); -static const u8 sSteamEngineDescription[] = _("Fire or Water hits up Speed."); -static const u8 sPunkRockDescription[] = _("Ups and resists sound."); -static const u8 sSandSpitDescription[] = _("Creates a sandstorm if hit."); -static const u8 sIceScalesDescription[] = _("Halves special damage."); -static const u8 sRipenDescription[] = _("Doubles effect of Berries."); -static const u8 sIceFaceDescription[] = _("Hail or Snow renew free hit."); -static const u8 sPowerSpotDescription[] = _("Powers up ally moves."); -static const u8 sMimicryDescription[] = _("Changes type on terrain."); -static const u8 sScreenCleanerDescription[] = _("Removes walls of light."); -static const u8 sSteelySpiritDescription[] = _("Boosts ally's Steel moves."); -static const u8 sPerishBodyDescription[] = _("Foe faints in 3 turns if hit."); -static const u8 sWanderingSpiritDescription[] = _("Trade abilities on contact."); -static const u8 sGorillaTacticsDescription[] = _("Ups Attack and locks move."); -static const u8 sNeutralizingGasDescription[] = _("All Abilities are nullified."); -static const u8 sPastelVeilDescription[] = _("Protects team from poison."); -static const u8 sHungerSwitchDescription[] = _("Changes form each turn.");; -static const u8 sQuickDrawDescription[] = _("Moves first occasionally."); -static const u8 sUnseenFistDescription[] = _("Contact evades protection."); -static const u8 sCuriousMedicineDescription[] = _("Remove ally's stat changes."); -static const u8 sTransistorDescription[] = _("Ups Electric-type moves."); -static const u8 sDragonsMawDescription[] = _("Ups Dragon-type moves."); -static const u8 sChillingNeighDescription[] = _("KOs boost Attack stat."); -static const u8 sGrimNeighDescription[] = _("KOs boost Sp. Atk stat."); -static const u8 sAsOneIceRiderDescription[] = _("Unnerve and Chilling Neigh."); -static const u8 sAsOneShadowRiderDescription[] = _("Unnerve and Grim Neigh."); -static const u8 sLingeringAromaDescription[] = _("Spreads with contact."); -static const u8 sSeedSowerDescription[] = _("Affects terrain when hit."); -static const u8 sThermalExchangeDescription[] = _("Fire hits up Attack."); -static const u8 sAngerShellDescription[] = _("Gets angry at half HP."); -static const u8 sPurifyingSaltDescription[] = _("Protected by pure salts."); -static const u8 sWellBakedBodyDescription[] = _("Strengthened by Fire."); -static const u8 sWindRiderDescription[] = _("Ups Attack if hit by wind."); -static const u8 sGuardDogDescription[] = _("Cannot be intimidated."); -static const u8 sRockyPayloadDescription[] = _("Powers up Rock moves."); -static const u8 sWindPowerDescription[] = _("Gets charged by wind."); -static const u8 sZeroToHeroDescription[] = _("Changes form on switch out."); -static const u8 sCommanderDescription[] = _("Commands from Dondozo."); -static const u8 sElectromorphosisDescription[] = _("Gets Charged on contact."); -static const u8 sProtosynthesisDescription[] = _("Sun boosts best stat."); -static const u8 sQuarkDriveDescription[] = _("Elec. field ups best stat."); -static const u8 sGoodAsGoldDescription[] = _("Avoids status problems."); -static const u8 sVesselOfRuinDescription[] = _("Lowers foes' sp. damage."); -static const u8 sSwordOfRuinDescription[] = _("Lowers foes' defense."); -static const u8 sTabletsOfRuinDescription[] = _("Lowers foes' damage."); -static const u8 sBeadsOfRuinDescription[] = _("Lowers foes' sp. defense."); -static const u8 sOrichalcumPulseDescription[] = _("Summons sunlight in battle."); -static const u8 sHadronEngineDescription[] = _("Field becomes Electric."); -static const u8 sOpportunistDescription[] = _("Copies foe's stat change."); -static const u8 sCudChewDescription[] = _("Eats a used berry again."); -static const u8 sSharpnessDescription[] = _("Strengthens slicing moves."); -static const u8 sSupremeOverlordDescription[] = _("Inherits fallen's strength."); -static const u8 sCostarDescription[] = _("Copies ally's stat changes."); -static const u8 sToxicDebrisDescription[] = _("Throws poison spikes if hit."); -static const u8 sArmorTailDescription[] = _("Protects from priority."); -static const u8 sEarthEaterDescription[] = _("Eats ground to heal HP."); -static const u8 sMyceliumMightDescription[] = _("Status moves never fail."); -static const u8 sHospitalityDescription[] = _("Restores ally's HP."); -static const u8 sMindsEyeDescription[] = _("Keen Eye and Scrappy."); -static const u8 sEmbodyAspectTealDescription[] = _("Raises Speed."); -static const u8 sEmbodyAspectHearthflameDescription[] = _("Raises Attack."); -static const u8 sEmbodyAspectWellspringDescription[] = _("Raises Sp. Def."); -static const u8 sEmbodyAspectCornerstoneDescription[] = _("Raises Defense."); -static const u8 sToxicChainDescription[] = _("Moves can poison."); -static const u8 sSupersweetSyrupDescription[] = _("Lowers the foe's Speed."); - -#if B_EXPANDED_ABILITY_NAMES == TRUE -const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = -{ - [ABILITY_NONE] = _("-------"), - [ABILITY_STENCH] = _("Stench"), - [ABILITY_DRIZZLE] = _("Drizzle"), - [ABILITY_SPEED_BOOST] = _("Speed Boost"), - [ABILITY_BATTLE_ARMOR] = _("Battle Armor"), - [ABILITY_STURDY] = _("Sturdy"), - [ABILITY_DAMP] = _("Damp"), - [ABILITY_LIMBER] = _("Limber"), - [ABILITY_SAND_VEIL] = _("Sand Veil"), - [ABILITY_STATIC] = _("Static"), - [ABILITY_VOLT_ABSORB] = _("Volt Absorb"), - [ABILITY_WATER_ABSORB] = _("Water Absorb"), - [ABILITY_OBLIVIOUS] = _("Oblivious"), - [ABILITY_CLOUD_NINE] = _("Cloud Nine"), - [ABILITY_COMPOUND_EYES] = _("Compound Eyes"), - [ABILITY_INSOMNIA] = _("Insomnia"), - [ABILITY_COLOR_CHANGE] = _("Color Change"), - [ABILITY_IMMUNITY] = _("Immunity"), - [ABILITY_FLASH_FIRE] = _("Flash Fire"), - [ABILITY_SHIELD_DUST] = _("Shield Dust"), - [ABILITY_OWN_TEMPO] = _("Own Tempo"), - [ABILITY_SUCTION_CUPS] = _("Suction Cups"), - [ABILITY_INTIMIDATE] = _("Intimidate"), - [ABILITY_SHADOW_TAG] = _("Shadow Tag"), - [ABILITY_ROUGH_SKIN] = _("Rough Skin"), - [ABILITY_WONDER_GUARD] = _("Wonder Guard"), - [ABILITY_LEVITATE] = _("Levitate"), - [ABILITY_EFFECT_SPORE] = _("Effect Spore"), - [ABILITY_SYNCHRONIZE] = _("Synchronize"), - [ABILITY_CLEAR_BODY] = _("Clear Body"), - [ABILITY_NATURAL_CURE] = _("Natural Cure"), - [ABILITY_LIGHTNING_ROD] = _("Lightning Rod"), - [ABILITY_SERENE_GRACE] = _("Serene Grace"), - [ABILITY_SWIFT_SWIM] = _("Swift Swim"), - [ABILITY_CHLOROPHYLL] = _("Chlorophyll"), - [ABILITY_ILLUMINATE] = _("Illuminate"), - [ABILITY_TRACE] = _("Trace"), - [ABILITY_HUGE_POWER] = _("Huge Power"), - [ABILITY_POISON_POINT] = _("Poison Point"), - [ABILITY_INNER_FOCUS] = _("Inner Focus"), - [ABILITY_MAGMA_ARMOR] = _("Magma Armor"), - [ABILITY_WATER_VEIL] = _("Water Veil"), - [ABILITY_MAGNET_PULL] = _("Magnet Pull"), - [ABILITY_SOUNDPROOF] = _("Soundproof"), - [ABILITY_RAIN_DISH] = _("Rain Dish"), - [ABILITY_SAND_STREAM] = _("Sand Stream"), - [ABILITY_PRESSURE] = _("Pressure"), - [ABILITY_THICK_FAT] = _("Thick Fat"), - [ABILITY_EARLY_BIRD] = _("Early Bird"), - [ABILITY_FLAME_BODY] = _("Flame Body"), - [ABILITY_RUN_AWAY] = _("Run Away"), - [ABILITY_KEEN_EYE] = _("Keen Eye"), - [ABILITY_HYPER_CUTTER] = _("Hyper Cutter"), - [ABILITY_PICKUP] = _("Pickup"), - [ABILITY_TRUANT] = _("Truant"), - [ABILITY_HUSTLE] = _("Hustle"), - [ABILITY_CUTE_CHARM] = _("Cute Charm"), - [ABILITY_PLUS] = _("Plus"), - [ABILITY_MINUS] = _("Minus"), - [ABILITY_FORECAST] = _("Forecast"), - [ABILITY_STICKY_HOLD] = _("Sticky Hold"), - [ABILITY_SHED_SKIN] = _("Shed Skin"), - [ABILITY_GUTS] = _("Guts"), - [ABILITY_MARVEL_SCALE] = _("Marvel Scale"), - [ABILITY_LIQUID_OOZE] = _("Liquid Ooze"), - [ABILITY_OVERGROW] = _("Overgrow"), - [ABILITY_BLAZE] = _("Blaze"), - [ABILITY_TORRENT] = _("Torrent"), - [ABILITY_SWARM] = _("Swarm"), - [ABILITY_ROCK_HEAD] = _("Rock Head"), - [ABILITY_DROUGHT] = _("Drought"), - [ABILITY_ARENA_TRAP] = _("Arena Trap"), - [ABILITY_VITAL_SPIRIT] = _("Vital Spirit"), - [ABILITY_WHITE_SMOKE] = _("White Smoke"), - [ABILITY_PURE_POWER] = _("Pure Power"), - [ABILITY_SHELL_ARMOR] = _("Shell Armor"), - [ABILITY_AIR_LOCK] = _("Air Lock"), - [ABILITY_TANGLED_FEET] = _("Tangled Feet"), - [ABILITY_MOTOR_DRIVE] = _("Motor Drive"), - [ABILITY_RIVALRY] = _("Rivalry"), - [ABILITY_STEADFAST] = _("Steadfast"), - [ABILITY_SNOW_CLOAK] = _("Snow Cloak"), - [ABILITY_GLUTTONY] = _("Gluttony"), - [ABILITY_ANGER_POINT] = _("Anger Point"), - [ABILITY_UNBURDEN] = _("Unburden"), - [ABILITY_HEATPROOF] = _("Heatproof"), - [ABILITY_SIMPLE] = _("Simple"), - [ABILITY_DRY_SKIN] = _("Dry Skin"), - [ABILITY_DOWNLOAD] = _("Download"), - [ABILITY_IRON_FIST] = _("Iron Fist"), - [ABILITY_POISON_HEAL] = _("Poison Heal"), - [ABILITY_ADAPTABILITY] = _("Adaptability"), - [ABILITY_SKILL_LINK] = _("Skill Link"), - [ABILITY_HYDRATION] = _("Hydration"), - [ABILITY_SOLAR_POWER] = _("Solar Power"), - [ABILITY_QUICK_FEET] = _("Quick Feet"), - [ABILITY_NORMALIZE] = _("Normalize"), - [ABILITY_SNIPER] = _("Sniper"), - [ABILITY_MAGIC_GUARD] = _("Magic Guard"), - [ABILITY_NO_GUARD] = _("No Guard"), - [ABILITY_STALL] = _("Stall"), - [ABILITY_TECHNICIAN] = _("Technician"), - [ABILITY_LEAF_GUARD] = _("Leaf Guard"), - [ABILITY_KLUTZ] = _("Klutz"), - [ABILITY_MOLD_BREAKER] = _("Mold Breaker"), - [ABILITY_SUPER_LUCK] = _("Super Luck"), - [ABILITY_AFTERMATH] = _("Aftermath"), - [ABILITY_ANTICIPATION] = _("Anticipation"), - [ABILITY_FOREWARN] = _("Forewarn"), - [ABILITY_UNAWARE] = _("Unaware"), - [ABILITY_TINTED_LENS] = _("Tinted Lens"), - [ABILITY_FILTER] = _("Filter"), - [ABILITY_SLOW_START] = _("Slow Start"), - [ABILITY_SCRAPPY] = _("Scrappy"), - [ABILITY_STORM_DRAIN] = _("Storm Drain"), - [ABILITY_ICE_BODY] = _("Ice Body"), - [ABILITY_SOLID_ROCK] = _("Solid Rock"), - [ABILITY_SNOW_WARNING] = _("Snow Warning"), - [ABILITY_HONEY_GATHER] = _("Honey Gather"), - [ABILITY_FRISK] = _("Frisk"), - [ABILITY_RECKLESS] = _("Reckless"), - [ABILITY_MULTITYPE] = _("Multitype"), - [ABILITY_FLOWER_GIFT] = _("Flower Gift"), - [ABILITY_BAD_DREAMS] = _("Bad Dreams"), - [ABILITY_PICKPOCKET] = _("Pickpocket"), - [ABILITY_SHEER_FORCE] = _("Sheer Force"), - [ABILITY_CONTRARY] = _("Contrary"), - [ABILITY_UNNERVE] = _("Unnerve"), - [ABILITY_DEFIANT] = _("Defiant"), - [ABILITY_DEFEATIST] = _("Defeatist"), - [ABILITY_CURSED_BODY] = _("Cursed Body"), - [ABILITY_HEALER] = _("Healer"), - [ABILITY_FRIEND_GUARD] = _("Friend Guard"), - [ABILITY_WEAK_ARMOR] = _("Weak Armor"), - [ABILITY_HEAVY_METAL] = _("Heavy Metal"), - [ABILITY_LIGHT_METAL] = _("Light Metal"), - [ABILITY_MULTISCALE] = _("Multiscale"), - [ABILITY_TOXIC_BOOST] = _("Toxic Boost"), - [ABILITY_FLARE_BOOST] = _("Flare Boost"), - [ABILITY_HARVEST] = _("Harvest"), - [ABILITY_TELEPATHY] = _("Telepathy"), - [ABILITY_MOODY] = _("Moody"), - [ABILITY_OVERCOAT] = _("Overcoat"), - [ABILITY_POISON_TOUCH] = _("Poison Touch"), - [ABILITY_REGENERATOR] = _("Regenerator"), - [ABILITY_BIG_PECKS] = _("Big Pecks"), - [ABILITY_SAND_RUSH] = _("Sand Rush"), - [ABILITY_WONDER_SKIN] = _("Wonder Skin"), - [ABILITY_ANALYTIC] = _("Analytic"), - [ABILITY_ILLUSION] = _("Illusion"), - [ABILITY_IMPOSTER] = _("Imposter"), - [ABILITY_INFILTRATOR] = _("Infiltrator"), - [ABILITY_MUMMY] = _("Mummy"), - [ABILITY_MOXIE] = _("Moxie"), - [ABILITY_JUSTIFIED] = _("Justified"), - [ABILITY_RATTLED] = _("Rattled"), - [ABILITY_MAGIC_BOUNCE] = _("Magic Bounce"), - [ABILITY_SAP_SIPPER] = _("Sap Sipper"), - [ABILITY_PRANKSTER] = _("Prankster"), - [ABILITY_SAND_FORCE] = _("Sand Force"), - [ABILITY_IRON_BARBS] = _("Iron Barbs"), - [ABILITY_ZEN_MODE] = _("Zen Mode"), - [ABILITY_VICTORY_STAR] = _("Victory Star"), - [ABILITY_TURBOBLAZE] = _("Turboblaze"), - [ABILITY_TERAVOLT] = _("Teravolt"), - [ABILITY_AROMA_VEIL] = _("Aroma Veil"), - [ABILITY_FLOWER_VEIL] = _("Flower Veil"), - [ABILITY_CHEEK_POUCH] = _("Cheek Pouch"), - [ABILITY_PROTEAN] = _("Protean"), - [ABILITY_FUR_COAT] = _("Fur Coat"), - [ABILITY_MAGICIAN] = _("Magician"), - [ABILITY_BULLETPROOF] = _("Bulletproof"), - [ABILITY_COMPETITIVE] = _("Competitive"), - [ABILITY_STRONG_JAW] = _("Strong Jaw"), - [ABILITY_REFRIGERATE] = _("Refrigerate"), - [ABILITY_SWEET_VEIL] = _("Sweet Veil"), - [ABILITY_STANCE_CHANGE] = _("Stance Change"), - [ABILITY_GALE_WINGS] = _("Gale Wings"), - [ABILITY_MEGA_LAUNCHER] = _("Mega Launcher"), - [ABILITY_GRASS_PELT] = _("Grass Pelt"), - [ABILITY_SYMBIOSIS] = _("Symbiosis"), - [ABILITY_TOUGH_CLAWS] = _("Tough Claws"), - [ABILITY_PIXILATE] = _("Pixilate"), - [ABILITY_GOOEY] = _("Gooey"), - [ABILITY_AERILATE] = _("Aerilate"), - [ABILITY_PARENTAL_BOND] = _("Parental Bond"), - [ABILITY_DARK_AURA] = _("Dark Aura"), - [ABILITY_FAIRY_AURA] = _("Fairy Aura"), - [ABILITY_AURA_BREAK] = _("Aura Break"), - [ABILITY_PRIMORDIAL_SEA] = _("Primordial Sea"), - [ABILITY_DESOLATE_LAND] = _("Desolate Land"), - [ABILITY_DELTA_STREAM] = _("Delta Stream"), - [ABILITY_STAMINA] = _("Stamina"), - [ABILITY_WIMP_OUT] = _("Wimp Out"), - [ABILITY_EMERGENCY_EXIT] = _("Emergency Exit"), - [ABILITY_WATER_COMPACTION] = _("Water Compaction"), - [ABILITY_MERCILESS] = _("Merciless"), - [ABILITY_SHIELDS_DOWN] = _("Shields Down"), - [ABILITY_STAKEOUT] = _("Stakeout"), - [ABILITY_WATER_BUBBLE] = _("Water Bubble"), - [ABILITY_STEELWORKER] = _("Steelworker"), - [ABILITY_BERSERK] = _("Berserk"), - [ABILITY_SLUSH_RUSH] = _("Slush Rush"), - [ABILITY_LONG_REACH] = _("Long Reach"), - [ABILITY_LIQUID_VOICE] = _("Liquid Voice"), - [ABILITY_TRIAGE] = _("Triage"), - [ABILITY_GALVANIZE] = _("Galvanize"), - [ABILITY_SURGE_SURFER] = _("Surge Surfer"), - [ABILITY_SCHOOLING] = _("Schooling"), - [ABILITY_DISGUISE] = _("Disguise"), - [ABILITY_BATTLE_BOND] = _("Battle Bond"), - [ABILITY_POWER_CONSTRUCT] = _("Power Construct"), - [ABILITY_CORROSION] = _("Corrosion"), - [ABILITY_COMATOSE] = _("Comatose"), - [ABILITY_QUEENLY_MAJESTY] = _("Queenly Majesty"), - [ABILITY_INNARDS_OUT] = _("Innards Out"), - [ABILITY_DANCER] = _("Dancer"), - [ABILITY_BATTERY] = _("Battery"), - [ABILITY_FLUFFY] = _("Fluffy"), - [ABILITY_DAZZLING] = _("Dazzling"), - [ABILITY_SOUL_HEART] = _("Soul-Heart"), - [ABILITY_TANGLING_HAIR] = _("Tangling Hair"), - [ABILITY_RECEIVER] = _("Receiver"), - [ABILITY_POWER_OF_ALCHEMY] = _("Power Of Alchemy"), - [ABILITY_BEAST_BOOST] = _("Beast Boost"), - [ABILITY_RKS_SYSTEM] = _("RKS System"), - [ABILITY_ELECTRIC_SURGE] = _("Electric Surge"), - [ABILITY_PSYCHIC_SURGE] = _("Psychic Surge"), - [ABILITY_MISTY_SURGE] = _("Misty Surge"), - [ABILITY_GRASSY_SURGE] = _("Grassy Surge"), - [ABILITY_FULL_METAL_BODY] = _("Full Metal Body"), - [ABILITY_SHADOW_SHIELD] = _("Shadow Shield"), - [ABILITY_PRISM_ARMOR] = _("Prism Armor"), - [ABILITY_NEUROFORCE] = _("Neuroforce"), - [ABILITY_INTREPID_SWORD] = _("Intrepid Sword"), - [ABILITY_DAUNTLESS_SHIELD] = _("Dauntless Shield"), - [ABILITY_LIBERO] = _("Libero"), - [ABILITY_BALL_FETCH] = _("Ball Fetch"), - [ABILITY_COTTON_DOWN] = _("Cotton Down"), - [ABILITY_PROPELLER_TAIL] = _("Propeller Tail"), - [ABILITY_MIRROR_ARMOR] = _("Mirror Armor"), - [ABILITY_GULP_MISSILE] = _("Gulp Missile"), - [ABILITY_STALWART] = _("Stalwart"), - [ABILITY_STEAM_ENGINE] = _("Steam Engine"), - [ABILITY_PUNK_ROCK] = _("Punk Rock"), - [ABILITY_SAND_SPIT] = _("Sand Spit"), - [ABILITY_ICE_SCALES] = _("Ice Scales"), - [ABILITY_RIPEN] = _("Ripen"), - [ABILITY_ICE_FACE] = _("Ice Face"), - [ABILITY_POWER_SPOT] = _("Power Spot"), - [ABILITY_MIMICRY] = _("Mimicry"), - [ABILITY_SCREEN_CLEANER] = _("Screen Cleaner"), - [ABILITY_STEELY_SPIRIT] = _("Steely Spirit"), - [ABILITY_PERISH_BODY] = _("Perish Body"), - [ABILITY_WANDERING_SPIRIT] = _("Wandering Spirit"), - [ABILITY_GORILLA_TACTICS] = _("Gorilla Tactics"), - [ABILITY_NEUTRALIZING_GAS] = _("Neutralizing Gas"), - [ABILITY_PASTEL_VEIL] = _("Pastel Veil"), - [ABILITY_HUNGER_SWITCH] = _("Hunger Switch"), - [ABILITY_QUICK_DRAW] = _("Quick Draw"), - [ABILITY_UNSEEN_FIST] = _("Unseen Fist"), - [ABILITY_CURIOUS_MEDICINE] = _("Curious Medicine"), - [ABILITY_TRANSISTOR] = _("Transistor"), - [ABILITY_DRAGONS_MAW] = _("Dragon's Maw"), - [ABILITY_CHILLING_NEIGH] = _("Chilling Neigh"), - [ABILITY_GRIM_NEIGH] = _("Grim Neigh"), - [ABILITY_AS_ONE_ICE_RIDER] = _("As One"), - [ABILITY_AS_ONE_SHADOW_RIDER] = _("As One"), - [ABILITY_LINGERING_AROMA] = _("Lingering Aroma"), - [ABILITY_SEED_SOWER] = _("Seed Sower"), - [ABILITY_THERMAL_EXCHANGE] = _("Thermal Exchange"), - [ABILITY_ANGER_SHELL] = _("Anger Shell"), - [ABILITY_PURIFYING_SALT] = _("Purifying Salt"), - [ABILITY_WELL_BAKED_BODY] = _("Well-Baked Body"), - [ABILITY_WIND_RIDER] = _("Wind Rider"), - [ABILITY_GUARD_DOG] = _("Guard Dog"), - [ABILITY_ROCKY_PAYLOAD] = _("Rocky Payload"), - [ABILITY_WIND_POWER] = _("Wind Power"), - [ABILITY_ZERO_TO_HERO] = _("Zero to Hero"), - [ABILITY_COMMANDER] = _("Commander"), - [ABILITY_ELECTROMORPHOSIS] = _("Electromorphosis"), - [ABILITY_PROTOSYNTHESIS] = _("Protosynthesis"), - [ABILITY_QUARK_DRIVE] = _("Quark Drive"), - [ABILITY_GOOD_AS_GOLD] = _("Good as Gold"), - [ABILITY_VESSEL_OF_RUIN] = _("Vessel of Ruin"), - [ABILITY_SWORD_OF_RUIN] = _("Sword of Ruin"), - [ABILITY_TABLETS_OF_RUIN] = _("Tablets of Ruin"), - [ABILITY_BEADS_OF_RUIN] = _("Beads of Ruin"), - [ABILITY_ORICHALCUM_PULSE] = _("Orichalcum Pulse"), - [ABILITY_HADRON_ENGINE] = _("Hadron Engine"), - [ABILITY_OPPORTUNIST] = _("Opportunist"), - [ABILITY_CUD_CHEW] = _("Cud Chew"), - [ABILITY_SHARPNESS] = _("Sharpness"), - [ABILITY_SUPREME_OVERLORD] = _("Supreme Overlord"), - [ABILITY_COSTAR] = _("Costar"), - [ABILITY_TOXIC_DEBRIS] = _("Toxic Debris"), - [ABILITY_ARMOR_TAIL] = _("Armor Tail"), - [ABILITY_EARTH_EATER] = _("Earth Eater"), - [ABILITY_MYCELIUM_MIGHT] = _("Mycelium Might"), - [ABILITY_HOSPITALITY] = _("Hospitality"), - [ABILITY_MINDS_EYE] = _("Mind's Eye"), - [ABILITY_EMBODY_ASPECT_TEAL] = _("Embody Aspect"), - [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = _("Embody Aspect"), - [ABILITY_EMBODY_ASPECT_WELLSPRING] = _("Embody Aspect"), - [ABILITY_EMBODY_ASPECT_CORNERSTONE] = _("Embody Aspect"), - [ABILITY_TOXIC_CHAIN] = _("Toxic Chain"), - [ABILITY_SUPERSWEET_SYRUP] = _("Supersweet Syrup"), -}; -#else // 12 characters -const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] = -{ - [ABILITY_NONE] = _("-------"), - [ABILITY_STENCH] = _("Stench"), - [ABILITY_DRIZZLE] = _("Drizzle"), - [ABILITY_SPEED_BOOST] = _("Speed Boost"), - [ABILITY_BATTLE_ARMOR] = _("Battle Armor"), - [ABILITY_STURDY] = _("Sturdy"), - [ABILITY_DAMP] = _("Damp"), - [ABILITY_LIMBER] = _("Limber"), - [ABILITY_SAND_VEIL] = _("Sand Veil"), - [ABILITY_STATIC] = _("Static"), - [ABILITY_VOLT_ABSORB] = _("Volt Absorb"), - [ABILITY_WATER_ABSORB] = _("Water Absorb"), - [ABILITY_OBLIVIOUS] = _("Oblivious"), - [ABILITY_CLOUD_NINE] = _("Cloud Nine"), - [ABILITY_COMPOUND_EYES] = _("CompoundEyes"), - [ABILITY_INSOMNIA] = _("Insomnia"), - [ABILITY_COLOR_CHANGE] = _("Color Change"), - [ABILITY_IMMUNITY] = _("Immunity"), - [ABILITY_FLASH_FIRE] = _("Flash Fire"), - [ABILITY_SHIELD_DUST] = _("Shield Dust"), - [ABILITY_OWN_TEMPO] = _("Own Tempo"), - [ABILITY_SUCTION_CUPS] = _("Suction Cups"), - [ABILITY_INTIMIDATE] = _("Intimidate"), - [ABILITY_SHADOW_TAG] = _("Shadow Tag"), - [ABILITY_ROUGH_SKIN] = _("Rough Skin"), - [ABILITY_WONDER_GUARD] = _("Wonder Guard"), - [ABILITY_LEVITATE] = _("Levitate"), - [ABILITY_EFFECT_SPORE] = _("Effect Spore"), - [ABILITY_SYNCHRONIZE] = _("Synchronize"), - [ABILITY_CLEAR_BODY] = _("Clear Body"), - [ABILITY_NATURAL_CURE] = _("Natural Cure"), - [ABILITY_LIGHTNING_ROD] = _("LightningRod"), - [ABILITY_SERENE_GRACE] = _("Serene Grace"), - [ABILITY_SWIFT_SWIM] = _("Swift Swim"), - [ABILITY_CHLOROPHYLL] = _("Chlorophyll"), - [ABILITY_ILLUMINATE] = _("Illuminate"), - [ABILITY_TRACE] = _("Trace"), - [ABILITY_HUGE_POWER] = _("Huge Power"), - [ABILITY_POISON_POINT] = _("Poison Point"), - [ABILITY_INNER_FOCUS] = _("Inner Focus"), - [ABILITY_MAGMA_ARMOR] = _("Magma Armor"), - [ABILITY_WATER_VEIL] = _("Water Veil"), - [ABILITY_MAGNET_PULL] = _("Magnet Pull"), - [ABILITY_SOUNDPROOF] = _("Soundproof"), - [ABILITY_RAIN_DISH] = _("Rain Dish"), - [ABILITY_SAND_STREAM] = _("Sand Stream"), - [ABILITY_PRESSURE] = _("Pressure"), - [ABILITY_THICK_FAT] = _("Thick Fat"), - [ABILITY_EARLY_BIRD] = _("Early Bird"), - [ABILITY_FLAME_BODY] = _("Flame Body"), - [ABILITY_RUN_AWAY] = _("Run Away"), - [ABILITY_KEEN_EYE] = _("Keen Eye"), - [ABILITY_HYPER_CUTTER] = _("Hyper Cutter"), - [ABILITY_PICKUP] = _("Pickup"), - [ABILITY_TRUANT] = _("Truant"), - [ABILITY_HUSTLE] = _("Hustle"), - [ABILITY_CUTE_CHARM] = _("Cute Charm"), - [ABILITY_PLUS] = _("Plus"), - [ABILITY_MINUS] = _("Minus"), - [ABILITY_FORECAST] = _("Forecast"), - [ABILITY_STICKY_HOLD] = _("Sticky Hold"), - [ABILITY_SHED_SKIN] = _("Shed Skin"), - [ABILITY_GUTS] = _("Guts"), - [ABILITY_MARVEL_SCALE] = _("Marvel Scale"), - [ABILITY_LIQUID_OOZE] = _("Liquid Ooze"), - [ABILITY_OVERGROW] = _("Overgrow"), - [ABILITY_BLAZE] = _("Blaze"), - [ABILITY_TORRENT] = _("Torrent"), - [ABILITY_SWARM] = _("Swarm"), - [ABILITY_ROCK_HEAD] = _("Rock Head"), - [ABILITY_DROUGHT] = _("Drought"), - [ABILITY_ARENA_TRAP] = _("Arena Trap"), - [ABILITY_VITAL_SPIRIT] = _("Vital Spirit"), - [ABILITY_WHITE_SMOKE] = _("White Smoke"), - [ABILITY_PURE_POWER] = _("Pure Power"), - [ABILITY_SHELL_ARMOR] = _("Shell Armor"), - [ABILITY_AIR_LOCK] = _("Air Lock"), - [ABILITY_TANGLED_FEET] = _("Tangled Feet"), - [ABILITY_MOTOR_DRIVE] = _("Motor Drive"), - [ABILITY_RIVALRY] = _("Rivalry"), - [ABILITY_STEADFAST] = _("Steadfast"), - [ABILITY_SNOW_CLOAK] = _("Snow Cloak"), - [ABILITY_GLUTTONY] = _("Gluttony"), - [ABILITY_ANGER_POINT] = _("Anger Point"), - [ABILITY_UNBURDEN] = _("Unburden"), - [ABILITY_HEATPROOF] = _("Heatproof"), - [ABILITY_SIMPLE] = _("Simple"), - [ABILITY_DRY_SKIN] = _("Dry Skin"), - [ABILITY_DOWNLOAD] = _("Download"), - [ABILITY_IRON_FIST] = _("Iron Fist"), - [ABILITY_POISON_HEAL] = _("Poison Heal"), - [ABILITY_ADAPTABILITY] = _("Adaptability"), - [ABILITY_SKILL_LINK] = _("Skill Link"), - [ABILITY_HYDRATION] = _("Hydration"), - [ABILITY_SOLAR_POWER] = _("Solar Power"), - [ABILITY_QUICK_FEET] = _("Quick Feet"), - [ABILITY_NORMALIZE] = _("Normalize"), - [ABILITY_SNIPER] = _("Sniper"), - [ABILITY_MAGIC_GUARD] = _("Magic Guard"), - [ABILITY_NO_GUARD] = _("No Guard"), - [ABILITY_STALL] = _("Stall"), - [ABILITY_TECHNICIAN] = _("Technician"), - [ABILITY_LEAF_GUARD] = _("Leaf Guard"), - [ABILITY_KLUTZ] = _("Klutz"), - [ABILITY_MOLD_BREAKER] = _("Mold Breaker"), - [ABILITY_SUPER_LUCK] = _("Super Luck"), - [ABILITY_AFTERMATH] = _("Aftermath"), - [ABILITY_ANTICIPATION] = _("Anticipation"), - [ABILITY_FOREWARN] = _("Forewarn"), - [ABILITY_UNAWARE] = _("Unaware"), - [ABILITY_TINTED_LENS] = _("Tinted Lens"), - [ABILITY_FILTER] = _("Filter"), - [ABILITY_SLOW_START] = _("Slow Start"), - [ABILITY_SCRAPPY] = _("Scrappy"), - [ABILITY_STORM_DRAIN] = _("Storm Drain"), - [ABILITY_ICE_BODY] = _("Ice Body"), - [ABILITY_SOLID_ROCK] = _("Solid Rock"), - [ABILITY_SNOW_WARNING] = _("Snow Warning"), - [ABILITY_HONEY_GATHER] = _("Honey Gather"), - [ABILITY_FRISK] = _("Frisk"), - [ABILITY_RECKLESS] = _("Reckless"), - [ABILITY_MULTITYPE] = _("Multitype"), - [ABILITY_FLOWER_GIFT] = _("Flower Gift"), - [ABILITY_BAD_DREAMS] = _("Bad Dreams"), - [ABILITY_PICKPOCKET] = _("Pickpocket"), - [ABILITY_SHEER_FORCE] = _("Sheer Force"), - [ABILITY_CONTRARY] = _("Contrary"), - [ABILITY_UNNERVE] = _("Unnerve"), - [ABILITY_DEFIANT] = _("Defiant"), - [ABILITY_DEFEATIST] = _("Defeatist"), - [ABILITY_CURSED_BODY] = _("Cursed Body"), - [ABILITY_HEALER] = _("Healer"), - [ABILITY_FRIEND_GUARD] = _("Friend Guard"), - [ABILITY_WEAK_ARMOR] = _("Weak Armor"), - [ABILITY_HEAVY_METAL] = _("Heavy Metal"), - [ABILITY_LIGHT_METAL] = _("Light Metal"), - [ABILITY_MULTISCALE] = _("Multiscale"), - [ABILITY_TOXIC_BOOST] = _("Toxic Boost"), - [ABILITY_FLARE_BOOST] = _("Flare Boost"), - [ABILITY_HARVEST] = _("Harvest"), - [ABILITY_TELEPATHY] = _("Telepathy"), - [ABILITY_MOODY] = _("Moody"), - [ABILITY_OVERCOAT] = _("Overcoat"), - [ABILITY_POISON_TOUCH] = _("Poison Touch"), - [ABILITY_REGENERATOR] = _("Regenerator"), - [ABILITY_BIG_PECKS] = _("Big Pecks"), - [ABILITY_SAND_RUSH] = _("Sand Rush"), - [ABILITY_WONDER_SKIN] = _("Wonder Skin"), - [ABILITY_ANALYTIC] = _("Analytic"), - [ABILITY_ILLUSION] = _("Illusion"), - [ABILITY_IMPOSTER] = _("Imposter"), - [ABILITY_INFILTRATOR] = _("Infiltrator"), - [ABILITY_MUMMY] = _("Mummy"), - [ABILITY_MOXIE] = _("Moxie"), - [ABILITY_JUSTIFIED] = _("Justified"), - [ABILITY_RATTLED] = _("Rattled"), - [ABILITY_MAGIC_BOUNCE] = _("Magic Bounce"), - [ABILITY_SAP_SIPPER] = _("Sap Sipper"), - [ABILITY_PRANKSTER] = _("Prankster"), - [ABILITY_SAND_FORCE] = _("Sand Force"), - [ABILITY_IRON_BARBS] = _("Iron Barbs"), - [ABILITY_ZEN_MODE] = _("Zen Mode"), - [ABILITY_VICTORY_STAR] = _("Victory Star"), - [ABILITY_TURBOBLAZE] = _("Turboblaze"), - [ABILITY_TERAVOLT] = _("Teravolt"), - [ABILITY_AROMA_VEIL] = _("Aroma Veil"), - [ABILITY_FLOWER_VEIL] = _("Flower Veil"), - [ABILITY_CHEEK_POUCH] = _("Cheek Pouch"), - [ABILITY_PROTEAN] = _("Protean"), - [ABILITY_FUR_COAT] = _("Fur Coat"), - [ABILITY_MAGICIAN] = _("Magician"), - [ABILITY_BULLETPROOF] = _("Bulletproof"), - [ABILITY_COMPETITIVE] = _("Competitive"), - [ABILITY_STRONG_JAW] = _("Strong Jaw"), - [ABILITY_REFRIGERATE] = _("Refrigerate"), - [ABILITY_SWEET_VEIL] = _("Sweet Veil"), - [ABILITY_STANCE_CHANGE] = _("StanceChange"), - [ABILITY_GALE_WINGS] = _("Gale Wings"), - [ABILITY_MEGA_LAUNCHER] = _("MegaLauncher"), - [ABILITY_GRASS_PELT] = _("Grass Pelt"), - [ABILITY_SYMBIOSIS] = _("Symbiosis"), - [ABILITY_TOUGH_CLAWS] = _("Tough Claws"), - [ABILITY_PIXILATE] = _("Pixilate"), - [ABILITY_GOOEY] = _("Gooey"), - [ABILITY_AERILATE] = _("Aerilate"), - [ABILITY_PARENTAL_BOND] = _("ParentalBond"), - [ABILITY_DARK_AURA] = _("Dark Aura"), - [ABILITY_FAIRY_AURA] = _("Fairy Aura"), - [ABILITY_AURA_BREAK] = _("Aura Break"), - [ABILITY_PRIMORDIAL_SEA] = _("PrimrdialSea"), - [ABILITY_DESOLATE_LAND] = _("DesolateLand"), - [ABILITY_DELTA_STREAM] = _("Delta Stream"), - [ABILITY_STAMINA] = _("Stamina"), - [ABILITY_WIMP_OUT] = _("Wimp Out"), - [ABILITY_EMERGENCY_EXIT] = _("EmergncyExit"), - [ABILITY_WATER_COMPACTION] = _("WtrCmpaction"), - [ABILITY_MERCILESS] = _("Merciless"), - [ABILITY_SHIELDS_DOWN] = _("Shields Down"), - [ABILITY_STAKEOUT] = _("Stakeout"), - [ABILITY_WATER_BUBBLE] = _("Water Bubble"), - [ABILITY_STEELWORKER] = _("Steelworker"), - [ABILITY_BERSERK] = _("Berserk"), - [ABILITY_SLUSH_RUSH] = _("Slush Rush"), - [ABILITY_LONG_REACH] = _("Long Reach"), - [ABILITY_LIQUID_VOICE] = _("Liquid Voice"), - [ABILITY_TRIAGE] = _("Triage"), - [ABILITY_GALVANIZE] = _("Galvanize"), - [ABILITY_SURGE_SURFER] = _("Surge Surfer"), - [ABILITY_SCHOOLING] = _("Schooling"), - [ABILITY_DISGUISE] = _("Disguise"), - [ABILITY_BATTLE_BOND] = _("Battle Bond"), - [ABILITY_POWER_CONSTRUCT] = _("PwrConstruct"), - [ABILITY_CORROSION] = _("Corrosion"), - [ABILITY_COMATOSE] = _("Comatose"), - [ABILITY_QUEENLY_MAJESTY] = _("QueenlyMjsty"), - [ABILITY_INNARDS_OUT] = _("Innards Out"), - [ABILITY_DANCER] = _("Dancer"), - [ABILITY_BATTERY] = _("Battery"), - [ABILITY_FLUFFY] = _("Fluffy"), - [ABILITY_DAZZLING] = _("Dazzling"), - [ABILITY_SOUL_HEART] = _("Soul-Heart"), - [ABILITY_TANGLING_HAIR] = _("TanglingHair"), - [ABILITY_RECEIVER] = _("Receiver"), - [ABILITY_POWER_OF_ALCHEMY] = _("PwrOfAlchemy"), - [ABILITY_BEAST_BOOST] = _("Beast Boost"), - [ABILITY_RKS_SYSTEM] = _("RKS System"), - [ABILITY_ELECTRIC_SURGE] = _("ElectrcSurge"), - [ABILITY_PSYCHIC_SURGE] = _("PsychicSurge"), - [ABILITY_MISTY_SURGE] = _("Misty Surge"), - [ABILITY_GRASSY_SURGE] = _("Grassy Surge"), - [ABILITY_FULL_METAL_BODY] = _("FullMetalBdy"), - [ABILITY_SHADOW_SHIELD] = _("ShadowShield"), - [ABILITY_PRISM_ARMOR] = _("Prism Armor"), - [ABILITY_NEUROFORCE] = _("Neuroforce"), - [ABILITY_INTREPID_SWORD] = _("IntrepidSwrd"), - [ABILITY_DAUNTLESS_SHIELD] = _("DauntlssShld"), - [ABILITY_LIBERO] = _("Libero"), - [ABILITY_BALL_FETCH] = _("Ball Fetch"), - [ABILITY_COTTON_DOWN] = _("Cotton Down"), - [ABILITY_PROPELLER_TAIL] = _("PropellrTail"), - [ABILITY_MIRROR_ARMOR] = _("Mirror Armor"), - [ABILITY_GULP_MISSILE] = _("Gulp Missile"), - [ABILITY_STALWART] = _("Stalwart"), - [ABILITY_STEAM_ENGINE] = _("Steam Engine"), - [ABILITY_PUNK_ROCK] = _("Punk Rock"), - [ABILITY_SAND_SPIT] = _("Sand Spit"), - [ABILITY_ICE_SCALES] = _("Ice Scales"), - [ABILITY_RIPEN] = _("Ripen"), - [ABILITY_ICE_FACE] = _("Ice Face"), - [ABILITY_POWER_SPOT] = _("Power Spot"), - [ABILITY_MIMICRY] = _("Mimicry"), - [ABILITY_SCREEN_CLEANER] = _("ScreenCleanr"), - [ABILITY_STEELY_SPIRIT] = _("SteelySpirit"), - [ABILITY_PERISH_BODY] = _("Perish Body"), - [ABILITY_WANDERING_SPIRIT] = _("WandrngSprit"), - [ABILITY_GORILLA_TACTICS] = _("GorillaTacti"), - [ABILITY_NEUTRALIZING_GAS] = _("NeutrlzngGas"), - [ABILITY_PASTEL_VEIL] = _("Pastel Veil"), - [ABILITY_HUNGER_SWITCH] = _("HungerSwitch"), - [ABILITY_QUICK_DRAW] = _("Quick Draw"), - [ABILITY_UNSEEN_FIST] = _("Unseen Fist"), - [ABILITY_CURIOUS_MEDICINE] = _("CuriusMedicn"), - [ABILITY_TRANSISTOR] = _("Transistor"), - [ABILITY_DRAGONS_MAW] = _("Dragon's Maw"), - [ABILITY_CHILLING_NEIGH] = _("ChillngNeigh"), - [ABILITY_GRIM_NEIGH] = _("Grim Neigh"), - [ABILITY_AS_ONE_ICE_RIDER] = _("As One"), - [ABILITY_AS_ONE_SHADOW_RIDER] = _("As One"), - [ABILITY_LINGERING_AROMA] = _("LngerngAroma"), - [ABILITY_SEED_SOWER] = _("Seed Sower"), - [ABILITY_THERMAL_EXCHANGE] = _("ThrmlExchnge"), - [ABILITY_ANGER_SHELL] = _("Anger Shell"), - [ABILITY_PURIFYING_SALT] = _("PurfyingSalt"), - [ABILITY_WELL_BAKED_BODY] = _("WellBakedBdy"), - [ABILITY_WIND_RIDER] = _("Wind Rider"), - [ABILITY_GUARD_DOG] = _("Guard Dog"), - [ABILITY_ROCKY_PAYLOAD] = _("RockyPayload"), - [ABILITY_WIND_POWER] = _("Wind Power"), - [ABILITY_ZERO_TO_HERO] = _("Zero to Hero"), - [ABILITY_COMMANDER] = _("Commander"), - [ABILITY_ELECTROMORPHOSIS] = _("Elecmrphosis"), - [ABILITY_PROTOSYNTHESIS] = _("Protosnthsis"), - [ABILITY_QUARK_DRIVE] = _("Quark Drive"), - [ABILITY_GOOD_AS_GOLD] = _("Good as Gold"), - [ABILITY_VESSEL_OF_RUIN] = _("VesselOfRuin"), - [ABILITY_SWORD_OF_RUIN] = _("SwordOfRuin"), - [ABILITY_TABLETS_OF_RUIN] = _("TabltsOfRuin"), - [ABILITY_BEADS_OF_RUIN] = _("BeadsOfRuin"), - [ABILITY_ORICHALCUM_PULSE] = _("OrchlcumPlse"), - [ABILITY_HADRON_ENGINE] = _("HadronEngine"), - [ABILITY_OPPORTUNIST] = _("Opportunist"), - [ABILITY_CUD_CHEW] = _("Cud Chew"), - [ABILITY_SHARPNESS] = _("Sharpness"), - [ABILITY_SUPREME_OVERLORD] = _("SuprmeOvrlrd"), - [ABILITY_COSTAR] = _("Costar"), - [ABILITY_TOXIC_DEBRIS] = _("Toxic Debris"), - [ABILITY_ARMOR_TAIL] = _("Armor Tail"), - [ABILITY_EARTH_EATER] = _("Earth Eater"), - [ABILITY_MYCELIUM_MIGHT] = _("MceliumMight"), - [ABILITY_HOSPITALITY] = _("Hospitality"), - [ABILITY_MINDS_EYE] = _("Mind's Eye"), - [ABILITY_EMBODY_ASPECT_TEAL] = _("EmbodyAspect"), - [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = _("EmbodyAspect"), - [ABILITY_EMBODY_ASPECT_WELLSPRING] = _("EmbodyAspect"), - [ABILITY_EMBODY_ASPECT_CORNERSTONE] = _("EmbodyAspect"), - [ABILITY_TOXIC_CHAIN] = _("Toxic Chain"), - [ABILITY_SUPERSWEET_SYRUP] = _("SuprswtSyrup"), -}; -#endif - -const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] = -{ - [ABILITY_NONE] = sNoneDescription, - [ABILITY_STENCH] = sStenchDescription, - [ABILITY_DRIZZLE] = sDrizzleDescription, - [ABILITY_SPEED_BOOST] = sSpeedBoostDescription, - [ABILITY_BATTLE_ARMOR] = sBattleArmorDescription, - [ABILITY_STURDY] = sSturdyDescription, - [ABILITY_DAMP] = sDampDescription, - [ABILITY_LIMBER] = sLimberDescription, - [ABILITY_SAND_VEIL] = sSandVeilDescription, - [ABILITY_STATIC] = sStaticDescription, - [ABILITY_VOLT_ABSORB] = sVoltAbsorbDescription, - [ABILITY_WATER_ABSORB] = sWaterAbsorbDescription, - [ABILITY_OBLIVIOUS] = sObliviousDescription, - [ABILITY_CLOUD_NINE] = sCloudNineDescription, - [ABILITY_COMPOUND_EYES] = sCompoundEyesDescription, - [ABILITY_INSOMNIA] = sInsomniaDescription, - [ABILITY_COLOR_CHANGE] = sColorChangeDescription, - [ABILITY_IMMUNITY] = sImmunityDescription, - [ABILITY_FLASH_FIRE] = sFlashFireDescription, - [ABILITY_SHIELD_DUST] = sShieldDustDescription, - [ABILITY_OWN_TEMPO] = sOwnTempoDescription, - [ABILITY_SUCTION_CUPS] = sSuctionCupsDescription, - [ABILITY_INTIMIDATE] = sIntimidateDescription, - [ABILITY_SHADOW_TAG] = sShadowTagDescription, - [ABILITY_ROUGH_SKIN] = sRoughSkinDescription, - [ABILITY_WONDER_GUARD] = sWonderGuardDescription, - [ABILITY_LEVITATE] = sLevitateDescription, - [ABILITY_EFFECT_SPORE] = sEffectSporeDescription, - [ABILITY_SYNCHRONIZE] = sSynchronizeDescription, - [ABILITY_CLEAR_BODY] = sClearBodyDescription, - [ABILITY_NATURAL_CURE] = sNaturalCureDescription, - [ABILITY_LIGHTNING_ROD] = sLightningRodDescription, - [ABILITY_SERENE_GRACE] = sSereneGraceDescription, - [ABILITY_SWIFT_SWIM] = sSwiftSwimDescription, - [ABILITY_CHLOROPHYLL] = sChlorophyllDescription, - [ABILITY_ILLUMINATE] = sIlluminateDescription, - [ABILITY_TRACE] = sTraceDescription, - [ABILITY_HUGE_POWER] = sHugePowerDescription, - [ABILITY_POISON_POINT] = sPoisonPointDescription, - [ABILITY_INNER_FOCUS] = sInnerFocusDescription, - [ABILITY_MAGMA_ARMOR] = sMagmaArmorDescription, - [ABILITY_WATER_VEIL] = sWaterVeilDescription, - [ABILITY_MAGNET_PULL] = sMagnetPullDescription, - [ABILITY_SOUNDPROOF] = sSoundproofDescription, - [ABILITY_RAIN_DISH] = sRainDishDescription, - [ABILITY_SAND_STREAM] = sSandStreamDescription, - [ABILITY_PRESSURE] = sPressureDescription, - [ABILITY_THICK_FAT] = sThickFatDescription, - [ABILITY_EARLY_BIRD] = sEarlyBirdDescription, - [ABILITY_FLAME_BODY] = sFlameBodyDescription, - [ABILITY_RUN_AWAY] = sRunAwayDescription, - [ABILITY_KEEN_EYE] = sKeenEyeDescription, - [ABILITY_HYPER_CUTTER] = sHyperCutterDescription, - [ABILITY_PICKUP] = sPickupDescription, - [ABILITY_TRUANT] = sTruantDescription, - [ABILITY_HUSTLE] = sHustleDescription, - [ABILITY_CUTE_CHARM] = sCuteCharmDescription, - [ABILITY_PLUS] = sPlusDescription, - [ABILITY_MINUS] = sMinusDescription, - [ABILITY_FORECAST] = sForecastDescription, - [ABILITY_STICKY_HOLD] = sStickyHoldDescription, - [ABILITY_SHED_SKIN] = sShedSkinDescription, - [ABILITY_GUTS] = sGutsDescription, - [ABILITY_MARVEL_SCALE] = sMarvelScaleDescription, - [ABILITY_LIQUID_OOZE] = sLiquidOozeDescription, - [ABILITY_OVERGROW] = sOvergrowDescription, - [ABILITY_BLAZE] = sBlazeDescription, - [ABILITY_TORRENT] = sTorrentDescription, - [ABILITY_SWARM] = sSwarmDescription, - [ABILITY_ROCK_HEAD] = sRockHeadDescription, - [ABILITY_DROUGHT] = sDroughtDescription, - [ABILITY_ARENA_TRAP] = sArenaTrapDescription, - [ABILITY_VITAL_SPIRIT] = sVitalSpiritDescription, - [ABILITY_WHITE_SMOKE] = sWhiteSmokeDescription, - [ABILITY_PURE_POWER] = sPurePowerDescription, - [ABILITY_SHELL_ARMOR] = sShellArmorDescription, - [ABILITY_AIR_LOCK] = sAirLockDescription, - [ABILITY_TANGLED_FEET] = sTangledFeetDescription, - [ABILITY_MOTOR_DRIVE] = sMotorDriveDescription, - [ABILITY_RIVALRY] = sRivalryDescription, - [ABILITY_STEADFAST] = sSteadfastDescription, - [ABILITY_SNOW_CLOAK] = sSnowCloakDescription, - [ABILITY_GLUTTONY] = sGluttonyDescription, - [ABILITY_ANGER_POINT] = sAngerPointDescription, - [ABILITY_UNBURDEN] = sUnburdenDescription, - [ABILITY_HEATPROOF] = sHeatproofDescription, - [ABILITY_SIMPLE] = sSimpleDescription, - [ABILITY_DRY_SKIN] = sDrySkinDescription, - [ABILITY_DOWNLOAD] = sDownloadDescription, - [ABILITY_IRON_FIST] = sIronFistDescription, - [ABILITY_POISON_HEAL] = sPoisonHealDescription, - [ABILITY_ADAPTABILITY] = sAdaptabilityDescription, - [ABILITY_SKILL_LINK] = sSkillLinkDescription, - [ABILITY_HYDRATION] = sHydrationDescription, - [ABILITY_SOLAR_POWER] = sSolarPowerDescription, - [ABILITY_QUICK_FEET] = sQuickFeetDescription, - [ABILITY_NORMALIZE] = sNormalizeDescription, - [ABILITY_SNIPER] = sSniperDescription, - [ABILITY_MAGIC_GUARD] = sMagicGuardDescription, - [ABILITY_NO_GUARD] = sNoGuardDescription, - [ABILITY_STALL] = sStallDescription, - [ABILITY_TECHNICIAN] = sTechnicianDescription, - [ABILITY_LEAF_GUARD] = sLeafGuardDescription, - [ABILITY_KLUTZ] = sKlutzDescription, - [ABILITY_MOLD_BREAKER] = sMoldBreakerDescription, - [ABILITY_SUPER_LUCK] = sSuperLuckDescription, - [ABILITY_AFTERMATH] = sAftermathDescription, - [ABILITY_ANTICIPATION] = sAnticipationDescription, - [ABILITY_FOREWARN] = sForewarnDescription, - [ABILITY_UNAWARE] = sUnawareDescription, - [ABILITY_TINTED_LENS] = sTintedLensDescription, - [ABILITY_FILTER] = sFilterDescription, - [ABILITY_SLOW_START] = sSlowStartDescription, - [ABILITY_SCRAPPY] = sScrappyDescription, - [ABILITY_STORM_DRAIN] = sStormDrainDescription, - [ABILITY_ICE_BODY] = sIceBodyDescription, - [ABILITY_SOLID_ROCK] = sFilterDescription, - [ABILITY_SNOW_WARNING] = sSnowWarningDescription, - [ABILITY_HONEY_GATHER] = sHoneyGatherDescription, - [ABILITY_FRISK] = sFriskDescription, - [ABILITY_RECKLESS] = sRecklessDescription, - [ABILITY_MULTITYPE] = sMultitypeDescription, - [ABILITY_FLOWER_GIFT] = sFlowerGiftDescription, - [ABILITY_BAD_DREAMS] = sBadDreamsDescription, - [ABILITY_PICKPOCKET] = sPickpocketDescription, - [ABILITY_SHEER_FORCE] = sSheerForceDescription, - [ABILITY_CONTRARY] = sContraryDescription, - [ABILITY_UNNERVE] = sUnnerveDescription, - [ABILITY_DEFIANT] = sDefiantDescription, - [ABILITY_DEFEATIST] = sDefeatistDescription, - [ABILITY_CURSED_BODY] = sCursedBodyDescription, - [ABILITY_HEALER] = sHealerDescription, - [ABILITY_FRIEND_GUARD] = sFriendGuardDescription, - [ABILITY_WEAK_ARMOR] = sWeakArmorDescription, - [ABILITY_HEAVY_METAL] = sHeavyMetalDescription, - [ABILITY_LIGHT_METAL] = sLightMetalDescription, - [ABILITY_MULTISCALE] = sMultiscaleDescription, - [ABILITY_TOXIC_BOOST] = sToxicBoostDescription, - [ABILITY_FLARE_BOOST] = sFlareBoostDescription, - [ABILITY_HARVEST] = sHarvestDescription, - [ABILITY_TELEPATHY] = sTelepathyDescription, - [ABILITY_MOODY] = sMoodyDescription, - [ABILITY_OVERCOAT] = sOvercoatDescription, - [ABILITY_POISON_TOUCH] = sPoisonPointDescription, - [ABILITY_REGENERATOR] = sNaturalCureDescription, - [ABILITY_BIG_PECKS] = sBigPecksDescription, - [ABILITY_SAND_RUSH] = sSandRushDescription, - [ABILITY_WONDER_SKIN] = sWonderSkinDescription, - [ABILITY_ANALYTIC] = sAnalyticDescription, - [ABILITY_ILLUSION] = sIllusionDescription, - [ABILITY_IMPOSTER] = sImposterDescription, - [ABILITY_INFILTRATOR] = sInfiltratorDescription, - [ABILITY_MUMMY] = sMummyDescription, - [ABILITY_MOXIE] = sMoxieDescription, - [ABILITY_JUSTIFIED] = sJustifiedDescription, - [ABILITY_RATTLED] = sRattledDescription, - [ABILITY_MAGIC_BOUNCE] = sMagicBounceDescription, - [ABILITY_SAP_SIPPER] = sSapSipperDescription, - [ABILITY_PRANKSTER] = sPranksterDescription, - [ABILITY_SAND_FORCE] = sSandForceDescription, - [ABILITY_IRON_BARBS] = sRoughSkinDescription, - [ABILITY_ZEN_MODE] = sZenModeDescription, - [ABILITY_VICTORY_STAR] = sVictoryStarDescription, - [ABILITY_TURBOBLAZE] = sMoldBreakerDescription, - [ABILITY_TERAVOLT] = sMoldBreakerDescription, - [ABILITY_AROMA_VEIL] = sAromaVeilDescription, - [ABILITY_FLOWER_VEIL] = sFlowerVeilDescription, - [ABILITY_CHEEK_POUCH] = sCheekPouchDescription, - [ABILITY_PROTEAN] = sProteanDescription, - [ABILITY_FUR_COAT] = sFurCoatDescription, - [ABILITY_MAGICIAN] = sPickpocketDescription, - [ABILITY_BULLETPROOF] = sBulletproofDescription, - [ABILITY_COMPETITIVE] = sCompetitiveDescription, - [ABILITY_STRONG_JAW] = sStrongJawDescription, - [ABILITY_REFRIGERATE] = sRefrigerateDescription, - [ABILITY_SWEET_VEIL] = sSweetVeilDescription, - [ABILITY_STANCE_CHANGE] = sStanceChangeDescription, - [ABILITY_GALE_WINGS] = sGaleWingsDescription, - [ABILITY_MEGA_LAUNCHER] = sMegaLauncherDescription, - [ABILITY_GRASS_PELT] = sGrassPeltDescription, - [ABILITY_SYMBIOSIS] = sSymbiosisDescription, - [ABILITY_TOUGH_CLAWS] = sToughClawsDescription, - [ABILITY_PIXILATE] = sPixilateDescription, - [ABILITY_GOOEY] = sGooeyDescription, - [ABILITY_AERILATE] = sAerilateDescription, - [ABILITY_PARENTAL_BOND] = sParentalBondDescription, - [ABILITY_DARK_AURA] = sDarkAuraDescription, - [ABILITY_FAIRY_AURA] = sFairyAuraDescription, - [ABILITY_AURA_BREAK] = sAuraBreakDescription, - [ABILITY_PRIMORDIAL_SEA] = sPrimordialSeaDescription, - [ABILITY_DESOLATE_LAND] = sDesolateLandDescription, - [ABILITY_DELTA_STREAM] = sDeltaStreamDescription, - [ABILITY_STAMINA] = sStaminaDescription, - [ABILITY_WIMP_OUT] = sWimpOutDescription, - [ABILITY_EMERGENCY_EXIT] = sWimpOutDescription, - [ABILITY_WATER_COMPACTION] = sWaterCompactionDescription, - [ABILITY_MERCILESS] = sMercilessDescription, - [ABILITY_SHIELDS_DOWN] = sShieldsDownDescription, - [ABILITY_STAKEOUT] = sStakeoutDescription, - [ABILITY_WATER_BUBBLE] = sWaterBubbleDescription, - [ABILITY_STEELWORKER] = sSteelworkerDescription, - [ABILITY_BERSERK] = sBerserkDescription, - [ABILITY_SLUSH_RUSH] = sSlushRushDescription, - [ABILITY_LONG_REACH] = sLongReachDescription, - [ABILITY_LIQUID_VOICE] = sLiquidVoiceDescription, - [ABILITY_TRIAGE] = sTriageDescription, - [ABILITY_GALVANIZE] = sGalvanizeDescription, - [ABILITY_SURGE_SURFER] = sSurgeSurferDescription, - [ABILITY_SCHOOLING] = sSchoolingDescription, - [ABILITY_DISGUISE] = sDisguiseDescription, - [ABILITY_BATTLE_BOND] = sBattleBondDescription, - [ABILITY_POWER_CONSTRUCT] = sPowerConstructDescription, - [ABILITY_CORROSION] = sCorrosionDescription, - [ABILITY_COMATOSE] = sComatoseDescription, - [ABILITY_QUEENLY_MAJESTY] = sQueenlyMajestyDescription, - [ABILITY_INNARDS_OUT] = sInnardsOutDescription, - [ABILITY_DANCER] = sDancerDescription, - [ABILITY_BATTERY] = sBatteryDescription, - [ABILITY_FLUFFY] = sFluffyDescription, - [ABILITY_DAZZLING] = sQueenlyMajestyDescription, - [ABILITY_SOUL_HEART] = sSoulHeartDescription, - [ABILITY_TANGLING_HAIR] = sGooeyDescription, - [ABILITY_RECEIVER] = sReceiverDescription, - [ABILITY_POWER_OF_ALCHEMY] = sReceiverDescription, - [ABILITY_BEAST_BOOST] = sBeastBoostDescription, - [ABILITY_RKS_SYSTEM] = sRKSSystemDescription, - [ABILITY_ELECTRIC_SURGE] = sElectricSurgeDescription, - [ABILITY_PSYCHIC_SURGE] = sPsychicSurgeDescription, - [ABILITY_MISTY_SURGE] = sMistySurgeDescription, - [ABILITY_GRASSY_SURGE] = sGrassySurgeDescription, - [ABILITY_FULL_METAL_BODY] = sFullMetalBodyDescription, - [ABILITY_SHADOW_SHIELD] = sMultiscaleDescription, - [ABILITY_PRISM_ARMOR] = sFilterDescription, - [ABILITY_NEUROFORCE] = sNeuroforceDescription, - [ABILITY_INTREPID_SWORD] = sIntrepidSwordDescription, - [ABILITY_DAUNTLESS_SHIELD] = sDauntlessShieldDescription, - [ABILITY_LIBERO] = sLiberoDescription, - [ABILITY_BALL_FETCH] = sBallFetchDescription, - [ABILITY_COTTON_DOWN] = sCottonDownDescription, - [ABILITY_PROPELLER_TAIL] = sPropellerTailDescription, - [ABILITY_MIRROR_ARMOR] = sMirrorArmorDescription, - [ABILITY_GULP_MISSILE] = sGulpMissileDescription, - [ABILITY_STALWART] = sStalwartDescription, - [ABILITY_STEAM_ENGINE] = sSteamEngineDescription, - [ABILITY_PUNK_ROCK] = sPunkRockDescription, - [ABILITY_SAND_SPIT] = sSandSpitDescription, - [ABILITY_ICE_SCALES] = sIceScalesDescription, - [ABILITY_RIPEN] = sRipenDescription, - [ABILITY_ICE_FACE] = sIceFaceDescription, - [ABILITY_POWER_SPOT] = sPowerSpotDescription, - [ABILITY_MIMICRY] = sMimicryDescription, - [ABILITY_SCREEN_CLEANER] = sScreenCleanerDescription, - [ABILITY_STEELY_SPIRIT] = sSteelySpiritDescription, - [ABILITY_PERISH_BODY] = sPerishBodyDescription, - [ABILITY_WANDERING_SPIRIT] = sWanderingSpiritDescription, - [ABILITY_GORILLA_TACTICS] = sGorillaTacticsDescription, - [ABILITY_NEUTRALIZING_GAS] = sNeutralizingGasDescription, - [ABILITY_PASTEL_VEIL] = sPastelVeilDescription, - [ABILITY_HUNGER_SWITCH] = sHungerSwitchDescription, - [ABILITY_QUICK_DRAW] = sQuickDrawDescription, - [ABILITY_UNSEEN_FIST] = sUnseenFistDescription, - [ABILITY_CURIOUS_MEDICINE] = sCuriousMedicineDescription, - [ABILITY_TRANSISTOR] = sTransistorDescription, - [ABILITY_DRAGONS_MAW] = sDragonsMawDescription, - [ABILITY_CHILLING_NEIGH] = sChillingNeighDescription, - [ABILITY_GRIM_NEIGH] = sGrimNeighDescription, - [ABILITY_AS_ONE_ICE_RIDER] = sAsOneIceRiderDescription, - [ABILITY_AS_ONE_SHADOW_RIDER] = sAsOneShadowRiderDescription, - [ABILITY_LINGERING_AROMA] = sLingeringAromaDescription, - [ABILITY_SEED_SOWER] = sSeedSowerDescription, - [ABILITY_THERMAL_EXCHANGE] = sThermalExchangeDescription, - [ABILITY_ANGER_SHELL] = sAngerShellDescription, - [ABILITY_PURIFYING_SALT] = sPurifyingSaltDescription, - [ABILITY_WELL_BAKED_BODY] = sWellBakedBodyDescription, - [ABILITY_WIND_RIDER] = sWindRiderDescription, - [ABILITY_GUARD_DOG] = sGuardDogDescription, - [ABILITY_ROCKY_PAYLOAD] = sRockyPayloadDescription, - [ABILITY_WIND_POWER] = sWindPowerDescription, - [ABILITY_ZERO_TO_HERO] = sZeroToHeroDescription, - [ABILITY_COMMANDER] = sCommanderDescription, - [ABILITY_ELECTROMORPHOSIS] = sElectromorphosisDescription, - [ABILITY_PROTOSYNTHESIS] = sProtosynthesisDescription, - [ABILITY_QUARK_DRIVE] = sQuarkDriveDescription, - [ABILITY_GOOD_AS_GOLD] = sGoodAsGoldDescription, - [ABILITY_VESSEL_OF_RUIN] = sVesselOfRuinDescription, - [ABILITY_SWORD_OF_RUIN] = sSwordOfRuinDescription, - [ABILITY_TABLETS_OF_RUIN] = sTabletsOfRuinDescription, - [ABILITY_BEADS_OF_RUIN] = sBeadsOfRuinDescription, - [ABILITY_ORICHALCUM_PULSE] = sOrichalcumPulseDescription, - [ABILITY_HADRON_ENGINE] = sHadronEngineDescription, - [ABILITY_OPPORTUNIST] = sOpportunistDescription, - [ABILITY_CUD_CHEW] = sCudChewDescription, - [ABILITY_SHARPNESS] = sSharpnessDescription, - [ABILITY_SUPREME_OVERLORD] = sSupremeOverlordDescription, - [ABILITY_COSTAR] = sCostarDescription, - [ABILITY_TOXIC_DEBRIS] = sToxicDebrisDescription, - [ABILITY_ARMOR_TAIL] = sArmorTailDescription, - [ABILITY_EARTH_EATER] = sEarthEaterDescription, - [ABILITY_MYCELIUM_MIGHT] = sMyceliumMightDescription, - [ABILITY_HOSPITALITY] = sHospitalityDescription, - [ABILITY_MINDS_EYE] = sMindsEyeDescription, - [ABILITY_EMBODY_ASPECT_TEAL] = sEmbodyAspectTealDescription, - [ABILITY_EMBODY_ASPECT_HEARTHFLAME] = sEmbodyAspectHearthflameDescription, - [ABILITY_EMBODY_ASPECT_WELLSPRING] = sEmbodyAspectWellspringDescription, - [ABILITY_EMBODY_ASPECT_CORNERSTONE] = sEmbodyAspectCornerstoneDescription, - [ABILITY_TOXIC_CHAIN] = sToxicChainDescription, - [ABILITY_SUPERSWEET_SYRUP] = sSupersweetSyrupDescription, -}; diff --git a/src/data/text/nature_names.h b/src/data/text/nature_names.h deleted file mode 100644 index 5cf2d8024ca3..000000000000 --- a/src/data/text/nature_names.h +++ /dev/null @@ -1,54 +0,0 @@ -static const u8 sHardyNatureName[] = _("Hardy"); -static const u8 sLonelyNatureName[] = _("Lonely"); -static const u8 sBraveNatureName[] = _("Brave"); -static const u8 sAdamantNatureName[] = _("Adamant"); -static const u8 sNaughtyNatureName[] = _("Naughty"); -static const u8 sBoldNatureName[] = _("Bold"); -static const u8 sDocileNatureName[] = _("Docile"); -static const u8 sRelaxedNatureName[] = _("Relaxed"); -static const u8 sImpishNatureName[] = _("Impish"); -static const u8 sLaxNatureName[] = _("Lax"); -static const u8 sTimidNatureName[] = _("Timid"); -static const u8 sHastyNatureName[] = _("Hasty"); -static const u8 sSeriousNatureName[] = _("Serious"); -static const u8 sJollyNatureName[] = _("Jolly"); -static const u8 sNaiveNatureName[] = _("Naive"); -static const u8 sModestNatureName[] = _("Modest"); -static const u8 sMildNatureName[] = _("Mild"); -static const u8 sQuietNatureName[] = _("Quiet"); -static const u8 sBashfulNatureName[] = _("Bashful"); -static const u8 sRashNatureName[] = _("Rash"); -static const u8 sCalmNatureName[] = _("Calm"); -static const u8 sGentleNatureName[] = _("Gentle"); -static const u8 sSassyNatureName[] = _("Sassy"); -static const u8 sCarefulNatureName[] = _("Careful"); -static const u8 sQuirkyNatureName[] = _("Quirky"); - -const u8 *const gNatureNamePointers[NUM_NATURES] = -{ - [NATURE_HARDY] = sHardyNatureName, - [NATURE_LONELY] = sLonelyNatureName, - [NATURE_BRAVE] = sBraveNatureName, - [NATURE_ADAMANT] = sAdamantNatureName, - [NATURE_NAUGHTY] = sNaughtyNatureName, - [NATURE_BOLD] = sBoldNatureName, - [NATURE_DOCILE] = sDocileNatureName, - [NATURE_RELAXED] = sRelaxedNatureName, - [NATURE_IMPISH] = sImpishNatureName, - [NATURE_LAX] = sLaxNatureName, - [NATURE_TIMID] = sTimidNatureName, - [NATURE_HASTY] = sHastyNatureName, - [NATURE_SERIOUS] = sSeriousNatureName, - [NATURE_JOLLY] = sJollyNatureName, - [NATURE_NAIVE] = sNaiveNatureName, - [NATURE_MODEST] = sModestNatureName, - [NATURE_MILD] = sMildNatureName, - [NATURE_QUIET] = sQuietNatureName, - [NATURE_BASHFUL] = sBashfulNatureName, - [NATURE_RASH] = sRashNatureName, - [NATURE_CALM] = sCalmNatureName, - [NATURE_GENTLE] = sGentleNatureName, - [NATURE_SASSY] = sSassyNatureName, - [NATURE_CAREFUL] = sCarefulNatureName, - [NATURE_QUIRKY] = sQuirkyNatureName, -}; diff --git a/src/data/text/trainer_class_names.h b/src/data/text/trainer_class_names.h deleted file mode 100644 index e46acd33822e..000000000000 --- a/src/data/text/trainer_class_names.h +++ /dev/null @@ -1,68 +0,0 @@ -const u8 gTrainerClassNames[][13] = { - [TRAINER_CLASS_PKMN_TRAINER_1] = _("{PKMN} Trainer"), - [TRAINER_CLASS_PKMN_TRAINER_2] = _("{PKMN} Trainer"), - [TRAINER_CLASS_HIKER] = _("Hiker"), - [TRAINER_CLASS_TEAM_AQUA] = _("Team Aqua"), - [TRAINER_CLASS_PKMN_BREEDER] = _("{PKMN} Breeder"), - [TRAINER_CLASS_COOLTRAINER] = _("Cooltrainer"), - [TRAINER_CLASS_BIRD_KEEPER] = _("Bird Keeper"), - [TRAINER_CLASS_COLLECTOR] = _("Collector"), - [TRAINER_CLASS_SWIMMER_M] = _("Swimmer♂"), - [TRAINER_CLASS_TEAM_MAGMA] = _("Team Magma"), - [TRAINER_CLASS_EXPERT] = _("Expert"), - [TRAINER_CLASS_AQUA_ADMIN] = _("Aqua Admin"), - [TRAINER_CLASS_BLACK_BELT] = _("Black Belt"), - [TRAINER_CLASS_AQUA_LEADER] = _("Aqua Leader"), - [TRAINER_CLASS_HEX_MANIAC] = _("Hex Maniac"), - [TRAINER_CLASS_AROMA_LADY] = _("Aroma Lady"), - [TRAINER_CLASS_RUIN_MANIAC] = _("Ruin Maniac"), - [TRAINER_CLASS_INTERVIEWER] = _("Interviewer"), - [TRAINER_CLASS_TUBER_F] = _("Tuber"), - [TRAINER_CLASS_TUBER_M] = _("Tuber"), - [TRAINER_CLASS_LADY] = _("Lady"), - [TRAINER_CLASS_BEAUTY] = _("Beauty"), - [TRAINER_CLASS_RICH_BOY] = _("Rich Boy"), - [TRAINER_CLASS_POKEMANIAC] = _("Pokémaniac"), - [TRAINER_CLASS_GUITARIST] = _("Guitarist"), - [TRAINER_CLASS_KINDLER] = _("Kindler"), - [TRAINER_CLASS_CAMPER] = _("Camper"), - [TRAINER_CLASS_PICNICKER] = _("Picnicker"), - [TRAINER_CLASS_BUG_MANIAC] = _("Bug Maniac"), - [TRAINER_CLASS_PSYCHIC] = _("Psychic"), - [TRAINER_CLASS_GENTLEMAN] = _("Gentleman"), - [TRAINER_CLASS_ELITE_FOUR] = _("Elite Four"), - [TRAINER_CLASS_LEADER] = _("Leader"), - [TRAINER_CLASS_SCHOOL_KID] = _("School Kid"), - [TRAINER_CLASS_SR_AND_JR] = _("Sr. and Jr."), - [TRAINER_CLASS_WINSTRATE] = _("Winstrate"), - [TRAINER_CLASS_POKEFAN] = _("Pokéfan"), - [TRAINER_CLASS_YOUNGSTER] = _("Youngster"), - [TRAINER_CLASS_CHAMPION] = _("Champion"), - [TRAINER_CLASS_FISHERMAN] = _("Fisherman"), - [TRAINER_CLASS_TRIATHLETE] = _("Triathlete"), - [TRAINER_CLASS_DRAGON_TAMER] = _("Dragon Tamer"), - [TRAINER_CLASS_NINJA_BOY] = _("Ninja Boy"), - [TRAINER_CLASS_BATTLE_GIRL] = _("Battle Girl"), - [TRAINER_CLASS_PARASOL_LADY] = _("Parasol Lady"), - [TRAINER_CLASS_SWIMMER_F] = _("Swimmer♀"), - [TRAINER_CLASS_TWINS] = _("Twins"), - [TRAINER_CLASS_SAILOR] = _("Sailor"), - [TRAINER_CLASS_COOLTRAINER_2] = _("Cooltrainer"), - [TRAINER_CLASS_MAGMA_ADMIN] = _("Magma Admin"), - [TRAINER_CLASS_RIVAL] = _("{PKMN} Trainer"), - [TRAINER_CLASS_BUG_CATCHER] = _("Bug Catcher"), - [TRAINER_CLASS_PKMN_RANGER] = _("{PKMN} Ranger"), - [TRAINER_CLASS_MAGMA_LEADER] = _("Magma Leader"), - [TRAINER_CLASS_LASS] = _("Lass"), - [TRAINER_CLASS_YOUNG_COUPLE] = _("Young Couple"), - [TRAINER_CLASS_OLD_COUPLE] = _("Old Couple"), - [TRAINER_CLASS_SIS_AND_BRO] = _("Sis and Bro"), - [TRAINER_CLASS_SALON_MAIDEN] = _("Salon Maiden"), - [TRAINER_CLASS_DOME_ACE] = _("Dome Ace"), - [TRAINER_CLASS_PALACE_MAVEN] = _("Palace Maven"), - [TRAINER_CLASS_ARENA_TYCOON] = _("Arena Tycoon"), - [TRAINER_CLASS_FACTORY_HEAD] = _("Factory Head"), - [TRAINER_CLASS_PIKE_QUEEN] = _("Pike Queen"), - [TRAINER_CLASS_PYRAMID_KING] = _("Pyramid King"), - [TRAINER_CLASS_RS_PROTAG] = _("{PKMN} Trainer"), -}; diff --git a/src/data/trainer_graphics/back_pic_anims.h b/src/data/trainer_graphics/back_pic_anims.h deleted file mode 100644 index fa55ed7197a6..000000000000 --- a/src/data/trainer_graphics/back_pic_anims.h +++ /dev/null @@ -1,157 +0,0 @@ -static const union AnimCmd sAnimCmd_Brendan_1[] = -{ - ANIMCMD_FRAME(0, 24), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(3, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_May_Steven_1[] = -{ - ANIMCMD_FRAME(0, 24), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(3, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_Point_HGSS[] = -{ - ANIMCMD_FRAME(3, 9), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(3, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_Wally_1[] = -{ - ANIMCMD_FRAME(0, 24), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(3, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_Red_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(2, 6), - ANIMCMD_FRAME(3, 6), - ANIMCMD_FRAME(4, 24), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_Leaf_1[] = -{ - ANIMCMD_FRAME(1, 20), - ANIMCMD_FRAME(2, 6), - ANIMCMD_FRAME(3, 6), - ANIMCMD_FRAME(4, 24), - ANIMCMD_FRAME(0, 1), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_Point_HGSS_Red_Leaf[] = -{ - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(3, 24), - ANIMCMD_FRAME(3, 24), - ANIMCMD_FRAME(0, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_RubySapphireBrendan_1[] = -{ - ANIMCMD_FRAME(0, 24), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(3, 50), - ANIMCMD_END, -}; - -static const union AnimCmd sAnimCmd_RubySapphireMay_1[] = -{ - ANIMCMD_FRAME(0, 24), - ANIMCMD_FRAME(1, 9), - ANIMCMD_FRAME(2, 24), - ANIMCMD_FRAME(0, 9), - ANIMCMD_FRAME(3, 50), - ANIMCMD_END, -}; - -static const union AnimCmd *const sBackAnims_Brendan[] = -{ - sAnim_GeneralFrame3, - sAnimCmd_Brendan_1, - sAnimCmd_Point_HGSS, -}; - -static const union AnimCmd *const sBackAnims_May[] = -{ - sAnim_GeneralFrame3, - sAnimCmd_May_Steven_1, - sAnimCmd_Point_HGSS, -}; - -static const union AnimCmd *const sBackAnims_Red[] = -{ - sAnim_GeneralFrame0, - sAnimCmd_Red_1, - sAnimCmd_Point_HGSS_Red_Leaf, -}; - -static const union AnimCmd *const sBackAnims_Leaf[] = -{ - sAnim_GeneralFrame0, - sAnimCmd_Leaf_1, - sAnimCmd_Point_HGSS_Red_Leaf, -}; - -static const union AnimCmd *const sBackAnims_RubySapphireBrendan[] = -{ - sAnim_GeneralFrame3, - sAnimCmd_RubySapphireBrendan_1, - sAnimCmd_Point_HGSS, -}; - -static const union AnimCmd *const sBackAnims_RubySapphireMay[] = -{ - sAnim_GeneralFrame3, - sAnimCmd_RubySapphireMay_1, - sAnimCmd_Point_HGSS, -}; - -static const union AnimCmd *const sBackAnims_Wally[] = -{ - sAnim_GeneralFrame3, - sAnimCmd_Wally_1, - sAnimCmd_Point_HGSS, -}; - -static const union AnimCmd *const sBackAnims_Steven[] = -{ - sAnim_GeneralFrame3, - sAnimCmd_May_Steven_1, - sAnimCmd_Point_HGSS, -}; - -const union AnimCmd *const *const gTrainerBackAnimsPtrTable[] = -{ - [TRAINER_BACK_PIC_BRENDAN] = sBackAnims_Brendan, - [TRAINER_BACK_PIC_MAY] = sBackAnims_May, - [TRAINER_BACK_PIC_RED] = sBackAnims_Red, - [TRAINER_BACK_PIC_LEAF] = sBackAnims_Leaf, - [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = sBackAnims_RubySapphireBrendan, - [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = sBackAnims_RubySapphireMay, - [TRAINER_BACK_PIC_WALLY] = sBackAnims_Wally, - [TRAINER_BACK_PIC_STEVEN] = sBackAnims_Steven, -}; diff --git a/src/data/trainer_graphics/back_pic_tables.h b/src/data/trainer_graphics/back_pic_tables.h deleted file mode 100644 index 524d48d480ef..000000000000 --- a/src/data/trainer_graphics/back_pic_tables.h +++ /dev/null @@ -1,72 +0,0 @@ -const struct MonCoords gTrainerBackPicCoords[] = -{ - [TRAINER_BACK_PIC_BRENDAN] = {.size = 8, .y_offset = 4}, - [TRAINER_BACK_PIC_MAY] = {.size = 8, .y_offset = 4}, - [TRAINER_BACK_PIC_RED] = {.size = 8, .y_offset = 5}, - [TRAINER_BACK_PIC_LEAF] = {.size = 8, .y_offset = 5}, - [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = {.size = 8, .y_offset = 4}, - [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = {.size = 8, .y_offset = 4}, - [TRAINER_BACK_PIC_WALLY] = {.size = 8, .y_offset = 4}, - [TRAINER_BACK_PIC_STEVEN] = {.size = 8, .y_offset = 4}, -}; - -// this table goes functionally unused, since none of these pics are compressed -// and the place they would get extracted to gets overwritten later anyway -// the casts are so they'll play nice with the strict struct definition -const struct CompressedSpriteSheet gTrainerBackPicTable[] = -{ - [TRAINER_BACK_PIC_BRENDAN] = { - .data = (const u32 *)gTrainerBackPic_Brendan, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Brendan), - .tag = TRAINER_BACK_PIC_BRENDAN, - }, - [TRAINER_BACK_PIC_MAY] = { - .data = (const u32 *)gTrainerBackPic_May, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_May), - .tag = TRAINER_BACK_PIC_MAY, - }, - [TRAINER_BACK_PIC_RED] = { - .data = (const u32 *)gTrainerBackPic_Red, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Red), - .tag = TRAINER_BACK_PIC_RED, - }, - [TRAINER_BACK_PIC_LEAF] = { - .data = (const u32 *)gTrainerBackPic_Leaf, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Leaf), - .tag = TRAINER_BACK_PIC_LEAF, - }, - [TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN] = { - .data = (const u32 *)gTrainerBackPic_RubySapphireBrendan, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_RubySapphireBrendan), - .tag = TRAINER_BACK_PIC_RUBY_SAPPHIRE_BRENDAN, - }, - [TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY] = { - .data = (const u32 *)gTrainerBackPic_RubySapphireMay, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_RubySapphireMay), - .tag = TRAINER_BACK_PIC_RUBY_SAPPHIRE_MAY, - }, - [TRAINER_BACK_PIC_WALLY] = { - .data = (const u32 *)gTrainerBackPic_Wally, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Wally), - .tag = TRAINER_BACK_PIC_WALLY, - }, - [TRAINER_BACK_PIC_STEVEN] = { - .data = (const u32 *)gTrainerBackPic_Steven, - .size = TRAINER_PIC_SIZE * ARRAY_COUNT(gTrainerBackPicTable_Steven), - .tag = TRAINER_BACK_PIC_STEVEN, - }, -}; - -#define TRAINER_BACK_PAL(trainerPic, pal) [TRAINER_BACK_PIC_##trainerPic] = {pal, TRAINER_BACK_PIC_##trainerPic} - -const struct CompressedSpritePalette gTrainerBackPicPaletteTable[] = -{ - TRAINER_BACK_PAL(BRENDAN, gTrainerPalette_Brendan), - TRAINER_BACK_PAL(MAY, gTrainerPalette_May), - TRAINER_BACK_PAL(RED, gTrainerBackPicPalette_Red), - TRAINER_BACK_PAL(LEAF, gTrainerBackPicPalette_Leaf), - TRAINER_BACK_PAL(RUBY_SAPPHIRE_BRENDAN, gTrainerPalette_RubySapphireBrendan), - TRAINER_BACK_PAL(RUBY_SAPPHIRE_MAY, gTrainerPalette_RubySapphireMay), - TRAINER_BACK_PAL(WALLY, gTrainerPalette_Wally), - TRAINER_BACK_PAL(STEVEN, gTrainerPalette_Steven), -}; diff --git a/src/data/trainer_graphics/front_pic_anims.h b/src/data/trainer_graphics/front_pic_anims.h deleted file mode 100644 index f01394532aea..000000000000 --- a/src/data/trainer_graphics/front_pic_anims.h +++ /dev/null @@ -1,468 +0,0 @@ -static const union AnimCmd *const sAnims_Hiker[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_AquaGruntM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PokemonBreederF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_CoolTrainerM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_BirdKeeper[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Collector[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_AquaGruntF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SwimmerM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_MagmaGruntM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_ExpertM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_AquaAdminM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_BlackBelt[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_AquaAdminF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_AquaLeaderArchie[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_HexManiac[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_AromaLady[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_RuinManiac[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Interviewer[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_TuberF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_TuberM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_CoolTrainerF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Lady[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Beauty[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_RichBoy[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_ExpertF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Pokemaniac[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_MagmaGruntF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Guitarist[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Kindler[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Camper[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Picnicker[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_BugManiac[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PokemonBreederM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PsychicM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PsychicF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Gentleman[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_EliteFourSidney[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_EliteFourPhoebe[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_EliteFourGlacia[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_EliteFourDrake[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderRoxanne[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderBrawly[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderWattson[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderFlannery[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderNorman[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderWinona[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderTateAndLiza[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_LeaderJuan[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SchoolKidM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SchoolKidF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SrAndJr[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PokefanM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PokefanF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Youngster[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_ChampionWallace[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Fisherman[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_CyclingTriathleteM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_CyclingTriathleteF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_RunningTriathleteM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_RunningTriathleteF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SwimmingTriathleteM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SwimmingTriathleteF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_DragonTamer[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_NinjaBoy[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_BattleGirl[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_ParasolLady[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SwimmerF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Twins[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Sailor[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_MagmaAdmin[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Wally[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Brendan[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_May[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_BugCatcher[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PokemonRangerM[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PokemonRangerF[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_MagmaLeaderMaxie[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Lass[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_YoungCouple[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_OldCouple[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SisAndBro[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Steven[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_SalonMaidenAnabel[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_DomeAceTucker[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PalaceMavenSpenser[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_ArenaTycoonGreta[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_FactoryHeadNoland[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PikeQueenLucy[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_PyramidKingBrandon[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Red[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_Leaf[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_RubySapphireBrendan[] ={ - sAnim_GeneralFrame0, -}; - -static const union AnimCmd *const sAnims_RubySapphireMay[] ={ - sAnim_GeneralFrame0, -}; - -const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[] = -{ - [TRAINER_PIC_HIKER] = sAnims_Hiker, - [TRAINER_PIC_AQUA_GRUNT_M] = sAnims_AquaGruntM, - [TRAINER_PIC_POKEMON_BREEDER_F] = sAnims_PokemonBreederF, - [TRAINER_PIC_COOLTRAINER_M] = sAnims_CoolTrainerM, - [TRAINER_PIC_BIRD_KEEPER] = sAnims_BirdKeeper, - [TRAINER_PIC_COLLECTOR] = sAnims_Collector, - [TRAINER_PIC_AQUA_GRUNT_F] = sAnims_AquaGruntF, - [TRAINER_PIC_SWIMMER_M] = sAnims_SwimmerM, - [TRAINER_PIC_MAGMA_GRUNT_M] = sAnims_MagmaGruntM, - [TRAINER_PIC_EXPERT_M] = sAnims_ExpertM, - [TRAINER_PIC_AQUA_ADMIN_M] = sAnims_AquaAdminM, - [TRAINER_PIC_BLACK_BELT] = sAnims_BlackBelt, - [TRAINER_PIC_AQUA_ADMIN_F] = sAnims_AquaAdminF, - [TRAINER_PIC_AQUA_LEADER_ARCHIE] = sAnims_AquaLeaderArchie, - [TRAINER_PIC_HEX_MANIAC] = sAnims_HexManiac, - [TRAINER_PIC_AROMA_LADY] = sAnims_AromaLady, - [TRAINER_PIC_RUIN_MANIAC] = sAnims_RuinManiac, - [TRAINER_PIC_INTERVIEWER] = sAnims_Interviewer, - [TRAINER_PIC_TUBER_F] = sAnims_TuberF, - [TRAINER_PIC_TUBER_M] = sAnims_TuberM, - [TRAINER_PIC_COOLTRAINER_F] = sAnims_CoolTrainerF, - [TRAINER_PIC_LADY] = sAnims_Lady, - [TRAINER_PIC_BEAUTY] = sAnims_Beauty, - [TRAINER_PIC_RICH_BOY] = sAnims_RichBoy, - [TRAINER_PIC_EXPERT_F] = sAnims_ExpertF, - [TRAINER_PIC_POKEMANIAC] = sAnims_Pokemaniac, - [TRAINER_PIC_MAGMA_GRUNT_F] = sAnims_MagmaGruntF, - [TRAINER_PIC_GUITARIST] = sAnims_Guitarist, - [TRAINER_PIC_KINDLER] = sAnims_Kindler, - [TRAINER_PIC_CAMPER] = sAnims_Camper, - [TRAINER_PIC_PICNICKER] = sAnims_Picnicker, - [TRAINER_PIC_BUG_MANIAC] = sAnims_BugManiac, - [TRAINER_PIC_POKEMON_BREEDER_M] = sAnims_PokemonBreederM, - [TRAINER_PIC_PSYCHIC_M] = sAnims_PsychicM, - [TRAINER_PIC_PSYCHIC_F] = sAnims_PsychicF, - [TRAINER_PIC_GENTLEMAN] = sAnims_Gentleman, - [TRAINER_PIC_ELITE_FOUR_SIDNEY] = sAnims_EliteFourSidney, - [TRAINER_PIC_ELITE_FOUR_PHOEBE] = sAnims_EliteFourPhoebe, - [TRAINER_PIC_ELITE_FOUR_GLACIA] = sAnims_EliteFourGlacia, - [TRAINER_PIC_ELITE_FOUR_DRAKE] = sAnims_EliteFourDrake, - [TRAINER_PIC_LEADER_ROXANNE] = sAnims_LeaderRoxanne, - [TRAINER_PIC_LEADER_BRAWLY] = sAnims_LeaderBrawly, - [TRAINER_PIC_LEADER_WATTSON] = sAnims_LeaderWattson, - [TRAINER_PIC_LEADER_FLANNERY] = sAnims_LeaderFlannery, - [TRAINER_PIC_LEADER_NORMAN] = sAnims_LeaderNorman, - [TRAINER_PIC_LEADER_WINONA] = sAnims_LeaderWinona, - [TRAINER_PIC_LEADER_TATE_AND_LIZA] = sAnims_LeaderTateAndLiza, - [TRAINER_PIC_LEADER_JUAN] = sAnims_LeaderJuan, - [TRAINER_PIC_SCHOOL_KID_M] = sAnims_SchoolKidM, - [TRAINER_PIC_SCHOOL_KID_F] = sAnims_SchoolKidF, - [TRAINER_PIC_SR_AND_JR] = sAnims_SrAndJr, - [TRAINER_PIC_POKEFAN_M] = sAnims_PokefanM, - [TRAINER_PIC_POKEFAN_F] = sAnims_PokefanF, - [TRAINER_PIC_YOUNGSTER] = sAnims_Youngster, - [TRAINER_PIC_CHAMPION_WALLACE] = sAnims_ChampionWallace, - [TRAINER_PIC_FISHERMAN] = sAnims_Fisherman, - [TRAINER_PIC_CYCLING_TRIATHLETE_M] = sAnims_CyclingTriathleteM, - [TRAINER_PIC_CYCLING_TRIATHLETE_F] = sAnims_CyclingTriathleteF, - [TRAINER_PIC_RUNNING_TRIATHLETE_M] = sAnims_RunningTriathleteM, - [TRAINER_PIC_RUNNING_TRIATHLETE_F] = sAnims_RunningTriathleteF, - [TRAINER_PIC_SWIMMING_TRIATHLETE_M] = sAnims_SwimmingTriathleteM, - [TRAINER_PIC_SWIMMING_TRIATHLETE_F] = sAnims_SwimmingTriathleteF, - [TRAINER_PIC_DRAGON_TAMER] = sAnims_DragonTamer, - [TRAINER_PIC_NINJA_BOY] = sAnims_NinjaBoy, - [TRAINER_PIC_BATTLE_GIRL] = sAnims_BattleGirl, - [TRAINER_PIC_PARASOL_LADY] = sAnims_ParasolLady, - [TRAINER_PIC_SWIMMER_F] = sAnims_SwimmerF, - [TRAINER_PIC_TWINS] = sAnims_Twins, - [TRAINER_PIC_SAILOR] = sAnims_Sailor, - [TRAINER_PIC_MAGMA_ADMIN] = sAnims_MagmaAdmin, - [TRAINER_PIC_WALLY] = sAnims_Wally, - [TRAINER_PIC_BRENDAN] = sAnims_Brendan, - [TRAINER_PIC_MAY] = sAnims_May, - [TRAINER_PIC_BUG_CATCHER] = sAnims_BugCatcher, - [TRAINER_PIC_POKEMON_RANGER_M] = sAnims_PokemonRangerM, - [TRAINER_PIC_POKEMON_RANGER_F] = sAnims_PokemonRangerF, - [TRAINER_PIC_MAGMA_LEADER_MAXIE] = sAnims_MagmaLeaderMaxie, - [TRAINER_PIC_LASS] = sAnims_Lass, - [TRAINER_PIC_YOUNG_COUPLE] = sAnims_YoungCouple, - [TRAINER_PIC_OLD_COUPLE] = sAnims_OldCouple, - [TRAINER_PIC_SIS_AND_BRO] = sAnims_SisAndBro, - [TRAINER_PIC_STEVEN] = sAnims_Steven, - [TRAINER_PIC_SALON_MAIDEN_ANABEL] = sAnims_SalonMaidenAnabel, - [TRAINER_PIC_DOME_ACE_TUCKER] = sAnims_DomeAceTucker, - [TRAINER_PIC_PALACE_MAVEN_SPENSER] = sAnims_PalaceMavenSpenser, - [TRAINER_PIC_ARENA_TYCOON_GRETA] = sAnims_ArenaTycoonGreta, - [TRAINER_PIC_FACTORY_HEAD_NOLAND] = sAnims_FactoryHeadNoland, - [TRAINER_PIC_PIKE_QUEEN_LUCY] = sAnims_PikeQueenLucy, - [TRAINER_PIC_PYRAMID_KING_BRANDON] = sAnims_PyramidKingBrandon, - [TRAINER_PIC_RED] = sAnims_Red, - [TRAINER_PIC_LEAF] = sAnims_Leaf, - [TRAINER_PIC_RS_BRENDAN] = sAnims_RubySapphireBrendan, - [TRAINER_PIC_RS_MAY] = sAnims_RubySapphireMay, -}; diff --git a/src/data/trainer_graphics/front_pic_tables.h b/src/data/trainer_graphics/front_pic_tables.h deleted file mode 100644 index dd4aa26de0c0..000000000000 --- a/src/data/trainer_graphics/front_pic_tables.h +++ /dev/null @@ -1,294 +0,0 @@ -const struct MonCoords gTrainerFrontPicCoords[] = -{ - [TRAINER_PIC_HIKER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_AQUA_GRUNT_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_POKEMON_BREEDER_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_COOLTRAINER_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BIRD_KEEPER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_COLLECTOR] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_AQUA_GRUNT_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SWIMMER_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_MAGMA_GRUNT_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_EXPERT_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_AQUA_ADMIN_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BLACK_BELT] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_AQUA_ADMIN_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_AQUA_LEADER_ARCHIE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_HEX_MANIAC] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_AROMA_LADY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RUIN_MANIAC] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_INTERVIEWER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_TUBER_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_TUBER_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_COOLTRAINER_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LADY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BEAUTY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RICH_BOY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_EXPERT_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_POKEMANIAC] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_MAGMA_GRUNT_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_GUITARIST] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_KINDLER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_CAMPER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_PICNICKER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BUG_MANIAC] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_POKEMON_BREEDER_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_PSYCHIC_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_PSYCHIC_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_GENTLEMAN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_ELITE_FOUR_SIDNEY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_ELITE_FOUR_PHOEBE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_ELITE_FOUR_GLACIA] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_ELITE_FOUR_DRAKE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_ROXANNE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_BRAWLY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_WATTSON] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_FLANNERY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_NORMAN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_WINONA] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_TATE_AND_LIZA] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEADER_JUAN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SCHOOL_KID_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SCHOOL_KID_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SR_AND_JR] = {.size = 8, .y_offset = 2}, - [TRAINER_PIC_POKEFAN_M] = {.size = 8, .y_offset = 2}, - [TRAINER_PIC_POKEFAN_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_YOUNGSTER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_CHAMPION_WALLACE] = {.size = 8, .y_offset = 2}, - [TRAINER_PIC_FISHERMAN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_CYCLING_TRIATHLETE_M] = {.size = 8, .y_offset = 2}, - [TRAINER_PIC_CYCLING_TRIATHLETE_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RUNNING_TRIATHLETE_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RUNNING_TRIATHLETE_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SWIMMING_TRIATHLETE_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SWIMMING_TRIATHLETE_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_DRAGON_TAMER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_NINJA_BOY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BATTLE_GIRL] = {.size = 8, .y_offset = 2}, - [TRAINER_PIC_PARASOL_LADY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SWIMMER_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_TWINS] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SAILOR] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_MAGMA_ADMIN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_WALLY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BRENDAN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_MAY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_BUG_CATCHER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_POKEMON_RANGER_M] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_POKEMON_RANGER_F] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_MAGMA_LEADER_MAXIE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LASS] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_YOUNG_COUPLE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_OLD_COUPLE] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SIS_AND_BRO] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_STEVEN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_SALON_MAIDEN_ANABEL] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_DOME_ACE_TUCKER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_PALACE_MAVEN_SPENSER] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_ARENA_TYCOON_GRETA] = {.size = 8, .y_offset = 2}, - [TRAINER_PIC_FACTORY_HEAD_NOLAND] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_PIKE_QUEEN_LUCY] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_PYRAMID_KING_BRANDON] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RED] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_LEAF] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RS_BRENDAN] = {.size = 8, .y_offset = 1}, - [TRAINER_PIC_RS_MAY] = {.size = 8, .y_offset = 1}, -}; - -#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic} - -const struct CompressedSpriteSheet gTrainerFrontPicTable[] = -{ - TRAINER_SPRITE(HIKER, gTrainerFrontPic_Hiker, TRAINER_PIC_SIZE), - TRAINER_SPRITE(AQUA_GRUNT_M, gTrainerFrontPic_AquaGruntM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(POKEMON_BREEDER_F, gTrainerFrontPic_PokemonBreederF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(COOLTRAINER_M, gTrainerFrontPic_CoolTrainerM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BIRD_KEEPER, gTrainerFrontPic_BirdKeeper, TRAINER_PIC_SIZE), - TRAINER_SPRITE(COLLECTOR, gTrainerFrontPic_Collector, TRAINER_PIC_SIZE), - TRAINER_SPRITE(AQUA_GRUNT_F, gTrainerFrontPic_AquaGruntF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SWIMMER_M, gTrainerFrontPic_SwimmerM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(MAGMA_GRUNT_M, gTrainerFrontPic_MagmaGruntM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(EXPERT_M, gTrainerFrontPic_ExpertM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(AQUA_ADMIN_M, gTrainerFrontPic_AquaAdminM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BLACK_BELT, gTrainerFrontPic_BlackBelt, TRAINER_PIC_SIZE), - TRAINER_SPRITE(AQUA_ADMIN_F, gTrainerFrontPic_AquaAdminF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(AQUA_LEADER_ARCHIE, gTrainerFrontPic_AquaLeaderArchie, TRAINER_PIC_SIZE), - TRAINER_SPRITE(HEX_MANIAC, gTrainerFrontPic_HexManiac, TRAINER_PIC_SIZE), - TRAINER_SPRITE(AROMA_LADY, gTrainerFrontPic_AromaLady, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RUIN_MANIAC, gTrainerFrontPic_RuinManiac, TRAINER_PIC_SIZE), - TRAINER_SPRITE(INTERVIEWER, gTrainerFrontPic_Interviewer, TRAINER_PIC_SIZE), - TRAINER_SPRITE(TUBER_F, gTrainerFrontPic_TuberF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(TUBER_M, gTrainerFrontPic_TuberM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(COOLTRAINER_F, gTrainerFrontPic_CoolTrainerF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LADY, gTrainerFrontPic_Lady, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BEAUTY, gTrainerFrontPic_Beauty, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RICH_BOY, gTrainerFrontPic_RichBoy, TRAINER_PIC_SIZE), - TRAINER_SPRITE(EXPERT_F, gTrainerFrontPic_ExpertF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(POKEMANIAC, gTrainerFrontPic_Pokemaniac, TRAINER_PIC_SIZE), - TRAINER_SPRITE(MAGMA_GRUNT_F, gTrainerFrontPic_MagmaGruntF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(GUITARIST, gTrainerFrontPic_Guitarist, TRAINER_PIC_SIZE), - TRAINER_SPRITE(KINDLER, gTrainerFrontPic_Kindler, TRAINER_PIC_SIZE), - TRAINER_SPRITE(CAMPER, gTrainerFrontPic_Camper, TRAINER_PIC_SIZE), - TRAINER_SPRITE(PICNICKER, gTrainerFrontPic_Picnicker, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BUG_MANIAC, gTrainerFrontPic_BugManiac, TRAINER_PIC_SIZE), - TRAINER_SPRITE(POKEMON_BREEDER_M, gTrainerFrontPic_PokemonBreederM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(PSYCHIC_M, gTrainerFrontPic_PsychicM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(PSYCHIC_F, gTrainerFrontPic_PsychicF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(GENTLEMAN, gTrainerFrontPic_Gentleman, TRAINER_PIC_SIZE), - TRAINER_SPRITE(ELITE_FOUR_SIDNEY, gTrainerFrontPic_EliteFourSidney, TRAINER_PIC_SIZE), - TRAINER_SPRITE(ELITE_FOUR_PHOEBE, gTrainerFrontPic_EliteFourPhoebe, TRAINER_PIC_SIZE), - TRAINER_SPRITE(ELITE_FOUR_GLACIA, gTrainerFrontPic_EliteFourGlacia, TRAINER_PIC_SIZE), - TRAINER_SPRITE(ELITE_FOUR_DRAKE, gTrainerFrontPic_EliteFourDrake, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_ROXANNE, gTrainerFrontPic_LeaderRoxanne, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_BRAWLY, gTrainerFrontPic_LeaderBrawly, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_WATTSON, gTrainerFrontPic_LeaderWattson, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_FLANNERY, gTrainerFrontPic_LeaderFlannery, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_NORMAN, gTrainerFrontPic_LeaderNorman, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_WINONA, gTrainerFrontPic_LeaderWinona, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_TATE_AND_LIZA, gTrainerFrontPic_LeaderTateAndLiza, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEADER_JUAN, gTrainerFrontPic_LeaderJuan, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SCHOOL_KID_M, gTrainerFrontPic_SchoolKidM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SCHOOL_KID_F, gTrainerFrontPic_SchoolKidF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SR_AND_JR, gTrainerFrontPic_SrAndJr, TRAINER_PIC_SIZE * 2), - TRAINER_SPRITE(POKEFAN_M, gTrainerFrontPic_PokefanM, TRAINER_PIC_SIZE * 2), - TRAINER_SPRITE(POKEFAN_F, gTrainerFrontPic_PokefanF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(YOUNGSTER, gTrainerFrontPic_Youngster, TRAINER_PIC_SIZE), - TRAINER_SPRITE(CHAMPION_WALLACE, gTrainerFrontPic_ChampionWallace, TRAINER_PIC_SIZE * 2), - TRAINER_SPRITE(FISHERMAN, gTrainerFrontPic_Fisherman, TRAINER_PIC_SIZE), - TRAINER_SPRITE(CYCLING_TRIATHLETE_M, gTrainerFrontPic_CyclingTriathleteM, TRAINER_PIC_SIZE * 2), - TRAINER_SPRITE(CYCLING_TRIATHLETE_F, gTrainerFrontPic_CyclingTriathleteF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RUNNING_TRIATHLETE_M, gTrainerFrontPic_RunningTriathleteM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RUNNING_TRIATHLETE_F, gTrainerFrontPic_RunningTriathleteF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SWIMMING_TRIATHLETE_M, gTrainerFrontPic_SwimmingTriathleteM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SWIMMING_TRIATHLETE_F, gTrainerFrontPic_SwimmingTriathleteF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(DRAGON_TAMER, gTrainerFrontPic_DragonTamer, TRAINER_PIC_SIZE), - TRAINER_SPRITE(NINJA_BOY, gTrainerFrontPic_NinjaBoy, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BATTLE_GIRL, gTrainerFrontPic_BattleGirl, TRAINER_PIC_SIZE * 2), - TRAINER_SPRITE(PARASOL_LADY, gTrainerFrontPic_ParasolLady, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SWIMMER_F, gTrainerFrontPic_SwimmerF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(TWINS, gTrainerFrontPic_Twins, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SAILOR, gTrainerFrontPic_Sailor, TRAINER_PIC_SIZE), - TRAINER_SPRITE(MAGMA_ADMIN, gTrainerFrontPic_MagmaAdmin, TRAINER_PIC_SIZE), - TRAINER_SPRITE(WALLY, gTrainerFrontPic_Wally, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BRENDAN, gTrainerFrontPic_Brendan, TRAINER_PIC_SIZE), - TRAINER_SPRITE(MAY, gTrainerFrontPic_May, TRAINER_PIC_SIZE), - TRAINER_SPRITE(BUG_CATCHER, gTrainerFrontPic_BugCatcher, TRAINER_PIC_SIZE), - TRAINER_SPRITE(POKEMON_RANGER_M, gTrainerFrontPic_PokemonRangerM, TRAINER_PIC_SIZE), - TRAINER_SPRITE(POKEMON_RANGER_F, gTrainerFrontPic_PokemonRangerF, TRAINER_PIC_SIZE), - TRAINER_SPRITE(MAGMA_LEADER_MAXIE, gTrainerFrontPic_MagmaLeaderMaxie, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LASS, gTrainerFrontPic_Lass, TRAINER_PIC_SIZE), - TRAINER_SPRITE(YOUNG_COUPLE, gTrainerFrontPic_YoungCouple, TRAINER_PIC_SIZE), - TRAINER_SPRITE(OLD_COUPLE, gTrainerFrontPic_OldCouple, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SIS_AND_BRO, gTrainerFrontPic_SisAndBro, TRAINER_PIC_SIZE), - TRAINER_SPRITE(STEVEN, gTrainerFrontPic_Steven, TRAINER_PIC_SIZE), - TRAINER_SPRITE(SALON_MAIDEN_ANABEL, gTrainerFrontPic_SalonMaidenAnabel, TRAINER_PIC_SIZE), - TRAINER_SPRITE(DOME_ACE_TUCKER, gTrainerFrontPic_DomeAceTucker, TRAINER_PIC_SIZE), - TRAINER_SPRITE(PALACE_MAVEN_SPENSER, gTrainerFrontPic_PalaceMavenSpenser, TRAINER_PIC_SIZE), - TRAINER_SPRITE(ARENA_TYCOON_GRETA, gTrainerFrontPic_ArenaTycoonGreta, TRAINER_PIC_SIZE * 2), - TRAINER_SPRITE(FACTORY_HEAD_NOLAND, gTrainerFrontPic_FactoryHeadNoland, TRAINER_PIC_SIZE), - TRAINER_SPRITE(PIKE_QUEEN_LUCY, gTrainerFrontPic_PikeQueenLucy, TRAINER_PIC_SIZE), - TRAINER_SPRITE(PYRAMID_KING_BRANDON, gTrainerFrontPic_PyramidKingBrandon, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RED, gTrainerFrontPic_Red, TRAINER_PIC_SIZE), - TRAINER_SPRITE(LEAF, gTrainerFrontPic_Leaf, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RS_BRENDAN, gTrainerFrontPic_RubySapphireBrendan, TRAINER_PIC_SIZE), - TRAINER_SPRITE(RS_MAY, gTrainerFrontPic_RubySapphireMay, TRAINER_PIC_SIZE), -}; - -#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic} - -const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[] = -{ - TRAINER_PAL(HIKER, gTrainerPalette_Hiker), - TRAINER_PAL(AQUA_GRUNT_M, gTrainerPalette_AquaGruntM), - TRAINER_PAL(POKEMON_BREEDER_F, gTrainerPalette_PokemonBreederF), - TRAINER_PAL(COOLTRAINER_M, gTrainerPalette_CoolTrainerM), - TRAINER_PAL(BIRD_KEEPER, gTrainerPalette_BirdKeeper), - TRAINER_PAL(COLLECTOR, gTrainerPalette_Collector), - TRAINER_PAL(AQUA_GRUNT_F, gTrainerPalette_AquaGruntF), - TRAINER_PAL(SWIMMER_M, gTrainerPalette_SwimmerM), - TRAINER_PAL(MAGMA_GRUNT_M, gTrainerPalette_MagmaGruntM), - TRAINER_PAL(EXPERT_M, gTrainerPalette_ExpertM), - TRAINER_PAL(AQUA_ADMIN_M, gTrainerPalette_AquaAdminM), - TRAINER_PAL(BLACK_BELT, gTrainerPalette_BlackBelt), - TRAINER_PAL(AQUA_ADMIN_F, gTrainerPalette_AquaAdminF), - TRAINER_PAL(AQUA_LEADER_ARCHIE, gTrainerPalette_AquaLeaderArchie), - TRAINER_PAL(HEX_MANIAC, gTrainerPalette_HexManiac), - TRAINER_PAL(AROMA_LADY, gTrainerPalette_AromaLady), - TRAINER_PAL(RUIN_MANIAC, gTrainerPalette_RuinManiac), - TRAINER_PAL(INTERVIEWER, gTrainerPalette_Interviewer), - TRAINER_PAL(TUBER_F, gTrainerPalette_TuberF), - TRAINER_PAL(TUBER_M, gTrainerPalette_TuberM), - TRAINER_PAL(COOLTRAINER_F, gTrainerPalette_CoolTrainerF), - TRAINER_PAL(LADY, gTrainerPalette_Lady), - TRAINER_PAL(BEAUTY, gTrainerPalette_Beauty), - TRAINER_PAL(RICH_BOY, gTrainerPalette_RichBoy), - TRAINER_PAL(EXPERT_F, gTrainerPalette_ExpertF), - TRAINER_PAL(POKEMANIAC, gTrainerPalette_Pokemaniac), - TRAINER_PAL(MAGMA_GRUNT_F, gTrainerPalette_MagmaGruntF), - TRAINER_PAL(GUITARIST, gTrainerPalette_Guitarist), - TRAINER_PAL(KINDLER, gTrainerPalette_Kindler), - TRAINER_PAL(CAMPER, gTrainerPalette_Camper), - TRAINER_PAL(PICNICKER, gTrainerPalette_Picnicker), - TRAINER_PAL(BUG_MANIAC, gTrainerPalette_BugManiac), - TRAINER_PAL(POKEMON_BREEDER_M, gTrainerPalette_PokemonBreederM), - TRAINER_PAL(PSYCHIC_M, gTrainerPalette_PsychicM), - TRAINER_PAL(PSYCHIC_F, gTrainerPalette_PsychicF), - TRAINER_PAL(GENTLEMAN, gTrainerPalette_Gentleman), - TRAINER_PAL(ELITE_FOUR_SIDNEY, gTrainerPalette_EliteFourSidney), - TRAINER_PAL(ELITE_FOUR_PHOEBE, gTrainerPalette_EliteFourPhoebe), - TRAINER_PAL(ELITE_FOUR_GLACIA, gTrainerPalette_EliteFourGlacia), - TRAINER_PAL(ELITE_FOUR_DRAKE, gTrainerPalette_EliteFourDrake), - TRAINER_PAL(LEADER_ROXANNE, gTrainerPalette_LeaderRoxanne), - TRAINER_PAL(LEADER_BRAWLY, gTrainerPalette_LeaderBrawly), - TRAINER_PAL(LEADER_WATTSON, gTrainerPalette_LeaderWattson), - TRAINER_PAL(LEADER_FLANNERY, gTrainerPalette_LeaderFlannery), - TRAINER_PAL(LEADER_NORMAN, gTrainerPalette_LeaderNorman), - TRAINER_PAL(LEADER_WINONA, gTrainerPalette_LeaderWinona), - TRAINER_PAL(LEADER_TATE_AND_LIZA, gTrainerPalette_LeaderTateAndLiza), - TRAINER_PAL(LEADER_JUAN, gTrainerPalette_LeaderJuan), - TRAINER_PAL(SCHOOL_KID_M, gTrainerPalette_SchoolKidM), - TRAINER_PAL(SCHOOL_KID_F, gTrainerPalette_SchoolKidF), - TRAINER_PAL(SR_AND_JR, gTrainerPalette_SrAndJr), - TRAINER_PAL(POKEFAN_M, gTrainerPalette_PokefanM), - TRAINER_PAL(POKEFAN_F, gTrainerPalette_PokefanF), - TRAINER_PAL(YOUNGSTER, gTrainerPalette_Youngster), - TRAINER_PAL(CHAMPION_WALLACE, gTrainerPalette_ChampionWallace), - TRAINER_PAL(FISHERMAN, gTrainerPalette_Fisherman), - TRAINER_PAL(CYCLING_TRIATHLETE_M, gTrainerPalette_CyclingTriathleteM), - TRAINER_PAL(CYCLING_TRIATHLETE_F, gTrainerPalette_CyclingTriathleteF), - TRAINER_PAL(RUNNING_TRIATHLETE_M, gTrainerPalette_RunningTriathleteM), - TRAINER_PAL(RUNNING_TRIATHLETE_F, gTrainerPalette_RunningTriathleteF), - TRAINER_PAL(SWIMMING_TRIATHLETE_M, gTrainerPalette_SwimmingTriathleteM), - TRAINER_PAL(SWIMMING_TRIATHLETE_F, gTrainerPalette_SwimmingTriathleteF), - TRAINER_PAL(DRAGON_TAMER, gTrainerPalette_DragonTamer), - TRAINER_PAL(NINJA_BOY, gTrainerPalette_NinjaBoy), - TRAINER_PAL(BATTLE_GIRL, gTrainerPalette_BattleGirl), - TRAINER_PAL(PARASOL_LADY, gTrainerPalette_ParasolLady), - TRAINER_PAL(SWIMMER_F, gTrainerPalette_SwimmerF), - TRAINER_PAL(TWINS, gTrainerPalette_Twins), - TRAINER_PAL(SAILOR, gTrainerPalette_Sailor), - TRAINER_PAL(MAGMA_ADMIN, gTrainerPalette_MagmaAdmin), - TRAINER_PAL(WALLY, gTrainerPalette_Wally), - TRAINER_PAL(BRENDAN, gTrainerPalette_Brendan), - TRAINER_PAL(MAY, gTrainerPalette_May), - TRAINER_PAL(BUG_CATCHER, gTrainerPalette_BugCatcher), - TRAINER_PAL(POKEMON_RANGER_M, gTrainerPalette_PokemonRangerM), - TRAINER_PAL(POKEMON_RANGER_F, gTrainerPalette_PokemonRangerF), - TRAINER_PAL(MAGMA_LEADER_MAXIE, gTrainerPalette_MagmaLeaderMaxie), - TRAINER_PAL(LASS, gTrainerPalette_Lass), - TRAINER_PAL(YOUNG_COUPLE, gTrainerPalette_YoungCouple), - TRAINER_PAL(OLD_COUPLE, gTrainerPalette_OldCouple), - TRAINER_PAL(SIS_AND_BRO, gTrainerPalette_SisAndBro), - TRAINER_PAL(STEVEN, gTrainerPalette_Steven), - TRAINER_PAL(SALON_MAIDEN_ANABEL, gTrainerPalette_SalonMaidenAnabel), - TRAINER_PAL(DOME_ACE_TUCKER, gTrainerPalette_DomeAceTucker), - TRAINER_PAL(PALACE_MAVEN_SPENSER, gTrainerPalette_PalaceMavenSpenser), - TRAINER_PAL(ARENA_TYCOON_GRETA, gTrainerPalette_ArenaTycoonGreta), - TRAINER_PAL(FACTORY_HEAD_NOLAND, gTrainerPalette_FactoryHeadNoland), - TRAINER_PAL(PIKE_QUEEN_LUCY, gTrainerPalette_PikeQueenLucy), - TRAINER_PAL(PYRAMID_KING_BRANDON, gTrainerPalette_PyramidKingBrandon), - TRAINER_PAL(RED, gTrainerPalette_Red), - TRAINER_PAL(LEAF, gTrainerPalette_Leaf), - TRAINER_PAL(RS_BRENDAN, gTrainerPalette_RubySapphireBrendan), - TRAINER_PAL(RS_MAY, gTrainerPalette_RubySapphireMay), -}; diff --git a/src/daycare.c b/src/daycare.c index ce9d098f5635..f499cee6dbfc 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -229,7 +229,6 @@ static void StorePokemonInDaycare(struct Pokemon *mon, struct DaycareMon *daycar } daycareMon->mon = mon->box; - BoxMonRestorePP(&daycareMon->mon); daycareMon->steps = 0; ZeroMonData(mon); CompactPartySlots(); @@ -251,10 +250,10 @@ void StoreSelectedPokemonInDaycare(void) StorePokemonInEmptyDaycareSlot(&gPlayerParty[monId], &gSaveBlock1Ptr->daycare); } -// Shifts the second daycare pokemon slot into the first slot. +// Shifts the second daycare Pokémon slot into the first slot. static void ShiftDaycareSlots(struct DayCare *daycare) { - // This condition is only satisfied when the player takes out the first pokemon from the daycare. + // This condition is only satisfied when the player takes out the first Pokémon from the daycare. if (GetBoxMonData(&daycare->mons[1].mon, MON_DATA_SPECIES) != SPECIES_NONE && GetBoxMonData(&daycare->mons[0].mon, MON_DATA_SPECIES) == SPECIES_NONE) { @@ -741,7 +740,7 @@ static void InheritAbility(struct Pokemon *egg, struct BoxPokemon *father, struc } } -// Counts the number of egg moves a pokemon learns and stores the moves in +// Counts the number of egg moves a Pokémon learns and stores the moves in // the given array. u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) { diff --git a/src/debug.c b/src/debug.c index 103f3fd2ea0b..3842a14aefb1 100644 --- a/src/debug.c +++ b/src/debug.c @@ -6,9 +6,11 @@ //AsparagusEduardo: https://github.com/AsparagusEduardo/pokeemerald/tree/InfusedEmerald_v2 //Ghoulslash: https://github.com/ghoulslash/pokeemerald //Jaizu: https://jaizu.moe/ +//AND OTHER RHH POKEEMERALD-EXPANSION CONTRIBUTORS #include "global.h" #include "battle.h" #include "battle_setup.h" +#include "berry.h" #include "clock.h" #include "coins.h" #include "credits.h" @@ -71,17 +73,17 @@ enum DebugMenu { DEBUG_MENU_ITEM_UTILITIES, - DEBUG_MENU_ITEM_PARTY_BOXES, + DEBUG_MENU_ITEM_PCBAG, + DEBUG_MENU_ITEM_PARTY, DEBUG_MENU_ITEM_GIVE, DEBUG_MENU_ITEM_SCRIPTS, DEBUG_MENU_ITEM_FLAGVAR, - DEBUG_MENU_ITEM_FILL, //DEBUG_MENU_ITEM_BATTLE, DEBUG_MENU_ITEM_SOUND, DEBUG_MENU_ITEM_CANCEL, }; -enum UtilMenu +enum UtilDebugMenu { DEBUG_UTIL_MENU_ITEM_FLY, DEBUG_UTIL_MENU_ITEM_WARP, @@ -96,19 +98,38 @@ enum UtilMenu DEBUG_UTIL_MENU_ITEM_PLAYER_ID, DEBUG_UTIL_MENU_ITEM_CHEAT, DEBUG_UTIL_MENU_ITEM_EXPANSION_VER, + DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS, }; -enum PartyBoxesMenu +enum GivePCBagDebugMenu { - DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC, - DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER, - DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG, - DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY, - DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS, - DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES, + DEBUG_PCBAG_MENU_ITEM_FILL, + DEBUG_PCBAG_MENU_ITEM_ACCESS_PC, + DEBUG_PCBAG_MENU_ITEM_CLEAR_BAG, + DEBUG_PCBAG_MENU_ITEM_CLEAR_BOXES, }; -enum ScriptMenu +enum GivePCBagFillDebugMenu +{ + DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_FAST, + DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_SLOW, + DEBUG_PCBAG_MENU_ITEM_FILL_PC_ITEMS, + DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_ITEMS, + DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BALLS, + DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_TMHM, + DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BERRIES, + DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_KEY_ITEMS, +}; + +enum PartyDebugMenu +{ + DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER, + DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG, + DEBUG_PARTY_MENU_ITEM_HEAL_PARTY, + DEBUG_PARTY_MENU_ITEM_POISON_MONS, +}; + +enum ScriptDebugMenu { DEBUG_UTIL_MENU_ITEM_SCRIPT_1, DEBUG_UTIL_MENU_ITEM_SCRIPT_2, @@ -120,7 +141,7 @@ enum ScriptMenu DEBUG_UTIL_MENU_ITEM_SCRIPT_8, }; -enum FlagsVarsMenu +enum FlagsVarsDebugMenu { DEBUG_FLAGVAR_MENU_ITEM_FLAGS, DEBUG_FLAGVAR_MENU_ITEM_VARS, @@ -187,7 +208,7 @@ enum BattleTerrain DEBUG_BATTLE_2_MENU_ITEM_TERRAIN_9, }; -enum GiveMenu +enum GiveDebugMenu { DEBUG_GIVE_MENU_ITEM_ITEM_X, DEBUG_GIVE_MENU_ITEM_ALLTMS, @@ -199,29 +220,26 @@ enum GiveMenu DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG, }; -enum GiveFillMenu +enum SoundDebugMenu { - DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST, - DEBUG_FILL_MENU_ITEM_PC_BOXES_SLOW, - DEBUG_FILL_MENU_ITEM_PC_ITEMS, - DEBUG_FILL_MENU_ITEM_POCKET_ITEMS, - DEBUG_FILL_MENU_ITEM_POCKET_BALLS, - DEBUG_FILL_MENU_ITEM_POCKET_TMHM, - DEBUG_FILL_MENU_ITEM_POCKET_BERRIES, - DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS, + DEBUG_SOUND_MENU_ITEM_SE, + DEBUG_SOUND_MENU_ITEM_MUS, }; -enum SoundMenu +enum BerryFunctionsMenu { - DEBUG_SOUND_MENU_ITEM_SE, - DEBUG_SOUND_MENU_ITEM_MUS, + DEBUG_BERRY_FUNCTIONS_MENU_CLEAR_ALL, + DEBUG_BERRY_FUNCTIONS_MENU_READY, + DEBUG_BERRY_FUNCTIONS_MENU_NEXT_STAGE, + DEBUG_BERRY_FUNCTIONS_MENU_WEEDS, + DEBUG_BERRY_FUNCTIONS_MENU_PESTS, }; // ******************************* // Constants #define DEBUG_MENU_FONT FONT_NORMAL -#define DEBUG_MENU_WIDTH_MAIN 16 +#define DEBUG_MENU_WIDTH_MAIN 17 #define DEBUG_MENU_HEIGHT_MAIN 9 #define DEBUG_MENU_WIDTH_EXTRA 10 @@ -265,6 +283,12 @@ struct DebugMonData u16 mon_move_1; u16 mon_move_2; u16 mon_move_3; + u8 mon_ev_hp; + u8 mon_ev_atk; + u8 mon_ev_def; + u8 mon_ev_speed; + u8 mon_ev_satk; + u8 mon_ev_sdef; }; struct DebugMenuListData @@ -311,22 +335,24 @@ static void DebugAction_Util_Script_7(u8 taskId); static void DebugAction_Util_Script_8(u8 taskId); static void DebugAction_OpenUtilitiesMenu(u8 taskId); -static void DebugAction_OpenPartyBoxesMenu(u8 taskId); +static void DebugAction_OpenPCBagMenu(u8 taskId); +static void DebugAction_OpenPartyMenu(u8 taskId); static void DebugAction_OpenScriptsMenu(u8 taskId); static void DebugAction_OpenFlagsVarsMenu(u8 taskId); static void DebugAction_OpenGiveMenu(u8 taskId); -static void DebugAction_OpenFillMenu(u8 taskId); static void DebugAction_OpenSoundMenu(u8 taskId); static void DebugTask_HandleMenuInput_Main(u8 taskId); static void DebugTask_HandleMenuInput_Utilities(u8 taskId); -static void DebugTask_HandleMenuInput_PartyBoxes(u8 taskId); +static void DebugTask_HandleMenuInput_PCBag(u8 taskId); +static void DebugTask_HandleMenuInput_PCBag_Fill(u8 taskId); +static void DebugTask_HandleMenuInput_Party(u8 taskId); static void DebugTask_HandleMenuInput_Scripts(u8 taskId); static void DebugTask_HandleMenuInput_FlagsVars(u8 taskId); static void DebugTask_HandleMenuInput_Battle(u8 taskId); static void DebugTask_HandleMenuInput_Give(u8 taskId); -static void DebugTask_HandleMenuInput_Fill(u8 taskId); static void DebugTask_HandleMenuInput_Sound(u8 taskId); +static void DebugTask_HandleMenuInput_BerryFunctions(u8 taskId); static void DebugAction_Util_Fly(u8 taskId); static void DebugAction_Util_Warp_Warp(u8 taskId); @@ -345,13 +371,25 @@ static void DebugAction_Util_Player_Gender(u8 taskId); static void DebugAction_Util_Player_Id(u8 taskId); static void DebugAction_Util_CheatStart(u8 taskId); static void DebugAction_Util_ExpansionVersion(u8 taskId); - -static void DebugAction_PartyBoxes_AccessPC(u8 taskId); -static void DebugAction_PartyBoxes_MoveReminder(u8 taskId); -static void DebugAction_PartyBoxes_HatchAnEgg(u8 taskId); -static void DebugAction_PartyBoxes_HealParty(u8 taskId); -static void DebugAction_PartyBoxes_PoisonMons(u8 taskId); -static void DebugAction_PartyBoxes_ClearBoxes(u8 taskId); +static void DebugAction_Util_BerryFunctions(u8 taskId); + +static void DebugAction_OpenPCBagFillMenu(u8 taskId); +static void DebugAction_PCBag_Fill_PCBoxes_Fast(u8 taskId); +static void DebugAction_PCBag_Fill_PCBoxes_Slow(u8 taskId); +static void DebugAction_PCBag_Fill_PCItemStorage(u8 taskId); +static void DebugAction_PCBag_Fill_PocketItems(u8 taskId); +static void DebugAction_PCBag_Fill_PocketPokeBalls(u8 taskId); +static void DebugAction_PCBag_Fill_PocketTMHM(u8 taskId); +static void DebugAction_PCBag_Fill_PocketBerries(u8 taskId); +static void DebugAction_PCBag_Fill_PocketKeyItems(u8 taskId); +static void DebugAction_PCBag_AccessPC(u8 taskId); +static void DebugAction_PCBag_ClearBag(u8 taskId); +static void DebugAction_PCBag_ClearBoxes(u8 taskId); + +static void DebugAction_Party_MoveReminder(u8 taskId); +static void DebugAction_Party_HatchAnEgg(u8 taskId); +static void DebugAction_Party_HealParty(u8 taskId); +static void DebugAction_Party_PoisonMons(u8 taskId); static void DebugAction_FlagsVars_Flags(u8 taskId); static void DebugAction_FlagsVars_FlagsSelect(u8 taskId); @@ -388,6 +426,7 @@ static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId); static void DebugAction_Give_Pokemon_SelectNature(u8 taskId); static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId); static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId); +static void DebugAction_Give_Pokemon_SelectEVs(u8 taskId); static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId); static void DebugAction_Give_Pokemon_Move(u8 taskId); static void DebugAction_Give_MaxMoney(u8 taskId); @@ -395,20 +434,16 @@ static void DebugAction_Give_MaxCoins(u8 taskId); static void DebugAction_Give_MaxBattlePoints(u8 taskId); static void DebugAction_Give_DayCareEgg(u8 taskId); -static void DebugAction_Fill_PCBoxes_Fast(u8 taskId); -static void DebugAction_Fill_PCBoxes_Slow(u8 taskId); -static void DebugAction_Fill_PCItemStorage(u8 taskId); -static void DebugAction_Fill_PocketItems(u8 taskId); -static void DebugAction_Fill_PocketPokeBalls(u8 taskId); -static void DebugAction_Fill_PocketTMHM(u8 taskId); -static void DebugAction_Fill_PocketBerries(u8 taskId); -static void DebugAction_Fill_PocketKeyItems(u8 taskId); - static void DebugAction_Sound_SE(u8 taskId); static void DebugAction_Sound_SE_SelectId(u8 taskId); static void DebugAction_Sound_MUS(u8 taskId); static void DebugAction_Sound_MUS_SelectId(u8 taskId); +static void DebugAction_BerryFunctions_ClearAll(u8 taskId); +static void DebugAction_BerryFunctions_Ready(u8 taskId); +static void DebugAction_BerryFunctions_NextStage(u8 taskId); +static void DebugAction_BerryFunctions_Pests(u8 taskId); +static void DebugAction_BerryFunctions_Weeds(u8 taskId); extern const u8 Debug_FlagsNotSetOverworldConfigMessage[]; extern const u8 Debug_FlagsNotSetBattleConfigMessage[]; @@ -435,6 +470,9 @@ extern const u8 Debug_CheckROMSpace[]; extern const u8 Debug_BoxFilledMessage[]; extern const u8 Debug_ShowExpansionVersion[]; +extern const u8 Debug_BerryPestsDisabled[]; +extern const u8 Debug_BerryWeedsDisabled[]; + extern const u8 FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon[]; #include "data/map_group_count.h" @@ -449,24 +487,24 @@ static const u8 sDebugText_Dashes[] = _("---"); static const u8 sDebugText_Empty[] = _(""); static const u8 sDebugText_Continue[] = _("Continue…{CLEAR_TO 110}{RIGHT_ARROW}"); // Main Menu -static const u8 sDebugText_Utilities[] = _("Utilities…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_PartyBoxes[] = _("Party/Boxes…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Scripts[] = _("Scripts…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_FlagsVars[] = _("Flags & Vars…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Battle[] = _("Battle Test{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Give[] = _("Give X…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Fill[] = _("Fill PC/Pockets…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Sound[] = _("Sound…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Cancel[] = _("Cancel"); +static const u8 sDebugText_Utilities[] = _("Utilities…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_PCBag[] = _("PC/Bag…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Party[] = _("Party…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Scripts[] = _("Scripts…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_FlagsVars[] = _("Flags & Vars…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Battle[] = _("Battle Test{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Give[] = _("Give X…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Sound[] = _("Sound…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Cancel[] = _("Cancel"); // Script menu -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"); +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 sDebugText_Util_FlyToMap[] = _("Fly to map…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_WarpToMap[] = _("Warp to map warp…{CLEAR_TO 110}{RIGHT_ARROW}"); @@ -474,48 +512,60 @@ static const u8 sDebugText_Util_WarpToMap_SelectMapGroup[] = _("Group: {STR_VAR_ static const u8 sDebugText_Util_WarpToMap_SelectMap[] = _("Map: {STR_VAR_1}{CLEAR_TO 90}\nMapSec:{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); static const u8 sDebugText_Util_WarpToMap_SelectWarp[] = _("Warp:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_3}{CLEAR_TO 90}"); static const u8 sDebugText_Util_WarpToMap_SelMax[] = _("{STR_VAR_1} / {STR_VAR_2}"); -static const u8 sDebugText_Util_SaveBlockSpace[] = _("SaveBlock Space…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_ROMSpace[] = _("ROM Space…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_SaveBlockSpace[] = _("Save Block space…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_ROMSpace[] = _("ROM space…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_Weather[] = _("Set weather…{CLEAR_TO 110}{RIGHT_ARROW}"); -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…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_SetWallClock[] = _("Set Wall Clock…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Util_WatchCredits[] = _("Watch Credits…{CLEAR_TO 110}{RIGHT_ARROW}"); +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…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_SetWallClock[] = _("Set wall clock…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Util_WatchCredits[] = _("Watch credits…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Util_Player_Name[] = _("Player name"); -static const u8 sDebugText_Util_Player_Gender[] = _("Toggle Gender"); -static const u8 sDebugText_Util_Player_Id[] = _("New Trainer Id"); -static const u8 sDebugText_Util_CheatStart[] = _("CHEAT Start"); +static const u8 sDebugText_Util_Player_Gender[] = _("Toggle gender"); +static const u8 sDebugText_Util_Player_Id[] = _("New Trainer ID"); +static const u8 sDebugText_Util_CheatStart[] = _("Cheat start"); static const u8 sDebugText_Util_ExpansionVersion[] = _("Expansion Version"); +static const u8 sDebugText_Util_BerryFunctions[] = _("Berry Functions…{CLEAR_TO 110}{RIGHT_ARROW}"); +// PC/Bag Menu +static const u8 sDebugText_PCBag_Fill[] = _("Fill…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_PCBag_Fill_Pc_Fast[] = _("Fill PC Boxes Fast"); +static const u8 sDebugText_PCBag_Fill_Pc_Slow[] = _("Fill PC Boxes Slow (LAG!)"); +static const u8 sDebugText_PCBag_Fill_Pc_Items[] = _("Fill PC Items"); +static const u8 sDebugText_PCBag_Fill_PocketItems[] = _("Fill Pocket Items"); +static const u8 sDebugText_PCBag_Fill_PocketPokeBalls[] = _("Fill Pocket Poké Balls"); +static const u8 sDebugText_PCBag_Fill_PocketTMHM[] = _("Fill Pocket TMHM"); +static const u8 sDebugText_PCBag_Fill_PocketBerries[] = _("Fill Pocket Berries"); +static const u8 sDebugText_PCBag_Fill_PocketKeyItems[] = _("Fill Pocket Key Items"); +static const u8 sDebugText_PCBag_AccessPC[] = _("Access PC"); +static const u8 sDebugText_PCBag_ClearBag[] = _("Clear Bag"); +static const u8 sDebugText_PCBag_ClearBoxes[] = _("Clear Storage Boxes"); // Party/Boxes Menu -static const u8 sDebugText_PartyBoxes_AccessPC[] = _("Access PC"); -static const u8 sDebugText_PartyBoxes_MoveReminder[] = _("Move Reminder"); -static const u8 sDebugText_PartyBoxes_HatchAnEgg[] = _("Hatch an Egg"); -static const u8 sDebugText_PartyBoxes_HealParty[] = _("Heal Party"); -static const u8 sDebugText_PartyBoxes_PoisonParty[] = _("Poison party"); -static const u8 sDebugText_PartyBoxes_ClearBoxes[] = _("Clear Storage Boxes"); +static const u8 sDebugText_Party_MoveReminder[] = _("Move Reminder"); +static const u8 sDebugText_Party_HatchAnEgg[] = _("Hatch an Egg"); +static const u8 sDebugText_Party_HealParty[] = _("Heal party"); +static const u8 sDebugText_Party_PoisonParty[] = _("Poison party"); // Flags/Vars Menu -static const u8 sDebugText_FlagsVars_Flags[] = _("Set Flag XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_FlagsVars_Flag[] = _("Flag: {STR_VAR_1}{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}"); -static const u8 sDebugText_FlagsVars_FlagHex[] = _("{STR_VAR_1}{CLEAR_TO 90}\n0x{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_FlagsVars_Vars[] = _("Set Var XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_FlagsVars_VariableHex[] = _("{STR_VAR_1}{CLEAR_TO 90}\n0x{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_FlagsVars_Variable[] = _("Var: {STR_VAR_1}{CLEAR_TO 90}\nVal: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_2}"); -static const u8 sDebugText_FlagsVars_VariableValueSet[] = _("Var: {STR_VAR_1}{CLEAR_TO 90}\nVal: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_2}"); -static const u8 sDebugText_FlagsVars_PokedexFlags_All[] = _("Pokédex Flags All"); -static const u8 sDebugText_FlagsVars_PokedexFlags_Reset[] = _("Pokédex Flags Reset"); -static const u8 sDebugText_FlagsVars_SwitchDex[] = _("Toggle {STR_VAR_1}Pokédex"); -static const u8 sDebugText_FlagsVars_SwitchNationalDex[] = _("Toggle {STR_VAR_1}NatDex"); -static const u8 sDebugText_FlagsVars_SwitchPokeNav[] = _("Toggle {STR_VAR_1}PokéNav"); -static const u8 sDebugText_FlagsVars_SwitchMatchCall[] = _("Toggle {STR_VAR_1}Match Call"); -static const u8 sDebugText_FlagsVars_RunningShoes[] = _("Toggle {STR_VAR_1}Running Shoes"); -static const u8 sDebugText_FlagsVars_ToggleFlyFlags[] = _("Toggle {STR_VAR_1}Fly Flags"); -static const u8 sDebugText_FlagsVars_ToggleAllBadges[] = _("Toggle {STR_VAR_1}All badges"); -static const u8 sDebugText_FlagsVars_ToggleFrontierPass[] = _("Toggle {STR_VAR_1}Frontier Pass"); -static const u8 sDebugText_FlagsVars_SwitchCollision[] = _("Toggle {STR_VAR_1}Collision OFF"); -static const u8 sDebugText_FlagsVars_SwitchEncounter[] = _("Toggle {STR_VAR_1}Encounter OFF"); -static const u8 sDebugText_FlagsVars_SwitchTrainerSee[] = _("Toggle {STR_VAR_1}TrainerSee OFF"); -static const u8 sDebugText_FlagsVars_SwitchBagUse[] = _("Toggle {STR_VAR_1}BagUse OFF"); -static const u8 sDebugText_FlagsVars_SwitchCatching[] = _("Toggle {STR_VAR_1}Catching OFF"); +static const u8 sDebugText_FlagsVars_Flags[] = _("Set Flag XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_FlagsVars_Flag[] = _("Flag: {STR_VAR_1}{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}\n{STR_VAR_3}"); +static const u8 sDebugText_FlagsVars_FlagHex[] = _("{STR_VAR_1}{CLEAR_TO 90}\n0x{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_FlagsVars_Vars[] = _("Set Var XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_FlagsVars_VariableHex[] = _("{STR_VAR_1}{CLEAR_TO 90}\n0x{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_FlagsVars_Variable[] = _("Var: {STR_VAR_1}{CLEAR_TO 90}\nVal: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_2}"); +static const u8 sDebugText_FlagsVars_VariableValueSet[] = _("Var: {STR_VAR_1}{CLEAR_TO 90}\nVal: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_2}"); +static const u8 sDebugText_FlagsVars_PokedexFlags_All[] = _("Pokédex Flags All"); +static const u8 sDebugText_FlagsVars_PokedexFlags_Reset[] = _("Pokédex Flags Reset"); +static const u8 sDebugText_FlagsVars_SwitchDex[] = _("Toggle {STR_VAR_1}Pokédex"); +static const u8 sDebugText_FlagsVars_SwitchNationalDex[] = _("Toggle {STR_VAR_1}National Dex"); +static const u8 sDebugText_FlagsVars_SwitchPokeNav[] = _("Toggle {STR_VAR_1}PokéNav"); +static const u8 sDebugText_FlagsVars_SwitchMatchCall[] = _("Toggle {STR_VAR_1}Match Call"); +static const u8 sDebugText_FlagsVars_RunningShoes[] = _("Toggle {STR_VAR_1}Running Shoes"); +static const u8 sDebugText_FlagsVars_ToggleFlyFlags[] = _("Toggle {STR_VAR_1}Fly Flags"); +static const u8 sDebugText_FlagsVars_ToggleAllBadges[] = _("Toggle {STR_VAR_1}All badges"); +static const u8 sDebugText_FlagsVars_ToggleFrontierPass[] = _("Toggle {STR_VAR_1}Frontier Pass"); +static const u8 sDebugText_FlagsVars_SwitchCollision[] = _("Toggle {STR_VAR_1}Collision OFF"); +static const u8 sDebugText_FlagsVars_SwitchEncounter[] = _("Toggle {STR_VAR_1}Encounter OFF"); +static const u8 sDebugText_FlagsVars_SwitchTrainerSee[] = _("Toggle {STR_VAR_1}Trainer See OFF"); +static const u8 sDebugText_FlagsVars_SwitchBagUse[] = _("Toggle {STR_VAR_1}Bag Use OFF"); +static const u8 sDebugText_FlagsVars_SwitchCatching[] = _("Toggle {STR_VAR_1}Catching OFF"); // Battle static const u8 sDebugText_Battle_0_Wild[] = _("Wild…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_Battle_0_WildDouble[] = _("Wild Double…{CLEAR_TO 110}{RIGHT_ARROW}"); @@ -528,10 +578,10 @@ static const u8 sDebugText_Battle_1_AIFlag_02[] = _("{STR_VAR_1}Check viabilit static const u8 sDebugText_Battle_1_AIFlag_03[] = _("{STR_VAR_1}Setup first turn"); static const u8 sDebugText_Battle_1_AIFlag_04[] = _("{STR_VAR_1}Risky"); static const u8 sDebugText_Battle_1_AIFlag_05[] = _("{STR_VAR_1}Prefer strongest move"); -static const u8 sDebugText_Battle_1_AIFlag_06[] = _("{STR_VAR_1}Prefer baton pass"); +static const u8 sDebugText_Battle_1_AIFlag_06[] = _("{STR_VAR_1}Prefer Baton Pass"); static const u8 sDebugText_Battle_1_AIFlag_07[] = _("{STR_VAR_1}Double battle"); -static const u8 sDebugText_Battle_1_AIFlag_08[] = _("{STR_VAR_1}Hp aware"); -static const u8 sDebugText_Battle_1_AIFlag_09[] = _("{STR_VAR_1}Negate unaware"); +static const u8 sDebugText_Battle_1_AIFlag_08[] = _("{STR_VAR_1}HP aware"); +static const u8 sDebugText_Battle_1_AIFlag_09[] = _("{STR_VAR_1}Negate Unaware"); static const u8 sDebugText_Battle_1_AIFlag_10[] = _("{STR_VAR_1}Will suicide"); static const u8 sDebugText_Battle_1_AIFlag_11[] = _("{STR_VAR_1}Help partner"); static const u8 sDebugText_Battle_1_AIFlag_12[] = _("{STR_VAR_1}Prefer status moves"); @@ -553,22 +603,29 @@ static const u8 sDebugText_Battle_2_Terrain_9[] = _("Plain…{CLEAR_TO 110}{RI // Give Menu static const u8 sDebugText_Give_GiveItem[] = _("Give item XYZ…{CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_ItemQuantity[] = _("Quantity:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n\n{STR_VAR_2}"); -static const u8 sDebugText_ItemID[] = _("Item Id: {STR_VAR_3}\n{STR_VAR_1}{CLEAR_TO 90}\n\n{STR_VAR_2}"); +static const u8 sDebugText_ItemID[] = _("Item ID: {STR_VAR_3}\n{STR_VAR_1}{CLEAR_TO 90}\n\n{STR_VAR_2}"); static const u8 sDebugText_Give_AllTMs[] = _("Give all TMs"); -static const u8 sDebugText_Give_GivePokemonSimple[] = _("Pkm (lvl)…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Give_GivePokemonComplex[] = _("Pkm (l,s,n,a,IV,mov)…{CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Give_GivePokemonSimple[] = _("Pokémon (Basic){CLEAR_TO 110}{RIGHT_ARROW}"); +static const u8 sDebugText_Give_GivePokemonComplex[] = _("Pokémon (Complex){CLEAR_TO 110}{RIGHT_ARROW}"); static const u8 sDebugText_PokemonID[] = _("Species: {STR_VAR_3}\n{STR_VAR_1}{CLEAR_TO 90}\n\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonLevel[] = _("Level:{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonShiny[] = _("Shiny:{CLEAR_TO 90}\n {STR_VAR_2}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonNature[] = _("NatureId: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); -static const u8 sDebugText_PokemonAbility[] = _("AbilityNum: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_PokemonNature[] = _("Nature ID: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_PokemonAbility[] = _("Ability Num: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonIVs[] = _("All IVs:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_PokemonEVs[] = _("All EVs:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_IV_HP[] = _("IV HP:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_IV_Attack[] = _("IV Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_IV_Defense[] = _("IV Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_IV_Speed[] = _("IV Speed:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_IV_SpAttack[] = _("IV Sp. Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_IV_SpDefense[] = _("IV Sp. Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_EV_HP[] = _("EV HP:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_EV_Attack[] = _("EV Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_EV_Defense[] = _("EV Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_EV_Speed[] = _("EV Speed:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_EV_SpAttack[] = _("EV Sp. Attack:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); +static const u8 sDebugText_EV_SpDefense[] = _("EV Sp. Defense:{CLEAR_TO 90}\n {STR_VAR_3}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonMove_0[] = _("Move 0: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonMove_1[] = _("Move 1: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); static const u8 sDebugText_PokemonMove_2[] = _("Move 2: {STR_VAR_3}{CLEAR_TO 90}\n{STR_VAR_1}{CLEAR_TO 90}\n{CLEAR_TO 90}\n{STR_VAR_2}{CLEAR_TO 90}"); @@ -577,20 +634,17 @@ 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"); -// Fill Menu -static const u8 sDebugText_Fill_Pc_Fast[] = _("Fill PCBoxes Fast"); -static const u8 sDebugText_Fill_Pc_Slow[] = _("Fill PCBoxes Slow (LAG!)"); -static const u8 sDebugText_Fill_Pc_Items[] = _("Fill PCItems"); -static const u8 sDebugText_Fill_PocketItems[] = _("Fill Pocket Items"); -static const u8 sDebugText_Fill_PocketPokeBalls[] = _("Fill Pocket PokeBalls"); -static const u8 sDebugText_Fill_PocketTMHM[] = _("Fill Pocket TMHM"); -static const u8 sDebugText_Fill_PocketBerries[] = _("Fill Pocket Berries"); -static const u8 sDebugText_Fill_PocketKeyItems[] = _("Fill Pocket KeyItems"); // Sound Menu static const u8 sDebugText_Sound_SFX[] = _("SFX…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Sound_SFX_ID[] = _("SFX Id: {STR_VAR_3} {START_BUTTON} Stop\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_SFX_ID[] = _("SFX ID: {STR_VAR_3} {START_BUTTON} Stop\n{STR_VAR_1} \n{STR_VAR_2}"); static const u8 sDebugText_Sound_Music[] = _("Music…{CLEAR_TO 110}{RIGHT_ARROW}"); -static const u8 sDebugText_Sound_Music_ID[] = _("Music Id: {STR_VAR_3} {START_BUTTON} Stop\n{STR_VAR_1} \n{STR_VAR_2}"); +static const u8 sDebugText_Sound_Music_ID[] = _("Music ID: {STR_VAR_3} {START_BUTTON} Stop\n{STR_VAR_1} \n{STR_VAR_2}"); +// Berry Function Menu +static const u8 sDebugText_BerryFunctions_ClearAll[] = _("Clear map trees"); +static const u8 sDebugText_BerryFunctions_Ready[] = _("Ready map trees"); +static const u8 sDebugText_BerryFunctions_NextStage[] = _("Grow map trees"); +static const u8 sDebugText_BerryFunctions_Pests[] = _("Give map trees pests"); +static const u8 sDebugText_BerryFunctions_Weeds[] = _("Give map trees weeds"); static const u8 sDebugText_Digit_1[] = _("{LEFT_ARROW}+1{RIGHT_ARROW} "); static const u8 sDebugText_Digit_10[] = _("{LEFT_ARROW}+10{RIGHT_ARROW} "); @@ -631,11 +685,11 @@ static const s32 sPowersOfTen[] = static const struct ListMenuItem sDebugMenu_Items_Main[] = { [DEBUG_MENU_ITEM_UTILITIES] = {sDebugText_Utilities, DEBUG_MENU_ITEM_UTILITIES}, - [DEBUG_MENU_ITEM_PARTY_BOXES] = {sDebugText_PartyBoxes, DEBUG_MENU_ITEM_PARTY_BOXES}, + [DEBUG_MENU_ITEM_PCBAG] = {sDebugText_PCBag, DEBUG_MENU_ITEM_PCBAG}, + [DEBUG_MENU_ITEM_PARTY] = {sDebugText_Party, DEBUG_MENU_ITEM_PARTY}, [DEBUG_MENU_ITEM_GIVE] = {sDebugText_Give, DEBUG_MENU_ITEM_GIVE}, [DEBUG_MENU_ITEM_SCRIPTS] = {sDebugText_Scripts, DEBUG_MENU_ITEM_SCRIPTS}, [DEBUG_MENU_ITEM_FLAGVAR] = {sDebugText_FlagsVars, DEBUG_MENU_ITEM_FLAGVAR}, - [DEBUG_MENU_ITEM_FILL] = {sDebugText_Fill, DEBUG_MENU_ITEM_FILL}, //[DEBUG_MENU_ITEM_BATTLE] = {sDebugText_Battle, DEBUG_MENU_ITEM_BATTLE}, [DEBUG_MENU_ITEM_SOUND] = {sDebugText_Sound, DEBUG_MENU_ITEM_SOUND}, [DEBUG_MENU_ITEM_CANCEL] = {sDebugText_Cancel, DEBUG_MENU_ITEM_CANCEL}, @@ -643,29 +697,48 @@ static const struct ListMenuItem sDebugMenu_Items_Main[] = static const struct ListMenuItem sDebugMenu_Items_Utilities[] = { - [DEBUG_UTIL_MENU_ITEM_FLY] = {sDebugText_Util_FlyToMap, DEBUG_UTIL_MENU_ITEM_FLY}, - [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, - [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = {sDebugText_Util_ROMSpace, DEBUG_UTIL_MENU_ITEM_ROM_SPACE}, - [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_PLAYER_NAME] = {sDebugText_Util_Player_Name, DEBUG_UTIL_MENU_ITEM_PLAYER_NAME}, - [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = {sDebugText_Util_Player_Gender, DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER}, - [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = {sDebugText_Util_Player_Id, DEBUG_UTIL_MENU_ITEM_PLAYER_ID}, - [DEBUG_UTIL_MENU_ITEM_CHEAT] = {sDebugText_Util_CheatStart, DEBUG_UTIL_MENU_ITEM_CHEAT}, - [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = {sDebugText_Util_ExpansionVersion,DEBUG_UTIL_MENU_ITEM_EXPANSION_VER}, + [DEBUG_UTIL_MENU_ITEM_FLY] = {sDebugText_Util_FlyToMap, DEBUG_UTIL_MENU_ITEM_FLY}, + [DEBUG_UTIL_MENU_ITEM_WARP] = {sDebugText_Util_WarpToMap, DEBUG_UTIL_MENU_ITEM_WARP}, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = {sDebugText_Util_SaveBlockSpace, DEBUG_UTIL_MENU_ITEM_SAVEBLOCK}, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = {sDebugText_Util_ROMSpace, DEBUG_UTIL_MENU_ITEM_ROM_SPACE}, + [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_PLAYER_NAME] = {sDebugText_Util_Player_Name, DEBUG_UTIL_MENU_ITEM_PLAYER_NAME}, + [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = {sDebugText_Util_Player_Gender, DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER}, + [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = {sDebugText_Util_Player_Id, DEBUG_UTIL_MENU_ITEM_PLAYER_ID}, + [DEBUG_UTIL_MENU_ITEM_CHEAT] = {sDebugText_Util_CheatStart, DEBUG_UTIL_MENU_ITEM_CHEAT}, + [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = {sDebugText_Util_ExpansionVersion, DEBUG_UTIL_MENU_ITEM_EXPANSION_VER}, + [DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS] = {sDebugText_Util_BerryFunctions, DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS}, +}; + +static const struct ListMenuItem sDebugMenu_Items_PCBag[] = +{ + [DEBUG_PCBAG_MENU_ITEM_FILL] = {sDebugText_PCBag_Fill, DEBUG_PCBAG_MENU_ITEM_FILL}, + [DEBUG_PCBAG_MENU_ITEM_ACCESS_PC] = {sDebugText_PCBag_AccessPC, DEBUG_PCBAG_MENU_ITEM_ACCESS_PC}, + [DEBUG_PCBAG_MENU_ITEM_CLEAR_BAG] = {sDebugText_PCBag_ClearBag, DEBUG_PCBAG_MENU_ITEM_CLEAR_BAG}, + [DEBUG_PCBAG_MENU_ITEM_CLEAR_BOXES] = {sDebugText_PCBag_ClearBoxes, DEBUG_PCBAG_MENU_ITEM_CLEAR_BOXES}, }; -static const struct ListMenuItem sDebugMenu_Items_PartyBoxes[] = +static const struct ListMenuItem sDebugMenu_Items_PCBag_Fill[] = { - [DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC] = {sDebugText_PartyBoxes_AccessPC, DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC}, - [DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER] = {sDebugText_PartyBoxes_MoveReminder, DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER}, - [DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_PartyBoxes_HatchAnEgg, DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG}, - [DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY] = {sDebugText_PartyBoxes_HealParty, DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY}, - [DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS] = {sDebugText_PartyBoxes_PoisonParty, DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS}, - [DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES] = {sDebugText_PartyBoxes_ClearBoxes, DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES}, + [DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_FAST] = {sDebugText_PCBag_Fill_Pc_Fast, DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_FAST}, + [DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_SLOW] = {sDebugText_PCBag_Fill_Pc_Slow, DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_SLOW}, + [DEBUG_PCBAG_MENU_ITEM_FILL_PC_ITEMS] = {sDebugText_PCBag_Fill_Pc_Items , DEBUG_PCBAG_MENU_ITEM_FILL_PC_ITEMS}, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_ITEMS] = {sDebugText_PCBag_Fill_PocketItems, DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_ITEMS}, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BALLS] = {sDebugText_PCBag_Fill_PocketPokeBalls, DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BALLS}, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_TMHM] = {sDebugText_PCBag_Fill_PocketTMHM, DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_TMHM}, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BERRIES] = {sDebugText_PCBag_Fill_PocketBerries, DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BERRIES}, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_KEY_ITEMS] = {sDebugText_PCBag_Fill_PocketKeyItems, DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_KEY_ITEMS}, +}; + +static const struct ListMenuItem sDebugMenu_Items_Party[] = +{ + [DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER] = {sDebugText_Party_MoveReminder, DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER}, + [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = {sDebugText_Party_HatchAnEgg, DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG}, + [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = {sDebugText_Party_HealParty, DEBUG_PARTY_MENU_ITEM_HEAL_PARTY}, + [DEBUG_PARTY_MENU_ITEM_POISON_MONS] = {sDebugText_Party_PoisonParty, DEBUG_PARTY_MENU_ITEM_POISON_MONS}, }; static const struct ListMenuItem sDebugMenu_Items_Scripts[] = @@ -759,34 +832,31 @@ static const struct ListMenuItem sDebugMenu_Items_Give[] = [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = {sDebugText_Give_DaycareEgg, DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG}, }; -static const struct ListMenuItem sDebugMenu_Items_Fill[] = -{ - [DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST] = {sDebugText_Fill_Pc_Fast, DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST}, - [DEBUG_FILL_MENU_ITEM_PC_BOXES_SLOW] = {sDebugText_Fill_Pc_Slow, DEBUG_FILL_MENU_ITEM_PC_BOXES_SLOW}, - [DEBUG_FILL_MENU_ITEM_PC_ITEMS] = {sDebugText_Fill_Pc_Items , DEBUG_FILL_MENU_ITEM_PC_ITEMS}, - [DEBUG_FILL_MENU_ITEM_POCKET_ITEMS] = {sDebugText_Fill_PocketItems, DEBUG_FILL_MENU_ITEM_POCKET_ITEMS}, - [DEBUG_FILL_MENU_ITEM_POCKET_BALLS] = {sDebugText_Fill_PocketPokeBalls, DEBUG_FILL_MENU_ITEM_POCKET_BALLS}, - [DEBUG_FILL_MENU_ITEM_POCKET_TMHM] = {sDebugText_Fill_PocketTMHM, DEBUG_FILL_MENU_ITEM_POCKET_TMHM}, - [DEBUG_FILL_MENU_ITEM_POCKET_BERRIES] = {sDebugText_Fill_PocketBerries, DEBUG_FILL_MENU_ITEM_POCKET_BERRIES}, - [DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS] = {sDebugText_Fill_PocketKeyItems, DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS}, -}; - static const struct ListMenuItem sDebugMenu_Items_Sound[] = { [DEBUG_SOUND_MENU_ITEM_SE] = {sDebugText_Sound_SFX, DEBUG_SOUND_MENU_ITEM_SE}, [DEBUG_SOUND_MENU_ITEM_MUS] = {sDebugText_Sound_Music, DEBUG_SOUND_MENU_ITEM_MUS}, }; +static const struct ListMenuItem sDebugMenu_Items_BerryFunctions[] = +{ + [DEBUG_BERRY_FUNCTIONS_MENU_CLEAR_ALL] = {sDebugText_BerryFunctions_ClearAll, DEBUG_BERRY_FUNCTIONS_MENU_CLEAR_ALL}, + [DEBUG_BERRY_FUNCTIONS_MENU_READY] = {sDebugText_BerryFunctions_Ready, DEBUG_BERRY_FUNCTIONS_MENU_READY}, + [DEBUG_BERRY_FUNCTIONS_MENU_NEXT_STAGE] = {sDebugText_BerryFunctions_NextStage, DEBUG_BERRY_FUNCTIONS_MENU_NEXT_STAGE}, + [DEBUG_BERRY_FUNCTIONS_MENU_PESTS] = {sDebugText_BerryFunctions_Pests, DEBUG_BERRY_FUNCTIONS_MENU_PESTS}, + [DEBUG_BERRY_FUNCTIONS_MENU_WEEDS] = {sDebugText_BerryFunctions_Weeds, DEBUG_BERRY_FUNCTIONS_MENU_WEEDS}, +}; + // ******************************* // Menu Actions static void (*const sDebugMenu_Actions_Main[])(u8) = { [DEBUG_MENU_ITEM_UTILITIES] = DebugAction_OpenUtilitiesMenu, - [DEBUG_MENU_ITEM_PARTY_BOXES] = DebugAction_OpenPartyBoxesMenu, + [DEBUG_MENU_ITEM_PCBAG] = DebugAction_OpenPCBagMenu, + [DEBUG_MENU_ITEM_PARTY] = DebugAction_OpenPartyMenu, [DEBUG_MENU_ITEM_GIVE] = DebugAction_OpenGiveMenu, [DEBUG_MENU_ITEM_SCRIPTS] = DebugAction_OpenScriptsMenu, [DEBUG_MENU_ITEM_FLAGVAR] = DebugAction_OpenFlagsVarsMenu, - [DEBUG_MENU_ITEM_FILL] = DebugAction_OpenFillMenu, //[DEBUG_MENU_ITEM_BATTLE] = DebugAction_OpenBattleMenu, [DEBUG_MENU_ITEM_SOUND] = DebugAction_OpenSoundMenu, [DEBUG_MENU_ITEM_CANCEL] = DebugAction_Cancel @@ -794,29 +864,48 @@ static void (*const sDebugMenu_Actions_Main[])(u8) = static void (*const sDebugMenu_Actions_Utilities[])(u8) = { - [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, - [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, - [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, - [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = DebugAction_Util_CheckROMSpace, - [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, - [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, - [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, - [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, - [DEBUG_UTIL_MENU_ITEM_PLAYER_NAME] = DebugAction_Util_Player_Name, - [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = DebugAction_Util_Player_Gender, - [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = DebugAction_Util_Player_Id, - [DEBUG_UTIL_MENU_ITEM_CHEAT] = DebugAction_Util_CheatStart, - [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = DebugAction_Util_ExpansionVersion, + [DEBUG_UTIL_MENU_ITEM_FLY] = DebugAction_Util_Fly, + [DEBUG_UTIL_MENU_ITEM_WARP] = DebugAction_Util_Warp_Warp, + [DEBUG_UTIL_MENU_ITEM_SAVEBLOCK] = DebugAction_Util_CheckSaveBlock, + [DEBUG_UTIL_MENU_ITEM_ROM_SPACE] = DebugAction_Util_CheckROMSpace, + [DEBUG_UTIL_MENU_ITEM_WEATHER] = DebugAction_Util_Weather, + [DEBUG_UTIL_MENU_ITEM_CHECKWALLCLOCK] = DebugAction_Util_CheckWallClock, + [DEBUG_UTIL_MENU_ITEM_SETWALLCLOCK] = DebugAction_Util_SetWallClock, + [DEBUG_UTIL_MENU_ITEM_WATCHCREDITS] = DebugAction_Util_WatchCredits, + [DEBUG_UTIL_MENU_ITEM_PLAYER_NAME] = DebugAction_Util_Player_Name, + [DEBUG_UTIL_MENU_ITEM_PLAYER_GENDER] = DebugAction_Util_Player_Gender, + [DEBUG_UTIL_MENU_ITEM_PLAYER_ID] = DebugAction_Util_Player_Id, + [DEBUG_UTIL_MENU_ITEM_CHEAT] = DebugAction_Util_CheatStart, + [DEBUG_UTIL_MENU_ITEM_EXPANSION_VER] = DebugAction_Util_ExpansionVersion, + [DEBUG_UTIL_MENU_ITEM_BERRY_FUNCTIONS] = DebugAction_Util_BerryFunctions, +}; + +static void (*const sDebugMenu_Actions_PCBag[])(u8) = +{ + [DEBUG_PCBAG_MENU_ITEM_FILL] = DebugAction_OpenPCBagFillMenu, + [DEBUG_PCBAG_MENU_ITEM_ACCESS_PC] = DebugAction_PCBag_AccessPC, + [DEBUG_PCBAG_MENU_ITEM_CLEAR_BAG] = DebugAction_PCBag_ClearBag, + [DEBUG_PCBAG_MENU_ITEM_CLEAR_BOXES] = DebugAction_PCBag_ClearBoxes, }; -static void (*const sDebugMenu_Actions_PartyBoxes[])(u8) = +static void (*const sDebugMenu_Actions_PCBag_Fill[])(u8) = { - [DEBUG_PARTY_BOXES_MENU_ITEM_ACCESS_PC] = DebugAction_PartyBoxes_AccessPC, - [DEBUG_PARTY_BOXES_MENU_ITEM_MOVE_REMINDER] = DebugAction_PartyBoxes_MoveReminder, - [DEBUG_PARTY_BOXES_MENU_ITEM_HATCH_AN_EGG] = DebugAction_PartyBoxes_HatchAnEgg, - [DEBUG_PARTY_BOXES_MENU_ITEM_HEAL_PARTY] = DebugAction_PartyBoxes_HealParty, - [DEBUG_PARTY_BOXES_MENU_ITEM_POISON_MONS] = DebugAction_PartyBoxes_PoisonMons, - [DEBUG_PARTY_BOXES_MENU_ITEM_CLEAR_BOXES] = DebugAction_PartyBoxes_ClearBoxes, + [DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_FAST] = DebugAction_PCBag_Fill_PCBoxes_Fast, + [DEBUG_PCBAG_MENU_ITEM_FILL_PC_BOXES_SLOW] = DebugAction_PCBag_Fill_PCBoxes_Slow, + [DEBUG_PCBAG_MENU_ITEM_FILL_PC_ITEMS] = DebugAction_PCBag_Fill_PCItemStorage, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_ITEMS] = DebugAction_PCBag_Fill_PocketItems, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BALLS] = DebugAction_PCBag_Fill_PocketPokeBalls, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_TMHM] = DebugAction_PCBag_Fill_PocketTMHM, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_BERRIES] = DebugAction_PCBag_Fill_PocketBerries, + [DEBUG_PCBAG_MENU_ITEM_FILL_POCKET_KEY_ITEMS] = DebugAction_PCBag_Fill_PocketKeyItems, +}; + +static void (*const sDebugMenu_Actions_Party[])(u8) = +{ + [DEBUG_PARTY_MENU_ITEM_MOVE_REMINDER] = DebugAction_Party_MoveReminder, + [DEBUG_PARTY_MENU_ITEM_HATCH_AN_EGG] = DebugAction_Party_HatchAnEgg, + [DEBUG_PARTY_MENU_ITEM_HEAL_PARTY] = DebugAction_Party_HealParty, + [DEBUG_PARTY_MENU_ITEM_POISON_MONS] = DebugAction_Party_PoisonMons, }; static void (*const sDebugMenu_Actions_Scripts[])(u8) = @@ -863,24 +952,21 @@ static void (*const sDebugMenu_Actions_Give[])(u8) = [DEBUG_GIVE_MENU_ITEM_DAYCARE_EGG] = DebugAction_Give_DayCareEgg, }; -static void (*const sDebugMenu_Actions_Fill[])(u8) = -{ - [DEBUG_FILL_MENU_ITEM_PC_BOXES_FAST] = DebugAction_Fill_PCBoxes_Fast, - [DEBUG_FILL_MENU_ITEM_PC_BOXES_SLOW] = DebugAction_Fill_PCBoxes_Slow, - [DEBUG_FILL_MENU_ITEM_PC_ITEMS] = DebugAction_Fill_PCItemStorage, - [DEBUG_FILL_MENU_ITEM_POCKET_ITEMS] = DebugAction_Fill_PocketItems, - [DEBUG_FILL_MENU_ITEM_POCKET_BALLS] = DebugAction_Fill_PocketPokeBalls, - [DEBUG_FILL_MENU_ITEM_POCKET_TMHM] = DebugAction_Fill_PocketTMHM, - [DEBUG_FILL_MENU_ITEM_POCKET_BERRIES] = DebugAction_Fill_PocketBerries, - [DEBUG_FILL_MENU_ITEM_POCKET_KEY_ITEMS] = DebugAction_Fill_PocketKeyItems, -}; - static void (*const sDebugMenu_Actions_Sound[])(u8) = { [DEBUG_SOUND_MENU_ITEM_SE] = DebugAction_Sound_SE, [DEBUG_SOUND_MENU_ITEM_MUS] = DebugAction_Sound_MUS, }; +static void (*const sDebugMenu_Actions_BerryFunctions[])(u8) = +{ + [DEBUG_BERRY_FUNCTIONS_MENU_CLEAR_ALL] = DebugAction_BerryFunctions_ClearAll, + [DEBUG_BERRY_FUNCTIONS_MENU_READY] = DebugAction_BerryFunctions_Ready, + [DEBUG_BERRY_FUNCTIONS_MENU_NEXT_STAGE] = DebugAction_BerryFunctions_NextStage, + [DEBUG_BERRY_FUNCTIONS_MENU_PESTS] = DebugAction_BerryFunctions_Pests, + [DEBUG_BERRY_FUNCTIONS_MENU_WEEDS] = DebugAction_BerryFunctions_Weeds, +}; + // ******************************* // Windows static const struct WindowTemplate sDebugMenuWindowTemplateMain = @@ -954,11 +1040,25 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_Utilities = .totalItems = ARRAY_COUNT(sDebugMenu_Items_Utilities), }; -static const struct ListMenuTemplate sDebugMenu_ListTemplate_PartyBoxes = +static const struct ListMenuTemplate sDebugMenu_ListTemplate_PCBag = { - .items = sDebugMenu_Items_PartyBoxes, + .items = sDebugMenu_Items_PCBag, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, - .totalItems = ARRAY_COUNT(sDebugMenu_Items_PartyBoxes), + .totalItems = ARRAY_COUNT(sDebugMenu_Items_PCBag), +}; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_PCBag_Fill = +{ + .items = sDebugMenu_Items_PCBag_Fill, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_PCBag_Fill), +}; + +static const struct ListMenuTemplate sDebugMenu_ListTemplate_Party = +{ + .items = sDebugMenu_Items_Party, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_Party), }; static const struct ListMenuTemplate sDebugMenu_ListTemplate_Scripts = @@ -1003,13 +1103,6 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_Give = .totalItems = ARRAY_COUNT(sDebugMenu_Items_Give), }; -static const struct ListMenuTemplate sDebugMenu_ListTemplate_Fill = -{ - .items = sDebugMenu_Items_Fill, - .moveCursorFunc = ListMenuDefaultCursorMoveFunc, - .totalItems = ARRAY_COUNT(sDebugMenu_Items_Fill), -}; - static const struct ListMenuTemplate sDebugMenu_ListTemplate_Sound = { .items = sDebugMenu_Items_Sound, @@ -1017,6 +1110,12 @@ static const struct ListMenuTemplate sDebugMenu_ListTemplate_Sound = .totalItems = ARRAY_COUNT(sDebugMenu_Items_Sound), }; +static const struct ListMenuTemplate sDebugMenu_ListTemplate_BerryFunctions = +{ + .items = sDebugMenu_Items_BerryFunctions, + .moveCursorFunc = ListMenuDefaultCursorMoveFunc, + .totalItems = ARRAY_COUNT(sDebugMenu_Items_BerryFunctions), +}; // ******************************* // Functions universal @@ -1389,7 +1488,7 @@ static void DebugTask_HandleMenuInput_Utilities(u8 taskId) } } -static void DebugTask_HandleMenuInput_PartyBoxes(u8 taskId) +static void DebugTask_HandleMenuInput_PCBag(u8 taskId) { void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); @@ -1397,7 +1496,45 @@ static void DebugTask_HandleMenuInput_PartyBoxes(u8 taskId) if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - if ((func = sDebugMenu_Actions_PartyBoxes[input]) != NULL) + if ((func = sDebugMenu_Actions_PCBag[input]) != NULL) + func(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ReShowMainMenu(); + } +} + +static void DebugTask_HandleMenuInput_PCBag_Fill(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_PCBag_Fill[input]) != NULL) + func(taskId); + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_PCBag, sDebugMenu_ListTemplate_PCBag); + } +} + +static void DebugTask_HandleMenuInput_Party(u8 taskId) +{ + void (*func)(u8); + u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); + + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if ((func = sDebugMenu_Actions_Party[input]) != NULL) func(taskId); } else if (JOY_NEW(B_BUTTON)) @@ -1637,7 +1774,7 @@ static void DebugTask_HandleMenuInput_Give(u8 taskId) } } -static void DebugTask_HandleMenuInput_Fill(u8 taskId) +static void DebugTask_HandleMenuInput_Sound(u8 taskId) { void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); @@ -1645,7 +1782,7 @@ static void DebugTask_HandleMenuInput_Fill(u8 taskId) if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - if ((func = sDebugMenu_Actions_Fill[input]) != NULL) + if ((func = sDebugMenu_Actions_Sound[input]) != NULL) func(taskId); } else if (JOY_NEW(B_BUTTON)) @@ -1656,7 +1793,7 @@ static void DebugTask_HandleMenuInput_Fill(u8 taskId) } } -static void DebugTask_HandleMenuInput_Sound(u8 taskId) +static void DebugTask_HandleMenuInput_BerryFunctions(u8 taskId) { void (*func)(u8); u32 input = ListMenu_ProcessInput(gTasks[taskId].tMenuTaskId); @@ -1664,7 +1801,7 @@ static void DebugTask_HandleMenuInput_Sound(u8 taskId) if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - if ((func = sDebugMenu_Actions_Sound[input]) != NULL) + if ((func = sDebugMenu_Actions_BerryFunctions[input]) != NULL) func(taskId); } else if (JOY_NEW(B_BUTTON)) @@ -1683,10 +1820,16 @@ static void DebugAction_OpenUtilitiesMenu(u8 taskId) Debug_ShowMenu(DebugTask_HandleMenuInput_Utilities, sDebugMenu_ListTemplate_Utilities); } -static void DebugAction_OpenPartyBoxesMenu(u8 taskId) +static void DebugAction_OpenPCBagMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_PCBag, sDebugMenu_ListTemplate_PCBag); +} + +static void DebugAction_OpenPartyMenu(u8 taskId) { Debug_DestroyMenu(taskId); - Debug_ShowMenu(DebugTask_HandleMenuInput_PartyBoxes, sDebugMenu_ListTemplate_PartyBoxes); + Debug_ShowMenu(DebugTask_HandleMenuInput_Party, sDebugMenu_ListTemplate_Party); } static void DebugAction_OpenScriptsMenu(u8 taskId) @@ -1702,23 +1845,22 @@ static void DebugAction_OpenFlagsVarsMenu(u8 taskId) Debug_ShowMenu(DebugTask_HandleMenuInput_FlagsVars, gMultiuseListMenuTemplate); } - static void DebugAction_OpenGiveMenu(u8 taskId) { Debug_DestroyMenu(taskId); Debug_ShowMenu(DebugTask_HandleMenuInput_Give, sDebugMenu_ListTemplate_Give); } -static void DebugAction_OpenFillMenu(u8 taskId) +static void DebugAction_OpenSoundMenu(u8 taskId) { Debug_DestroyMenu(taskId); - Debug_ShowMenu(DebugTask_HandleMenuInput_Fill, sDebugMenu_ListTemplate_Fill); + Debug_ShowMenu(DebugTask_HandleMenuInput_Sound, sDebugMenu_ListTemplate_Sound); } -static void DebugAction_OpenSoundMenu(u8 taskId) +static void DebugAction_Util_BerryFunctions(u8 taskId) { Debug_DestroyMenu(taskId); - Debug_ShowMenu(DebugTask_HandleMenuInput_Sound, sDebugMenu_ListTemplate_Sound); + Debug_ShowMenu(DebugTask_HandleMenuInput_BerryFunctions, sDebugMenu_ListTemplate_BerryFunctions); } // ******************************* @@ -2151,7 +2293,7 @@ static void DebugAction_Util_Player_Gender(u8 taskId) static void DebugAction_Util_Player_Id(u8 taskId) { - u32 trainerId = ((Random() << 16) | Random()); + u32 trainerId = Random32(); SetTrainerId(trainerId, gSaveBlock2Ptr->playerTrainerId); Debug_DestroyMenu_Full(taskId); ScriptContext_Enable(); @@ -2945,7 +3087,7 @@ static void ResetMonDataStruct(struct DebugMonData *sDebugMonData) { sDebugMonData->species = 1; sDebugMonData->level = MIN_LEVEL; - sDebugMonData->isShiny = 0; + sDebugMonData->isShiny = FALSE; sDebugMonData->nature = 0; sDebugMonData->abilityNum = 0; sDebugMonData->mon_iv_hp = 0; @@ -2954,6 +3096,12 @@ static void ResetMonDataStruct(struct DebugMonData *sDebugMonData) sDebugMonData->mon_iv_speed = 0; sDebugMonData->mon_iv_satk = 0; sDebugMonData->mon_iv_sdef = 0; + sDebugMonData->mon_ev_hp = 0; + sDebugMonData->mon_ev_atk = 0; + sDebugMonData->mon_ev_def = 0; + sDebugMonData->mon_ev_speed = 0; + sDebugMonData->mon_ev_satk = 0; + sDebugMonData->mon_ev_sdef = 0; } #define tIsComplex data[5] @@ -3116,8 +3264,8 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) if (JOY_NEW(DPAD_UP)) { gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; - if (gTasks[taskId].tInput > 100) - gTasks[taskId].tInput = 100; + if (gTasks[taskId].tInput > MAX_LEVEL) + gTasks[taskId].tInput = MAX_LEVEL; } if (JOY_NEW(DPAD_DOWN)) { @@ -3183,27 +3331,14 @@ static void DebugAction_Give_Pokemon_SelectLevel(u8 taskId) static void DebugAction_Give_Pokemon_SelectShiny(u8 taskId) { + static const u8 *txtStr; + if (JOY_NEW(DPAD_ANY)) { PlaySE(SE_SELECT); - - if (JOY_NEW(DPAD_UP)) - { - gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; - if (gTasks[taskId].tInput > 1) - gTasks[taskId].tInput = 1; - } - if (JOY_NEW(DPAD_DOWN)) - { - gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; - if (gTasks[taskId].tInput < 0) - gTasks[taskId].tInput = 0; - } - - if (gTasks[taskId].tInput == 1) - StringCopyPadded(gStringVar2, sDebugText_True, CHAR_SPACE, 15); - else - StringCopyPadded(gStringVar2, sDebugText_False, CHAR_SPACE, 15); + gTasks[taskId].tInput ^= JOY_NEW(DPAD_UP | DPAD_DOWN) > 0; + txtStr = (gTasks[taskId].tInput == TRUE) ? sDebugText_True : sDebugText_False; + StringCopyPadded(gStringVar2, txtStr, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 0); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonShiny); @@ -3271,7 +3406,7 @@ static void DebugAction_Give_Pokemon_SelectNature(u8 taskId) ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); abilityId = GetAbilityBySpecies(sDebugMonData->species, 0); - StringCopy(gStringVar1, gAbilityNames[abilityId]); + StringCopy(gStringVar1, gAbilities[abilityId].name); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); @@ -3316,7 +3451,7 @@ static void DebugAction_Give_Pokemon_SelectAbility(u8 taskId) StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 2); StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); - StringCopy(gStringVar1, gAbilityNames[abilityId]); + StringCopy(gStringVar1, gAbilities[abilityId].name); StringExpandPlaceholders(gStringVar4, sDebugText_PokemonAbility); AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); } @@ -3352,8 +3487,8 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) if (JOY_NEW(DPAD_UP)) { gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; - if (gTasks[taskId].tInput > 31) - gTasks[taskId].tInput = 31; + if (gTasks[taskId].tInput > MAX_PER_STAT_IVS) + gTasks[taskId].tInput = MAX_PER_STAT_IVS; } if (JOY_NEW(DPAD_DOWN)) { @@ -3466,13 +3601,184 @@ static void DebugAction_Give_Pokemon_SelectIVs(u8 taskId) gTasks[taskId].tIterator = 0; StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); - StringCopy(gStringVar1, gMoveNames[gTasks[taskId].tInput]); - StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); - StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, sDebugText_EV_HP); AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectEVs; + } + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + Free(sDebugMonData); + DebugAction_DestroyExtraWindow(taskId); + } +} - gTasks[taskId].func = DebugAction_Give_Pokemon_Move; +static u32 GetDebugPokemonTotalEV(void) +{ + return (sDebugMonData->mon_ev_hp + + sDebugMonData->mon_ev_atk + + sDebugMonData->mon_ev_def + + sDebugMonData->mon_ev_speed + + sDebugMonData->mon_ev_satk + + sDebugMonData->mon_ev_sdef); +} + +static void DebugAction_Give_Pokemon_SelectEVs(u8 taskId) +{ + u16 totalEV = GetDebugPokemonTotalEV(); + + if (JOY_NEW(DPAD_ANY)) + { + PlaySE(SE_SELECT); + + if (JOY_NEW(DPAD_UP)) + { + gTasks[taskId].tInput += sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput > MAX_PER_STAT_EVS) + gTasks[taskId].tInput = MAX_PER_STAT_EVS; + } + if (JOY_NEW(DPAD_DOWN)) + { + gTasks[taskId].tInput -= sPowersOfTen[gTasks[taskId].tDigit]; + if (gTasks[taskId].tInput < 0) + gTasks[taskId].tInput = 0; + } + if (JOY_NEW(DPAD_LEFT)) + { + if (gTasks[taskId].tDigit > 0) + gTasks[taskId].tDigit -= 1; + } + if (JOY_NEW(DPAD_RIGHT)) + { + if (gTasks[taskId].tDigit < 3) + gTasks[taskId].tDigit += 1; + } + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + switch (gTasks[taskId].tIterator) + { + case STAT_HP: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_HP); + break; + case STAT_ATK: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_Attack); + break; + case STAT_DEF: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_Defense); + break; + case STAT_SPEED: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_Speed); + break; + case STAT_SPATK: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_SpAttack); + break; + case STAT_SPDEF: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_SpDefense); + break; + } + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + } + + //If A or B button + if (JOY_NEW(A_BUTTON)) + { + switch (gTasks[taskId].tIterator) + { + case STAT_HP: + sDebugMonData->mon_ev_hp = gTasks[taskId].tInput; + break; + case STAT_ATK: + sDebugMonData->mon_ev_atk = gTasks[taskId].tInput; + break; + case STAT_DEF: + sDebugMonData->mon_ev_def = gTasks[taskId].tInput; + break; + case STAT_SPEED: + sDebugMonData->mon_ev_speed = gTasks[taskId].tInput; + break; + case STAT_SPATK: + sDebugMonData->mon_ev_satk = gTasks[taskId].tInput; + break; + case STAT_SPDEF: + sDebugMonData->mon_ev_sdef = gTasks[taskId].tInput; + break; + } + + //Check if all EVs set + if (gTasks[taskId].tIterator != NUM_STATS - 1) + { + gTasks[taskId].tIterator++; + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; + + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + switch (gTasks[taskId].tIterator) + { + case STAT_HP: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_HP); + break; + case STAT_ATK: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_Attack); + break; + case STAT_DEF: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_Defense); + break; + case STAT_SPEED: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_Speed); + break; + case STAT_SPATK: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_SpAttack); + break; + case STAT_SPDEF: + StringExpandPlaceholders(gStringVar4, sDebugText_EV_SpDefense); + break; + } + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectEVs; + } + else + { + gTasks[taskId].tInput = 0; + gTasks[taskId].tDigit = 0; + gTasks[taskId].tIterator = 0; + + if (totalEV > MAX_TOTAL_EVS) + { + sDebugMonData->mon_ev_hp = 0; + sDebugMonData->mon_ev_atk = 0; + sDebugMonData->mon_ev_def = 0; + sDebugMonData->mon_ev_speed = 0; + sDebugMonData->mon_ev_satk = 0; + sDebugMonData->mon_ev_sdef = 0; + + PlaySE(SE_FAILURE); + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + StringCopyPadded(gStringVar3, gStringVar3, CHAR_SPACE, 15); + StringExpandPlaceholders(gStringVar4, sDebugText_EV_HP); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_SelectEVs; + } + else + { + StringCopy(gStringVar2, gText_DigitIndicator[gTasks[taskId].tDigit]); + StringCopy(gStringVar1, gMoveNames[gTasks[taskId].tInput]); + StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15); + ConvertIntToDecimalStringN(gStringVar3, gTasks[taskId].tInput, STR_CONV_MODE_LEADING_ZEROS, 3); + StringExpandPlaceholders(gStringVar4, sDebugText_PokemonMove_0); + AddTextPrinterParameterized(gTasks[taskId].tSubWindowId, DEBUG_MENU_FONT, gStringVar4, 1, 1, 0, NULL); + + gTasks[taskId].func = DebugAction_Give_Pokemon_Move; + } } } else if (JOY_NEW(B_BUTTON)) @@ -3613,9 +3919,11 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu u16 moves[4]; u8 IVs[6]; u8 iv_val; + u8 EVs[6]; + u8 ev_val; u16 species = sDebugMonData->species; u8 level = sDebugMonData->level; - u8 isShiny = sDebugMonData->isShiny; //Shiny: no 0, yes 1 + bool8 isShiny = sDebugMonData->isShiny; u8 nature = sDebugMonData->nature; u8 abilityNum = sDebugMonData->abilityNum; moves[0] = sDebugMonData->mon_move_0; @@ -3628,30 +3936,20 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu IVs[3] = sDebugMonData->mon_iv_speed; IVs[4] = sDebugMonData->mon_iv_satk; IVs[5] = sDebugMonData->mon_iv_sdef; + EVs[0] = sDebugMonData->mon_ev_hp; + EVs[1] = sDebugMonData->mon_ev_atk; + EVs[2] = sDebugMonData->mon_ev_def; + EVs[3] = sDebugMonData->mon_ev_speed; + EVs[4] = sDebugMonData->mon_ev_satk; + EVs[5] = sDebugMonData->mon_ev_sdef; //Nature if (nature == NUM_NATURES || nature == 0xFF) nature = Random() % NUM_NATURES; + CreateMonWithNature(&mon, species, level, 32, nature); //Shininess - if (isShiny == 1) - { - u32 personality; - u32 otid = gSaveBlock2Ptr->playerTrainerId[0] - | (gSaveBlock2Ptr->playerTrainerId[1] << 8) - | (gSaveBlock2Ptr->playerTrainerId[2] << 16) - | (gSaveBlock2Ptr->playerTrainerId[3] << 24); - - do - { - personality = Random32(); - personality = ((((Random() % 8) ^ (HIHALF(otid) ^ LOHALF(otid))) ^ LOHALF(personality)) << 16) | LOHALF(personality); - } while (nature != GetNatureFromPersonality(personality)); - - CreateMon(&mon, species, level, 32, 1, personality, OT_ID_PRESET, otid); - } - else - CreateMonWithNature(&mon, species, level, 32, nature); + SetMonData(&mon, MON_DATA_IS_SHINY, &isShiny); //IVs for (i = 0; i < NUM_STATS; i++) @@ -3660,7 +3958,14 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu if (iv_val != 32 && iv_val != 0xFF) SetMonData(&mon, MON_DATA_HP_IV + i, &iv_val); } - CalculateMonStats(&mon); + + //EVs + for (i = 0; i < NUM_STATS; i++) + { + ev_val = EVs[i]; + if (ev_val) + SetMonData(&mon, MON_DATA_HP_EV + i, &ev_val); + } //Moves for (i = 0; i < MAX_MON_MOVES; i++) @@ -3681,6 +3986,9 @@ static void DebugAction_Give_Pokemon_ComplexCreateMon(u8 taskId) //https://githu SetMonData(&mon, MON_DATA_ABILITY_NUM, &abilityNum); + //Update mon stats before giving it to the player + CalculateMonStats(&mon); + // give player the mon SetMonData(&mon, MON_DATA_OT_NAME, gSaveBlock2Ptr->playerName); SetMonData(&mon, MON_DATA_OT_GENDER, &gSaveBlock2Ptr->playerGender); @@ -3752,8 +4060,15 @@ static void DebugAction_Give_DayCareEgg(u8 taskId) } // ******************************* -// Actions Fill -static void DebugAction_Fill_PCBoxes_Fast(u8 taskId) //Credit: Sierraffinity +// Actions PCBag + +static void DebugAction_OpenPCBagFillMenu(u8 taskId) +{ + Debug_DestroyMenu(taskId); + Debug_ShowMenu(DebugTask_HandleMenuInput_PCBag_Fill, sDebugMenu_ListTemplate_PCBag_Fill); +} + +static void DebugAction_PCBag_Fill_PCBoxes_Fast(u8 taskId) //Credit: Sierraffinity { int boxId, boxPosition; u32 personality; @@ -3786,7 +4101,7 @@ static void DebugAction_Fill_PCBoxes_Fast(u8 taskId) //Credit: Sierraffinity ScriptContext_Enable(); } -static void DebugAction_Fill_PCBoxes_Slow(u8 taskId) +static void DebugAction_PCBag_Fill_PCBoxes_Slow(u8 taskId) { int boxId, boxPosition; struct BoxPokemon boxMon; @@ -3817,7 +4132,7 @@ static void DebugAction_Fill_PCBoxes_Slow(u8 taskId) Debug_DestroyMenu_Full_Script(taskId, Debug_BoxFilledMessage); } -static void DebugAction_Fill_PCItemStorage(u8 taskId) +static void DebugAction_PCBag_Fill_PCItemStorage(u8 taskId) { u16 itemId; @@ -3828,7 +4143,7 @@ static void DebugAction_Fill_PCItemStorage(u8 taskId) } } -static void DebugAction_Fill_PocketItems(u8 taskId) +static void DebugAction_PCBag_Fill_PocketItems(u8 taskId) { u16 itemId; @@ -3839,7 +4154,7 @@ static void DebugAction_Fill_PocketItems(u8 taskId) } } -static void DebugAction_Fill_PocketPokeBalls(u8 taskId) +static void DebugAction_PCBag_Fill_PocketPokeBalls(u8 taskId) { u16 itemId; @@ -3850,7 +4165,7 @@ static void DebugAction_Fill_PocketPokeBalls(u8 taskId) } } -static void DebugAction_Fill_PocketTMHM(u8 taskId) +static void DebugAction_PCBag_Fill_PocketTMHM(u8 taskId) { u16 itemId; @@ -3861,7 +4176,7 @@ static void DebugAction_Fill_PocketTMHM(u8 taskId) } } -static void DebugAction_Fill_PocketBerries(u8 taskId) +static void DebugAction_PCBag_Fill_PocketBerries(u8 taskId) { u16 itemId; @@ -3872,7 +4187,7 @@ static void DebugAction_Fill_PocketBerries(u8 taskId) } } -static void DebugAction_Fill_PocketKeyItems(u8 taskId) +static void DebugAction_PCBag_Fill_PocketKeyItems(u8 taskId) { u16 itemId; @@ -3883,6 +4198,24 @@ static void DebugAction_Fill_PocketKeyItems(u8 taskId) } } +static void DebugAction_PCBag_AccessPC(u8 taskId) +{ + Debug_DestroyMenu_Full_Script(taskId, EventScript_PC); +} + +static void DebugAction_PCBag_ClearBag(u8 taskId) +{ + PlaySE(MUS_LEVEL_UP); + ClearBag(); +} + +static void DebugAction_PCBag_ClearBoxes(u8 taskId) +{ + ResetPokemonStorageSystem(); + Debug_DestroyMenu_Full(taskId); + ScriptContext_Enable(); +} + // ******************************* // Actions Sound static const u8 *const sBGMNames[]; @@ -4620,24 +4953,124 @@ SOUND_LIST_SE #undef X // ******************************* -// Actions Party/Boxes +// Actions BerryFunctions -static void DebugAction_PartyBoxes_AccessPC(u8 taskId) +static void DebugAction_BerryFunctions_ClearAll(u8 taskId) { - Debug_DestroyMenu_Full_Script(taskId, EventScript_PC); + u8 i; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) + { + RemoveBerryTree(GetObjectEventBerryTreeId(i)); + SetBerryTreeJustPicked(gObjectEvents[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + } + } + + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); +} + +static void DebugAction_BerryFunctions_Ready(u8 taskId) +{ + u8 i; + struct BerryTree *tree; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) + { + tree = &gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(i)]; + if (tree->stage != BERRY_STAGE_NO_BERRY) + { + tree->stage = BERRY_STAGE_BERRIES - 1; + BerryTreeGrow(tree); + } + } + } + + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); } -static void DebugAction_PartyBoxes_MoveReminder(u8 taskId) +static void DebugAction_BerryFunctions_NextStage(u8 taskId) +{ + u8 i; + struct BerryTree *tree; + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) + { + tree = &gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(i)]; + BerryTreeGrow(tree); + } + } + + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); +} + +static void DebugAction_BerryFunctions_Pests(u8 taskId) +{ + u8 i; + + if (!OW_BERRY_PESTS) + { + Debug_DestroyMenu_Full_Script(taskId, Debug_BerryPestsDisabled); + return; + } + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) + { + if (gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(i)].stage != BERRY_STAGE_PLANTED) + gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(i)].pests = TRUE; + } + } + + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); +} + +static void DebugAction_BerryFunctions_Weeds(u8 taskId) +{ + u8 i; + + if (!OW_BERRY_WEEDS) + { + Debug_DestroyMenu_Full_Script(taskId, Debug_BerryWeedsDisabled); + return; + } + + for (i = 0; i < OBJECT_EVENTS_COUNT; i++) + { + if (gObjectEvents[i].movementType == MOVEMENT_TYPE_BERRY_TREE_GROWTH) + { + gSaveBlock1Ptr->berryTrees[GetObjectEventBerryTreeId(i)].weeds = TRUE; + } + } + + ScriptContext_Enable(); + Debug_DestroyMenu_Full(taskId); +} + +// ******************************* +// Actions Party/Boxes + +static void DebugAction_Party_MoveReminder(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, FallarborTown_MoveRelearnersHouse_EventScript_ChooseMon); } -static void DebugAction_PartyBoxes_HatchAnEgg(u8 taskId) +static void DebugAction_Party_HatchAnEgg(u8 taskId) { Debug_DestroyMenu_Full_Script(taskId, Debug_HatchAnEgg); } -static void DebugAction_PartyBoxes_HealParty(u8 taskId) +static void DebugAction_Party_HealParty(u8 taskId) { PlaySE(SE_USE_ITEM); HealPlayerParty(); @@ -4645,7 +5078,7 @@ static void DebugAction_PartyBoxes_HealParty(u8 taskId) Debug_DestroyMenu_Full(taskId); } -static void DebugAction_PartyBoxes_PoisonMons(u8 taskId) +static void DebugAction_Party_PoisonMons(u8 taskId) { int i; for (i = 0; i < PARTY_SIZE; i++) @@ -4663,11 +5096,4 @@ static void DebugAction_PartyBoxes_PoisonMons(u8 taskId) Debug_DestroyMenu_Full(taskId); } -static void DebugAction_PartyBoxes_ClearBoxes(u8 taskId) -{ - ResetPokemonStorageSystem(); - Debug_DestroyMenu_Full(taskId); - ScriptContext_Enable(); -} - #endif //DEBUG_OVERWORLD_MENU == TRUE diff --git a/src/dexnav.c b/src/dexnav.c index 1bd6d8f1af21..d2fe7a801c5b 100644 --- a/src/dexnav.c +++ b/src/dexnav.c @@ -519,7 +519,7 @@ static void AddSearchWindowText(u16 species, u8 proximity, u8 searchLevel, bool8 if (searchLevel > 2) { // ability name - StringCopy(gStringVar1, gAbilityNames[GetAbilityBySpecies(species, sDexNavSearchDataPtr->abilityNum)]); + StringCopy(gStringVar1, gAbilities[GetAbilityBySpecies(species, sDexNavSearchDataPtr->abilityNum)].name); AddTextPrinterParameterized3(windowId, 0, WINDOW_COL_1 + 16, 12, sSearchFontColor, TEXT_SKIP_DRAW, gStringVar1); // item name @@ -2177,7 +2177,7 @@ static void PrintCurrentSpeciesInfo(void) { #ifdef BATTLE_ENGINE if (gSpeciesInfo[species].abilities[2] != ABILITY_NONE) - AddTextPrinterParameterized3(WINDOW_INFO, 0, 0, HA_INFO_Y, sFontColor_Black, 0, gAbilityNames[gSpeciesInfo[species].abilities[2]]); + AddTextPrinterParameterized3(WINDOW_INFO, 0, 0, HA_INFO_Y, sFontColor_Black, 0, gAbilities[gSpeciesInfo[species].abilities[2]].name); #else if (gSpeciesInfo[species].abilityHidden != ABILITY_NONE) AddTextPrinterParameterized3(WINDOW_INFO, 0, 0, HA_INFO_Y, sFontColor_Black, 0, gAbilityNames[gSpeciesInfo[species].abilityHidden]); diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 6b1094ea5726..20696a42e3dc 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -5112,7 +5112,7 @@ static bool8 EndFollowerTransformEffect(struct ObjectEvent *objectEvent, struct sprite->data[7] = 0; return FALSE; } - +//FIX THIS DUMBFUCK static bool8 TryStartFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { u32 multi; if (OW_SPECIES(objectEvent) == SPECIES_CASTFORM && OW_FORM(objectEvent) != (multi = GetOverworldCastformForm())) { @@ -5120,13 +5120,13 @@ static bool8 TryStartFollowerTransformEffect(struct ObjectEvent *objectEvent, st objectEvent->graphicsId &= OBJ_EVENT_GFX_SPECIES_MASK; objectEvent->graphicsId |= multi << OBJ_EVENT_GFX_SPECIES_BITS; return TRUE; - } else if ((gRngValue >> 16) < 18 && GetLocalWildMon(FALSE) + } else /*if ((gRngValue_old >> 16) < 18 && GetLocalWildMon(FALSE) && (OW_SPECIES(objectEvent) == SPECIES_MEW || OW_SPECIES(objectEvent) == SPECIES_DITTO)) { sprite->data[7] = TRANSFORM_TYPE_RANDOM_WILD << 8; - PlaySE(SE_M_MINIMIZE); - return TRUE; - } - return FALSE; + PlaySE(SE_M_MINIMIZE);*/ + return FALSE; + //} + //return FALSE; } static bool8 UpdateFollowerTransformEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite) { diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 021be1d479bd..ecba10620b77 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -209,7 +209,8 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u { u8 name[POKEMON_NAME_BUFFER_SIZE]; u16 currSpecies; - u32 trainerId, personality; + u32 personality; + bool32 isShiny; u8 id; SetHBlankCallback(NULL); @@ -255,13 +256,16 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u // preEvo sprite currSpecies = GetMonData(mon, MON_DATA_SPECIES); - trainerId = GetMonData(mon, MON_DATA_OT_ID); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY); personality = GetMonData(mon, MON_DATA_PERSONALITY); LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_LEFT], currSpecies, personality, TRUE); - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(currSpecies, trainerId, personality), OBJ_PLTT_ID(1), PLTT_SIZE_4BPP, personality); + if (!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(currSpecies, isShiny, personality), OBJ_PLTT_ID(1), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(currSpecies, isShiny, personality), OBJ_PLTT_ID(1), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(currSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -276,7 +280,10 @@ void EvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, bool8 canStopEvo, u postEvoSpecies, personality, TRUE); - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + if (!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -310,11 +317,12 @@ static void CB2_EvolutionSceneLoadGraphics(void) { u8 id; u16 postEvoSpecies; - u32 trainerId, personality; + u32 personality; struct Pokemon *mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; + bool8 isShiny; postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies; - trainerId = GetMonData(mon, MON_DATA_OT_ID); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY); personality = GetMonData(mon, MON_DATA_PERSONALITY); SetHBlankCallback(NULL); @@ -352,7 +360,10 @@ static void CB2_EvolutionSceneLoadGraphics(void) postEvoSpecies, personality, TRUE); - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + if (!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -416,13 +427,16 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) break; case 4: { - u32 trainerId = GetMonData(mon, MON_DATA_OT_ID); + bool8 isShiny = GetMonData(mon, MON_DATA_IS_SHINY); u32 personality = GetMonData(mon, MON_DATA_PERSONALITY); LoadSpecialPokePic(gMonSpritesGfxPtr->sprites.ptr[B_POSITION_OPPONENT_RIGHT], postEvoSpecies, personality, TRUE); - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + if (!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); gMain.state++; } break; @@ -464,8 +478,9 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit { u8 name[POKEMON_NAME_BUFFER_SIZE]; u16 currSpecies; - u32 trainerId, personality; + u32 personality; u8 id; + bool8 isShiny; GetMonData(mon, MON_DATA_NICKNAME, name); StringCopy_Nickname(gStringVar1, name); @@ -476,7 +491,7 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit // preEvo sprite currSpecies = GetMonData(mon, MON_DATA_SPECIES); personality = GetMonData(mon, MON_DATA_PERSONALITY); - trainerId = GetMonData(mon, MON_DATA_OT_ID); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY); sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo)); sEvoStructPtr->preEvoSpriteId = preEvoSpriteId; @@ -486,7 +501,10 @@ void TradeEvolutionScene(struct Pokemon *mon, u16 postEvoSpecies, u8 preEvoSprit personality, TRUE); - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, trainerId, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + if (!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(postEvoSpecies, isShiny, personality), OBJ_PLTT_ID(2), PLTT_SIZE_4BPP); SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; @@ -564,8 +582,6 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, GetSpeciesName(evolutions[1].targetSpecies)); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data); - #if P_SHEDINJA_BALL >= GEN_4 SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_POKEBALL, &ball); RemoveBagItem(ball, 1); @@ -573,7 +589,7 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon *mon) for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++) SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); - for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_UNUSED_RIBBONS; i++) + for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_WORLD_RIBBON; i++) SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, &data); diff --git a/src/field_effect.c b/src/field_effect.c index 44e905bfc500..737f94fe19fc 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1,4 +1,5 @@ #include "global.h" +#include "data.h" #include "decompress.h" #include "event_object_movement.h" #include "field_camera.h" @@ -183,7 +184,7 @@ static void AnimateIndoorShowMonBg(struct Task *); static bool8 SlideIndoorBannerOnscreen(struct Task *); static bool8 SlideIndoorBannerOffscreen(struct Task *); -static u8 InitFieldMoveMonSprite(u32, u32, u32); +static u8 InitFieldMoveMonSprite(u32, bool8, u32); static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite *); static void SpriteCB_FieldMoveMonWaitAfterCry(struct Sprite *); static void SpriteCB_FieldMoveMonSlideOffscreen(struct Sprite *); @@ -244,8 +245,6 @@ static void UseVsSeeker_CleanUpFieldEffect(struct Task *task); static u8 sActiveList[32]; // External declarations -extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; extern u8 *gFieldEffectScriptPointers[]; extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; @@ -261,7 +260,7 @@ static const u32 sHofMonitorBig_Gfx[] = INCBIN_U32("graphics/field_effects/pics/ static const u8 sHofMonitorSmall_Gfx[] = INCBIN_U8("graphics/field_effects/pics/hof_monitor_small.4bpp"); static const u16 sHofMonitor_Pal[16] = INCBIN_U16("graphics/field_effects/palettes/hof_monitor.gbapal"); -// Graphics for the lights streaking past your Pokemon when it uses a field move. +// Graphics for the lights streaking past your Pokémon when it uses a field move. static const u32 sFieldMoveStreaksOutdoors_Gfx[] = INCBIN_U32("graphics/field_effects/pics/field_move_streaks.4bpp"); static const u16 sFieldMoveStreaksOutdoors_Pal[16] = INCBIN_U16("graphics/field_effects/pics/field_move_streaks.gbapal"); static const u16 sFieldMoveStreaksOutdoors_Tilemap[320] = INCBIN_U16("graphics/field_effects/pics/field_move_streaks.bin"); @@ -895,10 +894,10 @@ bool8 FieldEffectActiveListContains(u8 id) u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer) { struct SpriteTemplate spriteTemplate; - LoadCompressedSpritePaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer); - LoadCompressedSpriteSheetOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer); - spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag; - spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag; + LoadCompressedSpritePaletteOverrideBuffer(&gTrainerSprites[trainerSpriteID].palette, buffer); + LoadCompressedSpriteSheetOverrideBuffer(&gTrainerSprites[trainerSpriteID].frontPic, buffer); + spriteTemplate.tileTag = gTrainerSprites[trainerSpriteID].frontPic.tag; + spriteTemplate.paletteTag = gTrainerSprites[trainerSpriteID].palette.tag; spriteTemplate.oam = &sOam_64x64; spriteTemplate.anims = gDummySpriteAnimTable; spriteTemplate.images = NULL; @@ -909,8 +908,8 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf static void UNUSED LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest) { - LZDecompressVram(gTrainerFrontPicTable[gender].data, dest); - LoadCompressedPalette(gTrainerFrontPicPaletteTable[gender].data, palOffset, PLTT_SIZE_4BPP); + LZDecompressVram(gTrainerSprites[gender].frontPic.data, dest); + LoadCompressedPalette(gTrainerSprites[gender].palette.data, palOffset, PLTT_SIZE_4BPP); } u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) @@ -921,7 +920,7 @@ u8 AddNewGameBirchObject(s16 x, s16 y, u8 subpriority) u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) { - s32 spriteId = CreateMonPicSprite(species, 0, 0x8000, TRUE, x, y, 0, species); + s32 spriteId = CreateMonPicSprite(species, FALSE, 0x8000, TRUE, x, y, 0, species); PreservePaletteInWeather(IndexOfSpritePaletteTag(species) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; @@ -929,12 +928,12 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) return spriteId; } -u8 CreateMonSprite_FieldMove(u16 species, u32 otId, u32 personality, s16 x, s16 y, u8 subpriority) +u8 CreateMonSprite_FieldMove(u16 species, bool8 isShiny, u32 personality, s16 x, s16 y, u8 subpriority) { //const struct CompressedSpritePalette *spritePalette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); // force load unique tag here to avoid collision with follower pokemon u8 paletteSlot = AllocSpritePalette(FLDEFF_PAL_TAG_FIELD_MOVE_MON); - u16 spriteId = CreateMonPicSprite(species, otId, personality, TRUE, x, y, paletteSlot, TAG_NONE); + u16 spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, x, y, paletteSlot, TAG_NONE); PreservePaletteInWeather(IndexOfSpritePaletteTag(FLDEFF_PAL_TAG_FIELD_MOVE_MON) + 0x10); if (spriteId == 0xFFFF) return MAX_SPRITES; @@ -2612,7 +2611,7 @@ bool8 FldEff_FieldMoveShowMonInit(void) bool32 noDucking = gFieldEffectArguments[0] & SHOW_MON_CRY_NO_DUCKING; pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]]; gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES); - gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID); + gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_IS_SHINY); gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY); gFieldEffectArguments[0] |= noDucking; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON); @@ -2952,14 +2951,14 @@ static bool8 SlideIndoorBannerOffscreen(struct Task *task) #undef tBgOffset #undef tMonSpriteId -static u8 InitFieldMoveMonSprite(u32 species, u32 otId, u32 personality) +static u8 InitFieldMoveMonSprite(u32 species, bool8 isShiny, u32 personality) { bool16 noDucking; u8 monSprite; struct Sprite *sprite; noDucking = (species & SHOW_MON_CRY_NO_DUCKING) >> 16; species &= ~SHOW_MON_CRY_NO_DUCKING; - monSprite = CreateMonSprite_FieldMove(species, otId, personality, 320, 80, 0); + monSprite = CreateMonSprite_FieldMove(species, isShiny, personality, 320, 80, 0); sprite = &gSprites[monSprite]; sprite->callback = SpriteCallbackDummy; sprite->oam.priority = 0; diff --git a/src/field_message_box.c b/src/field_message_box.c index 55124e7dfc0d..b797e1d35331 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -84,7 +84,7 @@ bool8 ShowPokenavFieldMessage(const u8 *str) StringExpandPlaceholders(gStringVar4, str); CreateTask(Task_HidePokenavMessageWhenDone, 0); StartMatchCallFromScript(str); - sFieldMessageBoxMode = 2; + sFieldMessageBoxMode = FIELD_MESSAGE_BOX_NORMAL; return TRUE; } diff --git a/src/field_specials.c b/src/field_specials.c index c48c696570a0..47b39cbb0cca 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -87,7 +87,7 @@ static EWRAM_DATA u8 sTutorMoveAndElevatorWindowId = 0; static EWRAM_DATA u16 sLilycoveDeptStore_NeverRead = 0; static EWRAM_DATA u16 sLilycoveDeptStore_DefaultFloorChoice = 0; static EWRAM_DATA struct ListMenuItem *sScrollableMultichoice_ListMenuItem = NULL; -static EWRAM_DATA u16 sScrollableMultichoice_ScrollOffset = 0; + static EWRAM_DATA u16 sFrontierExchangeCorner_NeverRead = 0; static EWRAM_DATA u8 sScrollableMultichoice_ItemSpriteId = 0; static EWRAM_DATA u8 sBattlePointsWindowId = 0; @@ -96,6 +96,7 @@ static EWRAM_DATA u8 sPCBoxToSendMon = 0; static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0; struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate; +EWRAM_DATA u16 gScrollableMultichoice_ScrollOffset = 0; void TryLoseFansFromPlayTime(void); void SetPlayerGotFirstFans(void); @@ -2565,7 +2566,7 @@ static void Task_ShowScrollableMultichoice(u8 taskId) struct Task *task = &gTasks[taskId]; LockPlayerFieldControls(); - sScrollableMultichoice_ScrollOffset = 0; + gScrollableMultichoice_ScrollOffset = 0; sScrollableMultichoice_ItemSpriteId = MAX_SPRITES; FillFrontierExchangeCornerWindowAndItemIcon(task->tScrollMultiId, 0); ShowBattleFrontierTutorWindow(task->tScrollMultiId, 0); @@ -2639,7 +2640,7 @@ static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct u16 selection; struct Task *task = &gTasks[taskId]; ListMenuGetScrollAndRow(task->tListTaskId, &selection, NULL); - sScrollableMultichoice_ScrollOffset = selection; + gScrollableMultichoice_ScrollOffset = selection; ListMenuGetCurrentItemArrayId(task->tListTaskId, &selection); HideFrontierExchangeCornerItemIcon(task->tScrollMultiId, sFrontierExchangeCorner_NeverRead); FillFrontierExchangeCornerWindowAndItemIcon(task->tScrollMultiId, selection); @@ -2760,7 +2761,7 @@ static void ScrollableMultichoice_UpdateScrollArrows(u8 taskId) template.secondY = task->tHeight * 8 + 10; template.fullyUpThreshold = 0; template.fullyDownThreshold = task->tNumItems - task->tMaxItemsOnScreen; - task->tScrollArrowId = AddScrollIndicatorArrowPair(&template, &sScrollableMultichoice_ScrollOffset); + task->tScrollArrowId = AddScrollIndicatorArrowPair(&template, &gScrollableMultichoice_ScrollOffset); } } diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index 0b254b6af37c..d3e6982f2950 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -308,7 +308,7 @@ static const struct SpriteTemplate sSpriteTemplate_RecordMixLights = .callback = SpriteCallbackDummy, }; -// For accessing pokemon storage PC or the Hall of Fame PC +// For accessing Pokémon storage PC or the Hall of Fame PC void ComputerScreenOpenEffect(u16 increment, u16 unused, u8 priority) { CreateComputerScreenEffectTask(Task_ComputerScreenOpenEffect, increment, unused, priority); diff --git a/src/frontier_util.c b/src/frontier_util.c index 572288c44843..50a979f318a0 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -326,7 +326,7 @@ static const struct FrontierBrainMon sFrontierBrainsMons[][2][FRONTIER_PARTY_SIZ }, [FRONTIER_FACILITY_FACTORY] = { - // Because Factory's pokemon are random, this facility's Brain also uses random pokemon. + // Because Factory's Pokémon are random, this facility's Brain also uses random Pokémon. // What is interesting, this team is actually the one Steven uses in the multi tag battle alongside the player. { { @@ -1957,7 +1957,7 @@ static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monL // gSpecialVar_Result is the level mode before and after calls to this function // gSpecialVar_0x8004 is used to store the return value instead (TRUE if there are insufficient eligible mons) -// The names of ineligible pokemon that have been caught are also buffered to print +// The names of ineligible Pokémon that have been caught are also buffered to print static void CheckPartyIneligibility(void) { u16 speciesArray[PARTY_SIZE]; @@ -2478,10 +2478,7 @@ void CreateFrontierBrainPokemon(void) do { - do - { - j = Random32(); //should just be one while loop, but that doesn't match - } while (IsShinyOtIdPersonality(FRONTIER_BRAIN_OTID, j)); + j = Random32(); //should just be one while loop, but that doesn't match } while (sFrontierBrainsMons[facility][symbol][i].nature != GetNatureFromPersonality(j)); CreateMon(&gEnemyParty[monPartyId], sFrontierBrainsMons[facility][symbol][i].species, @@ -2500,6 +2497,8 @@ void CreateFrontierBrainPokemon(void) friendship = 0; } SetMonData(&gEnemyParty[monPartyId], MON_DATA_FRIENDSHIP, &friendship); + j = FALSE; + SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_IS_SHINY, &j); CalculateMonStats(&gEnemyParty[monPartyId]); monPartyId++; } diff --git a/src/graphics.c b/src/graphics.c index a9f2dc11e832..c726a7e73407 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -689,7 +689,7 @@ const u8 gHealthboxElementsGfxTable[] = INCBIN_U8("graphics/battle_interface/hpb "graphics/battle_interface/misc_frameend.4bpp", "graphics/battle_interface/ball_display.4bpp", "graphics/battle_interface/ball_caught_indicator.4bpp", - "graphics/battle_interface/status2.4bpp", // these three duplicate sets of graphics are for the opponent/partner pokemon + "graphics/battle_interface/status2.4bpp", // these three duplicate sets of graphics are for the opponent/partner Pokémon "graphics/battle_interface/status3.4bpp", "graphics/battle_interface/status4.4bpp", "graphics/battle_interface/healthbox_doubles_frameend.4bpp", @@ -1279,7 +1279,7 @@ const u32 gDomeTourneyLineUp_Tilemap[] = INCBIN_U32("graphics/battle_frontier/to const u32 gDomeTourneyInfoCard_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card.4bpp.lz"); const u32 gDomeTourneyInfoCard_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card_tilemap.bin.lz"); const u32 gDomeTourneyInfoCardBg_Tilemap[] = INCBIN_U32("graphics/battle_frontier/tourney_info_card_bg.bin.lz"); -const u32 gDomeTourneyTreeButtons_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.4bpp.lz"); // exit/cancel and pokeball buttons +const u32 gDomeTourneyTreeButtons_Gfx[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.4bpp.lz"); // exit/cancel and Poké Ball buttons const u32 gDomeTourneyTree_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_tree.gbapal.lz"); const u32 gDomeTourneyTreeButtons_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_buttons.gbapal.lz"); const u32 gDomeTourneyMatchCardBg_Pal[] = INCBIN_U32("graphics/battle_frontier/tourney_match_card_bg.gbapal.lz"); @@ -1731,7 +1731,7 @@ const u16 gFrontierPassMapCursor_Pal[] = INCBIN_U16("graphics/frontier_pass/map_ const u16 gFrontierPassMedalsSilver_Pal[] = INCBIN_U16("graphics/frontier_pass/silver.gbapal"); const u16 gFrontierPassMedalsGold_Pal[] = INCBIN_U16("graphics/frontier_pass/gold.gbapal"); -// Pokedex +// Pokédex const u16 gPokedexBgHoenn_Pal[] = INCBIN_U16("graphics/pokedex/bg_hoenn.gbapal"); const u16 gPokedexCaughtScreen_Pal[] = INCBIN_U16("graphics/pokedex/caught_screen.gbapal"); const u16 gPokedexSearchResults_Pal[] = INCBIN_U16("graphics/pokedex/search_results_bg.gbapal"); @@ -1785,7 +1785,7 @@ const u16 gContestResultsTitle_Smart_Tilemap[] = INCBIN_U16("graphics/contest/r const u16 gContestResultsTitle_Tough_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title_tough.bin"); const u16 gContestResultsTitle_Tilemap[] = INCBIN_U16("graphics/contest/results_screen/title.bin"); -// pokenav +// PokéNav const u16 gPokenavCondition_Pal[] = INCBIN_U16("graphics/pokenav/condition/graph.gbapal"); const u32 gPokenavCondition_Gfx[] = INCBIN_U32("graphics/pokenav/condition/graph.4bpp.lz"); @@ -1886,7 +1886,7 @@ const u32 gKantoTrainerCardFront_Tilemap[] = INCBIN_U32("graphics/trainer_card/f const u32 gKantoTrainerCardBack_Tilemap[] = INCBIN_U32("graphics/trainer_card/frlg/back.bin.lz"); const u32 gKantoTrainerCardFrontLink_Tilemap[] = INCBIN_U32("graphics/trainer_card/frlg/front_link.bin.lz"); -// pokemon storage system +// Pokémon storage system const u32 gStorageSystemMenu_Gfx[] = INCBIN_U32("graphics/pokemon_storage/menu.4bpp.lz"); const u16 gStorageSystemPartyMenu_Pal[] = INCBIN_U16("graphics/pokemon_storage/party_menu.gbapal"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index d0cf6ac9b002..80689c264e46 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -42,7 +42,8 @@ struct HallofFameMon { u32 tid; u32 personality; - u16 species; + u16 isShiny:1; + u16 species:15; u8 lvl; u8 nickname[POKEMON_NAME_LENGTH]; }; @@ -336,6 +337,7 @@ static const struct HallofFameMon sDummyFameMon = { .tid = 0x3EA03EA, .personality = 0, + .isShiny = FALSE, .species = SPECIES_NONE, .lvl = 0, .nickname = {0} @@ -447,6 +449,7 @@ static void Task_Hof_InitMonData(u8 taskId) { sHofMonPtr->mon[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES_OR_EGG); sHofMonPtr->mon[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID); + sHofMonPtr->mon[i].isShiny = GetMonData(&gPlayerParty[i], MON_DATA_IS_SHINY); sHofMonPtr->mon[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); sHofMonPtr->mon[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nickname); @@ -458,6 +461,7 @@ static void Task_Hof_InitMonData(u8 taskId) { sHofMonPtr->mon[i].species = SPECIES_NONE; sHofMonPtr->mon[i].tid = 0; + sHofMonPtr->mon[i].isShiny = FALSE; sHofMonPtr->mon[i].personality = 0; sHofMonPtr->mon[i].lvl = 0; sHofMonPtr->mon[i].nickname[0] = EOS; @@ -583,7 +587,7 @@ static void Task_Hof_DisplayMon(u8 taskId) if (currMon->species == SPECIES_EGG) destY += 10; - spriteId = CreateMonPicSprite_Affine(currMon->species, currMon->tid, currMon->personality, MON_PIC_AFFINE_FRONT, startX, startY, currMonId, TAG_NONE); + spriteId = CreateMonPicSprite_Affine(currMon->species, currMon->isShiny, currMon->personality, MON_PIC_AFFINE_FRONT, startX, startY, currMonId, TAG_NONE); gSprites[spriteId].tDestinationX = destX; gSprites[spriteId].tDestinationY = destY; gSprites[spriteId].data[0] = 0; @@ -621,7 +625,7 @@ static void Task_Hof_TryDisplayAnotherMon(u8 taskId) else { sHofFadePalettes |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum); - if (gTasks[taskId].tDisplayedMonId < PARTY_SIZE - 1 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display + if (gTasks[taskId].tDisplayedMonId < PARTY_SIZE - 1 && currMon[1].species != SPECIES_NONE) // there is another Pokémon to display { gTasks[taskId].tDisplayedMonId++; BeginNormalPaletteFade(sHofFadePalettes, 0, 12, 12, RGB(16, 29, 24)); @@ -929,7 +933,7 @@ static void Task_HofPC_DrawSpritesPrintText(u8 taskId) if (currMon->species == SPECIES_EGG) posY += 10; - spriteId = CreateMonPicSprite(currMon->species, currMon->tid, currMon->personality, TRUE, posX, posY, i, TAG_NONE); + spriteId = CreateMonPicSprite(currMon->species, currMon->isShiny, currMon->personality, TRUE, posX, posY, i, TAG_NONE); gSprites[spriteId].oam.priority = 1; gTasks[taskId].tMonSpriteId(i) = spriteId; } diff --git a/src/item.c b/src/item.c index 50dfd04c19ff..0aa6f723b732 100644 --- a/src/item.c +++ b/src/item.c @@ -889,7 +889,7 @@ const u8 *ItemId_GetName(u16 itemId) return gItems[SanitizeItemId(itemId)].name; } -u16 ItemId_GetPrice(u16 itemId) +u32 ItemId_GetPrice(u16 itemId) { return gItems[SanitizeItemId(itemId)].price; } diff --git a/src/item_menu.c b/src/item_menu.c index 8b7ecfdb0637..493fa795cf9a 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -219,6 +219,7 @@ static void ConfirmToss(u8); static void CancelToss(u8); static void ConfirmSell(u8); static void CancelSell(u8); +static void Task_FadeAndCloseBagMenuIfMulch(u8 taskId); //bag sort static void Task_LoadBagSortOptions(u8 taskId); @@ -387,7 +388,8 @@ static const TaskFunc sContextMenuFuncs[] = { [ITEMMENULOCATION_QUIZ_LADY] = Task_ItemContext_Normal, [ITEMMENULOCATION_APPRENTICE] = Task_ItemContext_Normal, [ITEMMENULOCATION_WALLY] = NULL, - [ITEMMENULOCATION_PCBOX] = Task_ItemContext_GiveToPC + [ITEMMENULOCATION_PCBOX] = Task_ItemContext_GiveToPC, + [ITEMMENULOCATION_BERRY_TREE_MULCH] = Task_FadeAndCloseBagMenuIfMulch, }; static const struct YesNoFuncTable sYesNoTossFunctions = {ConfirmToss, CancelToss}; @@ -615,6 +617,12 @@ void CB2_ChooseBerry(void) GoToBagMenu(ITEMMENULOCATION_BERRY_TREE, BERRIES_POCKET, CB2_ReturnToFieldContinueScript); } +// Choosing mulch to use +void CB2_ChooseMulch(void) +{ + GoToBagMenu(ITEMMENULOCATION_BERRY_TREE_MULCH, ITEMS_POCKET, CB2_ReturnToFieldContinueScript); +} + // Choosing berry for Berry Blender or Berry Crush void ChooseBerryForMachine(void (*exitCallback)(void)) { @@ -667,7 +675,8 @@ void GoToBagMenu(u8 location, u8 pocket, void ( *exitCallback)()) if (pocket < POCKETS_COUNT) gBagPosition.pocket = pocket; if (gBagPosition.location == ITEMMENULOCATION_BERRY_TREE || - gBagPosition.location == ITEMMENULOCATION_BERRY_BLENDER_CRUSH) + gBagPosition.location == ITEMMENULOCATION_BERRY_BLENDER_CRUSH || + gBagPosition.location == ITEMMENULOCATION_BERRY_TREE_MULCH) gBagMenu->pocketSwitchDisabled = TRUE; gBagMenu->newScreenCallback = NULL; gBagMenu->toSwapPos = NOT_SWAPPING; @@ -1127,6 +1136,23 @@ void Task_FadeAndCloseBagMenu(u8 taskId) gTasks[taskId].func = Task_CloseBagMenu; } +static void Task_FadeAndCloseBagMenuIfMulch(u8 taskId) +{ + if (gSpecialVar_ItemId == ITEM_GROWTH_MULCH || + gSpecialVar_ItemId == ITEM_DAMP_MULCH || + gSpecialVar_ItemId == ITEM_STABLE_MULCH || + gSpecialVar_ItemId == ITEM_GOOEY_MULCH || + gSpecialVar_ItemId == ITEM_RICH_MULCH || + gSpecialVar_ItemId == ITEM_SURPRISE_MULCH || + gSpecialVar_ItemId == ITEM_BOOST_MULCH || + gSpecialVar_ItemId == ITEM_AMAZE_MULCH) + { + Task_FadeAndCloseBagMenu(taskId); + return; + } + DisplayDadsAdviceCannotUseItemMessage(taskId, FALSE); +} + static void Task_CloseBagMenu(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1661,6 +1687,7 @@ static void OpenContextMenu(u8 taskId) case ITEMMENULOCATION_SHOP: case ITEMMENULOCATION_BERRY_TREE: case ITEMMENULOCATION_ITEMPC: + case ITEMMENULOCATION_BERRY_TREE_MULCH: default: if (MenuHelpers_IsLinkActive() == TRUE || InUnionRoom() == TRUE) { diff --git a/src/item_use.c b/src/item_use.c index 8fe2d072c4d2..de3b2e6a66ce 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -58,6 +58,7 @@ static u8 GetDirectionToHiddenItem(s16, s16); static void PlayerFaceHiddenItem(u8); static void CheckForHiddenItemsInMapConnection(u8); static void Task_OpenRegisteredPokeblockCase(u8); +static void Task_AccessPokemonBoxLink(u8); static void ItemUseOnFieldCB_Bike(u8); static void ItemUseOnFieldCB_Rod(u8); static void ItemUseOnFieldCB_Itemfinder(u8); @@ -160,7 +161,7 @@ static void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyIte DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage); } -static void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) +void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField) { DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_DadsAdvice); } @@ -680,6 +681,18 @@ static void Task_OpenRegisteredPokeblockCase(u8 taskId) } } +void ItemUseOutOfBattle_PokemonBoxLink(u8 taskId) +{ + sItemUseOnFieldCB = Task_AccessPokemonBoxLink; + SetUpItemUseOnFieldCallback(taskId); +} + +static void Task_AccessPokemonBoxLink(u8 taskId) +{ + ScriptContext_SetupScript(EventScript_AccessPokemonBoxLink); + DestroyTask(taskId); +} + void ItemUseOutOfBattle_CoinCase(u8 taskId) { ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4); @@ -797,6 +810,12 @@ void ItemUseOutOfBattle_AbilityPatch(u8 taskId) SetUpItemUseCallback(taskId); } +void ItemUseOutOfBattle_Mint(u8 taskId) +{ + gItemUseCB = ItemUseCB_Mint; + SetUpItemUseCallback(taskId); +} + void ItemUseOutOfBattle_ResetEVs(u8 taskId) { gItemUseCB = ItemUseCB_ResetEVs; @@ -833,6 +852,12 @@ void ItemUseOutOfBattle_RareCandy(u8 taskId) SetUpItemUseCallback(taskId); } +void ItemUseOutOfBattle_DynamaxCandy(u8 taskId) +{ + gItemUseCB = ItemUseCB_DynamaxCandy; + SetUpItemUseCallback(taskId); +} + void ItemUseOutOfBattle_TMHM(u8 taskId) { if (gSpecialVar_ItemId >= ITEM_HM01) diff --git a/src/list_menu.c b/src/list_menu.c index e24442ca023c..e83f325161d7 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -70,7 +70,6 @@ struct RedArrowCursor // this file's functions static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow); -static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown); static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count); static void ListMenuDrawCursor(struct ListMenu *list); static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit); @@ -837,7 +836,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown) } } -static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown) +bool8 ListMenuChangeSelectionFull(struct ListMenu *list, bool32 updateCursor, bool32 callCallback, u8 count, bool8 movingDown) { u16 oldSelectedRow; u8 selectionChange, i, cursorCount; @@ -857,7 +856,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn } while (list->template.items[list->scrollOffset + list->selectedRow].id == LIST_HEADER); } - if (updateCursorAndCallCallback) + if (updateCursor) { switch (selectionChange) { @@ -867,7 +866,8 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn case 1: ListMenuErasePrintedCursor(list, oldSelectedRow); ListMenuDrawCursor(list); - ListMenuCallSelectionChangedCallback(list, FALSE); + if (callCallback) + ListMenuCallSelectionChangedCallback(list, FALSE); CopyWindowToVram(list->template.windowId, COPYWIN_GFX); break; case 2: @@ -875,7 +875,8 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn ListMenuErasePrintedCursor(list, oldSelectedRow); ListMenuScroll(list, cursorCount, movingDown); ListMenuDrawCursor(list); - ListMenuCallSelectionChangedCallback(list, FALSE); + if (callCallback) + ListMenuCallSelectionChangedCallback(list, FALSE); CopyWindowToVram(list->template.windowId, COPYWIN_GFX); break; } @@ -884,6 +885,11 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn return FALSE; } +bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown) +{ + return ListMenuChangeSelectionFull(list, updateCursorAndCallCallback, updateCursorAndCallCallback, count, movingDown); +} + static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit) { if (list->template.moveCursorFunc != NULL) diff --git a/src/load_save.c b/src/load_save.c index a3e07d6bb7da..7952bdbc89b4 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -128,7 +128,7 @@ void MoveSaveBlocks_ResetHeap(void) gMain.vblankCallback = vblankCB; // create a new encryption key - encryptionKey = (Random() << 16) + (Random()); + encryptionKey = Random32(); ApplyNewEncryptionKeyToAllEncryptedData(encryptionKey); gSaveBlock2Ptr->encryptionKey = encryptionKey; } diff --git a/src/lottery_corner.c b/src/lottery_corner.c index f19e9f7b7b80..4e58c2285808 100644 --- a/src/lottery_corner.c +++ b/src/lottery_corner.c @@ -23,9 +23,7 @@ static u8 GetMatchingDigits(u16, u16); void ResetLotteryCorner(void) { - u16 rand = Random(); - - SetLotteryNumber((Random() << 16) | rand); + SetLotteryNumber(Random32()); VarSet(VAR_POKELOT_PRIZE_ITEM, 0); } @@ -75,7 +73,7 @@ void PickLotteryCornerTicket(void) } } } - else // pokemon are always arranged from populated spots first to unpopulated, so the moment a NONE species is found, that's the end of the list. + else // Pokémon are always arranged from populated spots first to unpopulated, so the moment a NONE species is found, that's the end of the list. break; } diff --git a/src/main.c b/src/main.c index b30951ea2c2c..17509d55e4fe 100644 --- a/src/main.c +++ b/src/main.c @@ -93,11 +93,6 @@ void EnableVCountIntrAtLine150(void); void AgbMain() { - // Modern compilers are liberal with the stack on entry to this function, - // so RegisterRamReset may crash if it resets IWRAM. -#if !MODERN - RegisterRamReset(RESET_ALL); -#endif //MODERN *(vu16 *)BG_PLTT = RGB_WHITE; // Set the backdrop to white on startup InitGpuRegManager(); REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; @@ -374,7 +369,7 @@ static void VBlankIntr(void) TryReceiveLinkBattleData(); if (!gTestRunnerEnabled && (!gMain.inBattle || !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_RECORDED)))) - Random(); + AdvanceRandom(); UpdateWirelessStatusIndicatorSprite(); diff --git a/src/main_menu.c b/src/main_menu.c index c7295bd8637c..c1f092b2ca76 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1876,7 +1876,7 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite *sprite) static u8 NewGameBirchSpeech_CreateLotadSprite(u8 x, u8 y) { - return CreateMonPicSprite_Affine(SPECIES_LOTAD, SHINY_ODDS, 0, MON_PIC_AFFINE_FRONT, x, y, 14, TAG_NONE); + return CreateMonPicSprite_Affine(SPECIES_LOTAD, FALSE, 0, MON_PIC_AFFINE_FRONT, x, y, 14, TAG_NONE); } static void AddBirchSpeechObjects(u8 taskId) diff --git a/src/menu_specialized.c b/src/menu_specialized.c index 9cf29ae5b9d1..d9fdd0a64295 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -1076,12 +1076,11 @@ void GetConditionMenuMonGfx(void *tilesDst, void *palDst, u16 boxId, u16 monId, if (partyId != numMons) { u16 species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES_OR_EGG, NULL); - u32 trainerId = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL); + bool8 isShiny = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_SHINY, NULL); u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); - bool8 isShiny = IsShinyOtIdPersonality(trainerId, personality); LoadSpecialPokePic(tilesDst, species, personality, TRUE); - LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst); + LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), palDst); if (!isShiny) HueShiftMonPalette((u16*) palDst, personality); diff --git a/src/move_relearner.c b/src/move_relearner.c index af4593e53331..975663e4d3d2 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -369,7 +369,7 @@ static void VBlankCB_MoveRelearner(void) TransferPlttBuffer(); } -// Script arguments: The pokemon to teach is in VAR_0x8004 +// Script arguments: The Pokémon to teach is in VAR_0x8004 void TeachMoveRelearnerMove(void) { LockPlayerFieldControls(); diff --git a/src/overworld.c b/src/overworld.c index 8507395e9cf0..0e91d20bbc4e 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1337,7 +1337,7 @@ void UpdateAmbientCry(s16 *state, u16 *delayCounter) } } // Ambient cries after the first one take between 1200-2399 frames (~20-40 seconds) - // If the player has a pokemon with the ability Swarm in their party, the time is halved to 600-1199 frames (~10-20 seconds) + // If the player has a Pokémon with the ability Swarm in their party, the time is halved to 600-1199 frames (~10-20 seconds) *delayCounter = ((Random() % 1200) + 1200) / divBy; *state = AMB_CRY_WAIT; break; @@ -1349,7 +1349,7 @@ void UpdateAmbientCry(s16 *state, u16 *delayCounter) } break; case AMB_CRY_IDLE: - // No land/water pokemon on this map + // No land/water Pokémon on this map break; } } @@ -1360,7 +1360,7 @@ static void ChooseAmbientCrySpecies(void) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE130)) && !IsMirageIslandPresent()) { - // Only play water pokemon cries on this route + // Only play water Pokémon cries on this route // when Mirage Island is not present sIsAmbientCryWaterMon = TRUE; sAmbientCrySpecies = GetLocalWaterMon(); diff --git a/src/party_menu.c b/src/party_menu.c index c016c9de617a..8fa175fef93c 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -182,7 +182,7 @@ enum { }; enum { - // Window ids 0-5 are implicitly assigned to each party pokemon in InitPartyMenuBoxes + // Window ids 0-5 are implicitly assigned to each party Pokémon in InitPartyMenuBoxes WIN_MSG = PARTY_SIZE, }; @@ -4699,7 +4699,7 @@ void Task_AbilityCapsule(u8 taskId) } gPartyMenuUseExitCallback = TRUE; GetMonNickname(&gPlayerParty[tMonId], gStringVar1); - StringCopy(gStringVar2, gAbilityNames[GetAbilityBySpecies(tSpecies, tAbilityNum)]); + StringCopy(gStringVar2, gAbilities[GetAbilityBySpecies(tSpecies, tAbilityNum)].name); StringExpandPlaceholders(gStringVar4, askText); PlaySE(SE_SELECT); DisplayPartyMenuMessage(gStringVar4, 1); @@ -4786,7 +4786,7 @@ void Task_AbilityPatch(u8 taskId) } gPartyMenuUseExitCallback = TRUE; GetMonNickname(&gPlayerParty[tMonId], gStringVar1); - StringCopy(gStringVar2, gAbilityNames[GetAbilityBySpecies(tSpecies, tAbilityNum)]); + StringCopy(gStringVar2, gAbilities[GetAbilityBySpecies(tSpecies, tAbilityNum)].name); StringExpandPlaceholders(gStringVar4, askText); PlaySE(SE_SELECT); DisplayPartyMenuMessage(gStringVar4, 1); @@ -4859,6 +4859,104 @@ void ItemUseCB_AbilityPatch(u8 taskId, TaskFunc task) #undef tMonId #undef tOldFunc +#define tState data[0] +#define tMonId data[1] +#define tOldNature data[2] +#define tNewNature data[3] +#define tOldFunc 4 + +void Task_Mint(u8 taskId) +{ + static const u8 askText[] = _("It might affect {STR_VAR_1}'s stats.\nAre you sure you want to use it?"); + static const u8 doneText[] = _("{STR_VAR_1}'s stats may have changed due\nto the effects of the {STR_VAR_2}!{PAUSE_UNTIL_PRESS}"); + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: + // Can't use. + if (tOldNature == tNewNature) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, 1); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + return; + } + gPartyMenuUseExitCallback = TRUE; + GetMonNickname(&gPlayerParty[tMonId], gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, askText); + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gStringVar4, 1); + ScheduleBgCopyTilemapToVram(2); + tState++; + break; + case 1: + if (!IsPartyMenuTextPrinterActive()) + { + PartyMenuDisplayYesNoMenu(); + tState++; + } + break; + case 2: + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + tState++; + break; + case 1: + case MENU_B_PRESSED: + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + ScheduleBgCopyTilemapToVram(2); + // Don't exit party selections screen, return to choosing a mon. + ClearStdWindowAndFrameToTransparent(6, 0); + ClearWindowTilemap(6); + DisplayPartyMenuStdMessage(5); + gTasks[taskId].func = (void *)GetWordTaskArg(taskId, tOldFunc); + return; + } + break; + case 3: + PlaySE(SE_USE_ITEM); + StringExpandPlaceholders(gStringVar4, doneText); + DisplayPartyMenuMessage(gStringVar4, 1); + ScheduleBgCopyTilemapToVram(2); + tState++; + break; + case 4: + if (!IsPartyMenuTextPrinterActive()) + tState++; + break; + case 5: + SetMonData(&gPlayerParty[tMonId], MON_DATA_HIDDEN_NATURE, &tNewNature); + CalculateMonStats(&gPlayerParty[tMonId]); + RemoveBagItem(gSpecialVar_ItemId, 1); + gTasks[taskId].func = Task_ClosePartyMenu; + break; + } +} + +void ItemUseCB_Mint(u8 taskId, TaskFunc task) +{ + s16 *data = gTasks[taskId].data; + + tState = 0; + tMonId = gPartyMenu.slotId; + tOldNature = GetMonData(&gPlayerParty[tMonId], MON_DATA_HIDDEN_NATURE); + tNewNature = ItemId_GetSecondaryId(gSpecialVar_ItemId); + SetWordTaskArg(taskId, tOldFunc, (uintptr_t)(gTasks[taskId].func)); + gTasks[taskId].func = Task_Mint; +} + +#undef tState +#undef tMonId +#undef tOldNature +#undef tNewNature +#undef tOldFunc + static void Task_DisplayHPRestoredMessage(u8 taskId) { GetMonNickname(&gPlayerParty[gPartyMenu.slotId], gStringVar1); @@ -5680,6 +5778,70 @@ static void BufferMonStatsToTaskData(struct Pokemon *mon, s16 *data) data[3] = GetMonData(mon, MON_DATA_SPEED); } +#define tState data[0] +#define tMonId data[1] +#define tDynamaxLevel data[2] +#define tOldFunc 4 + +void Task_DynamaxCandy(u8 taskId) +{ + static const u8 doneText[] = _("{STR_VAR_1}'s Dynamax Level\nincreased by 1!{PAUSE_UNTIL_PRESS}"); + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: + // Can't use. + if (tDynamaxLevel == MAX_DYNAMAX_LEVEL) + { + gPartyMenuUseExitCallback = FALSE; + PlaySE(SE_SELECT); + DisplayPartyMenuMessage(gText_WontHaveEffect, 1); + ScheduleBgCopyTilemapToVram(2); + gTasks[taskId].func = Task_ClosePartyMenuAfterText; + return; + } + gPartyMenuUseExitCallback = TRUE; + GetMonNickname(&gPlayerParty[tMonId], gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + tState++; + break; + case 1: + PlaySE(SE_USE_ITEM); + StringExpandPlaceholders(gStringVar4, doneText); + DisplayPartyMenuMessage(gStringVar4, 1); + ScheduleBgCopyTilemapToVram(2); + tState++; + break; + case 2: + if (!IsPartyMenuTextPrinterActive()) + tState++; + break; + case 3: + tDynamaxLevel++; + SetMonData(&gPlayerParty[tMonId], MON_DATA_DYNAMAX_LEVEL, &tDynamaxLevel); + RemoveBagItem(gSpecialVar_ItemId, 1); + gTasks[taskId].func = Task_ClosePartyMenu; + break; + } +} + +void ItemUseCB_DynamaxCandy(u8 taskId, TaskFunc task) +{ + s16 *data = gTasks[taskId].data; + + tState = 0; + tMonId = gPartyMenu.slotId; + tDynamaxLevel = GetMonData(&gPlayerParty[tMonId], MON_DATA_DYNAMAX_LEVEL); + SetWordTaskArg(taskId, tOldFunc, (uintptr_t)(gTasks[taskId].func)); + gTasks[taskId].func = Task_DynamaxCandy; +} + +#undef tState +#undef tMonId +#undef tDynamaxLevel +#undef tOldFunc + #define tUsedOnSlot data[0] #define tHadEffect data[1] #define tLastSlotUsed data[2] @@ -6958,7 +7120,7 @@ static bool8 TrySwitchInPokemon(void) u8 newSlot; u8 i; - // In a multi battle, slots 1, 4, and 5 are the partner's pokemon + // In a multi battle, slots 1, 4, and 5 are the partner's Pokémon if (IsMultiBattle() == TRUE && (slot == 1 || slot == 4 || slot == 5)) { StringCopy(gStringVar1, GetTrainerPartnerName()); diff --git a/src/pokeball.c b/src/pokeball.c index 762af920d787..8689fa52a689 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -1215,10 +1215,10 @@ static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 spritePalNum, u return LaunchBallFadeMonTask(unFadeLater, spritePalNum, selectedPalettes, BALL_POKE); } -// Sprite data for the pokemon +// Sprite data for the Pokémon #define sSpecies data[7] -// Sprite data for the pokeball +// Sprite data for the Poké Ball #define sMonSpriteId data[0] #define sDelay data[1] #define sMonPalNum data[2] @@ -1228,7 +1228,7 @@ static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 spritePalNum, u #define sFinalMonY data[6] #define sTrigIdx data[7] -// Pokeball in Birch intro, and when receiving via trade +// Poké Ball in Birch intro, and when receiving via trade void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 monPalNum, u8 x, u8 y, u8 oamPriority, u8 subpriority, u8 delay, u32 fadePalettes, u16 species) { u8 spriteId; diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index 89774813b8ee..91fb61a30ae2 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -718,8 +718,8 @@ static void HandleInitBackgrounds(void) static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) { u16 species; - u32 personality, trainerId; - bool8 isShiny; + u32 personality; + bool32 isShiny; switch (sPokeblockFeed->loadGfxState) { @@ -734,13 +734,13 @@ static bool8 LoadMonAndSceneGfx(struct Pokemon *mon) // Load mon palette species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG); personality = GetMonData(mon, MON_DATA_PERSONALITY); - trainerId = GetMonData(mon, MON_DATA_OT_ID); + isShiny = GetMonData(mon, MON_DATA_IS_SHINY); isShiny = IsMonShiny(mon); if(!isShiny) - LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), personality, species); + LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), personality, species); else - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), species); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); SetMultiuseSpriteTemplateToPokemon(species, B_POSITION_OPPONENT_LEFT); sPokeblockFeed->loadGfxState++; diff --git a/src/pokedex.c b/src/pokedex.c index a410202514e5..78d5f1be9582 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -279,7 +279,6 @@ static void PrintMonWeight(u16 weight, u8 left, u8 top); static void ResetOtherVideoRegisters(u16); static u8 PrintCryScreenSpeciesName(u8, u16, u8, u8); static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top); -static void DrawFootprint(u8 windowId, u16 dexNum); static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum); static u16 GetPokemonOffsetFromNationalDexNumber(u16 nationalNum); static u16 GetTrainerScaleFromNationalDexNumber(u16 nationalNum); @@ -1765,7 +1764,7 @@ static void Task_HandlePokedexStartMenuInput(u8 taskId) CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; //Exit menu break; - case 3: //CLOSE POKEDEX + case 3: //CLOSE POKéDEX BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = Task_ClosePokedex; PlaySE(SE_PC_OFF); @@ -1965,12 +1964,12 @@ static void Task_HandleSearchResultsStartMenuInput(u8 taskId) CreateMonSpritesAtPos(sPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; break; - case 3: //BACK TO POKEDEX + case 3: //BACK TO POKéDEX BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = Task_ReturnToPokedexFromSearchResults; PlaySE(SE_TRUCK_DOOR); break; - case 4: //CLOSE POKEDEX + case 4: //CLOSE POKéDEX BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = Task_ClosePokedexFromSearchResultsStartMenu; PlaySE(SE_PC_OFF); @@ -2056,7 +2055,7 @@ static void Task_ClosePokedexFromSearchResultsStartMenu(u8 taskId) #undef tLoadScreenTaskId -// For loading main pokedex page or pokedex search results +// For loading main pokedex page or Pokédex search results static bool8 LoadPokedexListPage(u8 page) { switch (gMain.state) @@ -3291,7 +3290,7 @@ static void Task_LoadInfoScreen(u8 taskId) FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, sPokedexListItem->dexNum); + DrawFootprint(WIN_FOOTPRINT, NationalPokedexNumToSpecies(sPokedexListItem->dexNum)); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); gMain.state++; break; @@ -3971,12 +3970,11 @@ static void HighlightSubmenuScreenSelectBarItem(u8 a, u16 b) #define tSpecies data[1] #define tPalTimer data[2] #define tMonSpriteId data[3] -#define tOtIdLo data[12] -#define tOtIdHi data[13] +#define tIsShiny data[13] #define tPersonalityLo data[14] #define tPersonalityHi data[15] -u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality) +u8 DisplayCaughtMonDexPage(u16 species, bool32 isShiny, u32 personality) { u8 taskId = 0; if (POKEDEX_PLUS_HGSS) @@ -3986,8 +3984,7 @@ u8 DisplayCaughtMonDexPage(u16 species, u32 otId, u32 personality) gTasks[taskId].tState = 0; gTasks[taskId].tSpecies = species; - gTasks[taskId].tOtIdLo = otId; - gTasks[taskId].tOtIdHi = otId >> 16; + gTasks[taskId].tIsShiny = isShiny; gTasks[taskId].tPersonalityLo = personality; gTasks[taskId].tPersonalityHi = personality >> 16; return taskId; @@ -4022,7 +4019,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) FillWindowPixelBuffer(WIN_INFO, PIXEL_FILL(0)); PutWindowTilemap(WIN_INFO); PutWindowTilemap(WIN_FOOTPRINT); - DrawFootprint(WIN_FOOTPRINT, dexNum); + DrawFootprint(WIN_FOOTPRINT, NationalPokedexNumToSpecies(dexNum)); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); ResetPaletteFade(); LoadPokedexBgPalette(FALSE); @@ -4039,7 +4036,7 @@ static void Task_DisplayCaughtMonDexPage(u8 taskId) gTasks[taskId].tState++; break; case 4: - spriteId = CreateMonPicSprite(NationalPokedexNumToSpecies(dexNum), 0, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); + spriteId = CreateMonPicSprite(NationalPokedexNumToSpecies(dexNum), FALSE, ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo, TRUE, MON_PAGE_X, MON_PAGE_Y, 0, TAG_NONE); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gPokedexVBlankCB); @@ -4089,7 +4086,7 @@ static void Task_ExitCaughtMonPage(u8 taskId) { if (!gPaletteFade.active) { - u32 otId; + bool32 isShiny; u32 personality; u8 paletteNum; const u32 *lzPaletteData; @@ -4104,11 +4101,14 @@ static void Task_ExitCaughtMonPage(u8 taskId) if (buffer) Free(buffer); - otId = ((u16)gTasks[taskId].tOtIdHi << 16) | (u16)gTasks[taskId].tOtIdLo; + isShiny = (bool8)gTasks[taskId].tIsShiny; personality = ((u16)gTasks[taskId].tPersonalityHi << 16) | (u16)gTasks[taskId].tPersonalityLo; paletteNum = gSprites[gTasks[taskId].tMonSpriteId].oam.paletteNum; - lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(gTasks[taskId].tSpecies, otId, personality); - LoadHueShiftedMonPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP, personality); + lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(gTasks[taskId].tSpecies, isShiny, personality); + if(!isShiny) + LoadHueShiftedMonPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(lzPaletteData, OBJ_PLTT_ID(paletteNum), PLTT_SIZE_4BPP); DestroyTask(taskId); } } @@ -4563,12 +4563,18 @@ static void UNUSED PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) #define NUM_FOOTPRINT_TILES 4 -static void DrawFootprint(u8 windowId, u16 dexNum) +void DrawFootprint(u8 windowId, u16 species) { u8 ALIGNED(4) footprint4bpp[TILE_SIZE_4BPP * NUM_FOOTPRINT_TILES]; - const u8 *footprintGfx = gSpeciesInfo[NationalPokedexNumToSpecies(dexNum)].footprint; + const u8 *footprintGfx = NULL; u32 i, j, tileIdx = 0; +#if P_FOOTPRINTS + footprintGfx = gSpeciesInfo[SanitizeSpeciesId(species)].footprint; +#else + return; +#endif + if (footprintGfx != NULL) { for (i = 0; i < TILE_SIZE_1BPP * NUM_FOOTPRINT_TILES; i++) @@ -4654,7 +4660,7 @@ static u32 GetPokedexMonPersonality(u16 species) u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) { nationalNum = NationalPokedexNumToSpecies(nationalNum); - return CreateMonPicSprite(nationalNum, SHINY_ODDS, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); + return CreateMonPicSprite(nationalNum, FALSE, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); } static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum) diff --git a/src/pokedex_plus_hgss.c b/src/pokedex_plus_hgss.c index 350762b213c7..05e4bc677590 100644 --- a/src/pokedex_plus_hgss.c +++ b/src/pokedex_plus_hgss.c @@ -539,7 +539,6 @@ static void PrintMonWeight(u16 weight, u8 left, u8 top); static void ResetOtherVideoRegisters(u16); static u8 PrintCryScreenSpeciesName(u8, u16, u8, u8); static void PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top); -static void DrawFootprint(u8 windowId, u16 species); static u16 CreateMonSpriteFromNationalDexNumberHGSS(u16 nationalNum, s16 x, s16 y, u16 paletteSlot); static u16 CreateSizeScreenTrainerPic(u16, s16, s16, s8); static u16 GetNextPosition(u8, u16, u16, u16); @@ -4645,46 +4644,6 @@ static void UNUSED PrintDecimalNum(u8 windowId, u16 num, u8 left, u8 top) PrintInfoSubMenuText(windowId, str, left, top); } -// The footprints are drawn on WIN_FOOTPRINT, which uses BG palette 15 (loaded with graphics/text_window/message_box.gbapal) -// The footprint pixels are stored as 1BPP, and set to the below color index in this palette when converted to 4BPP. -#define FOOTPRINT_COLOR_IDX 2 - -#define NUM_FOOTPRINT_TILES 4 - -static void DrawFootprint(u8 windowId, u16 species) -{ - u8 ALIGNED(4) footprint4bpp[TILE_SIZE_4BPP * NUM_FOOTPRINT_TILES]; - const u8 *footprintGfx = gSpeciesInfo[SanitizeSpeciesId(species)].footprint; - u32 i, j, tileIdx = 0; - - if (footprintGfx != NULL) - { - for (i = 0; i < TILE_SIZE_1BPP * NUM_FOOTPRINT_TILES; i++) - { - u8 footprint1bpp = footprintGfx[i]; - - // Convert the 8 pixels in the above 1BPP byte to 4BPP. - // Each iteration creates one 4BPP byte (2 pixels), - // so we need 4 iterations to do all 8 pixels. - for (j = 0; j < 4; j++) - { - u8 tile = 0; - if (footprint1bpp & (1 << (2 * j))) - tile |= FOOTPRINT_COLOR_IDX; // Set pixel - if (footprint1bpp & (2 << (2 * j))) - tile |= FOOTPRINT_COLOR_IDX << 4; // Set pixel - footprint4bpp[tileIdx] = tile; - tileIdx++; - } - } - } - else - { - CpuFastFill(0, footprint4bpp, sizeof(footprint4bpp)); - } - CopyToWindowPixelBuffer(windowId, footprint4bpp, sizeof(footprint4bpp), 0); -} - static void PrintInfoSubMenuText(u8 windowId, const u8 *str, u8 left, u8 top) { u8 color[3]; @@ -4738,7 +4697,7 @@ static u32 GetPokedexMonPersonality(u16 species) static u16 CreateMonSpriteFromNationalDexNumberHGSS(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) { nationalNum = NationalPokedexNumToSpeciesHGSS(nationalNum); - return CreateMonPicSprite(nationalNum, SHINY_ODDS, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); + return CreateMonPicSprite(nationalNum, FALSE, GetPokedexMonPersonality(nationalNum), TRUE, x, y, paletteSlot, TAG_NONE); } static u16 GetPokemonScaleFromNationalDexNumber(u16 nationalNum) @@ -6043,21 +6002,21 @@ static void PrintStatsScreen_Abilities(u8 taskId) if (gTasks[taskId].data[5] == 0) { ability0 = sPokedexView->sPokemonStats.ability0; - PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilityNames[ability0], abilities_x, abilities_y); - PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilityDescriptionPointers[ability0], abilities_x, abilities_y + 14); + PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilities[ability0].name, abilities_x, abilities_y); + PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilities[ability0].description, abilities_x, abilities_y + 14); ability1 = sPokedexView->sPokemonStats.ability1; if (ability1 != ABILITY_NONE && ability1 != ability0) { - PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilityNames[ability1], abilities_x, abilities_y + 30); - PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilityDescriptionPointers[ability1], abilities_x, abilities_y + 44); + PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilities[ability1].name, abilities_x, abilities_y + 30); + PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilities[ability1].description, abilities_x, abilities_y + 44); } } else //Hidden abilities { abilityHidden = sPokedexView->sPokemonStats.abilityHidden; - PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilityNames[abilityHidden], abilities_x, abilities_y); - PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilityDescriptionPointers[abilityHidden], abilities_x, abilities_y + 14); + PrintStatsScreenTextSmallWhite(WIN_STATS_ABILITIES, gAbilities[abilityHidden].name, abilities_x, abilities_y); + PrintStatsScreenTextSmall(WIN_STATS_ABILITIES, gAbilities[abilityHidden].description, abilities_x, abilities_y + 14); } } diff --git a/src/pokemon.c b/src/pokemon.c index 55db1a721767..df4cc78c8dfd 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -89,6 +89,7 @@ EWRAM_DATA static struct MonSpritesGfxManager *sMonSpritesGfxManagers[MON_SPR_GF EWRAM_DATA static u8 sTriedEvolving = 0; #include "data/battle_moves.h" +#include "data/abilities.h" // Used in an unreferenced function in RS. // Unreferenced here and in FRLG. @@ -363,6 +364,35 @@ const struct SpindaSpot gSpindaSpotGraphics[] = #include "data/pokemon/item_effects.h" +const u8 *const gNatureNamePointers[NUM_NATURES] = +{ + [NATURE_HARDY] = COMPOUND_STRING("Hardy"), + [NATURE_LONELY] = COMPOUND_STRING("Lonely"), + [NATURE_BRAVE] = COMPOUND_STRING("Brave"), + [NATURE_ADAMANT] = COMPOUND_STRING("Adamant"), + [NATURE_NAUGHTY] = COMPOUND_STRING("Naughty"), + [NATURE_BOLD] = COMPOUND_STRING("Bold"), + [NATURE_DOCILE] = COMPOUND_STRING("Docile"), + [NATURE_RELAXED] = COMPOUND_STRING("Relaxed"), + [NATURE_IMPISH] = COMPOUND_STRING("Impish"), + [NATURE_LAX] = COMPOUND_STRING("Lax"), + [NATURE_TIMID] = COMPOUND_STRING("Timid"), + [NATURE_HASTY] = COMPOUND_STRING("Hasty"), + [NATURE_SERIOUS] = COMPOUND_STRING("Serious"), + [NATURE_JOLLY] = COMPOUND_STRING("Jolly"), + [NATURE_NAIVE] = COMPOUND_STRING("Naive"), + [NATURE_MODEST] = COMPOUND_STRING("Modest"), + [NATURE_MILD] = COMPOUND_STRING("Mild"), + [NATURE_QUIET] = COMPOUND_STRING("Quiet"), + [NATURE_BASHFUL] = COMPOUND_STRING("Bashful"), + [NATURE_RASH] = COMPOUND_STRING("Rash"), + [NATURE_CALM] = COMPOUND_STRING("Calm"), + [NATURE_GENTLE] = COMPOUND_STRING("Gentle"), + [NATURE_SASSY] = COMPOUND_STRING("Sassy"), + [NATURE_CAREFUL] = COMPOUND_STRING("Careful"), + [NATURE_QUIRKY] = COMPOUND_STRING("Quirky"), +}; + const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = { // Attack Defense Speed Sp.Atk Sp. Def [NATURE_HARDY] = { 0, 0, 0, 0, 0 }, @@ -739,6 +769,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, u8 i; u8 availableIVs[NUM_STATS]; u8 selectedIvs[LEGENDARY_PERFECT_IV_COUNT]; + bool32 isShiny; ZeroBoxMonData(boxMon); @@ -748,54 +779,32 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, personality = Random32(); // Determine original trainer ID - if (otIdType == OT_ID_RANDOM_NO_SHINY) // Pokemon cannot be shiny + if (otIdType == OT_ID_RANDOM_NO_SHINY) { - u32 shinyValue; - do - { - // Choose random OT IDs until one that results in a non-shiny Pokémon value = Random32(); - shinyValue = GET_SHINY_VALUE(value, personality); - } while (shinyValue < SHINY_ODDS); + isShiny = FALSE; } else if (otIdType == OT_ID_PRESET) { value = fixedOtId; + isShiny = GET_SHINY_VALUE(value, personality) < SHINY_ODDS; } else // Player is the OT { - #ifdef ITEM_SHINY_CHARM - u32 shinyRolls = (CheckBagHasItem(ITEM_SHINY_CHARM, 1)) ? 3 : 1; - #else - u32 shinyRolls = 1; - #endif - u32 i; - value = gSaveBlock2Ptr->playerTrainerId[0] | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[3] << 24); -#if P_FLAG_FORCE_NO_SHINY != 0 - if (FlagGet(P_FLAG_FORCE_NO_SHINY)) + if (P_FLAG_FORCE_NO_SHINY != 0 && FlagGet(P_FLAG_FORCE_NO_SHINY)) { - while (GET_SHINY_VALUE(value, personality) < SHINY_ODDS) - personality = Random32(); + isShiny = FALSE; } -#endif -#if P_FLAG_FORCE_SHINY != 0 - #if P_FLAG_FORCE_NO_SHINY != 0 - else - #endif - if (FlagGet(P_FLAG_FORCE_SHINY)) + else if (P_FLAG_FORCE_SHINY != 0 && FlagGet(P_FLAG_FORCE_SHINY)) { - while (GET_SHINY_VALUE(value, personality) >= SHINY_ODDS) - personality = Random32(); + isShiny = TRUE; } -#endif -#if P_FLAG_FORCE_SHINY != 0 || P_FLAG_FORCE_NO_SHINY != 0 else -#endif { u32 totalRerolls = 0; if (CheckBagHasItem(ITEM_SHINY_CHARM, 1)) @@ -808,12 +817,15 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, personality = Random32(); totalRerolls--; } + + isShiny = GET_SHINY_VALUE(value, personality) < SHINY_ODDS; } } SetBoxMonData(boxMon, MON_DATA_PERSONALITY, &personality); SetBoxMonData(boxMon, MON_DATA_OT_ID, &value); + SetBoxMonData(boxMon, MON_DATA_IS_SHINY, &isShiny); StringCopy(speciesName, GetSpeciesName(species)); SetBoxMonData(boxMon, MON_DATA_NICKNAME, speciesName); SetBoxMonData(boxMon, MON_DATA_LANGUAGE, &gGameLanguage); @@ -1407,17 +1419,17 @@ void CalculateMonStats(struct Pokemon *mon) { s32 oldMaxHP = GetMonData(mon, MON_DATA_MAX_HP, NULL); s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL); - s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL); + s32 hpIV = GetMonData(mon, MON_DATA_HYPER_TRAINED_HP) ? MAX_PER_STAT_IVS : GetMonData(mon, MON_DATA_HP_IV, NULL); s32 hpEV = GetMonData(mon, MON_DATA_HP_EV, NULL); - s32 attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL); + s32 attackIV = GetMonData(mon, MON_DATA_HYPER_TRAINED_ATK) ? MAX_PER_STAT_IVS : GetMonData(mon, MON_DATA_ATK_IV, NULL); s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL); - s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL); + s32 defenseIV = GetMonData(mon, MON_DATA_HYPER_TRAINED_DEF) ? MAX_PER_STAT_IVS : GetMonData(mon, MON_DATA_DEF_IV, NULL); s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL); - s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); + s32 speedIV = GetMonData(mon, MON_DATA_HYPER_TRAINED_SPEED) ? MAX_PER_STAT_IVS : GetMonData(mon, MON_DATA_SPEED_IV, NULL); s32 speedEV = GetMonData(mon, MON_DATA_SPEED_EV, NULL); - s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); + s32 spAttackIV = GetMonData(mon, MON_DATA_HYPER_TRAINED_SPATK) ? MAX_PER_STAT_IVS : GetMonData(mon, MON_DATA_SPATK_IV, NULL); s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL); - s32 spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); + s32 spDefenseIV = GetMonData(mon, MON_DATA_HYPER_TRAINED_SPDEF) ? MAX_PER_STAT_IVS : GetMonData(mon, MON_DATA_SPDEF_IV, NULL); s32 spDefenseEV = GetMonData(mon, MON_DATA_SPDEF_EV, NULL); u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); u8 friendship = GetMonData(mon, MON_DATA_FRIENDSHIP, NULL); @@ -1858,7 +1870,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_PLAYER_RIGHT) { gMultiuseSpriteTemplate = sTrainerBackSpriteTemplates[trainerPicId]; - gMultiuseSpriteTemplate.anims = gTrainerBackAnimsPtrTable[trainerPicId]; + gMultiuseSpriteTemplate.anims = gTrainerBacksprites[trainerPicId].animation; } else { @@ -1866,7 +1878,7 @@ void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerPicId, u8 battlerPosition gMultiuseSpriteTemplate = gMonSpritesGfxPtr->templates[battlerPosition]; else gMultiuseSpriteTemplate = gBattlerSpriteTemplates[battlerPosition]; - gMultiuseSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[trainerPicId]; + gMultiuseSpriteTemplate.anims = gTrainerSprites[trainerPicId].animation; } } @@ -1878,7 +1890,7 @@ void SetMultiuseSpriteTemplateToTrainerFront(u16 trainerPicId, u8 battlerPositio gMultiuseSpriteTemplate = gBattlerSpriteTemplates[battlerPosition]; gMultiuseSpriteTemplate.paletteTag = trainerPicId; - gMultiuseSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[trainerPicId]; + gMultiuseSpriteTemplate.anims = gTrainerSprites[trainerPicId].animation; } static void EncryptBoxMon(struct BoxPokemon *boxMon) @@ -2372,6 +2384,24 @@ u32 GetBoxMonData3(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_HIDDEN_NATURE: retVal = boxMon->hiddenNature; break; + case MON_DATA_HYPER_TRAINED_HP: + retVal = boxMon->hyperTrainedHP; + break; + case MON_DATA_HYPER_TRAINED_ATK: + retVal = boxMon->hyperTrainedAttack; + break; + case MON_DATA_HYPER_TRAINED_DEF: + retVal = boxMon->hyperTrainedDefense; + break; + case MON_DATA_HYPER_TRAINED_SPEED: + retVal = boxMon->hyperTrainedSpeed; + break; + case MON_DATA_HYPER_TRAINED_SPATK: + retVal = boxMon->hyperTrainedSpAttack; + break; + case MON_DATA_HYPER_TRAINED_SPDEF: + retVal = boxMon->hyperTrainedSpDefense; + break; default: break; } @@ -2430,7 +2460,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) { SET32(boxMon->species); if (boxMon->species) - boxMon->hasSpecies = 1; + boxMon->hasSpecies = TRUE; else boxMon->hasSpecies = FALSE; break; @@ -2552,7 +2582,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_IS_EGG: SET8(boxMon->isEgg); if (boxMon->isEgg) - boxMon->isEgg = 1; + boxMon->isEgg = TRUE; else boxMon->isEgg = FALSE; break; @@ -2627,6 +2657,24 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) boxMon->spDefenseIV = (ivs >> 25) & MAX_IV_MASK; break; } + case MON_DATA_HYPER_TRAINED_HP: + SET8(boxMon->hyperTrainedHP); + break; + case MON_DATA_HYPER_TRAINED_ATK: + SET8(boxMon->hyperTrainedAttack); + break; + case MON_DATA_HYPER_TRAINED_DEF: + SET8(boxMon->hyperTrainedDefense); + break; + case MON_DATA_HYPER_TRAINED_SPEED: + SET8(boxMon->hyperTrainedSpeed); + break; + case MON_DATA_HYPER_TRAINED_SPATK: + SET8(boxMon->hyperTrainedSpAttack); + break; + case MON_DATA_HYPER_TRAINED_SPDEF: + SET8(boxMon->hyperTrainedSpDefense); + break; case MON_DATA_HIDDEN_NATURE: SET8(boxMon->hiddenNature); break; @@ -2635,6 +2683,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) } } + void CopyMon(void *dest, void *src, size_t size) { memcpy(dest, src, size); @@ -3712,6 +3761,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s u8 beauty = GetMonData(mon, MON_DATA_BEAUTY, 0); u16 upperPersonality = personality >> 16; u32 holdEffect, currentMap, partnerSpecies, partnerHeldItem, partnerHoldEffect; + bool32 consumeItem = FALSE; const struct Evolution *evolutions = GetSpeciesEvolutions(species); if (evolutions == NULL) @@ -3739,7 +3789,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s } if (heldItem == ITEM_ENIGMA_BERRY_E_READER) - #ifndef FREE_ENIGMA_BERRY + #ifndef FREE_ENIGMA_BERRY holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; #else holdEffect = 0; @@ -3792,17 +3842,15 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s case EVO_ITEM_HOLD_NIGHT: if (GetTimeOfDay() == TIME_NIGHT && heldItem == evolutions[i].param) { - heldItem = ITEM_NONE; - SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); targetSpecies = evolutions[i].targetSpecies; + consumeItem = TRUE; } break; case EVO_ITEM_HOLD_DAY: if (GetTimeOfDay() != TIME_NIGHT && heldItem == evolutions[i].param) { - heldItem = ITEM_NONE; - SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); targetSpecies = evolutions[i].targetSpecies; + consumeItem = TRUE; } break; case EVO_LEVEL_DUSK: @@ -3981,9 +4029,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s case EVO_ITEM_HOLD: if (heldItem == evolutions[i].param) { - heldItem = 0; - SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); targetSpecies = evolutions[i].targetSpecies; + consumeItem = TRUE; } break; } @@ -4003,9 +4050,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s case EVO_TRADE_ITEM: if (evolutions[i].param == heldItem) { - heldItem = ITEM_NONE; - SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); targetSpecies = evolutions[i].targetSpecies; + consumeItem = TRUE; } break; case EVO_TRADE_SPECIFIC_MON: @@ -4093,7 +4139,12 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s } break; } - + if (consumeItem) + { + heldItem = ITEM_NONE; + SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); + } + return targetSpecies; } @@ -4721,7 +4772,7 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon) expPoints = gExperienceTables[gSpeciesInfo[species].growthRate][MAX_LEVEL]; SetMonData(mon, MON_DATA_EXP, &expPoints); } - if (nextLevel > GetCurrentLevelCap() || expPoints < gExperienceTables[gSpeciesInfo[species].growthRate][nextLevel]) + if (nextLevel > MAX_LEVEL || expPoints < gExperienceTables[gSpeciesInfo[species].growthRate][nextLevel]) { return FALSE; } @@ -5019,20 +5070,17 @@ static void Task_PlayMapChosenOrBattleBGM(u8 taskId) const u32 *GetMonFrontSpritePal(struct Pokemon *mon) { - u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, 0); - u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); - u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality); + u16 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG, NULL); + bool32 isShiny = GetMonData(mon, MON_DATA_IS_SHINY, NULL); + u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); + return GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality); } -const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality) +const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, bool32 isShiny, u32 personality) { - u32 shinyValue; - species = SanitizeSpeciesId(species); - shinyValue = GET_SHINY_VALUE(otId, personality); - if (shinyValue < SHINY_ODDS) + if (isShiny) { if (gSpeciesInfo[species].shinyPaletteFemale != NULL && IsPersonalityFemale(species, personality)) return gSpeciesInfo[species].shinyPaletteFemale; @@ -5231,18 +5279,7 @@ void SetWildMonHeldItem(void) bool8 IsMonShiny(struct Pokemon *mon) { - u32 otId = GetMonData(mon, MON_DATA_OT_ID, 0); - u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, 0); - return IsShinyOtIdPersonality(otId, personality); -} - -bool8 IsShinyOtIdPersonality(u32 otId, u32 personality) -{ - bool8 retVal = FALSE; - u32 shinyValue = GET_SHINY_VALUE(otId, personality); - if (shinyValue < SHINY_ODDS) - retVal = TRUE; - return retVal; + return GetMonData(mon, MON_DATA_IS_SHINY, NULL); } const u8 *GetTrainerPartnerName(void) @@ -5476,11 +5513,11 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality) const u8 *GetTrainerClassNameFromId(u16 trainerId) { if (trainerId > TRAINER_PARTNER(PARTNER_NONE)) - return gTrainerClassNames[gBattlePartners[trainerId].trainerClass]; + return gTrainerClasses[gBattlePartners[trainerId].trainerClass].name; else if (trainerId < TRAINERS_COUNT) - return gTrainerClassNames[gTrainers[trainerId].trainerClass]; + return gTrainerClasses[gTrainers[trainerId].trainerClass].name; - return gTrainerClassNames[gTrainers[TRAINER_NONE].trainerClass]; + return gTrainerClasses[gTrainers[TRAINER_NONE].trainerClass].name; } const u8 *GetTrainerNameFromId(u16 trainerId) @@ -6024,9 +6061,17 @@ void UpdateMonPersonality(struct BoxPokemon *boxMon, u32 personality) { struct BoxPokemon old; + bool32 isShiny = GetBoxMonData(boxMon, MON_DATA_IS_SHINY, NULL); + u32 hiddenNature = GetBoxMonData(boxMon, MON_DATA_HIDDEN_NATURE, NULL); + u32 teraType = GetBoxMonData(boxMon, MON_DATA_TERA_TYPE, NULL); + old = *boxMon; boxMon->personality = personality; + + SetBoxMonData(boxMon, MON_DATA_IS_SHINY, &isShiny); + SetBoxMonData(boxMon, MON_DATA_HIDDEN_NATURE, &hiddenNature); + SetBoxMonData(boxMon, MON_DATA_TERA_TYPE, &teraType); } u16 GetCryIdBySpecies(u16 species) diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 2a03a6a0963a..9113d161b14e 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -803,31 +803,6 @@ static void LoadAndCreateEnemyShadowSpriteCustom(struct PokemonDebugMenu *data, gSprites[data->frontShadowSpriteId].invisible = invisible; } -//Tile functions (footprints) -static void DrawFootprintCustom(u8 windowId, u16 species) -{ - u8 footprint[32 * 4] = {0}; - const u8 *footprintGfx = gSpeciesInfo[species].footprint; - u32 i, j, tileIdx = 0; - - if (footprintGfx != NULL) - { - for (i = 0; i < 32; i++) - { - u8 tile = footprintGfx[i]; - for (j = 0; j < 4; j++) - { - u8 value = ((tile >> (2 * j)) & 1 ? 2 : 0); - if (tile & (2 << (2 * j))) - value |= 0x20; - footprint[tileIdx] = value; - tileIdx++; - } - } - } - CopyToWindowPixelBuffer(windowId, footprint, sizeof(footprint), 0); -} - //Battle background functions static void LoadBattleBg(u8 battleBgType, u8 battleTerrain) { @@ -1186,7 +1161,7 @@ void CB2_Debug_Pokemon(void) PrintBattleBgName(taskId); //Footprint - DrawFootprintCustom(WIN_FOOTPRINT, species); + DrawFootprint(WIN_FOOTPRINT, species); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); gMain.state++; @@ -1737,7 +1712,7 @@ static void ReloadPokemonSprites(struct PokemonDebugMenu *data) SetArrowInvisibility(data); //Footprint - DrawFootprintCustom(WIN_FOOTPRINT, species); + DrawFootprint(WIN_FOOTPRINT, species); CopyWindowToVram(WIN_FOOTPRINT, COPYWIN_GFX); } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index e10061213cd2..bb5afb912a53 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -157,7 +157,8 @@ enum { struct PokemonJump_MonInfo { - u16 species; + u16 isShiny:1; + u16 species:15; u32 otId; u32 personality; }; @@ -894,6 +895,7 @@ static void InitJumpMonInfo(struct PokemonJump_MonInfo *monInfo, struct Pokemon { monInfo->species = GetMonData(mon, MON_DATA_SPECIES); monInfo->otId = GetMonData(mon, MON_DATA_OT_ID); + monInfo->isShiny = GetMonData(mon, MON_DATA_IS_SHINY); monInfo->personality = GetMonData(mon, MON_DATA_PERSONALITY); } @@ -2970,7 +2972,7 @@ static void CreateJumpMonSprite(struct PokemonJumpGfx *jumpGfx, struct PokemonJu spriteSheet.size = MON_PIC_SIZE; LoadSpriteSheet(&spriteSheet); - spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(monInfo->species, monInfo->otId, monInfo->personality); + spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(monInfo->species, monInfo->isShiny, monInfo->personality); spritePalette.tag = multiplayerId; LoadCompressedSpritePalette(&spritePalette); @@ -4161,7 +4163,8 @@ static void Task_UpdateBonus(u8 taskId) struct MonInfoPacket { u8 id; - u16 species; + u16 isShiny:1; + u16 species:15; u32 personality; u32 otId; }; @@ -4170,6 +4173,7 @@ static void SendPacket_MonInfo(struct PokemonJump_MonInfo *monInfo) { struct MonInfoPacket packet; packet.id = PACKET_MON_INFO, + packet.isShiny = monInfo->isShiny, packet.species = monInfo->species, packet.otId = monInfo->otId, packet.personality = monInfo->personality, @@ -4187,6 +4191,7 @@ static bool32 RecvPacket_MonInfo(int multiplayerId, struct PokemonJump_MonInfo * if (packet.id == PACKET_MON_INFO) { monInfo->species = packet.species; + monInfo->isShiny = packet.isShiny; monInfo->otId = packet.otId; monInfo->personality = packet.personality; return TRUE; diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 246d42d0b742..f2b25982dfaf 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -201,7 +201,7 @@ enum { CURSOR_AREA_IN_BOX, CURSOR_AREA_IN_PARTY, CURSOR_AREA_BOX_TITLE, - CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box + CURSOR_AREA_BUTTONS, // Party Pokémon and Close Box }; #define CURSOR_AREA_IN_HAND CURSOR_AREA_BOX_TITLE // Alt name for cursor area used by Move Items @@ -499,7 +499,7 @@ struct PokemonStorageSystemData u8 cursorPalNums[2]; const u32 *displayMonPalette; u32 displayMonPersonality; - u32 displayMonOtId; + u32 displayMonIsShiny; u16 displayMonSpecies; u16 displayMonItemId; u16 displayUnusedVar; @@ -4002,7 +4002,7 @@ static void LoadDisplayMonGfx(u16 species, u32 pid) if (species != SPECIES_NONE) { - bool8 isShiny = IsShinyOtIdPersonality(sStorage->displayMonOtId, sStorage->displayMonPersonality); + bool8 isShiny = sStorage->displayMonIsShiny; LoadSpecialPokePic(sStorage->tileBuffer, species, pid, TRUE); LZ77UnCompWram(sStorage->displayMonPalette, sStorage->displayMonPalBuffer); if (!isShiny) @@ -6956,7 +6956,7 @@ static void SetDisplayMonData(void *pokemon, u8 mode) sStorage->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); sStorage->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); sStorage->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); - sStorage->displayMonOtId = GetMonData(mon, MON_DATA_OT_ID); + sStorage->displayMonIsShiny = GetMonData(mon, MON_DATA_IS_SHINY); sStorage->displayMonPalette = GetMonFrontSpritePal(mon); gender = GetMonGender(mon); sStorage->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM); @@ -6969,7 +6969,7 @@ static void SetDisplayMonData(void *pokemon, u8 mode) sStorage->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES_OR_EGG); if (sStorage->displayMonSpecies != SPECIES_NONE) { - u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); + bool8 isShiny = GetBoxMonData(boxMon, MON_DATA_IS_SHINY); sanityIsBadEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); if (sanityIsBadEgg) sStorage->displayMonIsEgg = TRUE; @@ -6982,8 +6982,7 @@ static void SetDisplayMonData(void *pokemon, u8 mode) sStorage->displayMonLevel = GetLevelFromBoxMonExp(boxMon); sStorage->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); sStorage->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); - sStorage->displayMonOtId = GetBoxMonData(boxMon, MON_DATA_OT_ID); - sStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sStorage->displayMonSpecies, otId, sStorage->displayMonPersonality); + sStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(sStorage->displayMonSpecies, isShiny, sStorage->displayMonPersonality); gender = GetGenderFromSpeciesAndPersonality(sStorage->displayMonSpecies, sStorage->displayMonPersonality); sStorage->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); } @@ -10171,12 +10170,12 @@ static void UnkUtil_DmaRun(struct UnkUtilData *data) void UpdateSpeciesSpritePSS(struct BoxPokemon *boxMon) { u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES); - u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); + bool8 isShiny = GetBoxMonData(boxMon, MON_DATA_IS_SHINY); u32 pid = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); // Update front sprite sStorage->displayMonSpecies = species; - sStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(species, otId, pid); + sStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, pid); if (!sJustOpenedBag) { LoadDisplayMonGfx(species, pid); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 1cbc4a67a4d6..62226047fd9a 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -144,9 +144,10 @@ static EWRAM_DATA struct PokemonSummaryScreenData /*0x0C*/ struct Pokemon currentMon; /*0x70*/ struct PokeSummary { - u16 species; - u16 species2; - u8 isEgg; + u16 species; // 0x0 + u16 species2; // 0x2 + u8 isEgg:1; // 0x4 + u8 isShiny:1; u8 level; u8 ribbonCount; u8 ailment; @@ -343,7 +344,6 @@ static void GetMapNameOrre(u8 *dest, u16 mapSecId, bool8 isXD); // const rom data #include "data/text/move_descriptions.h" -#include "data/text/nature_names.h" #include "data/text/characteristics.h" #include "data/text/met_locations.h" @@ -1602,6 +1602,7 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon) default: sum->ribbonCount = GetMonData(mon, MON_DATA_RIBBON_COUNT); sum->fatefulEncounter = GetMonData(mon, MON_DATA_MODERN_FATEFUL_ENCOUNTER); + sum->isShiny = GetMonData(mon, MON_DATA_IS_SHINY); if (sum->isEgg) { sMonSummaryScreen->minPageIndex = PSS_PAGE_MEMO; @@ -3363,10 +3364,10 @@ static void PrintSkillsPage(void) PrintTextOnWindow(PSS_LABEL_PANE_RIGHT, gStringVar1, x, 88, 0, PSS_COLOR_BLACK_GRAY_SHADOW); PrintTextOnWindow(PSS_LABEL_PANE_RIGHT, sText_Ability, 8, 112, 0, PSS_COLOR_WHITE_BLACK_SHADOW); - StringCopy(gStringVar1, gAbilityNames[GetAbilityBySpecies(sMonSummaryScreen->summary.species, summary->abilityNum)]); + StringCopy(gStringVar1, gAbilities[GetAbilityBySpecies(sMonSummaryScreen->summary.species, summary->abilityNum)].name); x = GetStringCenterAlignXOffset(1, gStringVar1, 88) + 58; PrintTextOnWindow(PSS_LABEL_PANE_RIGHT, gStringVar1, x, 112, 0, PSS_COLOR_BLACK_GRAY_SHADOW); - StringCopy(gStringVar1, gAbilityDescriptionPointers[GetAbilityBySpecies(sMonSummaryScreen->summary.species, summary->abilityNum)]); + StringCopy(gStringVar1, gAbilities[GetAbilityBySpecies(sMonSummaryScreen->summary.species, summary->abilityNum)].description); PrintTextOnWindow(PSS_LABEL_PANE_RIGHT, gStringVar1, 8, 128, 0, PSS_COLOR_BLACK_GRAY_SHADOW); ScheduleBgCopyTilemapToVram(0); PutWindowTilemap(PSS_LABEL_PANE_RIGHT); @@ -3899,11 +3900,10 @@ static u8 LoadMonGfxAndSprite(struct Pokemon *mon, s16 *state) (*state)++; return 0xFF; case 1: - isShiny = IsShinyOtIdPersonality(summary->OTID, summary->pid); if (!isShiny) - LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->OTID, summary->pid), summary->pid, summary->species2); + LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->isShiny, summary->pid), summary->pid, summary->species2); else - LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->OTID, summary->pid), summary->species2); + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(summary->species2, summary->isShiny, summary->pid), summary->species2); SetMultiuseSpriteTemplateToPokemon(summary->species2, B_POSITION_OPPONENT_LEFT); (*state)++; return 0xFF; diff --git a/src/pokenav_conditions.c b/src/pokenav_conditions.c index 9ffcc268cf86..5d43b2e83fbf 100644 --- a/src/pokenav_conditions.c +++ b/src/pokenav_conditions.c @@ -523,7 +523,7 @@ static void GetMonConditionGraphData(s16 listId, u8 loadId) static void ConditionGraphDrawMonPic(s16 listId, u8 loadId) { u16 boxId, monId, species; - u32 personality, tid; + u32 personality; bool8 isShiny; struct Pokenav_ConditionMenu *menu = GetSubstructPtr(POKENAV_SUBSTRUCT_CONDITION_GRAPH_MENU); struct PokenavMonList *monListPtr = GetSubstructPtr(POKENAV_SUBSTRUCT_MON_LIST); @@ -534,11 +534,10 @@ static void ConditionGraphDrawMonPic(s16 listId, u8 loadId) boxId = monListPtr->monData[listId].boxId; monId = monListPtr->monData[listId].monId; species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES_OR_EGG, NULL); - tid = GetBoxOrPartyMonData(boxId, monId, MON_DATA_OT_ID, NULL); + isShiny = GetBoxOrPartyMonData(boxId, monId, MON_DATA_IS_SHINY, NULL); personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL); - isShiny = IsShinyOtIdPersonality(tid, personality); LoadSpecialPokePic(menu->monPicGfx[loadId], species, personality, TRUE); - LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, tid, personality), menu->monPal[loadId]); + LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), menu->monPal[loadId]); if (!isShiny) HueShiftMonPalette((u16*) menu->monPal[loadId], personality); } diff --git a/src/pokenav_match_call_data.c b/src/pokenav_match_call_data.c index 45719d0491eb..8f2a465fd77d 100644 --- a/src/pokenav_match_call_data.c +++ b/src/pokenav_match_call_data.c @@ -1098,7 +1098,7 @@ static void MatchCall_GetNameAndDesc_Birch(match_call_t matchCall, const u8 **de static void MatchCall_GetNameAndDescByRematchIdx(u32 idx, const u8 **desc, const u8 **name) { const struct Trainer *trainer = gTrainers + GetTrainerIdxByRematchIdx(idx); - *desc = gTrainerClassNames[trainer->trainerClass]; + *desc = gTrainerClasses[trainer->trainerClass].name; *name = trainer->trainerName; } diff --git a/src/pokenav_match_call_gfx.c b/src/pokenav_match_call_gfx.c index d28d4a276eba..594b4d83d41c 100755 --- a/src/pokenav_match_call_gfx.c +++ b/src/pokenav_match_call_gfx.c @@ -1247,8 +1247,8 @@ static void LoadCheckPageTrainerPic(struct Pokenav_MatchCallGfx *gfx) int trainerPic = GetMatchCallTrainerPic(PokenavList_GetSelectedIndex()); if (trainerPic >= 0) { - DecompressPicFromTable(&gTrainerFrontPicTable[trainerPic], gfx->trainerPicGfx); - LZ77UnCompWram(gTrainerFrontPicPaletteTable[trainerPic].data, gfx->trainerPicPal); + DecompressPicFromTable(&gTrainerSprites[trainerPic].frontPic, gfx->trainerPicGfx); + LZ77UnCompWram(gTrainerSprites[trainerPic].palette.data, gfx->trainerPicPal); cursor = RequestDma3Copy(gfx->trainerPicGfx, gfx->trainerPicGfxPtr, sizeof(gfx->trainerPicGfx), 1); LoadPalette(gfx->trainerPicPal, gfx->trainerPicPalOffset, sizeof(gfx->trainerPicPal)); gfx->trainerPicSprite->data[0] = 0; diff --git a/src/pokenav_match_call_list.c b/src/pokenav_match_call_list.c index f7ff3dd845ba..b75077a339a3 100755 --- a/src/pokenav_match_call_list.c +++ b/src/pokenav_match_call_list.c @@ -409,7 +409,7 @@ void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntry *matchCallEntry, u8 int index = GetTrainerIdxByRematchIdx(matchCallEntry->headerId); const struct Trainer *trainer = &gTrainers[index]; int class = trainer->trainerClass; - className = gTrainerClassNames[class]; + className = gTrainerClasses[class].name; trainerName = trainer->trainerName; } else diff --git a/src/pokenav_menu_handler.c b/src/pokenav_menu_handler.c index ab2e85ca7425..d07f69a4ac56 100644 --- a/src/pokenav_menu_handler.c +++ b/src/pokenav_menu_handler.c @@ -289,7 +289,7 @@ static u32 HandleMainMenuInput(struct Pokenav_Menu *menu) return POKENAV_MENU_FUNC_NONE; } -// Force the player to select Match Call during the call Mr. Stone pokenav tutorial +// Force the player to select Match Call during the call Mr. Stone PokéNav tutorial static u32 HandleMainMenuInputTutorial(struct Pokenav_Menu *menu) { if (UpdateMenuCursorPos(menu)) @@ -319,7 +319,7 @@ static u32 HandleMainMenuInputTutorial(struct Pokenav_Menu *menu) return POKENAV_MENU_FUNC_NONE; } -// After calling Mr. Stone during the pokenav tutorial, force player to exit or use Match Call again +// After calling Mr. Stone during the PokéNav tutorial, force player to exit or use Match Call again static u32 HandleMainMenuInputEndTutorial(struct Pokenav_Menu *menu) { if (UpdateMenuCursorPos(menu)) diff --git a/src/pokenav_ribbons_summary.c b/src/pokenav_ribbons_summary.c index f2e589e56d45..1ff55dc187c6 100644 --- a/src/pokenav_ribbons_summary.c +++ b/src/pokenav_ribbons_summary.c @@ -401,7 +401,7 @@ static void GetMonNicknameLevelGender(u8 *nick, u8 *level, u8 *gender) StringGet_Nickname(nick); } -static void GetMonSpeciesPersonalityOtId(u16 *species, u32 *personality, u32 *otId) +static void GetMonSpeciesPersonalityShiny(u16 *species, u32 *personality, bool8 *isShiny) { struct Pokenav_RibbonsSummaryList *list = GetSubstructPtr(POKENAV_SUBSTRUCT_RIBBONS_SUMMARY_LIST); struct PokenavMonList *mons = list->monList; @@ -413,7 +413,7 @@ static void GetMonSpeciesPersonalityOtId(u16 *species, u32 *personality, u32 *ot struct Pokemon *mon = &gPlayerParty[monInfo->monId]; *species = GetMonData(mon, MON_DATA_SPECIES); *personality = GetMonData(mon, MON_DATA_PERSONALITY); - *otId = GetMonData(mon, MON_DATA_OT_ID); + *isShiny = GetMonData(mon, MON_DATA_IS_SHINY); } else { @@ -421,7 +421,7 @@ static void GetMonSpeciesPersonalityOtId(u16 *species, u32 *personality, u32 *ot struct BoxPokemon *boxMon = GetBoxedMonPtr(monInfo->boxId, monInfo->monId); *species = GetBoxMonData(boxMon, MON_DATA_SPECIES); *personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); - *otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); + *isShiny = GetBoxMonData(boxMon, MON_DATA_IS_SHINY); } } @@ -941,9 +941,10 @@ static void PrintRibbonsMonListIndex(struct Pokenav_RibbonsSummaryMenu *menu) static void ResetSpritesAndDrawMonFrontPic(struct Pokenav_RibbonsSummaryMenu *menu) { u16 species; - u32 personality, otId; + u32 personality; + bool8 isShiny; - GetMonSpeciesPersonalityOtId(&species, &personality, &otId); + GetMonSpeciesPersonalityShiny(&species, &personality, &isShiny); ResetAllPicSprites(); menu->monSpriteId = DrawRibbonsMonFrontPic(MON_SPRITE_X_ON, MON_SPRITE_Y); PokenavFillPalette(15, 0); @@ -960,10 +961,11 @@ static void DestroyRibbonsMonFrontPic(struct Pokenav_RibbonsSummaryMenu *menu) static u16 DrawRibbonsMonFrontPic(s32 x, s32 y) { u16 species, spriteId; - u32 personality, otId; + u32 personality; + bool8 isShiny; - GetMonSpeciesPersonalityOtId(&species, &personality, &otId); - spriteId = CreateMonPicSprite(species, otId, personality, TRUE, MON_SPRITE_X_ON, MON_SPRITE_Y, 15, TAG_NONE); + GetMonSpeciesPersonalityShiny(&species, &personality, &isShiny); + spriteId = CreateMonPicSprite(species, isShiny, personality, TRUE, MON_SPRITE_X_ON, MON_SPRITE_Y, 15, TAG_NONE); gSprites[spriteId].oam.priority = 0; return spriteId; } diff --git a/src/random.c b/src/random.c index c79b7f7d5ced..08b5e06e1364 100644 --- a/src/random.c +++ b/src/random.c @@ -4,12 +4,108 @@ #include #endif -EWRAM_DATA static u8 sUnknown = 0; -EWRAM_DATA static u32 sRandCount = 0; - // IWRAM common -u32 gRngValue; -u32 gRng2Value; +rng_value_t gRngValue; +rng_value_t gRng2Value; + +#if HQ_RANDOM == TRUE + +EWRAM_DATA static volatile bool8 sRngLoopUnlocked; + +// Streams allow generators seeded the same to have separate outputs. +#define STREAM1 1 +#define STREAM2 29 + +// A variant of SFC32 that lets you change the stream. +// stream can be any odd number. +static inline u32 _SFC32_Next_Stream(struct Sfc32State *state, const u8 stream) +{ + const u32 result = state->a + state->b + state->ctr; + state->ctr += stream; + state->a = state->b ^ (state->b >> 9); + state->b = state->c * 9; + state->c = result + ((state->c << 21) | (state->c >> 11)); + return result; +} + +static void SFC32_Seed(struct Sfc32State *state, u16 seed, u8 stream) +{ + u32 i; + state->a = state->b = 0; + state->c = seed; + state->ctr = stream; + for(i = 0; i < 16; i++) + { + _SFC32_Next_Stream(state, stream); + } +} + +/*This ASM implementation uses some shortcuts and is generally faster on the GBA. +* It's not necessarily faster if inlined, or on other platforms. */ +u32 NAKED Random32(void) +{ + asm(".thumb\n\ + push {r4, r5, r6}\n\ + mov r6, #11\n\ + ldr r5, =gRngValue\n\ + ldmia r5!, {r1, r2, r3, r4}\n\ + @ e (result) = a + b + d++\n\ + add r1, r1, r2\n\ + add r0, r1, r4\n\ + add r4, r4, #" STR(STREAM1) "\n\ + @ a = b ^ (b >> 9)\n\ + lsr r1, r2, #9\n\ + eor r1, r1, r2\n\ + @ b = c + (c << 3) [c * 9]\n\ + lsl r2, r3, #3\n\ + add r2, r2, r3\n\ + @ c = rol(c, 21) + e\n\ + ror r3, r3, r6\n\ + add r3, r3, r0\n\ + sub r5, r5, #16\n\ + stmia r5!, {r1, r2, r3, r4}\n\ + pop {r4, r5, r6}\n\ + bx lr\n\ + .ltorg" + ); +} + +u32 Random2_32(void) +{ + return _SFC32_Next_Stream(&gRng2Value, STREAM2); +} + +void SeedRng(u16 seed) +{ + struct Sfc32State state; + SFC32_Seed(&state, seed, STREAM1); + + sRngLoopUnlocked = FALSE; + gRngValue = state; + sRngLoopUnlocked = TRUE; +} + +void SeedRng2(u16 seed) +{ + SFC32_Seed(&gRng2Value, seed, STREAM2); +} + +void AdvanceRandom(void) +{ + if (sRngLoopUnlocked == TRUE) + Random32(); +} + +#define LOOP_RANDOM_START \ + struct Sfc32State *const state = &gRngValue; \ + sRngLoopUnlocked = FALSE; + +#define LOOP_RANDOM_END sRngLoopUnlocked = TRUE; + +#define LOOP_RANDOM ((u16)(_SFC32_Next(state) >> 16)) + +#else +EWRAM_DATA static u32 sRandCount = 0; u16 Random(void) { @@ -21,7 +117,6 @@ u16 Random(void) void SeedRng(u16 seed) { gRngValue = seed; - sUnknown = 0; } void SeedRng2(u16 seed) @@ -35,15 +130,24 @@ u16 Random2(void) return gRng2Value >> 16; } +#define LOOP_RANDOM_START +#define LOOP_RANDOM_END + +#define LOOP_RANDOM (Random()) + +#endif + #define SHUFFLE_IMPL \ u32 tmp; \ + LOOP_RANDOM_START; \ --n; \ while (n > 1) \ { \ - int j = (Random() * (n+1)) >> 16; \ + int j = (LOOP_RANDOM * (n+1)) >> 16; \ SWAP(data[n], data[j], tmp); \ --n; \ - } + } \ + LOOP_RANDOM_END void Shuffle8(void *data_, size_t n) { @@ -66,15 +170,19 @@ void Shuffle32(void *data_, size_t n) void ShuffleN(void *data, size_t n, size_t size) { void *tmp = alloca(size); + LOOP_RANDOM_START; --n; + while (n > 1) { - int j = (Random() * (n+1)) >> 16; + int j = (LOOP_RANDOM * (n+1)) >> 16; memcpy(tmp, (u8 *)data + n*size, size); // tmp = data[n]; memcpy((u8 *)data + n*size, (u8 *)data + j*size, size); // data[n] = data[j]; memcpy((u8 *)data + j*size, tmp, size); // data[j] = tmp; --n; } + + LOOP_RANDOM_END; } __attribute__((weak, alias("RandomUniformDefault"))) @@ -96,12 +204,14 @@ u32 RandomUniformDefault(enum RandomTag tag, u32 lo, u32 hi) u32 RandomUniformExceptDefault(enum RandomTag tag, u32 lo, u32 hi, bool32 (*reject)(u32)) { + LOOP_RANDOM_START; while (TRUE) { - u32 n = RandomUniformDefault(tag, lo, hi); + u32 n = lo + (((hi - lo + 1) * LOOP_RANDOM) >> 16); if (!reject(n)) return n; } + LOOP_RANDOM_END; } u32 RandomWeightedArrayDefault(enum RandomTag tag, u32 sum, u32 n, const u8 *weights) diff --git a/src/recorded_battle.c b/src/recorded_battle.c index 4d36ce12b275..2ac33a08a0a1 100644 --- a/src/recorded_battle.c +++ b/src/recorded_battle.c @@ -33,8 +33,8 @@ struct PlayerInfo // Save data using TryWriteSpecialSaveSector is allowed to exceed SECTOR_DATA_SIZE (up to the counter field) STATIC_ASSERT(sizeof(struct RecordedBattleSave) <= SECTOR_COUNTER_OFFSET, RecordedBattleSaveFreeSpace); -EWRAM_DATA u32 gRecordedBattleRngSeed = 0; -EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0; +EWRAM_DATA rng_value_t gRecordedBattleRngSeed = RNG_VALUE_EMPTY; +EWRAM_DATA rng_value_t gBattlePalaceMoveSelectionRngValue = RNG_VALUE_EMPTY; EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0}; EWRAM_DATA static u16 sBattlerRecordSizes[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA static u16 sBattlerPrevRecordSizes[MAX_BATTLERS_COUNT] = {0}; @@ -87,7 +87,7 @@ void RecordedBattle_Init(u8 mode) for (j = 0; j < BATTLER_RECORD_SIZE; j++) sBattleRecords[i][j] = 0xFF; sBattleFlags = gBattleTypeFlags; - sAI_Scripts = gBattleResources->ai->aiFlags; + sAI_Scripts = gBattleResources->ai->aiFlags[B_POSITION_OPPONENT_LEFT]; } } } diff --git a/src/reload_save.c b/src/reload_save.c index 5425d1c7c46d..f6104c1db76f 100644 --- a/src/reload_save.c +++ b/src/reload_save.c @@ -1,5 +1,6 @@ #include "global.h" #include "main.h" +#include "crt0.h" #include "gpu_regs.h" #include "m4a.h" #include "load_save.h" @@ -15,6 +16,7 @@ void ReloadSave(void) u16 imeBackup = REG_IME; REG_IME = 0; RegisterRamReset(RESET_EWRAM); + ReInitializeEWRAM(); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK); REG_IME = imeBackup; gMain.inBattle = FALSE; diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 82d854215205..87f639194cbb 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -235,7 +235,7 @@ void CreateBattlerSprite(u32 battler) { SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, - (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + (8 - gTrainerBacksprites[gSaveBlock2Ptr->playerGender].coordinates.size) * 4 + 80, GetBattlerSpriteSubpriority(0)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; @@ -245,7 +245,7 @@ void CreateBattlerSprite(u32 battler) { SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0)); gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50, - (8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].size) * 4 + 80, + (8 - gTrainerBacksprites[TRAINER_BACK_PIC_WALLY].coordinates.size) * 4 + 80, GetBattlerSpriteSubpriority(0)); gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler; gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy; diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index d77ef873d220..c3fc8a545c37 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -8,7 +8,7 @@ // The purpose of this struct is for outside applications to be // able to access parts of the ROM or its save file, like a public API. -// In vanilla, it was used by Colosseum and XD to access pokemon graphics. +// In vanilla, it was used by Colosseum and XD to access Pokémon graphics. // // If this struct is rearranged in any way, it defeats the purpose of // having it at all. Applications like PKHex or streaming HUDs may find @@ -155,8 +155,8 @@ static const struct GFRomHeader sGFRomHeader = { .externalEventDataOffset = offsetof(struct SaveBlock1, externalEventData), .unk18 = 0x00000000, .speciesInfo = gSpeciesInfo, - .abilityNames = gAbilityNames, - .abilityDescriptions = gAbilityDescriptionPointers, + //.abilityNames = gAbilityNames, //handled in gAbilities + //.abilityDescriptions = gAbilityDescriptionPointers, //handled in gAbilities .items = gItems, .moves = gBattleMoves, .ballGfx = gBallSpriteSheets, diff --git a/src/rom_header_rhh.c b/src/rom_header_rhh.c index 2e141670a744..40c05e4372c6 100644 --- a/src/rom_header_rhh.c +++ b/src/rom_header_rhh.c @@ -1,5 +1,8 @@ #include "global.h" +#include "constants/abilities.h" #include "constants/expansion.h" +#include "constants/moves.h" +#include "constants/species.h" // Similar to the GF ROM header, this struct allows external programs to // detect details about Expansion. @@ -14,6 +17,10 @@ struct RHHRomHeader /*0x07*/ u8 expansionVersionMinor; /*0x08*/ u8 expansionVersionPatch; /*0x09*/ u8 expansionVersionFlags; + /*0x0C*/ u32 movesCount; + /*0x10*/ u32 numSpecies; + /*0x14*/ u32 abilitiesCount; + /*0x18*/ const struct Ability *abilities; }; static const struct RHHRomHeader sRHHRomHeader = @@ -23,4 +30,8 @@ static const struct RHHRomHeader sRHHRomHeader = .expansionVersionMinor = EXPANSION_VERSION_MINOR, .expansionVersionPatch = EXPANSION_VERSION_PATCH, .expansionVersionFlags = (EXPANSION_TAGGED_RELEASE << 0), + .movesCount = MOVES_COUNT, + .numSpecies = NUM_SPECIES, + .abilitiesCount = ABILITIES_COUNT, + .abilities = gAbilities, }; diff --git a/src/roulette.c b/src/roulette.c index 44dac2db6caf..ec4c8cfcfeb3 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -990,8 +990,8 @@ static const struct RouletteFlashSettings sFlashData_Colors[NUM_ROULETTE_SLOTS + }, }; -// Data to flash any pokemon icon (F_FLASH_ICON) on the roulette wheel. One entry for each color row -// Each poke icon flashes with the tint of the row color it belongs to, so the pokemon itself is irrelevant +// Data to flash any Pokémon icon (F_FLASH_ICON) on the roulette wheel. One entry for each color row +// Each poke icon flashes with the tint of the row color it belongs to, so the Pokémon itself is irrelevant static const struct RouletteFlashSettings sFlashData_PokeIcons[NUM_BOARD_COLORS] = { [GET_ROW_IDX(ROW_ORANGE)] = { @@ -2702,7 +2702,7 @@ static const struct SpriteTemplate sSpriteTemplates_GridIcons[NUM_BOARD_POKES] = } }; -// Wheel icons are listed clockwise starting from 1 oclock on the roulette wheel (with pokeball upside right) +// Wheel icons are listed clockwise starting from 1 oclock on the roulette wheel (with Poké Ball upside right) // They go Wynaut -> Azurill -> Skitty -> Makuhita, and Orange -> Green -> Purple static const struct SpriteTemplate sSpriteTemplates_WheelIcons[NUM_ROULETTE_SLOTS] = { @@ -4481,7 +4481,7 @@ static void SetBallStuck(struct Sprite *sprite) // The below slot ids are relative to the slot the ball got stuck on if ((sRoulette->useTaillow + 1) & sRoulette->partySpeciesFlags) { - // If the player has the corresponding pokemon in their party (HAS_SHROOMISH or HAS_TAILLOW), + // If the player has the corresponding Pokémon in their party (HAS_SHROOMISH or HAS_TAILLOW), // there's a 75% chance that the ball will be moved to a spot they bet on // assuming it was one of the slots identified as a candidate if (betSlotId && (rand % 256) < 192) diff --git a/src/save_location.c b/src/save_location.c index 74d2f2c44d0f..33842005980d 100644 --- a/src/save_location.c +++ b/src/save_location.c @@ -119,9 +119,9 @@ void TrySetMapSaveWarpStatus(void) TrySetUnknownWarpStatus(); } -// In FRLG, only bits 0, 4, and 5 are set when the pokedex is received. +// In FRLG, only bits 0, 4, and 5 are set when the Pokédex is received. // Bits 1, 2, 3, and 15 are instead set by SetPostgameFlags. -// These flags are read by Pokemon Colosseum/XD for linking. XD Additionally requires FLAG_SYS_GAME_CLEAR +// These flags are read by Pokémon Colosseum/XD for linking. XD Additionally requires FLAG_SYS_GAME_CLEAR void SetUnlockedPokedexFlags(void) { gSaveBlock2Ptr->gcnLinkFlags |= (1 << 15); diff --git a/src/scrcmd.c b/src/scrcmd.c index 0b0eecefad5d..8f64368e1ebe 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -49,6 +49,8 @@ #include "trainer_see.h" #include "tv.h" #include "window.h" +#include "list_menu.h" +#include "malloc.h" #include "constants/event_objects.h" typedef u16 (*SpecialFunc)(void); @@ -70,6 +72,7 @@ extern const u8 *gStdScripts[]; extern const u8 *gStdScripts_End[]; static void CloseBrailleWindow(void); +static void DynamicMultichoiceSortList(struct ListMenuItem *items, u32 count); // This is defined in here so the optimizer can't see its value when compiling // script.c. @@ -1399,6 +1402,101 @@ bool8 ScrCmd_yesnobox(struct ScriptContext *ctx) } } +static void DynamicMultichoiceSortList(struct ListMenuItem *items, u32 count) +{ + u32 i,j; + struct ListMenuItem tmp; + for (i = 0; i < count - 1; ++i) + { + for (j = 0; j < count - i - 1; ++j) + { + if (items[j].id > items[j+1].id) + { + tmp = items[j]; + items[j] = items[j+1]; + items[j+1] = tmp; + } + } + } +} + +#define DYN_MULTICHOICE_DEFAULT_MAX_BEFORE_SCROLL 6 + +bool8 ScrCmd_dynmultichoice(struct ScriptContext *ctx) +{ + u32 i; + u32 left = VarGet(ScriptReadHalfword(ctx)); + u32 top = VarGet(ScriptReadHalfword(ctx)); + bool32 ignoreBPress = ScriptReadByte(ctx); + u32 maxBeforeScroll = ScriptReadByte(ctx); + bool32 shouldSort = ScriptReadByte(ctx); + u32 initialSelected = VarGet(ScriptReadHalfword(ctx)); + u32 callbackSet = ScriptReadByte(ctx); + u32 initialRow = 0; + // Read vararg + u32 argc = ScriptReadByte(ctx); + struct ListMenuItem *items; + + if (argc == 0) + return FALSE; + + if (maxBeforeScroll == 0xFF) + maxBeforeScroll = DYN_MULTICHOICE_DEFAULT_MAX_BEFORE_SCROLL; + + if ((const u8*) ScriptPeekWord(ctx) != NULL) + { + items = AllocZeroed(sizeof(struct ListMenuItem) * argc); + for (i = 0; i < argc; ++i) + { + u8 *nameBuffer = Alloc(100); + const u8 *arg = (const u8 *) ScriptReadWord(ctx); + StringExpandPlaceholders(nameBuffer, arg); + items[i].name = nameBuffer; + items[i].id = i; + if (i == initialSelected) + initialRow = i; + } + } + else + { + argc = MultichoiceDynamic_StackSize(); + items = AllocZeroed(sizeof(struct ListMenuItem) * argc); + for (i = 0; i < argc; ++i) + { + struct ListMenuItem *currentItem = MultichoiceDynamic_PeekElementAt(i); + items[i] = *currentItem; + if (currentItem->id == initialSelected) + initialRow = i; + } + if (shouldSort) + DynamicMultichoiceSortList(items, argc); + MultichoiceDynamic_DestroyStack(); + } + + if (ScriptMenu_MultichoiceDynamic(left, top, argc, items, ignoreBPress, maxBeforeScroll, initialRow, callbackSet)) + { + ScriptContext_Stop(); + return TRUE; + } + else + { + return FALSE; + } +} + +bool8 ScrCmd_dynmultipush(struct ScriptContext *ctx) +{ + u8 *nameBuffer = Alloc(100); + const u8 *name = (const u8*) ScriptReadWord(ctx); + u32 id = VarGet(ScriptReadHalfword(ctx)); + struct ListMenuItem item; + StringExpandPlaceholders(nameBuffer, name); + item.name = nameBuffer; + item.id = id; + MultichoiceDynamic_PushElement(item); + return FALSE; +} + bool8 ScrCmd_multichoice(struct ScriptContext *ctx) { u8 left = ScriptReadByte(ctx); diff --git a/src/script.c b/src/script.c index 877143e06fed..93957f3be091 100644 --- a/src/script.c +++ b/src/script.c @@ -179,6 +179,15 @@ u32 ScriptReadWord(struct ScriptContext *ctx) return (((((value3 << 8) + value2) << 8) + value1) << 8) + value0; } +u32 ScriptPeekWord(struct ScriptContext *ctx) +{ + u32 value0 = *(ctx->scriptPtr); + u32 value1 = *(ctx->scriptPtr + 1); + u32 value2 = *(ctx->scriptPtr + 2); + u32 value3 = *(ctx->scriptPtr + 3); + return (((((value3 << 8) + value2) << 8) + value1) << 8) + value0; +} + void LockPlayerFieldControls(void) { sLockFieldControls = TRUE; diff --git a/src/script_menu.c b/src/script_menu.c index 6444e382e92c..021f23053c6d 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -13,6 +13,10 @@ #include "strings.h" #include "task.h" #include "text.h" +#include "list_menu.h" +#include "malloc.h" +#include "util.h" +#include "item_icon.h" #include "constants/field_specials.h" #include "constants/items.h" #include "constants/script_menu.h" @@ -20,13 +24,35 @@ #include "data/script_menu.h" +struct DynamicListMenuEventArgs +{ + struct ListMenuTemplate *list; + u16 selectedItem; + u8 windowId; +}; + +typedef void (*DynamicListCallback)(struct DynamicListMenuEventArgs *eventArgs); + +struct DynamicListMenuEventCollection +{ + DynamicListCallback OnInit; + DynamicListCallback OnSelectionChanged; + DynamicListCallback OnDestroy; +}; + static EWRAM_DATA u8 sProcessInputDelay = 0; +static EWRAM_DATA u8 sDynamicMenuEventId = 0; +static EWRAM_DATA struct DynamicMultichoiceStack *sDynamicMultiChoiceStack = NULL; +static EWRAM_DATA u16 *sDynamicMenuEventScratchPad = NULL; static u8 sLilycoveSSTidalSelections[SSTIDAL_SELECTION_COUNT]; +static void FreeListMenuItems(struct ListMenuItem *items, u32 count); +static void Task_HandleScrollingMultichoiceInput(u8 taskId); static void Task_HandleMultichoiceInput(u8 taskId); static void Task_HandleYesNoInput(u8 taskId); static void Task_HandleMultichoiceGridInput(u8 taskId); +static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u32 initialRow, u8 maxBeforeScroll, u32 callbackSet); static void DrawMultichoiceMenu(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos); static void InitMultichoiceCheckWrap(bool8 ignoreBPress, u8 count, u8 windowId, u8 multichoiceId); static void DrawLinkServicesMultichoiceMenu(u8 multichoiceId); @@ -35,6 +61,55 @@ static void CreateLilycoveSSTidalMultichoice(void); static bool8 IsPicboxClosed(void); static void CreateStartMenuForPokenavTutorial(void); static void InitMultichoiceNoWrap(bool8 ignoreBPress, u8 unusedCount, u8 windowId, u8 multichoiceId); +static void MultichoiceDynamicEventDebug_OnInit(struct DynamicListMenuEventArgs *eventArgs); +static void MultichoiceDynamicEventDebug_OnSelectionChanged(struct DynamicListMenuEventArgs *eventArgs); +static void MultichoiceDynamicEventDebug_OnDestroy(struct DynamicListMenuEventArgs *eventArgs); +static void MultichoiceDynamicEventShowItem_OnInit(struct DynamicListMenuEventArgs *eventArgs); +static void MultichoiceDynamicEventShowItem_OnSelectionChanged(struct DynamicListMenuEventArgs *eventArgs); +static void MultichoiceDynamicEventShowItem_OnDestroy(struct DynamicListMenuEventArgs *eventArgs); + +static const struct DynamicListMenuEventCollection sDynamicListMenuEventCollections[] = +{ + [DYN_MULTICHOICE_CB_DEBUG] = + { + .OnInit = MultichoiceDynamicEventDebug_OnInit, + .OnSelectionChanged = MultichoiceDynamicEventDebug_OnSelectionChanged, + .OnDestroy = MultichoiceDynamicEventDebug_OnDestroy + }, + [DYN_MULTICHOICE_CB_SHOW_ITEM] = + { + .OnInit = MultichoiceDynamicEventShowItem_OnInit, + .OnSelectionChanged = MultichoiceDynamicEventShowItem_OnSelectionChanged, + .OnDestroy = MultichoiceDynamicEventShowItem_OnDestroy + } +}; + +static const struct ListMenuTemplate sScriptableListMenuTemplate = +{ + .item_X = 8, + .upText_Y = 1, + .cursorPal = 2, + .fillValue = 1, + .cursorShadowPal = 3, + .lettersSpacing = 1, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NORMAL, +}; + +bool8 ScriptMenu_MultichoiceDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u8 maxBeforeScroll, u32 initialRow, u32 callbackSet) +{ + if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) + { + FreeListMenuItems(items, argc); + return FALSE; + } + else + { + gSpecialVar_Result = 0xFF; + DrawMultichoiceMenuDynamic(left, top, argc, items, ignoreBPress, initialRow, maxBeforeScroll, callbackSet); + return TRUE; + } +} bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress) { @@ -64,6 +139,85 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, bool8 } } +static void MultichoiceDynamicEventDebug_OnInit(struct DynamicListMenuEventArgs *eventArgs) +{ + DebugPrintf("OnInit: %d", eventArgs->windowId); +} + +static void MultichoiceDynamicEventDebug_OnSelectionChanged(struct DynamicListMenuEventArgs *eventArgs) +{ + DebugPrintf("OnSelectionChanged: %d", eventArgs->selectedItem); +} + +static void MultichoiceDynamicEventDebug_OnDestroy(struct DynamicListMenuEventArgs *eventArgs) +{ + DebugPrintf("OnDestroy: %d", eventArgs->windowId); +} + +#define sAuxWindowId sDynamicMenuEventScratchPad[0] +#define sItemSpriteId sDynamicMenuEventScratchPad[1] +#define TAG_CB_ITEM_ICON 3000 + +static void MultichoiceDynamicEventShowItem_OnInit(struct DynamicListMenuEventArgs *eventArgs) +{ + struct WindowTemplate *template = &gWindows[eventArgs->windowId].window; + u32 baseBlock = template->baseBlock + template->width * template->height; + struct WindowTemplate auxTemplate = CreateWindowTemplate(0, template->tilemapLeft + template->width + 2, template->tilemapTop, 4, 4, 15, baseBlock); + u32 auxWindowId = AddWindow(&auxTemplate); + SetStandardWindowBorderStyle(auxWindowId, FALSE); + FillWindowPixelBuffer(auxWindowId, 0x11); + CopyWindowToVram(auxWindowId, COPYWIN_FULL); + sAuxWindowId = auxWindowId; + sItemSpriteId = MAX_SPRITES; +} + +static void MultichoiceDynamicEventShowItem_OnSelectionChanged(struct DynamicListMenuEventArgs *eventArgs) +{ + struct WindowTemplate *template = &gWindows[eventArgs->windowId].window; + u32 x = template->tilemapLeft * 8 + template->width * 8 + 36; + u32 y = template->tilemapTop * 8 + 20; + + if (sItemSpriteId != MAX_SPRITES) + { + FreeSpriteTilesByTag(TAG_CB_ITEM_ICON); + FreeSpritePaletteByTag(TAG_CB_ITEM_ICON); + DestroySprite(&gSprites[sItemSpriteId]); + } + + sItemSpriteId = AddItemIconSprite(TAG_CB_ITEM_ICON, TAG_CB_ITEM_ICON, eventArgs->selectedItem); + gSprites[sItemSpriteId].oam.priority = 0; + gSprites[sItemSpriteId].x = x; + gSprites[sItemSpriteId].y = y; +} + +static void MultichoiceDynamicEventShowItem_OnDestroy(struct DynamicListMenuEventArgs *eventArgs) +{ + ClearStdWindowAndFrame(sAuxWindowId, TRUE); + RemoveWindow(sAuxWindowId); + + if (sItemSpriteId != MAX_SPRITES) + { + FreeSpriteTilesByTag(TAG_CB_ITEM_ICON); + FreeSpritePaletteByTag(TAG_CB_ITEM_ICON); + DestroySprite(&gSprites[sItemSpriteId]); + } +} + +#undef sAuxWindowId +#undef sItemSpriteId +#undef TAG_CB_ITEM_ICON + +static void FreeListMenuItems(struct ListMenuItem *items, u32 count) +{ + u32 i; + for (i = 0; i < count; ++i) + { + // All items were dynamically allocated, so items[i].name is not actually constant. + Free((void *)items[i].name); + } + Free(items); +} + static u16 UNUSED GetLengthWithExpandedPlayerName(const u8 *str) { u16 length = 0; @@ -89,6 +243,180 @@ static u16 UNUSED GetLengthWithExpandedPlayerName(const u8 *str) return length; } +void MultichoiceDynamic_InitStack(u32 capacity) +{ + AGB_ASSERT(sDynamicMultiChoiceStack == NULL); + sDynamicMultiChoiceStack = AllocZeroed(sizeof(*sDynamicMultiChoiceStack)); + AGB_ASSERT(sDynamicMultiChoiceStack != NULL); + sDynamicMultiChoiceStack->capacity = capacity; + sDynamicMultiChoiceStack->top = -1; + sDynamicMultiChoiceStack->elements = AllocZeroed(capacity * sizeof(struct ListMenuItem)); +} + +void MultichoiceDynamic_ReallocStack(u32 newCapacity) +{ + struct ListMenuItem *newElements; + AGB_ASSERT(sDynamicMultiChoiceStack != NULL); + AGB_ASSERT(sDynamicMultiChoiceStack->capacity < newCapacity); + newElements = AllocZeroed(newCapacity * sizeof(struct ListMenuItem)); + AGB_ASSERT(newElements != NULL); + memcpy(newElements, sDynamicMultiChoiceStack->elements, sDynamicMultiChoiceStack->capacity * sizeof(struct ListMenuItem)); + Free(sDynamicMultiChoiceStack->elements); + sDynamicMultiChoiceStack->elements = newElements; + sDynamicMultiChoiceStack->capacity = newCapacity; +} + +bool32 MultichoiceDynamic_StackFull(void) +{ + AGB_ASSERT(sDynamicMultiChoiceStack != NULL); + return sDynamicMultiChoiceStack->top == sDynamicMultiChoiceStack->capacity - 1; +} + +bool32 MultichoiceDynamic_StackEmpty(void) +{ + AGB_ASSERT(sDynamicMultiChoiceStack != NULL); + return sDynamicMultiChoiceStack->top == -1; +} + +u32 MultichoiceDynamic_StackSize(void) +{ + AGB_ASSERT(sDynamicMultiChoiceStack != NULL); + return sDynamicMultiChoiceStack->top + 1; +} + +void MultichoiceDynamic_PushElement(struct ListMenuItem item) +{ + if (sDynamicMultiChoiceStack == NULL) + MultichoiceDynamic_InitStack(MULTICHOICE_DYNAMIC_STACK_SIZE); + if (MultichoiceDynamic_StackFull()) + MultichoiceDynamic_ReallocStack(sDynamicMultiChoiceStack->capacity + MULTICHOICE_DYNAMIC_STACK_INC); + sDynamicMultiChoiceStack->elements[++sDynamicMultiChoiceStack->top] = item; +} + +struct ListMenuItem *MultichoiceDynamic_PopElement(void) +{ + if (sDynamicMultiChoiceStack == NULL) + return NULL; + if (MultichoiceDynamic_StackEmpty()) + return NULL; + return &sDynamicMultiChoiceStack->elements[sDynamicMultiChoiceStack->top--]; +} + +struct ListMenuItem *MultichoiceDynamic_PeekElement(void) +{ + if (sDynamicMultiChoiceStack == NULL) + return NULL; + if (MultichoiceDynamic_StackEmpty()) + return NULL; + return &sDynamicMultiChoiceStack->elements[sDynamicMultiChoiceStack->top]; +} + +struct ListMenuItem *MultichoiceDynamic_PeekElementAt(u32 index) +{ + if (sDynamicMultiChoiceStack == NULL) + return NULL; + if (sDynamicMultiChoiceStack->top < index) + return NULL; + return &sDynamicMultiChoiceStack->elements[index]; +} + +void MultichoiceDynamic_DestroyStack(void) +{ + TRY_FREE_AND_SET_NULL(sDynamicMultiChoiceStack->elements); + TRY_FREE_AND_SET_NULL(sDynamicMultiChoiceStack); +} + +static void MultichoiceDynamic_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + u8 taskId; + PlaySE(SE_SELECT); + taskId = FindTaskIdByFunc(Task_HandleScrollingMultichoiceInput); + if (taskId != TASK_NONE) + { + ListMenuGetScrollAndRow(gTasks[taskId].data[0], &gScrollableMultichoice_ScrollOffset, NULL); + if (sDynamicMenuEventId != DYN_MULTICHOICE_CB_NONE && sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged && !onInit) + { + struct DynamicListMenuEventArgs eventArgs = {.selectedItem = itemIndex, .windowId = list->template.windowId, .list = &list->template}; + sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged(&eventArgs); + } + } +} + +static void DrawMultichoiceMenuDynamic(u8 left, u8 top, u8 argc, struct ListMenuItem *items, bool8 ignoreBPress, u32 initialRow, u8 maxBeforeScroll, u32 callbackSet) +{ + u32 i; + u8 windowId; + s32 width = 0; + u8 newWidth; + u8 taskId; + u32 windowHeight; + struct ListMenu *list; + + for (i = 0; i < argc; ++i) + { + width = DisplayTextAndGetWidth(items[i].name, width); + } + LoadMessageBoxAndBorderGfx(); + windowHeight = (argc < maxBeforeScroll) ? argc * 2 : maxBeforeScroll * 2; + newWidth = ConvertPixelWidthToTileWidth(width); + left = ScriptMenu_AdjustLeftCoordFromWidth(left, newWidth); + windowId = CreateWindowFromRect(left, top, newWidth, windowHeight); + SetStandardWindowBorderStyle(windowId, FALSE); + CopyWindowToVram(windowId, COPYWIN_FULL); + + // I don't like this being global either, but I could not come up with another solution that + // does not invade the whole ListMenu infrastructure. + sDynamicMenuEventId = callbackSet; + sDynamicMenuEventScratchPad = AllocZeroed(100 * sizeof(u16)); + if (sDynamicMenuEventId != DYN_MULTICHOICE_CB_NONE && sDynamicListMenuEventCollections[sDynamicMenuEventId].OnInit) + { + struct DynamicListMenuEventArgs eventArgs = {.selectedItem = initialRow, .windowId = windowId, .list = NULL}; + sDynamicListMenuEventCollections[sDynamicMenuEventId].OnInit(&eventArgs); + } + + gMultiuseListMenuTemplate = sScriptableListMenuTemplate; + gMultiuseListMenuTemplate.windowId = windowId; + gMultiuseListMenuTemplate.items = items; + gMultiuseListMenuTemplate.totalItems = argc; + gMultiuseListMenuTemplate.maxShowed = maxBeforeScroll; + gMultiuseListMenuTemplate.moveCursorFunc = MultichoiceDynamic_MoveCursor; + + taskId = CreateTask(Task_HandleScrollingMultichoiceInput, 80); + gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); + gTasks[taskId].data[1] = ignoreBPress; + gTasks[taskId].data[2] = windowId; + gTasks[taskId].data[5] = argc; + gTasks[taskId].data[7] = maxBeforeScroll; + StoreWordInTwoHalfwords((u16*) &gTasks[taskId].data[3], (u32) items); + list = (void *) gTasks[gTasks[taskId].data[0]].data; + ListMenuChangeSelectionFull(list, TRUE, FALSE, initialRow, TRUE); + + if (sDynamicMenuEventId != DYN_MULTICHOICE_CB_NONE && sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged) + { + struct DynamicListMenuEventArgs eventArgs = {.selectedItem = items[initialRow].id, .windowId = windowId, .list = &gMultiuseListMenuTemplate}; + sDynamicListMenuEventCollections[sDynamicMenuEventId].OnSelectionChanged(&eventArgs); + } + ListMenuGetScrollAndRow(gTasks[taskId].data[0], &gScrollableMultichoice_ScrollOffset, NULL); + if (argc > maxBeforeScroll) + { + // Create Scrolling Arrows + struct ScrollArrowsTemplate template; + template.firstX = (newWidth / 2) * 8 + 12 + (left) * 8; + template.firstY = top * 8 + 5; + template.secondX = template.firstX; + template.secondY = top * 8 + windowHeight * 8 + 12; + template.fullyUpThreshold = 0; + template.fullyDownThreshold = argc - maxBeforeScroll; + template.firstArrowType = SCROLL_ARROW_UP; + template.secondArrowType = SCROLL_ARROW_DOWN; + template.tileTag = 2000; + template.palTag = 100, + template.palNum = 0; + + gTasks[taskId].data[6] = AddScrollIndicatorArrowPair(&template, &gScrollableMultichoice_ScrollOffset); + } +} + void DrawMultichoiceMenuInternal(u8 left, u8 top, u8 multichoiceId, bool8 ignoreBPress, u8 cursorPos, const struct MenuAction *actions, int count) { int i; @@ -154,6 +482,59 @@ static void InitMultichoiceCheckWrap(bool8 ignoreBPress, u8 count, u8 windowId, DrawLinkServicesMultichoiceMenu(multichoiceId); } +static void Task_HandleScrollingMultichoiceInput(u8 taskId) +{ + bool32 done = FALSE; + s32 input = ListMenu_ProcessInput(gTasks[taskId].data[0]); + + switch (input) + { + case LIST_HEADER: + case LIST_NOTHING_CHOSEN: + break; + case LIST_CANCEL: + if (!gTasks[taskId].data[1]) + { + gSpecialVar_Result = MULTI_B_PRESSED; + done = TRUE; + } + break; + default: + gSpecialVar_Result = input; + done = TRUE; + break; + } + + if (done) + { + struct ListMenuItem *items; + + PlaySE(SE_SELECT); + + if (sDynamicMenuEventId != DYN_MULTICHOICE_CB_NONE && sDynamicListMenuEventCollections[sDynamicMenuEventId].OnDestroy) + { + struct DynamicListMenuEventArgs eventArgs = {.selectedItem = input, .windowId = gTasks[taskId].data[2], .list = NULL}; + sDynamicListMenuEventCollections[sDynamicMenuEventId].OnDestroy(&eventArgs); + } + + sDynamicMenuEventId = DYN_MULTICHOICE_CB_NONE; + + if (gTasks[taskId].data[5] > gTasks[taskId].data[7]) + { + RemoveScrollIndicatorArrowPair(gTasks[taskId].data[6]); + } + + LoadWordFromTwoHalfwords((u16*) &gTasks[taskId].data[3], (u32* )(&items)); + FreeListMenuItems(items, gTasks[taskId].data[5]); + TRY_FREE_AND_SET_NULL(sDynamicMenuEventScratchPad); + DestroyListMenuTask(gTasks[taskId].data[0], NULL, NULL); + ClearStdWindowAndFrame(gTasks[taskId].data[2], TRUE); + RemoveWindow(gTasks[taskId].data[2]); + ScriptContext_Enable(); + DestroyTask(taskId); + } +} + static void Task_HandleMultichoiceInput(u8 taskId) { s8 selection; diff --git a/src/script_pokemon_util.c b/src/script_pokemon_util.c index ca455d544db5..80c5dd5407e8 100644 --- a/src/script_pokemon_util.c +++ b/src/script_pokemon_util.c @@ -16,6 +16,7 @@ #include "party_menu.h" #include "pokedex.h" #include "pokemon.h" +#include "pokemon_storage_system.h" #include "random.h" #include "script.h" #include "sprite.h" @@ -260,7 +261,7 @@ void ReducePlayerPartyToSelectedMons(void) CpuFill32(0, party, sizeof party); - // copy the selected pokemon according to the order. + // copy the selected Pokémon according to the order. for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) if (gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal @@ -273,3 +274,72 @@ void ReducePlayerPartyToSelectedMons(void) CalculatePlayerPartyCount(); } + +void CanHyperTrain(struct ScriptContext *ctx) +{ + u32 stat = ScriptReadByte(ctx); + u32 partyIndex = VarGet(ScriptReadHalfword(ctx)); + if (stat < NUM_STATS + && partyIndex < PARTY_SIZE + && !GetMonData(&gPlayerParty[partyIndex], MON_DATA_HYPER_TRAINED_HP + stat) + && GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP_IV + stat) < MAX_PER_STAT_IVS) + { + gSpecialVar_Result = TRUE; + } + else + { + gSpecialVar_Result = FALSE; + } +} + +void HyperTrain(struct ScriptContext *ctx) +{ + u32 stat = ScriptReadByte(ctx); + u32 partyIndex = VarGet(ScriptReadHalfword(ctx)); + if (stat < NUM_STATS && partyIndex < PARTY_SIZE) + { + bool32 data = TRUE; + SetMonData(&gPlayerParty[partyIndex], MON_DATA_HYPER_TRAINED_HP + stat, &data); + CalculateMonStats(&gPlayerParty[partyIndex]); + } +} + +void HasGigantamaxFactor(struct ScriptContext *ctx) +{ + u32 partyIndex = VarGet(ScriptReadHalfword(ctx)); + if (partyIndex < PARTY_SIZE) + gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_GIGANTAMAX_FACTOR); + else + gSpecialVar_Result = FALSE; +} + +static const u16 sGigantaxFactorLockedSpecies[] = +{ + SPECIES_MELMETAL, +}; + +void ToggleGigantamaxFactor(struct ScriptContext *ctx) +{ + u32 i; + u32 partyIndex = VarGet(ScriptReadHalfword(ctx)); + u32 species; + + gSpecialVar_Result = FALSE; + + if (partyIndex < PARTY_SIZE) + { + bool32 gigantamaxFactor; + + species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES); + for (i = 0; i < ARRAY_COUNT(sGigantaxFactorLockedSpecies); i++) + { + if (species == sGigantaxFactorLockedSpecies[i]) + return; + } + + gigantamaxFactor = GetMonData(&gPlayerParty[partyIndex], MON_DATA_GIGANTAMAX_FACTOR); + gigantamaxFactor = !gigantamaxFactor; + SetMonData(&gPlayerParty[partyIndex], MON_DATA_GIGANTAMAX_FACTOR, &gigantamaxFactor); + gSpecialVar_Result = TRUE; + } +} diff --git a/src/start_menu.c b/src/start_menu.c index 80742c8e0bde..383f4d7152b0 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -713,7 +713,7 @@ static bool8 StartMenuPokeNavCallback(void) PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); - SetMainCallback2(CB2_InitPokeNav); // Display PokeNav + SetMainCallback2(CB2_InitPokeNav); // Display PokéNav return TRUE; } @@ -1418,7 +1418,7 @@ static void ShowSaveInfoWindow(void) if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE) { - // Print pokedex count + // Print Pokédex count yOffset += 16; AddTextPrinterParameterized(sSaveInfoWindowId, FONT_NORMAL, gText_SavingPokedex, 0, yOffset, TEXT_SKIP_DRAW, NULL); BufferSaveMenuText(SAVE_MENU_CAUGHT, gStringVar4, color); diff --git a/src/starter_choose.c b/src/starter_choose.c index 3097f87f7331..01b6600053da 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -26,7 +26,7 @@ #define STARTER_MON_COUNT 3 -// Position of the sprite of the selected starter Pokemon +// Position of the sprite of the selected starter Pokémon #define STARTER_PKMN_POS_X (DISPLAY_WIDTH / 2) #define STARTER_PKMN_POS_Y 64 @@ -446,7 +446,7 @@ void CB2_ChooseStarter(void) spriteId = CreateSprite(&sSpriteTemplate_Hand, 120, 56, 2); gSprites[spriteId].data[0] = taskId; - // Create three Pokeball sprites + // Create three Poké Ball sprites spriteId = CreateSprite(&sSpriteTemplate_Pokeball, sPokeballCoords[0][0], sPokeballCoords[0][1], 2); gSprites[spriteId].sTaskId = taskId; gSprites[spriteId].sBallId = 0; @@ -495,7 +495,7 @@ static void Task_HandleStarterChooseInput(u8 taskId) spriteId = CreateSprite(&sSpriteTemplate_StarterCircle, sPokeballCoords[selection][0], sPokeballCoords[selection][1], 1); gTasks[taskId].tCircleSpriteId = spriteId; - // Create Pokemon sprite + // Create Pokémon sprite spriteId = CreatePokemonFrontSprite(GetStarterPokemon(gTasks[taskId].tStarterSelection), sPokeballCoords[selection][0], sPokeballCoords[selection][1]); gSprites[spriteId].affineAnims = &sAffineAnims_StarterPokemon; gSprites[spriteId].callback = SpriteCB_StarterPokemon; @@ -630,14 +630,14 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) { u8 spriteId; - spriteId = CreateMonPicSprite_Affine(species, SHINY_ODDS, 0, MON_PIC_AFFINE_FRONT, x, y, 14, TAG_NONE); + spriteId = CreateMonPicSprite_Affine(species, FALSE, 0, MON_PIC_AFFINE_FRONT, x, y, 14, TAG_NONE); gSprites[spriteId].oam.priority = 0; return spriteId; } static void SpriteCB_SelectionHand(struct Sprite *sprite) { - // Float up and down above selected pokeball + // Float up and down above selected Poké Ball sprite->x = sCursorCoords[gTasks[sprite->data[0]].tStarterSelection][0]; sprite->y = sCursorCoords[gTasks[sprite->data[0]].tStarterSelection][1]; sprite->y2 = Sin(sprite->data[1], 8); @@ -646,7 +646,7 @@ static void SpriteCB_SelectionHand(struct Sprite *sprite) static void SpriteCB_Pokeball(struct Sprite *sprite) { - // Animate pokeball if currently selected + // Animate Poké Ball if currently selected if (gTasks[sprite->sTaskId].tStarterSelection == sprite->sBallId) StartSpriteAnimIfDifferent(sprite, 1); else diff --git a/src/strings.c b/src/strings.c index d74b2e3a4823..6db65b72bd9e 100644 --- a/src/strings.c +++ b/src/strings.c @@ -269,7 +269,8 @@ const u8 *const gBagMenu_ReturnToStrings[] = [ITEMMENULOCATION_QUIZ_LADY] = gText_TheField, [ITEMMENULOCATION_APPRENTICE] = gText_TheField, [ITEMMENULOCATION_WALLY] = gText_TheBattle, - [ITEMMENULOCATION_PCBOX] = gText_ThePC + [ITEMMENULOCATION_PCBOX] = gText_ThePC, + [ITEMMENULOCATION_BERRY_TREE_MULCH] = gText_TheField, }; const u8 *const gPyramidBagMenu_ReturnToStrings[] = @@ -1847,4 +1848,6 @@ const u8 gText_ExpShareOn[] = _("The Exp. Share has been turned on.{PAUSE_UNTIL_ const u8 gText_ExpShareOff[] = _("The Exp. Share has been turned off.{PAUSE_UNTIL_PRESS}"); const u8 gText_BasePointsResetToZero[] = _("{STR_VAR_1}'s base points\nwere all reset to zero!{PAUSE_UNTIL_PRESS}"); -const u8 gText_DexNavDescription[] = _("Search for wild Pokémon."); \ No newline at end of file +const u8 gText_DexNavDescription[] = _("Search for wild Pokémon."); +const u8 gText_Fertilize[] = _("Fertilize"); +const u8 gText_PlantBerry[] = _("Plant Berry"); diff --git a/src/time_events.c b/src/time_events.c index cec6a44c3415..1c8a12a2375e 100644 --- a/src/time_events.c +++ b/src/time_events.c @@ -25,7 +25,7 @@ static void SetMirageRnd(u32 rnd) // unused void InitMirageRnd(void) { - SetMirageRnd((Random() << 16) | Random()); + SetMirageRnd(Random32()); } void UpdateMirageRnd(u16 days) diff --git a/src/title_screen.c b/src/title_screen.c index 12015b8bd8aa..1d605d1fc056 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -680,7 +680,7 @@ static void MainCB2(void) UpdatePaletteFade(); } -// Shine the Pokemon logo two more times, and fade in the version banner +// Shine the Pokémon logo two more times, and fade in the version banner static void Task_TitleScreenPhase1(u8 taskId) { // Skip to next phase when A, B, Start, or Select is pressed @@ -728,7 +728,7 @@ static void Task_TitleScreenPhase1(u8 taskId) #undef sParentTaskId #undef sAlphaBlendIdx -// Create "Press Start" and copyright banners, and slide Pokemon logo up +// Create "Press Start" and copyright banners, and slide Pokémon logo up static void Task_TitleScreenPhase2(u8 taskId) { u32 yPos; @@ -767,7 +767,7 @@ static void Task_TitleScreenPhase2(u8 taskId) if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].tBg2Y != 0) gTasks[taskId].tBg2Y++; - // Slide Pokemon logo up + // Slide Pokémon logo up yPos = gTasks[taskId].tBg2Y * 256; SetGpuReg(REG_OFFSET_BG2Y_L, yPos); SetGpuReg(REG_OFFSET_BG2Y_H, yPos / 0x10000); diff --git a/src/trade.c b/src/trade.c index 46c0b8715b4e..5551a44c7725 100644 --- a/src/trade.c +++ b/src/trade.c @@ -168,7 +168,7 @@ static EWRAM_DATA u8 *sMenuTextTileBuffer = NULL; // Bytes 0-2 are used for the player's name text // Bytes 3-5 are used for the partner's name text // Bytes 6-7 are used for the Cancel text -// Bytes 8-13 are used for the Choose a Pokemon text +// Bytes 8-13 are used for the Choose a Pokémon text // See the corresponding GFXTAGs in src/data/trade.h static EWRAM_DATA u8 *sMenuTextTileBuffers[NUM_MENU_TEXT_SPRITES] = {NULL}; @@ -1006,25 +1006,25 @@ static void SetActiveMenuOptions(void) { if (i < sTradeMenu->partyCounts[TRADE_PLAYER]) { - // Present player pokemon + // Present player Pokémon gSprites[sTradeMenu->partySpriteIds[TRADE_PLAYER][i]].invisible = FALSE; sTradeMenu->optionsActive[i] = TRUE; } else { - // Absent player pokemon + // Absent player Pokémon sTradeMenu->optionsActive[i] = FALSE; } if (i < sTradeMenu->partyCounts[TRADE_PARTNER]) { - // Present partner pokemon + // Present partner Pokémon gSprites[sTradeMenu->partySpriteIds[TRADE_PARTNER][i]].invisible = FALSE; sTradeMenu->optionsActive[i + PARTY_SIZE] = TRUE; } else { - // Absent partner pokemon + // Absent partner Pokémon sTradeMenu->optionsActive[i + PARTY_SIZE] = FALSE; } } @@ -1281,7 +1281,7 @@ static void Leader_HandleCommunication(void) if (sTradeMenu->playerSelectStatus == STATUS_READY && sTradeMenu->partnerSelectStatus == STATUS_READY) { - // Both players have selected a pokemon to trade + // Both players have selected a Pokémon to trade sTradeMenu->callbackId = CB_SET_SELECTED_MONS; sTradeMenu->linkData[0] = LINKCMD_SET_MONS_TO_TRADE; sTradeMenu->linkData[1] = sTradeMenu->cursorPosition; @@ -1291,7 +1291,7 @@ static void Leader_HandleCommunication(void) else if (sTradeMenu->playerSelectStatus == STATUS_READY && sTradeMenu->partnerSelectStatus == STATUS_CANCEL) { - // The player has selected a pokemon to trade, + // The player has selected a Pokémon to trade, // but the partner has selected Cancel PrintTradeMessage(MSG_CANCELED); sTradeMenu->linkData[0] = LINKCMD_PARTNER_CANCEL_TRADE; @@ -1304,7 +1304,7 @@ static void Leader_HandleCommunication(void) else if (sTradeMenu->playerSelectStatus == STATUS_CANCEL && sTradeMenu->partnerSelectStatus == STATUS_READY) { - // The partner has selected a pokemon to trade, + // The partner has selected a Pokémon to trade, // but the player has selected cancel PrintTradeMessage(MSG_FRIEND_WANTS_TO_TRADE); sTradeMenu->linkData[0] = LINKCMD_PLAYER_CANCEL_TRADE; @@ -1461,7 +1461,7 @@ static void CB_ProcessMenuInput(void) if (sTradeMenu->cursorPosition < PARTY_SIZE) { - // Selected pokemon in player's party + // Selected Pokémon in player's party DrawTextBorderOuter(1, 1, 14); FillWindowPixelBuffer(1, PIXEL_FILL(1)); PrintMenuTable(1, ARRAY_COUNT(sSelectTradeMonActions), sSelectTradeMonActions); @@ -1472,7 +1472,7 @@ static void CB_ProcessMenuInput(void) } else if (sTradeMenu->cursorPosition < PARTY_SIZE * 2) { - // Selected pokemon in partner's party + // Selected Pokémon in partner's party BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); sTradeMenu->callbackId = CB_SHOW_MON_SUMMARY; } @@ -1848,7 +1848,7 @@ static void SetSelectedMon(u8 cursorPosition) if (sTradeMenu->drawSelectedMonState[whichParty] == 0) { // Start the animation to display just the selected - // pokemon in the middle of the screen + // Pokémon in the middle of the screen sTradeMenu->drawSelectedMonState[whichParty] = 1; sTradeMenu->selectedMonIdx[whichParty] = cursorPosition; } @@ -1882,10 +1882,10 @@ static void DrawSelectedMonScreen(u8 whichParty) for (i = 0; i < PARTY_SIZE; i++) ClearWindowTilemap(i + (whichParty * PARTY_SIZE + 2)); - // Re-display the selected pokemon + // Re-display the selected Pokémon gSprites[sTradeMenu->partySpriteIds[selectedMonParty][partyIdx]].invisible = FALSE; - // Move the selected pokemon to the center + // Move the selected Pokémon to the center gSprites[sTradeMenu->partySpriteIds[selectedMonParty][partyIdx]].data[0] = 20; gSprites[sTradeMenu->partySpriteIds[selectedMonParty][partyIdx]].data[2] = (sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[selectedMonParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; @@ -3088,13 +3088,13 @@ static void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx) struct Pokemon *partnerMon = &gEnemyParty[partnerPartyIdx]; u16 partnerMail = GetMonData(partnerMon, MON_DATA_MAIL); - // The mail attached to the sent Pokemon no longer exists in your file. + // The mail attached to the sent Pokémon no longer exists in your file. if (playerMail != MAIL_NONE) ClearMail(&gSaveBlock1Ptr->mail[playerMail]); SWAP(*playerMon, *partnerMon, sTradeAnim->tempMon); - // By default, a Pokemon received from a trade will have 70 Friendship. + // By default, a Pokémon received from a trade will have 70 Friendship. // Eggs use Friendship to track egg cycles, so don't set this on Eggs. friendship = 70; if (!GetMonData(playerMon, MON_DATA_IS_EGG)) @@ -4842,7 +4842,7 @@ static void CheckPartnersMonForRibbons(void) { u8 i; u8 numRibbons = 0; - for (i = 0; i < (MON_DATA_UNUSED_RIBBONS - MON_DATA_CHAMPION_RIBBON); i++) + for (i = 0; i < (MON_DATA_WORLD_RIBBON - MON_DATA_CHAMPION_RIBBON + 1); i++) numRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[TRADE_PARTNER] % PARTY_SIZE], MON_DATA_CHAMPION_RIBBON + i); if (numRibbons != 0) diff --git a/src/trainer_pokemon_sprites.c b/src/trainer_pokemon_sprites.c index 45b780427778..833f717ae016 100644 --- a/src/trainer_pokemon_sprites.c +++ b/src/trainer_pokemon_sprites.c @@ -11,7 +11,7 @@ #define PICS_COUNT 8 -// Needs to be large enough to store either a decompressed pokemon pic or trainer pic +// Needs to be large enough to store either a decompressed Pokémon pic or trainer pic #define PIC_SPRITE_SIZE max(MON_PIC_SIZE, TRAINER_PIC_SIZE) #define MAX_PIC_FRAMES max(MAX_MON_PIC_FRAMES, MAX_TRAINER_PIC_FRAMES) @@ -66,26 +66,32 @@ static bool16 DecompressPic(u16 species, u32 personality, bool8 isFrontPic, u8 * else { if (isFrontPic) - DecompressPicFromTable(&gTrainerFrontPicTable[species], dest); + DecompressPicFromTable(&gTrainerSprites[species].frontPic, dest); else - DecompressPicFromTable(&gTrainerBackPicTable[species], dest); + DecompressPicFromTable(&gTrainerBacksprites[species].backPic, dest); } return FALSE; } -static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +static void LoadPicPaletteByTagOrSlot(u16 species, bool8 isShiny, u32 personality, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { if (!isTrainer) { if (paletteTag == TAG_NONE) { sCreatingSpriteTemplate.paletteTag = TAG_NONE; - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP, personality); + if(!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } else { sCreatingSpriteTemplate.paletteTag = paletteTag; - LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), personality, species); + if(!isShiny) + LoadHueShiftedMonSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), personality, species); + else + LoadCompressedSpritePaletteWithTag(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), species); } } else @@ -93,22 +99,31 @@ static void LoadPicPaletteByTagOrSlot(u16 species, u32 otId, u32 personality, u8 if (paletteTag == TAG_NONE) { sCreatingSpriteTemplate.paletteTag = TAG_NONE; - LoadHueShiftedMonPalette(gTrainerFrontPicPaletteTable[species].data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP, personality); + if(!isShiny) + LoadHueShiftedMonPalette(gTrainerSprites[species].palette.data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(gTrainerSprites[species].palette.data, OBJ_PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } else { sCreatingSpriteTemplate.paletteTag = paletteTag; - LoadHueShiftedMonSpritePalette(&gTrainerFrontPicPaletteTable[species], personality); + if(!isShiny) + LoadHueShiftedMonSpritePalette(&gTrainerSprites[species].palette, personality); + else + LoadCompressedSpritePalette(&gTrainerSprites[species].palette); } } } -static void LoadPicPaletteBySlot(u16 species, u32 otId, u32 personality, u8 paletteSlot, bool8 isTrainer) +static void LoadPicPaletteBySlot(u16 species, bool8 isShiny, u32 personality, u8 paletteSlot, bool8 isTrainer) { if (!isTrainer) - LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP, personality); + if(!isShiny) + LoadHueShiftedMonPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP, personality); + else + LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, isShiny, personality), PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); else - LoadCompressedPalette(gTrainerFrontPicPaletteTable[species].data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); + LoadCompressedPalette(gTrainerSprites[species].palette.data, PLTT_ID(paletteSlot), PLTT_SIZE_4BPP); } static void AssignSpriteAnimsTable(bool8 isTrainer) @@ -116,10 +131,10 @@ static void AssignSpriteAnimsTable(bool8 isTrainer) if (!isTrainer) sCreatingSpriteTemplate.anims = gAnims_MonPic; else - sCreatingSpriteTemplate.anims = gTrainerFrontAnimsPtrTable[0]; + sCreatingSpriteTemplate.anims = gTrainerSprites[0].animation; } -static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) +static u16 CreatePicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 isTrainer) { u8 i; u8 *framePics; @@ -161,7 +176,7 @@ static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFront sCreatingSpriteTemplate.images = images; sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; sCreatingSpriteTemplate.callback = DummyPicSpriteCallback; - LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, isTrainer); + LoadPicPaletteByTagOrSlot(species, isShiny, personality, paletteSlot, paletteTag, isTrainer); spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0); if (paletteTag == TAG_NONE) gSprites[spriteId].oam.paletteNum = paletteSlot; @@ -173,7 +188,7 @@ static u16 CreatePicSprite(u16 species, u32 otId, u32 personality, bool8 isFront return spriteId; } -u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +u16 CreateMonPicSprite_Affine(u16 species, bool8 isShiny, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { u8 *framePics; struct SpriteFrameImage *images; @@ -239,7 +254,7 @@ u16 CreateMonPicSprite_Affine(u16 species, u32 otId, u32 personality, u8 flags, sCreatingSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; } sCreatingSpriteTemplate.callback = DummyPicSpriteCallback; - LoadPicPaletteByTagOrSlot(species, otId, personality, paletteSlot, paletteTag, FALSE); + LoadPicPaletteByTagOrSlot(species, isShiny, personality, paletteSlot, paletteTag, FALSE); spriteId = CreateSprite(&sCreatingSpriteTemplate, x, y, 0); if (paletteTag == TAG_NONE) gSprites[spriteId].oam.paletteNum = paletteSlot; @@ -276,16 +291,16 @@ static u16 FreeAndDestroyPicSpriteInternal(u16 spriteId, bool8 clearPalette) return 0; } -static u16 LoadPicSpriteInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) +static u16 LoadPicSpriteInWindow(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId, bool8 isTrainer) { if (DecompressPic(species, personality, isFrontPic, (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA), FALSE)) return 0xFFFF; - LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer); + LoadPicPaletteBySlot(species, isShiny, personality, paletteSlot, isTrainer); return 0; } -static u16 CreateTrainerCardSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId, bool8 isTrainer) +static u16 CreateTrainerCardSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId, bool8 isTrainer) { u8 *framePics; @@ -293,16 +308,16 @@ static u16 CreateTrainerCardSprite(u16 species, u32 otId, u32 personality, bool8 if (framePics && !DecompressPic(species, personality, isFrontPic, framePics, isTrainer)) { BlitBitmapRectToWindow(windowId, framePics, 0, 0, TRAINER_PIC_WIDTH, TRAINER_PIC_HEIGHT, destX, destY, TRAINER_PIC_WIDTH, TRAINER_PIC_HEIGHT); - LoadPicPaletteBySlot(species, otId, personality, paletteSlot, isTrainer); + LoadPicPaletteBySlot(species, isShiny, personality, paletteSlot, isTrainer); Free(framePics); return 0; } return 0xFFFF; } -u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) +u16 CreateMonPicSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { - return CreatePicSprite(species, otId, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); + return CreatePicSprite(species, isShiny, personality, isFrontPic, x, y, paletteSlot, paletteTag, FALSE); } u16 FreeAndDestroyMonPicSprite(u16 spriteId) @@ -315,20 +330,20 @@ u16 FreeAndDestroyMonPicSpriteNoPalette(u16 spriteId) return FreeAndDestroyPicSpriteInternal(spriteId, FALSE); } -static u16 UNUSED LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) +static u16 UNUSED LoadMonPicInWindow(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId) { - return LoadPicSpriteInWindow(species, otId, personality, isFrontPic, paletteSlot, windowId, FALSE); + return LoadPicSpriteInWindow(species, isShiny, personality, isFrontPic, paletteSlot, windowId, FALSE); } // Unused, FRLG only -u16 CreateTrainerCardMonIconSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId) +u16 CreateTrainerCardMonIconSprite(u16 species, bool8 isShiny, u32 personality, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId) { - return CreateTrainerCardSprite(species, otId, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE); + return CreateTrainerCardSprite(species, isShiny, personality, isFrontPic, destX, destY, paletteSlot, windowId, FALSE); } u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag) { - return CreatePicSprite(species, 0, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); + return CreatePicSprite(species, FALSE, 0, isFrontPic, x, y, paletteSlot, paletteTag, TRUE); } u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) @@ -338,12 +353,12 @@ u16 FreeAndDestroyTrainerPicSprite(u16 spriteId) static u16 UNUSED LoadTrainerPicInWindow(u16 species, bool8 isFrontPic, u8 paletteSlot, u8 windowId) { - return LoadPicSpriteInWindow(species, 0, 0, isFrontPic, paletteSlot, windowId, TRUE); + return LoadPicSpriteInWindow(species, FALSE, 0, isFrontPic, paletteSlot, windowId, TRUE); } u16 CreateTrainerCardTrainerPicSprite(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId) { - return CreateTrainerCardSprite(species, 0, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE); + return CreateTrainerCardSprite(species, FALSE, 0, isFrontPic, destX, destY, paletteSlot, windowId, TRUE); } u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass) diff --git a/src/tv.c b/src/tv.c index fb8b405383b6..e57ba390735b 100644 --- a/src/tv.c +++ b/src/tv.c @@ -6216,7 +6216,7 @@ static void DoTVShowSpotTheCuties(void) TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language); TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage); - // Comments following the intro depend on how many ribbons the pokemon has + // Comments following the intro depend on how many ribbons the Pokémon has if (show->cuties.nRibbons < 10) sTVShowState = SPOTCUTIES_STATE_RIBBONS_LOW; else if (show->cuties.nRibbons < 20) diff --git a/src/union_room.c b/src/union_room.c index 51f96c8adc6e..d71d3edad10a 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -4444,7 +4444,7 @@ static void ViewURoomPartnerTrainerCard(u8 *unused, struct WirelessLink_URoom *d DynamicPlaceholderTextUtil_Reset(); - StringCopy(data->trainerCardStrBuffer[0], gTrainerClassNames[GetUnionRoomTrainerClass()]); + StringCopy(data->trainerCardStrBuffer[0], gTrainerClasses[GetUnionRoomTrainerClass()].name); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, data->trainerCardStrBuffer[0]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 08111781aa60..ff61e04ef5fb 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -73,10 +73,10 @@ struct UsePokeblockSession u8 natureText[34]; }; -// This struct is identical to PokenavMonListItem, the struct used for managing lists of pokemon in the pokenav +// This struct is identical to PokenavMonListItem, the struct used for managing lists of Pokémon in the PokéNav // Given that this screen is essentially duplicated in the poknav, this struct was probably the same one with // a more general name/purpose -// TODO: Once the pokenav conditions screens are documented, resolve the above +// TODO: Once the PokéNav conditions screens are documented, resolve the above struct UsePokeblockMenuPokemon { u8 boxId; // Because this screen is never used for the PC this is always set to TOTAL_BOXES_COUNT to refer to party @@ -1259,7 +1259,7 @@ static void LoadAndCreateSelectionIcons(void) LoadSpriteSheets(spriteSheets); LoadSpritePalettes(spritePals); - // Fill pokeball selection icons up to number in party + // Fill Poké Ball selection icons up to number in party for (i = 0; i < sMenu->info.numSelections - 1; i++) { spriteId = CreateSprite(&spriteTemplate, 226, (i * 20) + 8, 0); @@ -1489,7 +1489,7 @@ static bool8 LoadNewSelection_CancelToMon(void) case 2: if (!ConditionMenu_UpdateMonEnter(&sMenu->graph, &sMenu->curMonXOffset)) { - // Load the new adjacent pokemon (not the one being shown) + // Load the new adjacent Pokémon (not the one being shown) LoadMonInfo(sMenu->toLoadSelection, sMenu->toLoadId); sMenu->info.helperState++; } @@ -1552,7 +1552,7 @@ static bool8 LoadNewSelection_MonToMon(void) case 2: if (!ConditionMenu_UpdateMonEnter(&sMenu->graph, &sMenu->curMonXOffset)) { - // Load the new adjacent pokemon (not the one being shown) + // Load the new adjacent Pokémon (not the one being shown) LoadMonInfo(sMenu->toLoadSelection, sMenu->toLoadId); sMenu->info.helperState++; } @@ -1593,8 +1593,8 @@ static void SpriteCB_SelectionIconCancel(struct Sprite *sprite) sprite->oam.paletteNum = IndexOfSpritePaletteTag(TAG_CONDITION_CANCEL); } -// Calculate the max id for sparkles/stars that appear around the pokemon on the condition screen -// All pokemon start with 1 sparkle (added by CreateConditionSparkleSprites), so the number here +1 +// Calculate the max id for sparkles/stars that appear around the Pokémon on the condition screen +// All Pokémon start with 1 sparkle (added by CreateConditionSparkleSprites), so the number here +1 // is the total number of sparkles that appear static void CalculateNumAdditionalSparkles(u8 monIndex) { diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 62ae43217b3a..2fa544543608 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -403,7 +403,7 @@ u8 PickWildMonNature(void) } } } - // check synchronize for a pokemon with the same ability + // check synchronize for a Pokémon with the same ability if (OW_SYNCHRONIZE_NATURE < GEN_9 && !GetMonData(&gPlayerParty[0], MON_DATA_SANITY_IS_EGG) && GetMonAbility(&gPlayerParty[0]) == ABILITY_SYNCHRONIZE @@ -902,16 +902,16 @@ u16 GetLocalWildMon(bool8 *isWaterMon) // Neither if (landMonsInfo == NULL && waterMonsInfo == NULL) return SPECIES_NONE; - // Land Pokemon + // Land Pokémon else if (landMonsInfo != NULL && waterMonsInfo == NULL) return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; - // Water Pokemon + // Water Pokémon else if (landMonsInfo == NULL && waterMonsInfo != NULL) { *isWaterMon = TRUE; return waterMonsInfo->wildPokemon[ChooseWildMonIndex_WaterRock()].species; } - // Either land or water Pokemon + // Either land or water Pokémon if ((Random() % 100) < 80) { return landMonsInfo->wildPokemon[ChooseWildMonIndex_Land()].species; diff --git a/test/battle/ability/beads_of_ruin.c b/test/battle/ability/beads_of_ruin.c index 3c1f425d6d51..447a750883e3 100644 --- a/test/battle/ability/beads_of_ruin.c +++ b/test/battle/ability/beads_of_ruin.c @@ -4,50 +4,28 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_WATER_GUN].category == BATTLE_CATEGORY_SPECIAL); + ASSUME(gBattleMoves[MOVE_ROLE_PLAY].effect == EFFECT_ROLE_PLAY); } -SINGLE_BATTLE_TEST("Beads of Ruin reduces Sp. Def", s16 damage) +SINGLE_BATTLE_TEST("Beads of Ruin reduces Sp. Def if opposing mon's ability doesn't match") { - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_BEADS_OF_RUIN; } + s16 damage[2]; GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } + PLAYER(SPECIES_CHI_YU) { Ability(ABILITY_BEADS_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { + TURN { MOVE(player, MOVE_WATER_GUN); MOVE(opponent, MOVE_ROLE_PLAY); } TURN { MOVE(player, MOVE_WATER_GUN); } } SCENE { - if (ability == ABILITY_BEADS_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_BEADS_OF_RUIN); - MESSAGE("Wobbuffet's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!"); - } - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Beads of Ruin does not reduce Sp. Def if opposing mon has the same ability", s16 damage) -{ - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_BEADS_OF_RUIN; } - - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_BEADS_OF_RUIN); } - } WHEN { - TURN { MOVE(player, MOVE_WATER_GUN); } - } SCENE { - if (ability == ABILITY_BEADS_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_BEADS_OF_RUIN); - MESSAGE("Wobbuffet's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!"); - } - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); + ABILITY_POPUP(player, ABILITY_BEADS_OF_RUIN); + MESSAGE("Chi-Yu's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, player); + HP_BAR(opponent, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROLE_PLAY, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, player); + HP_BAR(opponent, captureDamage: &damage[1]); + } THEN { + EXPECT_MUL_EQ(damage[1], Q_4_12(1.33), damage[0]); } } diff --git a/test/battle/ability/contrary.c b/test/battle/ability/contrary.c index 03af17bdc070..af71b211c8b3 100644 --- a/test/battle/ability/contrary.c +++ b/test/battle/ability/contrary.c @@ -187,3 +187,37 @@ SINGLE_BATTLE_TEST("Contrary raises a stat after using a move which would normal EXPECT_MUL_EQ(results[1].damage, Q_4_12(2.125), results[0].damage); } } + +SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normally raise it: Belly Drum", s16 damageBefore, s16 damageAfter) +{ + u32 ability; + PARAMETRIZE { ability = ABILITY_CONTRARY; } + PARAMETRIZE { ability = ABILITY_TANGLED_FEET; } + GIVEN { + ASSUME(gBattleMoves[MOVE_BELLY_DRUM].effect == EFFECT_BELLY_DRUM); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_SPINDA) { Ability(ability); } + } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); } + TURN { MOVE(opponent, MOVE_BELLY_DRUM); } + TURN { MOVE(opponent, MOVE_TACKLE); } + } SCENE { + MESSAGE("Foe Spinda used Tackle!"); + HP_BAR(player, captureDamage: &results[i].damageBefore); + + if (ability == ABILITY_CONTRARY) { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Spinda cut its own HP and maximized ATTACK!"); //Message stays the same + } + else { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Spinda cut its own HP and maximized ATTACK!"); + } + + HP_BAR(player, captureDamage: &results[i].damageAfter); + } + FINALLY { + EXPECT_MUL_EQ(results[0].damageBefore, UQ_4_12(0.25), results[0].damageAfter); + EXPECT_MUL_EQ(results[1].damageBefore, UQ_4_12(4.0), results[1].damageAfter); + } +} diff --git a/test/battle/ability/dauntless_shield.c b/test/battle/ability/dauntless_shield.c index eb7b5c15cb18..b646d00b0de1 100644 --- a/test/battle/ability/dauntless_shield.c +++ b/test/battle/ability/dauntless_shield.c @@ -3,7 +3,6 @@ ASSUMPTIONS { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(B_PROTEAN_LIBERO == GEN_9); } @@ -45,3 +44,23 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Attack by one stage only once per ba EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE); } } + +SINGLE_BATTLE_TEST("Dauntless Shield activates when it's no longer effected by Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); + MESSAGE("Neutralizing Gas filled the area!"); + MESSAGE("Weezing, that's enough! Come back!"); + MESSAGE("The effects of Neutralizing Gas wore off!"); + ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!"); + } +} + diff --git a/test/battle/ability/embody_aspect.c b/test/battle/ability/embody_aspect.c new file mode 100644 index 000000000000..8b37dd1a7477 --- /dev/null +++ b/test/battle/ability/embody_aspect.c @@ -0,0 +1,59 @@ +#include "global.h" +#include "test/battle.h" + + +SINGLE_BATTLE_TEST("Embodoy Aspect raises a stat depending on the users form by one stage") +{ + u16 species, ability; + + PARAMETRIZE { species = SPECIES_OGERPON_TEAL_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_TEAL; } + PARAMETRIZE { species = SPECIES_OGERPON_HEARTHFLAME_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_HEARTHFLAME; } + PARAMETRIZE { species = SPECIES_OGERPON_WELLSPRING_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_WELLSPRING; } + PARAMETRIZE { species = SPECIES_OGERPON_CORNERSTONE_MASK_TERA; ability = ABILITY_EMBODY_ASPECT_CORNERSTONE; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { } + } SCENE { + ABILITY_POPUP(opponent, ability); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + if (ability == ABILITY_EMBODY_ASPECT_TEAL) + MESSAGE("Foe Ogerpon's Embody Aspect raised its Sp. Atk!"); + else if (ability == ABILITY_EMBODY_ASPECT_HEARTHFLAME) + MESSAGE("Foe Ogerpon's Embody Aspect raised its Attack!"); + else if (ability == ABILITY_EMBODY_ASPECT_WELLSPRING) + MESSAGE("Foe Ogerpon's Embody Aspect raised its Sp. Def!"); + else if (ability == ABILITY_EMBODY_ASPECT_CORNERSTONE) + MESSAGE("Foe Ogerpon's Embody Aspect raised its Defense!"); + } THEN { + if (ability == ABILITY_EMBODY_ASPECT_TEAL) + EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 1); + else if (ability == ABILITY_EMBODY_ASPECT_HEARTHFLAME) + EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1); + else if (ability == ABILITY_EMBODY_ASPECT_WELLSPRING) + EXPECT_EQ(opponent->statStages[STAT_SPDEF], DEFAULT_STAT_STAGE + 1); + else if (ability == ABILITY_EMBODY_ASPECT_CORNERSTONE) + EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1); + } +} + +SINGLE_BATTLE_TEST("Embodoy Aspect activates when it's no longer effected by Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_OGERPON_TEAL_MASK_TERA) { Ability(ABILITY_EMBODY_ASPECT_TEAL); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); + MESSAGE("Neutralizing Gas filled the area!"); + MESSAGE("Weezing, that's enough! Come back!"); + MESSAGE("The effects of Neutralizing Gas wore off!"); + ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Ogerpon's Embody Aspect raised its Sp. Atk!"); + } +} diff --git a/test/battle/ability/hospitality.c b/test/battle/ability/hospitality.c new file mode 100644 index 000000000000..8bb78bffc0c2 --- /dev/null +++ b/test/battle/ability/hospitality.c @@ -0,0 +1,70 @@ +#include "global.h" +#include "test/battle.h" + +DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health") +{ + s16 health; + + PARAMETRIZE { health = 75; } + PARAMETRIZE { health = 100; } + + GIVEN { + PLAYER(SPECIES_POLTCHAGEIST) { Ability(ABILITY_HOSPITALITY); } + PLAYER(SPECIES_WOBBUFFET) { HP(health); MaxHP(100); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { } + } SCENE { + if (health == 75) { + ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); + MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + HP_BAR(playerRight, damage: -25); + } else { + NONE_OF { + ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); + MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + HP_BAR(playerRight, damage: -25); + } + } + } +} + +DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health on switch-in") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) + PLAYER(SPECIES_WOBBUFFET) { HP(75); MaxHP(100); } + PLAYER(SPECIES_POLTCHAGEIST) { Ability(ABILITY_HOSPITALITY); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { SWITCH(playerLeft, 2); } + } SCENE { + MESSAGE("Wobbuffet, that's enough! Come back!"); + MESSAGE("Go! Ptchageist!"); + ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); + MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + HP_BAR(playerRight, damage: -25); + } +} + +DOUBLE_BATTLE_TEST("Hospitality ignores Substitute") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_POLTCHAGEIST) { Ability(ABILITY_HOSPITALITY); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerRight, MOVE_SUBSTITUTE); } + TURN { SWITCH(playerLeft, 2); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, playerRight); + MESSAGE("Wobbuffet, that's enough! Come back!"); + MESSAGE("Go! Ptchageist!"); + ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY); + MESSAGE("The Wobbuffet drank down all the matcha that Sinistcha made!"); + } +} diff --git a/test/battle/ability/intrepid_sword.c b/test/battle/ability/intrepid_sword.c index 88228bbe784a..9f2901a8d2aa 100644 --- a/test/battle/ability/intrepid_sword.c +++ b/test/battle/ability/intrepid_sword.c @@ -3,7 +3,6 @@ ASSUMPTIONS { - ASSUME(P_GEN_8_POKEMON == TRUE); ASSUME(B_INTREPID_SWORD == GEN_9); } @@ -45,3 +44,23 @@ SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage only once per batt EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE); } } + +SINGLE_BATTLE_TEST("Intrepid Sword activates when it's no longer effected by Neutralizing Gas") +{ + GIVEN { + PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); } + } WHEN { + TURN { SWITCH(player, 1); } + } SCENE { + ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS); + MESSAGE("Neutralizing Gas filled the area!"); + MESSAGE("Weezing, that's enough! Come back!"); + MESSAGE("The effects of Neutralizing Gas wore off!"); + ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!"); + } +} + diff --git a/test/battle/ability/keen_eye.c b/test/battle/ability/keen_eye.c new file mode 100644 index 000000000000..c0a6f34c84be --- /dev/null +++ b/test/battle/ability/keen_eye.c @@ -0,0 +1,199 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_TACKLE].accuracy == 100); + ASSUME(gBattleMoves[MOVE_SAND_ATTACK].effect == EFFECT_ACCURACY_DOWN); + ASSUME(B_ILLUMINATE_EFFECT >= GEN_9); +} + +SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye prevent accuracy stage reduction from moves") +{ + u16 ability; + u32 species; + + PARAMETRIZE { species = SPECIES_HITMONCHAN; ability = ABILITY_KEEN_EYE; } + PARAMETRIZE { species = SPECIES_STARYU; ability = ABILITY_ILLUMINATE; } + PARAMETRIZE { species = SPECIES_URSALUNA_BLOODMOON; ability = ABILITY_MINDS_EYE; } + + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(opponent, ability); + NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + if (species == SPECIES_HITMONCHAN) + MESSAGE("Foe Hitmonchan's Keen Eye prevents accuracy loss!"); + else if (species == SPECIES_STARYU) + MESSAGE("Foe Staryu's Illuminate prevents accuracy loss!"); + else + MESSAGE("Foe Ursaluna's Mind's Eye prevents accuracy loss!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye ignore target's evasion stat") +{ + u16 ability; + u32 species; + + PARAMETRIZE { species = SPECIES_HITMONCHAN; ability = ABILITY_KEEN_EYE; } + PARAMETRIZE { species = SPECIES_STARYU; ability = ABILITY_ILLUMINATE; } + PARAMETRIZE { species = SPECIES_URSALUNA_BLOODMOON; ability = ABILITY_MINDS_EYE; } + + PASSES_RANDOMLY(100, 100, RNG_ACCURACY); + GIVEN { + ASSUME(gBattleMoves[MOVE_DOUBLE_TEAM].effect == EFFECT_EVASION_UP); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_DOUBLE_TEAM); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_TEAM, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye are ignored by Mold Breaker abilities") +{ + u16 abilityPlayer = ABILITY_NONE, abilityOpponent = ABILITY_NONE; + u16 speciesPlayer = SPECIES_NONE, speciesOpponent = SPECIES_NONE; + + u32 j; + static const u16 moldBreakerAbilities[][2] = { + {SPECIES_PINSIR, ABILITY_MOLD_BREAKER}, + {SPECIES_RESHIRAM, ABILITY_TURBOBLAZE}, + {SPECIES_ZEKROM, ABILITY_TERAVOLT}, + }; + + for (j = 0; j < ARRAY_COUNT(moldBreakerAbilities); j++) { + speciesPlayer = moldBreakerAbilities[j][0]; abilityPlayer = moldBreakerAbilities[j][1]; + PARAMETRIZE { speciesOpponent = SPECIES_HITMONCHAN; abilityOpponent = ABILITY_KEEN_EYE; } + PARAMETRIZE { speciesOpponent = SPECIES_STARYU; abilityOpponent = ABILITY_ILLUMINATE; } + PARAMETRIZE { speciesOpponent = SPECIES_URSALUNA_BLOODMOON; abilityOpponent = ABILITY_MINDS_EYE; } + } + + PASSES_RANDOMLY(gBattleMoves[MOVE_TACKLE].accuracy * 3 / 4, 100, RNG_ACCURACY); + GIVEN { + PLAYER(speciesPlayer) { Ability(abilityPlayer); } + OPPONENT(speciesOpponent) { Ability(abilityOpponent); } + } WHEN { + TURN { MOVE(player, MOVE_SAND_ATTACK); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + ABILITY_POPUP(player, abilityPlayer); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SAND_ATTACK, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + } +} + +SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye don't prevent Topsy-Turvy") +{ + u16 ability; + u32 species; + + PARAMETRIZE { species = SPECIES_HITMONCHAN; ability = ABILITY_KEEN_EYE; } + PARAMETRIZE { species = SPECIES_STARYU; ability = ABILITY_ILLUMINATE; } + PARAMETRIZE { species = SPECIES_URSALUNA_BLOODMOON; ability = ABILITY_MINDS_EYE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_HONE_CLAWS].effect == EFFECT_ATTACK_ACCURACY_UP); + ASSUME(gBattleMoves[MOVE_TOPSY_TURVY].effect == EFFECT_TOPSY_TURVY); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(opponent, MOVE_HONE_CLAWS); MOVE(player, MOVE_TOPSY_TURVY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HONE_CLAWS, opponent); + if (species == SPECIES_HITMONCHAN) { + MESSAGE("Foe Hitmonchan's Attack rose!"); + MESSAGE("Foe Hitmonchan's accuracy rose!"); + } else if (species == SPECIES_STARYU) { + MESSAGE("Foe Staryu's Attack rose!"); + MESSAGE("Foe Staryu's accuracy rose!"); + } else { + MESSAGE("Foe Ursaluna's Attack rose!"); + MESSAGE("Foe Ursaluna's accuracy rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player); + if (species == SPECIES_HITMONCHAN) + MESSAGE("Foe Hitmonchan's stat changes were all reversed!"); + else if (species == SPECIES_STARYU) + MESSAGE("Foe Staryu's stat changes were all reversed!"); + else + MESSAGE("Foe Ursaluna's stat changes were all reversed!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ACC], DEFAULT_STAT_STAGE - 1); + } +} + +SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye don't prevent receiving negative Attack stage changes from Baton Pass") +{ + u16 ability; + u32 species; + PARAMETRIZE { species = SPECIES_HITMONCHAN; ability = ABILITY_KEEN_EYE; } + PARAMETRIZE { species = SPECIES_STARYU; ability = ABILITY_ILLUMINATE; } + PARAMETRIZE { species = SPECIES_URSALUNA_BLOODMOON; ability = ABILITY_MINDS_EYE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(player, MOVE_SAND_ATTACK); + MOVE(opponent, MOVE_BATON_PASS); + SEND_OUT(opponent, 1); + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SAND_ATTACK, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + if (species == SPECIES_HITMONCHAN) + MESSAGE("2 sent out Hitmonchan!"); + else if (species == SPECIES_STARYU) + MESSAGE("2 sent out Staryu!"); + else + MESSAGE("2 sent out Ursaluna!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ACC], DEFAULT_STAT_STAGE - 1); + } +} + +SINGLE_BATTLE_TEST("Keen Eye & Gen9+ Illuminate don't prevent Spectral Thief from resetting positive accuracy stage changes") +{ + u16 ability; + u32 species; + + PARAMETRIZE { species = SPECIES_HITMONCHAN; ability = ABILITY_KEEN_EYE; } + PARAMETRIZE { species = SPECIES_STARYU; ability = ABILITY_ILLUMINATE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_HONE_CLAWS].effect == EFFECT_ATTACK_ACCURACY_UP); + ASSUME(gBattleMoves[MOVE_SPECTRAL_THIEF].effect == EFFECT_SPECTRAL_THIEF); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(species) { Ability(ability); } + } WHEN { + TURN { MOVE(opponent, MOVE_HONE_CLAWS); MOVE(player, MOVE_SPECTRAL_THIEF); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_HONE_CLAWS, opponent); + if (species == SPECIES_HITMONCHAN) + { + MESSAGE("Foe Hitmonchan's Attack rose!"); + MESSAGE("Foe Hitmonchan's accuracy rose!"); + } + else + { + MESSAGE("Foe Staryu's Attack rose!"); + MESSAGE("Foe Staryu's accuracy rose!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player); + MESSAGE("Wobbuffet stole the target's boosted stats!"); + } THEN { + EXPECT_EQ(opponent->statStages[STAT_ACC], DEFAULT_STAT_STAGE); + } +} diff --git a/test/battle/ability/minds_eye.c b/test/battle/ability/minds_eye.c new file mode 100644 index 000000000000..52434c66708b --- /dev/null +++ b/test/battle/ability/minds_eye.c @@ -0,0 +1,71 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Mind's Eye allows to hit Ghost-type Pokémon with Normal- and Fighting-type moves") +{ + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_KARATE_CHOP; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_MINDS_EYE); }; + OPPONENT(SPECIES_GASTLY); + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent); + } +} + +// No current official way to test this, effect based on Smogon's NatDex format. +SINGLE_BATTLE_TEST("Mind's Eye doesn't bypass a Ghost-type's Wonder Guard") +{ + u32 move; + PARAMETRIZE { move = MOVE_TACKLE; } + PARAMETRIZE { move = MOVE_KARATE_CHOP; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SCRAPPY); }; + OPPONENT(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); }; + } WHEN { + TURN { MOVE(player, move); } + } SCENE { + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, move, player); + HP_BAR(opponent); + } + ABILITY_POPUP(opponent, ABILITY_WONDER_GUARD); + MESSAGE("Foe Shedinja avoided damage with Wonder Guard!"); + } +} + +//// AI TESTS //// + +AI_SINGLE_BATTLE_TEST("AI doesn't use accuracy-lowering moves if it knows that the foe has Mind's Eye") +{ + u32 abilityAI = ABILITY_NONE, moveAI = MOVE_NONE, j = 0; + + for (j = MOVE_NONE + 1; j < MOVES_COUNT; j++) + { + if (gBattleMoves[j].effect == EFFECT_ACCURACY_DOWN || gBattleMoves[j].effect == EFFECT_ACCURACY_DOWN_2) { + PARAMETRIZE{ moveAI = j; abilityAI = ABILITY_SWIFT_SWIM; } + PARAMETRIZE{ moveAI = j; abilityAI = ABILITY_MOLD_BREAKER; } + } + } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT); + PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_MINDS_EYE); } + OPPONENT(SPECIES_BASCULEGION) { Moves(MOVE_CELEBRATE, moveAI); Ability(abilityAI); } + } WHEN { + TURN { MOVE(player, MOVE_TACKLE); } + TURN { MOVE(player, MOVE_TACKLE); + if (abilityAI == ABILITY_MOLD_BREAKER) { SCORE_GT(opponent, moveAI, MOVE_CELEBRATE); } + else { SCORE_EQ(opponent, moveAI, MOVE_CELEBRATE); } + } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + if (abilityAI == ABILITY_MOLD_BREAKER) { ANIMATION(ANIM_TYPE_MOVE, moveAI, opponent); } + } +} diff --git a/test/battle/ability/protosynthesis.c b/test/battle/ability/protosynthesis.c index 4f1b82b85371..976ac363858b 100644 --- a/test/battle/ability/protosynthesis.c +++ b/test/battle/ability/protosynthesis.c @@ -10,15 +10,15 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Protosynthesis boosts the highest stat") { GIVEN { - PLAYER(SPECIES_ABRA) { Ability(ABILITY_PROTOSYNTHESIS); } + PLAYER(SPECIES_WALKING_WAKE) { Ability(ABILITY_PROTOSYNTHESIS); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_SUNNY_DAY); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated Abra's Protosynthesis!"); - MESSAGE("Abra's Sp. Atk was heightened!"); + MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); + MESSAGE("WalkngWake's Sp. Atk was heightened!"); } } @@ -28,11 +28,11 @@ SINGLE_BATTLE_TEST("Protosynthesis boosts either Attack or Special Attack, not b u32 move; s16 damage[2]; - PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_ROUND; } + PARAMETRIZE { species = SPECIES_ROARING_MOON; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_ROARING_MOON; move = MOVE_ROUND; } - PARAMETRIZE { species = SPECIES_ABRA; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_ABRA; move = MOVE_ROUND; } + PARAMETRIZE { species = SPECIES_WALKING_WAKE; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_WALKING_WAKE; move = MOVE_ROUND; } GIVEN { PLAYER(species) { Ability(ABILITY_PROTOSYNTHESIS); } @@ -47,51 +47,19 @@ SINGLE_BATTLE_TEST("Protosynthesis boosts either Attack or Special Attack, not b ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { - if ((move == MOVE_TACKLE && species == SPECIES_BELLSPROUT) || (move == MOVE_ROUND && species == SPECIES_ABRA)) + if ((move == MOVE_TACKLE && species == SPECIES_ROARING_MOON) || (move == MOVE_ROUND && species == SPECIES_WALKING_WAKE)) EXPECT_MUL_EQ(damage[0], Q_4_12(1.3), damage[1]); else EXPECT_EQ(damage[0], damage[1]); } } -SINGLE_BATTLE_TEST("Protosynthesis either boosts Defense or Special Defense, not both") -{ - u16 species; - u32 move; - s16 damage[2]; - - PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_ROUND; } - - PARAMETRIZE { species = SPECIES_BLASTOISE; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_BLASTOISE; move = MOVE_ROUND; } - - GIVEN { - PLAYER(species) { Ability(ABILITY_PROTOSYNTHESIS); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, move); } - TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, move); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, move, opponent); - HP_BAR(player, captureDamage: &damage[0]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); - ANIMATION(ANIM_TYPE_MOVE, move, opponent); - HP_BAR(player, captureDamage: &damage[1]); - } THEN { - if ((move == MOVE_TACKLE && species == SPECIES_ONIX) || (move == MOVE_ROUND && species == SPECIES_BLASTOISE)) - EXPECT_MUL_EQ(damage[0], Q_4_12(0.7), damage[1]); - else - EXPECT_EQ(damage[0], damage[1]); - } -} - SINGLE_BATTLE_TEST("Protosynthesis ability pop up activates only once during the duration of sunny day") { u16 turns; GIVEN { - PLAYER(SPECIES_BELLSPROUT) { Ability(ABILITY_PROTOSYNTHESIS); } + PLAYER(SPECIES_WALKING_WAKE) { Ability(ABILITY_PROTOSYNTHESIS); } OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); }; } WHEN { for (turns = 0; turns < 5; turns++) @@ -100,35 +68,34 @@ SINGLE_BATTLE_TEST("Protosynthesis ability pop up activates only once during the } SCENE { ABILITY_POPUP(opponent, ABILITY_DROUGHT); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated Bellsprout's Protosynthesis!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); + MESSAGE("WalkngWake's Sp. Atk was heightened!"); NONE_OF { for (turns = 0; turns < 4; turns++) { ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated Bellsprout's Protosynthesis!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); + MESSAGE("WalkngWake's Sp. Atk was heightened!"); } } ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, opponent); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated Bellsprout's Protosynthesis!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The harsh sunlight activated WalkngWake's Protosynthesis!"); + MESSAGE("WalkngWake's Sp. Atk was heightened!"); } } SINGLE_BATTLE_TEST("Protosynthesis activates on switch-in") { - KNOWN_FAILING; // Fails because of wrong species GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_BELLSPROUT) { Ability(ABILITY_PROTOSYNTHESIS); } + PLAYER(SPECIES_ROARING_MOON) { Ability(ABILITY_PROTOSYNTHESIS); } OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); }; } WHEN { TURN { SWITCH(player, 1); } } SCENE { ABILITY_POPUP(opponent, ABILITY_DROUGHT); ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS); - MESSAGE("The harsh sunlight activated Bellsprout's Protosynthesis!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The harsh sunlight activated RoarngMoon's Protosynthesis!"); + MESSAGE("RoarngMoon's Attack was heightened!"); } } diff --git a/test/battle/ability/quark_drive.c b/test/battle/ability/quark_drive.c index a70934cc7066..c17819510590 100644 --- a/test/battle/ability/quark_drive.c +++ b/test/battle/ability/quark_drive.c @@ -10,15 +10,15 @@ ASSUMPTIONS SINGLE_BATTLE_TEST("Quark Drive boosts the highest stat") { GIVEN { - PLAYER(SPECIES_ABRA) { Ability(ABILITY_QUARK_DRIVE); } + PLAYER(SPECIES_IRON_MOTH) { Ability(ABILITY_QUARK_DRIVE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, player); ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); - MESSAGE("The Electric Terrain activated Abra's Quark Drive!"); - MESSAGE("Abra's Sp. Atk was heightened!"); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); } } @@ -28,11 +28,11 @@ SINGLE_BATTLE_TEST("Quark Drive boosts either Attack or Special Attack, not both u32 move; s16 damage[2]; - PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_BELLSPROUT; move = MOVE_ROUND; } + PARAMETRIZE { species = SPECIES_IRON_VALIANT; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_IRON_VALIANT; move = MOVE_ROUND; } - PARAMETRIZE { species = SPECIES_ABRA; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_ABRA; move = MOVE_ROUND; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; move = MOVE_TACKLE; } + PARAMETRIZE { species = SPECIES_IRON_MOTH; move = MOVE_ROUND; } GIVEN { PLAYER(species) { Ability(ABILITY_QUARK_DRIVE); } @@ -47,89 +47,56 @@ SINGLE_BATTLE_TEST("Quark Drive boosts either Attack or Special Attack, not both ANIMATION(ANIM_TYPE_MOVE, move, player); HP_BAR(opponent, captureDamage: &damage[1]); } THEN { - if ((move == MOVE_TACKLE && species == SPECIES_BELLSPROUT) || (move == MOVE_ROUND && species == SPECIES_ABRA)) + if ((move == MOVE_TACKLE && species == SPECIES_IRON_VALIANT) || (move == MOVE_ROUND && species == SPECIES_IRON_MOTH)) EXPECT_MUL_EQ(damage[0], Q_4_12(1.3), damage[1]); else EXPECT_EQ(damage[0], damage[1]); } } -SINGLE_BATTLE_TEST("Quark Drive either boosts Defense or Special Defense, not both") -{ - u16 species; - u32 move; - s16 damage[2]; - - PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_ONIX; move = MOVE_ROUND; } - - PARAMETRIZE { species = SPECIES_BLASTOISE; move = MOVE_TACKLE; } - PARAMETRIZE { species = SPECIES_BLASTOISE; move = MOVE_ROUND; } - - GIVEN { - PLAYER(species) { Ability(ABILITY_QUARK_DRIVE); } - OPPONENT(SPECIES_WOBBUFFET); - } WHEN { - TURN { MOVE(opponent, move); } - TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); MOVE(opponent, move); } - } SCENE { - ANIMATION(ANIM_TYPE_MOVE, move, opponent); - HP_BAR(player, captureDamage: &damage[0]); - ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, player); - ANIMATION(ANIM_TYPE_MOVE, move, opponent); - HP_BAR(player, captureDamage: &damage[1]); - } THEN { - if ((move == MOVE_TACKLE && species == SPECIES_ONIX) || (move == MOVE_ROUND && species == SPECIES_BLASTOISE)) - EXPECT_MUL_EQ(damage[0], Q_4_12(0.7), damage[1]); - else - EXPECT_EQ(damage[0], damage[1]); - } -} - SINGLE_BATTLE_TEST("Quark Drive ability pop up activates only once during the duration of electric terrain") { u16 turns; GIVEN { - PLAYER(SPECIES_BELLSPROUT) { Ability(ABILITY_QUARK_DRIVE); } + PLAYER(SPECIES_IRON_MOTH) { Ability(ABILITY_QUARK_DRIVE); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { - TURN { MOVE(opponent, MOVE_ELECTRIC_TERRAIN); } + TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } for (turns = 0; turns < 4; turns++) TURN {} - TURN { MOVE(opponent, MOVE_ELECTRIC_TERRAIN); } + TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); } } SCENE { - ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, player); ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); - MESSAGE("The Electric Terrain activated Bellsprout's Quark Drive!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); NONE_OF { for (turns = 0; turns < 4; turns++) { ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); - MESSAGE("The Electric Terrain activated Bellsprout's Quark Drive!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); } } - ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, player); ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); - MESSAGE("The Electric Terrain activated Bellsprout's Quark Drive!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); } } SINGLE_BATTLE_TEST("Quark Drive activates on switch-in") { - KNOWN_FAILING; // Fails because of wrong species GIVEN { PLAYER(SPECIES_WOBBUFFET); - PLAYER(SPECIES_BELLSPROUT) { Ability(ABILITY_QUARK_DRIVE); } + PLAYER(SPECIES_IRON_MOTH) { Ability(ABILITY_QUARK_DRIVE); } OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }; } WHEN { TURN { SWITCH(player, 1); } } SCENE { ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE); ABILITY_POPUP(player, ABILITY_QUARK_DRIVE); - MESSAGE("The Electric Terrain activated Bellsprout's Quark Drive!"); - MESSAGE("Bellsprout's Attack was heightened!"); + MESSAGE("The Electric Terrain activated Iron Moth's Quark Drive!"); + MESSAGE("Iron Moth's Sp. Atk was heightened!"); } } diff --git a/test/battle/ability/sword_of_ruin.c b/test/battle/ability/sword_of_ruin.c index 0f4d95b3adf6..0cfc9211f15a 100644 --- a/test/battle/ability/sword_of_ruin.c +++ b/test/battle/ability/sword_of_ruin.c @@ -4,50 +4,28 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL); + ASSUME(gBattleMoves[MOVE_ROLE_PLAY].effect == EFFECT_ROLE_PLAY); } -SINGLE_BATTLE_TEST("Sword of Ruin reduces Defense", s16 damage) +SINGLE_BATTLE_TEST("Sword of Ruin reduces Defense if opposing mon's ability doesn't match") { - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_SWORD_OF_RUIN; } + s16 damage[2]; GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } + PLAYER(SPECIES_CHIEN_PAO) { Ability(ABILITY_SWORD_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { + TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_ROLE_PLAY); } TURN { MOVE(player, MOVE_TACKLE); } } SCENE { - if (ability == ABILITY_SWORD_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_SWORD_OF_RUIN); - MESSAGE("Wobbuffet's Sword of Ruin weakened the Defense of all surrounding Pokémon!"); - } - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.33), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Sword of Ruin does not reduce Defense if opposing mon has the same ability", s16 damage) -{ - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_SWORD_OF_RUIN; } - - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_SWORD_OF_RUIN); } - } WHEN { - TURN { MOVE(player, MOVE_TACKLE); } - } SCENE { - if (ability == ABILITY_SWORD_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_SWORD_OF_RUIN); - MESSAGE("Wobbuffet's Sword of Ruin weakened the Defense of all surrounding Pokémon!"); - } - HP_BAR(opponent, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); + ABILITY_POPUP(player, ABILITY_SWORD_OF_RUIN); + MESSAGE("Chien-Pao's Sword of Ruin weakened the Defense of all surrounding Pokémon!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ROLE_PLAY, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &damage[1]); + } THEN { + EXPECT_MUL_EQ(damage[1], Q_4_12(1.33), damage[0]); } } diff --git a/test/battle/ability/tablets_of_ruin.c b/test/battle/ability/tablets_of_ruin.c index 2b7e450808ca..72c97cd82843 100644 --- a/test/battle/ability/tablets_of_ruin.c +++ b/test/battle/ability/tablets_of_ruin.c @@ -4,50 +4,28 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL); + ASSUME(gBattleMoves[MOVE_ENTRAINMENT].effect == EFFECT_ENTRAINMENT); } -SINGLE_BATTLE_TEST("Tablets of Ruin reduces Attack", s16 damage) +SINGLE_BATTLE_TEST("Tablets of Ruin reduces Attack if opposing mon's ability doesn't match") { - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_TABLETS_OF_RUIN; } + s16 damage[2]; GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } + PLAYER(SPECIES_WO_CHIEN) { Ability(ABILITY_TABLETS_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { + TURN { MOVE(opponent, MOVE_TACKLE); MOVE(player, MOVE_ENTRAINMENT); } TURN { MOVE(opponent, MOVE_TACKLE); } } SCENE { - if (ability == ABILITY_TABLETS_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_TABLETS_OF_RUIN); - MESSAGE("Wobbuffet's Tablets of Ruin weakened the Attack of all surrounding Pokémon!"); - } - HP_BAR(player, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.75), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Tablets of Ruin does not reduce Attack if an opposing mon has the same ability", s16 damage) -{ - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_TABLETS_OF_RUIN; } - - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_TABLETS_OF_RUIN); } - } WHEN { - TURN { MOVE(opponent, MOVE_TACKLE); } - } SCENE { - if (ability == ABILITY_TABLETS_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_TABLETS_OF_RUIN); - MESSAGE("Wobbuffet's Tablets of Ruin weakened the Attack of all surrounding Pokémon!"); - } - HP_BAR(player, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); + ABILITY_POPUP(player, ABILITY_TABLETS_OF_RUIN); + MESSAGE("Wo-Chien's Tablets of Ruin weakened the Attack of all surrounding Pokémon!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENTRAINMENT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent); + HP_BAR(player, captureDamage: &damage[1]); + } THEN { + EXPECT_MUL_EQ(damage[0], Q_4_12(1.33), damage[1]); } } diff --git a/test/battle/ability/vessel_of_ruin.c b/test/battle/ability/vessel_of_ruin.c index 1395bfa01233..446ba505bcde 100644 --- a/test/battle/ability/vessel_of_ruin.c +++ b/test/battle/ability/vessel_of_ruin.c @@ -4,50 +4,28 @@ ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_WATER_GUN].category == BATTLE_CATEGORY_SPECIAL); + ASSUME(gBattleMoves[MOVE_ENTRAINMENT].effect == EFFECT_ENTRAINMENT); } -SINGLE_BATTLE_TEST("Vessel of Ruin reduces Sp. Atk", s16 damage) +SINGLE_BATTLE_TEST("Vessel of Ruin reduces Sp. Atk if opposing mon's ability doesn't match") { - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_VESSEL_OF_RUIN; } + s16 damage[2]; GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } + PLAYER(SPECIES_TING_LU) { Ability(ABILITY_VESSEL_OF_RUIN); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { + TURN { MOVE(opponent, MOVE_WATER_GUN); MOVE(player, MOVE_ENTRAINMENT); } TURN { MOVE(opponent, MOVE_WATER_GUN); } } SCENE { - if (ability == ABILITY_VESSEL_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_VESSEL_OF_RUIN); - MESSAGE("Wobbuffet's Vessel of Ruin weakened the Sp. Atk of all surrounding Pokémon!"); - } - HP_BAR(player, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.75), results[1].damage); - } -} - -SINGLE_BATTLE_TEST("Vessel of Ruin does not reduce Sp. Atk if opposing mon has the same ability", s16 damage) -{ - u32 ability; - - PARAMETRIZE { ability = ABILITY_SHADOW_TAG; } - PARAMETRIZE { ability = ABILITY_VESSEL_OF_RUIN; } - - GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Ability(ability); } - OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_VESSEL_OF_RUIN); } - } WHEN { - TURN { MOVE(opponent, MOVE_WATER_GUN); } - } SCENE { - if (ability == ABILITY_VESSEL_OF_RUIN) { - ABILITY_POPUP(player, ABILITY_VESSEL_OF_RUIN); - MESSAGE("Wobbuffet's Vessel of Ruin weakened the Sp. Atk of all surrounding Pokémon!"); - } - HP_BAR(player, captureDamage: &results[i].damage); - } FINALLY { - EXPECT_EQ(results[0].damage, results[1].damage); + ABILITY_POPUP(player, ABILITY_VESSEL_OF_RUIN); + MESSAGE("Ting-Lu's Vessel of Ruin weakened the Sp. Atk of all surrounding Pokémon!"); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); + HP_BAR(player, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ENTRAINMENT, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); + HP_BAR(player, captureDamage: &damage[1]); + } THEN { + EXPECT_MUL_EQ(damage[0], Q_4_12(1.33), damage[1]); } } diff --git a/test/battle/move_effect/belly_drum.c b/test/battle/move_effect/belly_drum.c new file mode 100644 index 000000000000..b3f02f7a1911 --- /dev/null +++ b/test/battle/move_effect/belly_drum.c @@ -0,0 +1,92 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_BELLY_DRUM].effect == EFFECT_BELLY_DRUM); +} + +SINGLE_BATTLE_TEST("Belly Drum cuts the user's HP in half") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BELLY_DRUM); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + HP_BAR(player, hp: maxHP / 2); + } +} + +SINGLE_BATTLE_TEST("Belly Drum maximizes the user's Attack stat", s16 damage) +{ + bool32 raiseAttack; + PARAMETRIZE { raiseAttack = FALSE; } + PARAMETRIZE { raiseAttack = TRUE; } + GIVEN { + ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + if (raiseAttack) TURN { MOVE(player, MOVE_BELLY_DRUM); } + TURN { MOVE(player, MOVE_TACKLE); } + } SCENE { + if (raiseAttack) { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet cut its own HP and maximized ATTACK!"); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player); + HP_BAR(opponent, captureDamage: &results[i].damage); + } FINALLY { + EXPECT_MUL_EQ(results[0].damage, Q_4_12(4), results[1].damage); + } +} + +SINGLE_BATTLE_TEST("Belly Drum fails if user's current HP is half or less than half its maximum") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(50);} + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_BELLY_DRUM); } + } SCENE { + MESSAGE("But it failed!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player); + HP_BAR(player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } + } +} + +SINGLE_BATTLE_TEST("Belly Drum fails if the user's Attack is already at +6") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_SWORDS_DANCE].effect == EFFECT_ATTACK_UP_2); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_SWORDS_DANCE); } + TURN { MOVE(player, MOVE_SWORDS_DANCE); } + TURN { MOVE(player, MOVE_SWORDS_DANCE); } + TURN { MOVE(player, MOVE_BELLY_DRUM); } + } SCENE { + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack sharply rose!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack sharply rose!"); + + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack sharply rose!"); + + MESSAGE("But it failed!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player); + HP_BAR(player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + } + } +} diff --git a/test/battle/move_effect/burn_hit.c b/test/battle/move_effect/burn_hit.c index 627a051a53c5..5c5dfa3d6035 100644 --- a/test/battle/move_effect/burn_hit.c +++ b/test/battle/move_effect/burn_hit.c @@ -38,3 +38,32 @@ SINGLE_BATTLE_TEST("Ember cannot burn a Fire-type Pokémon") } } } + +#if B_STATUS_TYPE_IMMUNITY > GEN_1 +SINGLE_BATTLE_TEST("Scald should burn a Water-type Pokémon") +#else +SINGLE_BATTLE_TEST("Scald shouldn't burn a Water-type Pokémon") +#endif +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_SQUIRTLE].types[0] == TYPE_WATER); + ASSUME(gBattleMoves[MOVE_SCALD].effect == EFFECT_BURN_HIT); + ASSUME(gBattleMoves[MOVE_SCALD].type == TYPE_WATER); + PLAYER(SPECIES_SQUIRTLE); + OPPONENT(SPECIES_SQUIRTLE); + } WHEN { + TURN { MOVE(player, MOVE_SCALD); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALD, player); + HP_BAR(opponent); + #if B_STATUS_TYPE_IMMUNITY > GEN_1 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + #else + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, opponent); + STATUS_ICON(opponent, burn: TRUE); + } + #endif + } +} diff --git a/test/battle/move_effect/confusion_hit.c b/test/battle/move_effect/confusion_hit.c new file mode 100644 index 000000000000..45077f42d001 --- /dev/null +++ b/test/battle/move_effect/confusion_hit.c @@ -0,0 +1,50 @@ +#include "global.h" +#include "test/battle.h" + +SINGLE_BATTLE_TEST("Alluring Voice confuses the target if the target raised a stat this turn") +{ + u16 move; + + PARAMETRIZE { move = MOVE_CELEBRATE; } + PARAMETRIZE { move = MOVE_SWORDS_DANCE; } + + GIVEN { + ASSUME(gBattleMoves[MOVE_ALLURING_VOICE].effect == EFFECT_CONFUSE_HIT); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, move); MOVE(player, MOVE_ALLURING_VOICE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, move, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLURING_VOICE, player); + HP_BAR(opponent); + if (move == MOVE_SWORDS_DANCE) { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent); + MESSAGE("Foe Wobbuffet became confused!"); + } else { + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent); + MESSAGE("Foe Wobbuffet became confused!"); + } + } + } +} + +SINGLE_BATTLE_TEST("Alluring Voice confuse effect is removed if it is Sheer Force boosted") +{ + GIVEN { + ASSUME(gBattleMoves[MOVE_ALLURING_VOICE].effect == EFFECT_CONFUSE_HIT); + PLAYER(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_ALLURING_VOICE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ALLURING_VOICE, player); + HP_BAR(opponent); + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent); + MESSAGE("Foe Wobbuffet became confused!"); + } + } +} diff --git a/test/battle/move_effect/doodle.c b/test/battle/move_effect/doodle.c new file mode 100644 index 000000000000..23671b38463e --- /dev/null +++ b/test/battle/move_effect/doodle.c @@ -0,0 +1,83 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_DOODLE].effect == EFFECT_DOODLE); +} + +DOUBLE_BATTLE_TEST("Doodle gives the target's ability to user and ally") +{ + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft); + MESSAGE("Wynaut copied Foe Torchic's Blaze!"); + MESSAGE("Wynaut copied Foe Torchic's Blaze!"); + } THEN { + EXPECT(playerLeft->ability == ABILITY_BLAZE); + EXPECT(playerRight->ability == ABILITY_BLAZE); + } +} + +DOUBLE_BATTLE_TEST("Doodle can't copy a banned ability") +{ + GIVEN { + PLAYER(SPECIES_WYNAUT); + PLAYER(SPECIES_WYNAUT); + OPPONENT(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft); + NONE_OF { + MESSAGE("Wynaut copied Foe Great Tusk's Protosynthesis!"); + MESSAGE("Wynaut copied Foe Great Tusk's Protosynthesis!"); + } + } THEN { + EXPECT(playerLeft->ability != ABILITY_PROTOSYNTHESIS); + EXPECT(playerRight->ability != ABILITY_PROTOSYNTHESIS); + } +} + +DOUBLE_BATTLE_TEST("Doodle fails if user has a banned Ability") +{ + GIVEN { + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + PLAYER(SPECIES_WYNAUT) { Ability(ABILITY_SHADOW_TAG); } + OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft); + MESSAGE("But it failed!"); + } THEN { + EXPECT(playerLeft->ability == ABILITY_GULP_MISSILE); + EXPECT(playerRight->ability == ABILITY_SHADOW_TAG); + } +} + +DOUBLE_BATTLE_TEST("Doodle fails if partner has a banned Ability") +{ + GIVEN { + PLAYER(SPECIES_WYNAUT) { Ability(ABILITY_SHADOW_TAG); } + PLAYER(SPECIES_CRAMORANT) { Ability(ABILITY_GULP_MISSILE); } + OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(playerLeft, MOVE_DOODLE, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_DOODLE, playerLeft); + MESSAGE("But it failed!"); + } THEN { + EXPECT(playerLeft->ability == ABILITY_SHADOW_TAG); + EXPECT(playerRight->ability == ABILITY_GULP_MISSILE); + } +} diff --git a/test/battle/move_effect/fickle_beam.c b/test/battle/move_effect/fickle_beam.c new file mode 100644 index 000000000000..2732b641a6d6 --- /dev/null +++ b/test/battle/move_effect/fickle_beam.c @@ -0,0 +1,30 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_FICKLE_BEAM].effect == EFFECT_FICKLE_BEAM); +} + +SINGLE_BATTLE_TEST("Fickle Beam deals double damage 30% of the time") +{ + s16 damage[2]; + + PASSES_RANDOMLY(30, 100, RNG_FICKLE_BEAM); + GIVEN { + ASSUME(gBattleMoves[MOVE_POWER_GEM].power == 80); + ASSUME(gBattleMoves[MOVE_FICKLE_BEAM].power == 80); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_POWER_GEM); } + TURN { MOVE(player, MOVE_FICKLE_BEAM); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_POWER_GEM, player); + HP_BAR(opponent, captureDamage: &damage[0]); + ANIMATION(ANIM_TYPE_MOVE, MOVE_FICKLE_BEAM, player); + HP_BAR(opponent, captureDamage: &damage[1]); + } THEN { + EXPECT_MUL_EQ(damage[0], Q_4_12(2.0), damage[1]); + } +} diff --git a/test/battle/move_effect/fillet_away.c b/test/battle/move_effect/fillet_away.c new file mode 100644 index 000000000000..ea403e16d6dc --- /dev/null +++ b/test/battle/move_effect/fillet_away.c @@ -0,0 +1,58 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_FILLET_AWAY].effect == EFFECT_FILLET_AWAY); +} + +SINGLE_BATTLE_TEST("Fillet Away cuts the user's HP in half") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FILLET_AWAY); } + } SCENE { + s32 maxHP = GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP); + HP_BAR(player, hp: maxHP / 2); + } +} + +SINGLE_BATTLE_TEST("Fillet Away sharply raises Attack, Sp. Atk, and Speed") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FILLET_AWAY); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FILLET_AWAY, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Attack sharply rose!"); + MESSAGE("Wobbuffet's Sp. Atk sharply rose!"); + MESSAGE("Wobbuffet's Speed sharply rose!"); + HP_BAR(player); + } THEN { + EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_SPATK], DEFAULT_STAT_STAGE + 2); + EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2); + } +} + +SINGLE_BATTLE_TEST("Fillet Away fails if user's current HP is half or less than half its maximum") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { MaxHP(100); HP(50);} + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_FILLET_AWAY); } + } SCENE { + MESSAGE("But it failed!"); + NONE_OF { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FILLET_AWAY, player); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + HP_BAR(player); + } + } +} diff --git a/test/battle/move_effect/freeze_hit.c b/test/battle/move_effect/freeze_hit.c index 4c9ff557e414..991acc5da6d0 100644 --- a/test/battle/move_effect/freeze_hit.c +++ b/test/battle/move_effect/freeze_hit.c @@ -66,3 +66,32 @@ SINGLE_BATTLE_TEST("Blizzard bypasses accuracy checks in Hail and Snow") NOT MESSAGE("Wobbuffet's attack missed!"); } } + +#if B_STATUS_TYPE_IMMUNITY > GEN_1 +SINGLE_BATTLE_TEST("Freezing Glare should freeze Psychic-types") +#else +SINGLE_BATTLE_TEST("Freezing Glare shouldn't freeze Psychic-types") +#endif +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_ARTICUNO_GALARIAN].types[0] == TYPE_PSYCHIC); + ASSUME(gBattleMoves[MOVE_FREEZING_GLARE].effect == EFFECT_FREEZE_HIT); + ASSUME(gBattleMoves[MOVE_FREEZING_GLARE].type == TYPE_PSYCHIC); + PLAYER(SPECIES_ARTICUNO_GALARIAN); + OPPONENT(SPECIES_ARTICUNO_GALARIAN); + } WHEN { + TURN { MOVE(player, MOVE_FREEZING_GLARE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_FREEZING_GLARE, player); + HP_BAR(opponent); + #if B_STATUS_TYPE_IMMUNITY > GEN_1 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + STATUS_ICON(opponent, freeze: TRUE); + #else + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_FRZ, opponent); + STATUS_ICON(opponent, freeze: TRUE); + } + #endif + } +} diff --git a/test/battle/move_effect/hit_escape.c b/test/battle/move_effect/hit_escape.c index b9d1bc99e72c..49a8c58627d0 100644 --- a/test/battle/move_effect/hit_escape.c +++ b/test/battle/move_effect/hit_escape.c @@ -98,7 +98,6 @@ SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate") SINGLE_BATTLE_TEST("U-turn switches the user out after Ice Face activates") { GIVEN { - ASSUME(P_GEN_8_POKEMON == TRUE); PLAYER(SPECIES_BEEDRILL); PLAYER(SPECIES_WYNAUT); OPPONENT(SPECIES_EISCUE) { Ability(ABILITY_ICE_FACE); } diff --git a/test/battle/move_effect/ivy_cudgel.c b/test/battle/move_effect/ivy_cudgel.c index 819047f34a74..47db28f50d36 100644 --- a/test/battle/move_effect/ivy_cudgel.c +++ b/test/battle/move_effect/ivy_cudgel.c @@ -3,22 +3,22 @@ ASSUMPTIONS { - ASSUME(gBattleMoves[MOVE_IVY_CUDGEL].effect == EFFECT_CHANGE_TYPE_ON_ITEM); - ASSUME(gBattleMoves[MOVE_IVY_CUDGEL].argument == HOLD_EFFECT_MASK); + ASSUME(gBattleMoves[MOVE_IVY_CUDGEL].effect == EFFECT_IVY_CUDGEL); } -SINGLE_BATTLE_TEST("Ivy Cudgel changes the move type depending on the mask the user holds") +SINGLE_BATTLE_TEST("Ivy Cudgel changes the move type depending on the form of Ogerpon") { u16 species; + u16 ogerpon; u16 item; - PARAMETRIZE { species = SPECIES_BLASTOISE; item = ITEM_NONE; } - PARAMETRIZE { species = SPECIES_CHARIZARD; item = ITEM_CORNERSTONE_MASK; } - PARAMETRIZE { species = SPECIES_CHARIZARD; item = ITEM_WELLSPRING_MASK; } - PARAMETRIZE { species = SPECIES_VENUSAUR; item = ITEM_HEARTHFLAME_MASK; } + PARAMETRIZE { species = SPECIES_BLASTOISE; ogerpon = SPECIES_OGERPON_TEAL_MASK; item = ITEM_NONE; } + PARAMETRIZE { species = SPECIES_CHARIZARD; ogerpon = SPECIES_OGERPON_CORNERSTONE_MASK; item = ITEM_CORNERSTONE_MASK; } + PARAMETRIZE { species = SPECIES_CHARIZARD; ogerpon = SPECIES_OGERPON_WELLSPRING_MASK; item = ITEM_WELLSPRING_MASK; } + PARAMETRIZE { species = SPECIES_VENUSAUR; ogerpon = SPECIES_OGERPON_HEARTHFLAME_MASK; item = ITEM_HEARTHFLAME_MASK; } GIVEN { - PLAYER(SPECIES_WOBBUFFET) { Item(item); } + PLAYER(ogerpon) { Item(item); } OPPONENT(species); } WHEN { TURN { MOVE(player, MOVE_IVY_CUDGEL); } @@ -28,3 +28,24 @@ SINGLE_BATTLE_TEST("Ivy Cudgel changes the move type depending on the mask the u MESSAGE("It's super effective!"); } } + +SINGLE_BATTLE_TEST("Ivy Cudgel does not change the move type if used by Pokémon other than Ogerpon") +{ + u16 item; + + PARAMETRIZE { item = ITEM_NONE; } + PARAMETRIZE { item = ITEM_CORNERSTONE_MASK; } + PARAMETRIZE { item = ITEM_WELLSPRING_MASK; } + PARAMETRIZE { item = ITEM_HEARTHFLAME_MASK; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(item); } + OPPONENT(SPECIES_BLASTOISE); + } WHEN { + TURN { MOVE(player, MOVE_IVY_CUDGEL); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_IVY_CUDGEL, player); + HP_BAR(opponent); + MESSAGE("It's super effective!"); // Should be super effective everytime if type isnt being changed + } +} diff --git a/test/battle/move_effect/meteor_beam.c b/test/battle/move_effect/meteor_beam.c new file mode 100644 index 000000000000..600de153d47f --- /dev/null +++ b/test/battle/move_effect/meteor_beam.c @@ -0,0 +1,61 @@ +#include "global.h" +#include "test/battle.h" + +ASSUMPTIONS +{ + ASSUME(gBattleMoves[MOVE_ELECTRO_SHOT].effect == EFFECT_METEOR_BEAM); +} + +SINGLE_BATTLE_TEST("Electro Shot needs a charging Turn") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ELECTRO_SHOT); } + TURN { SKIP_TURN(player); } + } SCENE { + // Charging turn + ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRO_SHOT, player); + MESSAGE("Wobbuffet absorbed electricity!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Sp. Atk rose!"); + // Attack turn + MESSAGE("Wobbuffet used Electro Shot!"); + } +} + +SINGLE_BATTLE_TEST("Electro Shot doesn't need to charge when it's raining") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_RAIN_DANCE); MOVE(player, MOVE_ELECTRO_SHOT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_RAIN_DANCE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRO_SHOT, player); + MESSAGE("Wobbuffet absorbed electricity!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Sp. Atk rose!"); + MESSAGE("Wobbuffet used Electro Shot!"); + } +} + +SINGLE_BATTLE_TEST("Electro Shot doesn't need to charge with Power Herb") +{ + GIVEN { + PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_POWER_HERB); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(player, MOVE_ELECTRO_SHOT); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRO_SHOT, player); + MESSAGE("Wobbuffet absorbed electricity!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); + MESSAGE("Wobbuffet's Sp. Atk rose!"); + ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player); + MESSAGE("Wobbuffet became fully charged due to its Power Herb!"); + MESSAGE("Wobbuffet used Electro Shot!"); + } +} diff --git a/test/battle/move_effect/paralyze_hit.c b/test/battle/move_effect/paralyze_hit.c index c2fa440be144..24ae4bff9834 100644 --- a/test/battle/move_effect/paralyze_hit.c +++ b/test/battle/move_effect/paralyze_hit.c @@ -39,3 +39,32 @@ SINGLE_BATTLE_TEST("Thunder Shock cannot paralyze an Electric-type") } } } + +#if B_STATUS_TYPE_IMMUNITY > GEN_1 +SINGLE_BATTLE_TEST("Body Slam should paralyze Normal-types") +#else +SINGLE_BATTLE_TEST("Body Slam shouldn't paralyze Normal-types") +#endif +{ + GIVEN { + ASSUME(gSpeciesInfo[SPECIES_TAUROS].types[0] == TYPE_NORMAL); + ASSUME(gBattleMoves[MOVE_BODY_SLAM].effect == EFFECT_PARALYZE_HIT); + ASSUME(gBattleMoves[MOVE_BODY_SLAM].type == TYPE_NORMAL); + PLAYER(SPECIES_TAUROS); + OPPONENT(SPECIES_TAUROS); + } WHEN { + TURN { MOVE(player, MOVE_BODY_SLAM); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BODY_SLAM, player); + HP_BAR(opponent); + #if B_STATUS_TYPE_IMMUNITY > GEN_1 + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + #else + NONE_OF { + ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent); + STATUS_ICON(opponent, paralysis: TRUE); + } + #endif + } +} diff --git a/test/battle/move_effect/protect.c b/test/battle/move_effect/protect.c index 502eab46e012..c527a4881d0e 100644 --- a/test/battle/move_effect/protect.c +++ b/test/battle/move_effect/protect.c @@ -12,6 +12,7 @@ ASSUMPTIONS ASSUME(gBattleMoves[MOVE_QUICK_GUARD].effect == EFFECT_PROTECT); ASSUME(gBattleMoves[MOVE_CRAFTY_SHIELD].effect == EFFECT_PROTECT); ASSUME(gBattleMoves[MOVE_BANEFUL_BUNKER].effect == EFFECT_PROTECT); + ASSUME(gBattleMoves[MOVE_BURNING_BULWARK].effect == EFFECT_PROTECT); ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL); ASSUME(gBattleMoves[MOVE_TACKLE].makesContact); ASSUME(gBattleMoves[MOVE_LEER].category == BATTLE_CATEGORY_STATUS); @@ -19,7 +20,7 @@ ASSUMPTIONS ASSUME(!(gBattleMoves[MOVE_WATER_GUN].makesContact)); } -SINGLE_BATTLE_TEST("Protect, Detect, Spiky Shield and Baneful Bunker protect from all moves") +SINGLE_BATTLE_TEST("Protect, Detect, Spiky Shield, Baneful Bunker and Burning Bulwark protect from all moves") { u32 j; static const u16 protectMoves[] = { @@ -27,6 +28,7 @@ SINGLE_BATTLE_TEST("Protect, Detect, Spiky Shield and Baneful Bunker protect fro MOVE_DETECT, MOVE_SPIKY_SHIELD, MOVE_BANEFUL_BUNKER, + MOVE_BURNING_BULWARK, }; u16 protectMove = MOVE_NONE; u16 usedMove = MOVE_NONE; @@ -188,6 +190,38 @@ SINGLE_BATTLE_TEST("Baneful Bunker poisons pokemon for moves making contact") } } +SINGLE_BATTLE_TEST("Burning Bulwark burns pokemon for moves making contact") +{ + u16 usedMove = MOVE_NONE; + + PARAMETRIZE {usedMove = MOVE_TACKLE; } + PARAMETRIZE {usedMove = MOVE_LEER; } + PARAMETRIZE {usedMove = MOVE_WATER_GUN; } + + GIVEN { + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_BURNING_BULWARK); MOVE(player, usedMove); } + TURN {} + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_BURNING_BULWARK, opponent); + MESSAGE("Foe Wobbuffet protected itself!"); + NOT ANIMATION(ANIM_TYPE_MOVE, usedMove, player); + MESSAGE("Foe Wobbuffet protected itself!"); + if (usedMove == MOVE_TACKLE) { + NOT HP_BAR(opponent); + STATUS_ICON(player, STATUS1_BURN); + } else { + NONE_OF { + HP_BAR(opponent); + STATUS_ICON(player, STATUS1_BURN); + } + } + } +} + SINGLE_BATTLE_TEST("Recoil damage is not applied if target was protected") { u32 j, k; diff --git a/test/battle/trainer_control.c b/test/battle/trainer_control.c index 810a721fa5af..e3e071745d6a 100644 --- a/test/battle/trainer_control.c +++ b/test/battle/trainer_control.c @@ -27,7 +27,8 @@ static const struct TrainerMon sTestParty1[] = .lvl = 67, .moves = {MOVE_AIR_SLASH, MOVE_BARRIER, MOVE_SOLAR_BEAM, MOVE_EXPLOSION}, .nature = TRAINER_PARTY_NATURE(NATURE_HASTY), - .nickname = COMPOUND_STRING("Bubbles") + .nickname = COMPOUND_STRING("Bubbles"), + .dynamaxLevel = 5, }, { .species = SPECIES_WOBBUFFET, @@ -110,6 +111,9 @@ TEST("CreateNPCTrainerPartyForTrainer generates customized Pokémon") EXPECT(GetMonGender(&testParty[0]) == MON_FEMALE); EXPECT(GetNature(&testParty[0]) == NATURE_HASTY); + EXPECT_EQ(GetMonData(&testParty[0], MON_DATA_DYNAMAX_LEVEL), 5); + EXPECT_EQ(GetMonData(&testParty[1], MON_DATA_DYNAMAX_LEVEL), 0); + Free(testParty); } diff --git a/test/dynamax.c b/test/dynamax.c index 69887d6d2f74..0d6ee7217224 100644 --- a/test/dynamax.c +++ b/test/dynamax.c @@ -465,16 +465,19 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon are immune to Instruct") } } -// TODO: Gigantamax factor SINGLE_BATTLE_TEST("(DYNAMAX) Pokemon with Gigantamax forms change upon Dynamaxing") { + u32 species; + bool32 gigantamaxFactor; + PARAMETRIZE { gigantamaxFactor = FALSE; species = SPECIES_VENUSAUR; } + PARAMETRIZE { gigantamaxFactor = TRUE; species = SPECIES_VENUSAUR_GIGANTAMAX; } GIVEN { - PLAYER(SPECIES_VENUSAUR); + PLAYER(SPECIES_VENUSAUR) { GigantamaxFactor(gigantamaxFactor); } OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TACKLE, dynamax: TRUE); } } THEN { - EXPECT_EQ(player->species, SPECIES_VENUSAUR_GIGANTAMAX); + EXPECT_EQ(player->species, species); } } @@ -870,7 +873,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Stonesurge sets up Stealth Rocks") { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_STONESURGE].argument == MAX_EFFECT_STEALTH_ROCK); - PLAYER(SPECIES_DREDNAW); + PLAYER(SPECIES_DREDNAW) { GigantamaxFactor(TRUE); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { @@ -890,7 +893,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Steelsurge sets up sharp steel") { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_STEELSURGE].argument == MAX_EFFECT_STEELSURGE); - PLAYER(SPECIES_COPPERAJAH); + PLAYER(SPECIES_COPPERAJAH) { GigantamaxFactor(TRUE); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_HATTERENE); } WHEN { @@ -921,7 +924,7 @@ SINGLE_BATTLE_TEST("(DYNAMAX) G-Max Hydrosnipe has fixed power and ignores abili PARAMETRIZE { move = MOVE_HYDRO_CANNON; } GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_HYDROSNIPE].argument == MAX_EFFECT_FIXED_POWER); - PLAYER(SPECIES_INTELEON); + PLAYER(SPECIES_INTELEON) { GigantamaxFactor(TRUE); } OPPONENT(SPECIES_ARCTOVISH) { Ability(ABILITY_WATER_ABSORB); } } WHEN { TURN { MOVE(player, move, dynamax: TRUE); } @@ -937,7 +940,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Volt Crash paralyzes both opponents") { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_VOLT_CRASH].argument == MAX_EFFECT_PARALYZE_FOES); - PLAYER(SPECIES_PIKACHU); + PLAYER(SPECIES_PIKACHU) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_PICHU); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); @@ -964,7 +967,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock paralyzes or poisons both opponen PARAMETRIZE { statusAnim = B_ANIM_STATUS_PSN; rng = STATUS1_POISON; } GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); - PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXTRICITY) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_TOXEL); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); @@ -1001,7 +1004,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Stun Shock chooses statuses before consideri { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_STUN_SHOCK].argument == MAX_EFFECT_POISON_PARALYZE_FOES); - PLAYER(SPECIES_TOXTRICITY); + PLAYER(SPECIES_TOXTRICITY) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_TOXEL); OPPONENT(SPECIES_GARBODOR); OPPONENT(SPECIES_TRUBBISH); @@ -1034,7 +1037,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Befuddle paralyzes, poisons, or sleeps both PARAMETRIZE { statusAnim = B_ANIM_STATUS_SLP; rng = STATUS1_SLEEP; } GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_BEFUDDLE].argument == MAX_EFFECT_EFFECT_SPORE_FOES); - PLAYER(SPECIES_BUTTERFREE); + PLAYER(SPECIES_BUTTERFREE) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_CATERPIE); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1078,7 +1081,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Gold Rush confuses both opponents and genera { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_GOLD_RUSH].argument == MAX_EFFECT_CONFUSE_FOES_PAY_DAY); - PLAYER(SPECIES_MEOWTH); + PLAYER(SPECIES_MEOWTH) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_PERSIAN); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1098,7 +1101,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Smite confuses both opponents") { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_SMITE].argument == MAX_EFFECT_CONFUSE_FOES); - PLAYER(SPECIES_HATTERENE); + PLAYER(SPECIES_HATTERENE) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_HATENNA); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1117,7 +1120,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Cuddle infatuates both opponents, if possibl { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_CUDDLE].argument == MAX_EFFECT_INFATUATE_FOES); - PLAYER(SPECIES_EEVEE) { Gender(MON_MALE); } + PLAYER(SPECIES_EEVEE) { Gender(MON_MALE); GigantamaxFactor(TRUE); } PLAYER(SPECIES_EEVEE); OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_FEMALE); } OPPONENT(SPECIES_WOBBUFFET) { Gender(MON_MALE); } @@ -1138,7 +1141,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_TERROR].argument == MAX_EFFECT_MEAN_LOOK); - PLAYER(SPECIES_GENGAR); + PLAYER(SPECIES_GENGAR) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_GASTLY); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1157,7 +1160,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_MELTDOWN].argument == MAX_EFFECT_TORMENT_FOES); - PLAYER(SPECIES_MELMETAL); + PLAYER(SPECIES_MELMETAL) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_MELTAN); OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } OPPONENT(SPECIES_WYNAUT) { Moves(MOVE_SPLASH, MOVE_CELEBRATE); } @@ -1194,7 +1197,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Wildfire sets a field effect that damages no s16 damage; GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_WILDFIRE].argument == MAX_EFFECT_WILDFIRE); - PLAYER(SPECIES_CHARIZARD); + PLAYER(SPECIES_CHARIZARD) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_CHARMANDER); OPPONENT(SPECIES_WOBBUFFET) { HP(600); MaxHP(600); } OPPONENT(SPECIES_WYNAUT); @@ -1240,7 +1243,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Replenish recycles allies' berries 50\% of t PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH); GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_REPLENISH].argument == MAX_EFFECT_RECYCLE_BERRIES); - PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); } + PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); GigantamaxFactor(TRUE); } PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_APICOT_BERRY); } @@ -1268,7 +1271,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy") PASSES_RANDOMLY(1, 2, RNG_G_MAX_SNOOZE); GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE); - PLAYER(SPECIES_GRIMMSNARL); + PLAYER(SPECIES_GRIMMSNARL) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_IMPIDIMP); OPPONENT(SPECIES_BLISSEY); OPPONENT(SPECIES_CHANSEY); @@ -1291,7 +1294,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Finale heals allies by 1/6 of their health") s16 damage1, damage2; GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_FINALE].argument == MAX_EFFECT_HEAL_TEAM); - PLAYER(SPECIES_ALCREMIE) { HP(1); } + PLAYER(SPECIES_ALCREMIE) { HP(1); GigantamaxFactor(TRUE); } PLAYER(SPECIES_MILCERY) { HP(1); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1311,7 +1314,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Sweetness cures allies' status conditions") { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_SWEETNESS].argument == MAX_EFFECT_AROMATHERAPY); - PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); } + PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); GigantamaxFactor(TRUE); } PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); } OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1331,7 +1334,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Centiferno traps both opponents in Fire Spin { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_CENTIFERNO].argument == MAX_EFFECT_FIRE_SPIN_FOES); - PLAYER(SPECIES_CENTISKORCH); + PLAYER(SPECIES_CENTISKORCH) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_SIZZLIPEDE); PLAYER(SPECIES_SIZZLIPEDE); OPPONENT(SPECIES_WOBBUFFET); @@ -1360,7 +1363,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance") GIVEN { ASSUME(B_CRIT_CHANCE >= GEN_6); ASSUME(gBattleMoves[MOVE_G_MAX_CHI_STRIKE].argument == MAX_EFFECT_CRIT_PLUS); - PLAYER(SPECIES_MACHAMP); + PLAYER(SPECIES_MACHAMP) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_MACHOP); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); @@ -1389,7 +1392,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's { GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_DEPLETION].argument == MAX_EFFECT_SPITE); - PLAYER(SPECIES_DURALUDON); + PLAYER(SPECIES_DURALUDON) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_WYNAUT); // Dynamax behaves weird with test turn order because stats are recalculated. OPPONENT(SPECIES_SABLEYE) { Ability(ABILITY_PRANKSTER); } @@ -1411,7 +1414,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max One Blow bypasses Max Guard for full damage" PARAMETRIZE { protect = FALSE; } GIVEN { ASSUME(gBattleMoves[MOVE_G_MAX_ONE_BLOW].argument == MAX_EFFECT_BYPASS_PROTECT); - PLAYER(SPECIES_URSHIFU); + PLAYER(SPECIES_URSHIFU) { GigantamaxFactor(TRUE); } PLAYER(SPECIES_KUBFU); OPPONENT(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WYNAUT); diff --git a/test/pokemon.c b/test/pokemon.c new file mode 100644 index 000000000000..05d6ac15e52c --- /dev/null +++ b/test/pokemon.c @@ -0,0 +1,182 @@ +#include "global.h" +#include "battle.h" +#include "event_data.h" +#include "pokemon.h" +#include "test/overworld_script.h" +#include "test/test.h" + +TEST("Nature independent from Hidden Nature") +{ + u32 i, j, nature = 0, hiddenNature = 0; + struct Pokemon mon; + for (i = 0; i < NUM_NATURES; i++) + { + for (j = 0; j < NUM_NATURES; j++) + { + PARAMETRIZE { nature = i; hiddenNature = j; } + } + } + CreateMonWithNature(&mon, SPECIES_WOBBUFFET, 100, 0, nature); + SetMonData(&mon, MON_DATA_HIDDEN_NATURE, &hiddenNature); + EXPECT_EQ(GetNature(&mon), nature); + EXPECT_EQ(GetMonData(&mon, MON_DATA_HIDDEN_NATURE), hiddenNature); +} + +TEST("Terastallization type defaults to primary or secondary type") +{ + u32 i, teraType; + struct Pokemon mon; + for (i = 0; i < 128; i++) PARAMETRIZE {} + CreateMon(&mon, SPECIES_PIDGEY, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + teraType = GetMonData(&mon, MON_DATA_TERA_TYPE); + EXPECT(teraType == gSpeciesInfo[SPECIES_PIDGEY].types[0] + || teraType == gSpeciesInfo[SPECIES_PIDGEY].types[1]); +} + +TEST("Terastallization type can be set to any type") +{ + u32 i, teraType; + struct Pokemon mon; + for (i = 0; i < NUMBER_OF_MON_TYPES; i++) + { + PARAMETRIZE { teraType = i; } + } + CreateMon(&mon, SPECIES_WOBBUFFET, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + SetMonData(&mon, MON_DATA_TERA_TYPE, &teraType); + EXPECT_EQ(teraType, GetMonData(&mon, MON_DATA_TERA_TYPE)); +} + +TEST("Shininess independent from PID and OTID") +{ + u32 pid, otId, data; + bool32 isShiny; + struct Pokemon mon; + PARAMETRIZE { pid = 0; otId = 0; } + CreateMon(&mon, SPECIES_WOBBUFFET, 100, 0, TRUE, pid, OT_ID_PRESET, otId); + isShiny = IsMonShiny(&mon); + data = !isShiny; + SetMonData(&mon, MON_DATA_IS_SHINY, &data); + EXPECT_EQ(pid, GetMonData(&mon, MON_DATA_PERSONALITY)); + EXPECT_EQ(otId, GetMonData(&mon, MON_DATA_OT_ID)); + EXPECT_EQ(!isShiny, GetMonData(&mon, MON_DATA_IS_SHINY)); +} + +TEST("Hyper Training increases stats without affecting IVs") +{ + u32 data, hp, atk, def, speed, spatk, spdef; + struct Pokemon mon; + CreateMon(&mon, SPECIES_WOBBUFFET, 100, 3, TRUE, 0, OT_ID_PRESET, 0); + + hp = GetMonData(&mon, MON_DATA_HP); + atk = GetMonData(&mon, MON_DATA_ATK); + def = GetMonData(&mon, MON_DATA_DEF); + speed = GetMonData(&mon, MON_DATA_SPEED); + spatk = GetMonData(&mon, MON_DATA_SPATK); + spdef = GetMonData(&mon, MON_DATA_SPDEF); + + data = TRUE; + SetMonData(&mon, MON_DATA_HYPER_TRAINED_HP, &data); + SetMonData(&mon, MON_DATA_HYPER_TRAINED_ATK, &data); + SetMonData(&mon, MON_DATA_HYPER_TRAINED_DEF, &data); + SetMonData(&mon, MON_DATA_HYPER_TRAINED_SPEED, &data); + SetMonData(&mon, MON_DATA_HYPER_TRAINED_SPATK, &data); + SetMonData(&mon, MON_DATA_HYPER_TRAINED_SPDEF, &data); + CalculateMonStats(&mon); + + EXPECT_EQ(GetMonData(&mon, MON_DATA_HP_IV), 3); + EXPECT_EQ(GetMonData(&mon, MON_DATA_ATK_IV), 3); + EXPECT_EQ(GetMonData(&mon, MON_DATA_DEF_IV), 3); + EXPECT_EQ(GetMonData(&mon, MON_DATA_SPEED_IV), 3); + EXPECT_EQ(GetMonData(&mon, MON_DATA_SPATK_IV), 3); + EXPECT_EQ(GetMonData(&mon, MON_DATA_SPDEF_IV), 3); + EXPECT_EQ(GetMonData(&mon, MON_DATA_SPEED_IV), 3); + + EXPECT_EQ(hp - 3 + MAX_PER_STAT_IVS, GetMonData(&mon, MON_DATA_HP)); + EXPECT_EQ(atk - 3 + MAX_PER_STAT_IVS, GetMonData(&mon, MON_DATA_ATK)); + EXPECT_EQ(def - 3 + MAX_PER_STAT_IVS, GetMonData(&mon, MON_DATA_DEF)); + EXPECT_EQ(speed - 3 + MAX_PER_STAT_IVS, GetMonData(&mon, MON_DATA_SPEED)); + EXPECT_EQ(spatk - 3 + MAX_PER_STAT_IVS, GetMonData(&mon, MON_DATA_SPATK)); + EXPECT_EQ(spdef - 3 + MAX_PER_STAT_IVS, GetMonData(&mon, MON_DATA_SPDEF)); +} + +TEST("Status1 round-trips through BoxPokemon") +{ + u32 status1; + struct Pokemon mon1, mon2; + PARAMETRIZE { status1 = STATUS1_NONE; } + PARAMETRIZE { status1 = STATUS1_SLEEP_TURN(1); } + PARAMETRIZE { status1 = STATUS1_SLEEP_TURN(2); } + PARAMETRIZE { status1 = STATUS1_SLEEP_TURN(3); } + PARAMETRIZE { status1 = STATUS1_SLEEP_TURN(4); } + PARAMETRIZE { status1 = STATUS1_SLEEP_TURN(5); } + PARAMETRIZE { status1 = STATUS1_POISON; } + PARAMETRIZE { status1 = STATUS1_BURN; } + PARAMETRIZE { status1 = STATUS1_FREEZE; } + PARAMETRIZE { status1 = STATUS1_PARALYSIS; } + PARAMETRIZE { status1 = STATUS1_TOXIC_POISON; } + PARAMETRIZE { status1 = STATUS1_FROSTBITE; } + CreateMon(&mon1, SPECIES_WOBBUFFET, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + SetMonData(&mon1, MON_DATA_STATUS, &status1); + BoxMonToMon(&mon1.box, &mon2); + EXPECT_EQ(GetMonData(&mon2, MON_DATA_STATUS), status1); +} + +TEST("canhypertrain/hypertrain affect MON_DATA_HYPER_TRAINED_* and recalculate stats") +{ + u32 atk; + CreateMon(&gPlayerParty[0], SPECIES_WOBBUFFET, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + atk = GetMonData(&gPlayerParty[0], MON_DATA_ATK); + + RUN_OVERWORLD_SCRIPT( + canhypertrain STAT_ATK, 0; + ); + EXPECT(VarGet(VAR_RESULT)); + + RUN_OVERWORLD_SCRIPT( + hypertrain STAT_ATK, 0; + canhypertrain STAT_ATK, 0; + ); + EXPECT(GetMonData(&gPlayerParty[0], MON_DATA_HYPER_TRAINED_ATK)); + EXPECT_EQ(atk + 31, GetMonData(&gPlayerParty[0], MON_DATA_ATK)); + EXPECT(!VarGet(VAR_RESULT)); +} + +TEST("hasgigantamaxfactor/togglegigantamaxfactor affect MON_DATA_GIGANTAMAX_FACTOR") +{ + CreateMon(&gPlayerParty[0], SPECIES_WOBBUFFET, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + + RUN_OVERWORLD_SCRIPT( + hasgigantamaxfactor 0; + ); + EXPECT(!VarGet(VAR_RESULT)); + + RUN_OVERWORLD_SCRIPT( + togglegigantamaxfactor 0; + hasgigantamaxfactor 0; + ); + EXPECT(VarGet(VAR_RESULT)); + EXPECT(GetMonData(&gPlayerParty[0], MON_DATA_GIGANTAMAX_FACTOR)); + + RUN_OVERWORLD_SCRIPT( + togglegigantamaxfactor 0; + hasgigantamaxfactor 0; + ); + EXPECT(!VarGet(VAR_RESULT)); + EXPECT(!GetMonData(&gPlayerParty[0], MON_DATA_GIGANTAMAX_FACTOR)); +} + +TEST("togglegigantamaxfactor fails for Melmetal") +{ + CreateMon(&gPlayerParty[0], SPECIES_MELMETAL, 100, 0, FALSE, 0, OT_ID_PRESET, 0); + + RUN_OVERWORLD_SCRIPT( + hasgigantamaxfactor 0; + ); + EXPECT(!VarGet(VAR_RESULT)); + + RUN_OVERWORLD_SCRIPT( + togglegigantamaxfactor 0; + ); + EXPECT(!VarGet(VAR_RESULT)); + EXPECT(!GetMonData(&gPlayerParty[0], MON_DATA_GIGANTAMAX_FACTOR)); +} diff --git a/test/random.c b/test/random.c index 845f24f102a5..0232ff154731 100644 --- a/test/random.c +++ b/test/random.c @@ -17,7 +17,7 @@ error = 0; \ for (i = 0; i < ARRAY_COUNT(indexSum); i++) \ error += abs(3584 - indexSum[i]); \ - EXPECT_LT(error, (int)(28672 * 0.025)); + EXPECT_LT(error, (int)(28672 * 0.03)); TEST("Shuffle randomizes the array [Shuffle8]") { @@ -196,6 +196,13 @@ TEST("RandomElement generates a uniform distribution") TEST("RandomUniform mul-based faster than mod-based (compile-time)") { + #if HQ_RANDOM == TRUE + const u32 expectedMulSum = 6; + const u32 expectedModSum = 4; + #else + const u32 expectedMulSum = 3; + const u32 expectedModSum = 4; + #endif struct Benchmark mulBenchmark, modBenchmark; u32 mulSum = 0, modSum = 0; @@ -221,12 +228,19 @@ TEST("RandomUniform mul-based faster than mod-based (compile-time)") // These numbers are different because multiplication and modulus // have subtly different biases (so subtle that it's irrelevant for // our purposes). - EXPECT_EQ(mulSum, 3); - EXPECT_EQ(modSum, 4); + EXPECT_EQ(mulSum, expectedMulSum); + EXPECT_EQ(modSum, expectedModSum); } TEST("RandomUniform mul-based faster than mod-based (run-time)") { + #if HQ_RANDOM == TRUE + const u32 expectedMulSum = 289; + const u32 expectedModSum = 205; + #else + const u32 expectedMulSum = 232; + const u32 expectedModSum = 249; + #endif u32 i; struct Benchmark mulBenchmark, modBenchmark; u32 mulSum = 0, modSum = 0; @@ -246,6 +260,30 @@ TEST("RandomUniform mul-based faster than mod-based (run-time)") EXPECT_FASTER(mulBenchmark, modBenchmark); // Reference mulSum/modSum to prevent optimization. - EXPECT_EQ(mulSum, 232); - EXPECT_EQ(modSum, 249); + EXPECT_EQ(mulSum, expectedMulSum); + EXPECT_EQ(modSum, expectedModSum); } + +#if HQ_RANDOM == TRUE +TEST("Thumb and C SFC32 implementations produce the same results") +{ + u32 thumbSum; + u32 cSum; + int i; + rng_value_t localState; + + thumbSum = 0; + cSum = 0; + + SeedRng(0); + localState = gRngValue; + + for(i = 0; i < 32; i++) + { + thumbSum += Random32(); + cSum += _SFC32_Next(&localState); + } + + EXPECT_EQ(thumbSum, cSum); +} +#endif \ No newline at end of file diff --git a/test/test_runner.c b/test/test_runner.c index 5ca397cd6cf8..72ce5cf665e8 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -403,11 +403,21 @@ static void FunctionTest_TearDown(void *data) FREE_AND_SET_NULL(gFunctionTestRunnerState); } +static bool32 FunctionTest_CheckProgress(void *data) +{ + bool32 madeProgress; + (void)data; + madeProgress = gFunctionTestRunnerState->checkProgressParameter < gFunctionTestRunnerState->runParameter; + gFunctionTestRunnerState->checkProgressParameter = gFunctionTestRunnerState->runParameter; + return madeProgress; +} + const struct TestRunner gFunctionTestRunner = { .setUp = FunctionTest_SetUp, .run = FunctionTest_Run, .tearDown = FunctionTest_TearDown, + .checkProgress = FunctionTest_CheckProgress, }; static void Assumptions_Run(void *data) diff --git a/test/test_runner_battle.c b/test/test_runner_battle.c index ac689676b0fc..caccdb2042fe 100644 --- a/test/test_runner_battle.c +++ b/test/test_runner_battle.c @@ -4,6 +4,7 @@ #include "battle_anim.h" #include "battle_controllers.h" #include "characters.h" +#include "event_data.h" #include "fieldmap.h" #include "item_menu.h" #include "main.h" @@ -32,8 +33,20 @@ #define STATE gBattleTestRunnerState #define DATA gBattleTestRunnerState->data -#define RNG_SEED_DEFAULT 0x00000000 +#if HQ_RANDOM == TRUE +#define RNG_SEED_DEFAULT {0, 0, 0, 0} +static inline bool32 RngSeedNotDefault(const rng_value_t *seed) +{ + return (seed->a | seed->b | seed->c | seed->ctr) != 0; +} +#else +#define RNG_SEED_DEFAULT 0x00000000 +static inline bool32 RngSeedNotDefault(const rng_value_t *seed) +{ + return *seed != RNG_SEED_DEFAULT; +} +#endif #undef Q_4_12 #define Q_4_12(n) (s32)((n) * 4096) @@ -256,11 +269,12 @@ static void BattleTest_Run(void *data) s32 i; u32 requiredPlayerPartySize; u32 requiredOpponentPartySize; + const rng_value_t defaultSeed = RNG_SEED_DEFAULT; const struct BattleTest *test = data; memset(&DATA, 0, sizeof(DATA)); - DATA.recordedBattle.rngSeed = RNG_SEED_DEFAULT; + DATA.recordedBattle.rngSeed = defaultSeed; DATA.recordedBattle.textSpeed = OPTIONS_TEXT_SPEED_FAST; // Set battle flags and opponent ids. switch (test->type) @@ -867,6 +881,12 @@ void TestRunner_Battle_CheckSwitch(u32 battlerId, u32 partyIndex) DATA.aiActionsPlayed[battlerId]++; } +void TestRunner_Battle_InvalidNoHPMon(u32 battlerId, u32 partyIndex) +{ + Test_ExitWithResult(TEST_RESULT_INVALID, "%s: INVALID: %s trying to send out a mon(id: %d) with 0 HP.", + gTestRunnerState.test->filename, BattlerIdentifier(battlerId), gBattlerPartyIndexes[battlerId]); +} + static bool32 CheckComparision(s32 val1, s32 val2, u32 cmp) { switch (cmp) @@ -1339,6 +1359,7 @@ static void CB2_BattleTest_NextParameter(void) if (++STATE->runParameter >= STATE->parameters) { SetMainCallback2(CB2_TestRunner); + ClearFlagAfterTest(); } else { @@ -1347,8 +1368,23 @@ static void CB2_BattleTest_NextParameter(void) } } +static inline rng_value_t MakeRngValue(const u16 seed) +{ + #if HQ_RANDOM == TRUE + int i; + rng_value_t result = {0, 0, seed, 1}; + for (i = 0; i < 16; i++) + { + _SFC32_Next(&result); + } + return result; + #else + return ISO_RANDOMIZE1(seed); + #endif +} static void CB2_BattleTest_NextTrial(void) { + ClearFlagAfterTest(); TearDownBattle(); SetMainCallback2(CB2_BattleTest_NextParameter); @@ -1370,7 +1406,7 @@ static void CB2_BattleTest_NextTrial(void) { PrintTestName(); gTestRunnerState.result = TEST_RESULT_PASS; - DATA.recordedBattle.rngSeed = ISO_RANDOMIZE1(STATE->runTrial); + DATA.recordedBattle.rngSeed = MakeRngValue(STATE->runTrial); DATA.queuedEvent = 0; DATA.lastActionTurn = 0; SetVariablesForRecordedBattle(&DATA.recordedBattle); @@ -1390,6 +1426,7 @@ static void BattleTest_TearDown(void *data) { // Free resources that aren't cleaned up when the battle was // aborted unexpectedly. + ClearFlagAfterTest(); if (STATE->tearDownBattle) TearDownBattle(); } @@ -1442,16 +1479,17 @@ void Randomly(u32 sourceLine, u32 passes, u32 trials, struct RandomlyContext ctx } else { - INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + const rng_value_t defaultSeed = RNG_SEED_DEFAULT; + INVALID_IF(RngSeedNotDefault(&DATA.recordedBattle.rngSeed), "RNG seed already set"); STATE->trials = 50; STATE->trialRatio = Q_4_12(1) / STATE->trials; - DATA.recordedBattle.rngSeed = 0; + DATA.recordedBattle.rngSeed = defaultSeed; } } -void RNGSeed_(u32 sourceLine, u32 seed) +void RNGSeed_(u32 sourceLine, rng_value_t seed) { - INVALID_IF(DATA.recordedBattle.rngSeed != RNG_SEED_DEFAULT, "RNG seed already set"); + INVALID_IF(RngSeedNotDefault(&DATA.recordedBattle.rngSeed), "RNG seed already set"); DATA.recordedBattle.rngSeed = seed; } @@ -1478,6 +1516,22 @@ const struct TestRunner gBattleTestRunner = .handleExitWithResult = BattleTest_HandleExitWithResult, }; +void SetFlagForTest(u32 sourceLine, u16 flagId) +{ + INVALID_IF(DATA.flagId != 0, "FLAG can only be set once per test"); + DATA.flagId = flagId; + FlagSet(flagId); +} + +void ClearFlagAfterTest(void) +{ + if (DATA.flagId != 0) + { + FlagClear(DATA.flagId); + DATA.flagId = 0; + } +} + void OpenPokemon(u32 sourceLine, u32 side, u32 species) { s32 i, data; @@ -1533,6 +1587,7 @@ static u32 GenerateNature(u32 nature, u32 offset) void ClosePokemon(u32 sourceLine) { s32 i; + u32 data; INVALID_IF(DATA.hasExplicitSpeeds && !(DATA.explicitSpeeds[DATA.currentSide] & (1 << DATA.currentPartyIndex)), "Speed required"); for (i = 0; i < STATE->battlersCount; i++) { @@ -1542,6 +1597,8 @@ void ClosePokemon(u32 sourceLine) INVALID_IF(GetMonData(DATA.currentMon, MON_DATA_HP) == 0, "Battlers cannot be fainted"); } } + data = FALSE; + SetMonData(DATA.currentMon, MON_DATA_IS_SHINY, &data); UpdateMonPersonality(&DATA.currentMon->box, GenerateNature(DATA.nature, DATA.gender % NUM_NATURES) | DATA.gender); DATA.currentMon = NULL; } @@ -1712,10 +1769,34 @@ void Status1_(u32 sourceLine, u32 status1) void OTName_(u32 sourceLine, const u8 *otName) { - INVALID_IF(!DATA.currentMon, "Traded outside of PLAYER/OPPONENT"); + INVALID_IF(!DATA.currentMon, "OTName outside of PLAYER/OPPONENT"); SetMonData(DATA.currentMon, MON_DATA_OT_NAME, &otName); } +void DynamaxLevel_(u32 sourceLine, u32 dynamaxLevel) +{ + INVALID_IF(!DATA.currentMon, "DynamaxLevel outside of PLAYER/OPPONENT"); + SetMonData(DATA.currentMon, MON_DATA_DYNAMAX_LEVEL, &dynamaxLevel); +} + +void GigantamaxFactor_(u32 sourceLine, bool32 gigantamaxFactor) +{ + INVALID_IF(!DATA.currentMon, "GigantamaxFactor outside of PLAYER/OPPONENT"); + SetMonData(DATA.currentMon, MON_DATA_GIGANTAMAX_FACTOR, &gigantamaxFactor); +} + +void TeraType_(u32 sourceLine, u32 teraType) +{ + INVALID_IF(!DATA.currentMon, "TeraType outside of PLAYER/OPPONENT"); + SetMonData(DATA.currentMon, MON_DATA_TERA_TYPE, &teraType); +} + +void Shadow_(u32 sourceLine, bool32 isShadow) +{ + INVALID_IF(!DATA.currentMon, "Shadow outside of PLAYER/OPPONENT"); + SetMonData(DATA.currentMon, MON_DATA_IS_SHADOW, &isShadow); +} + static const char *const sBattlerIdentifiersSingles[] = { "player",