Merge pull request #2 from cawtds/experimental/new_moves_info

new moves_info struct and update of battle_script_commands
This commit is contained in:
cawtds 2024-05-02 15:35:56 +02:00 committed by GitHub
commit 95447e28e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
94 changed files with 48755 additions and 38597 deletions

File diff suppressed because it is too large Load Diff

View File

@ -406,6 +406,8 @@ B_DEF_PREFIX3 = FD 2D
B_TRAINER2_LOSE_TEXT = FD 2E
B_TRAINER2_WIN_TEXT = FD 2F
B_BUFF3 = FD 30
B_ATK_TEAM2 = FD 38
B_DEF_TEAM2 = FD 3B
@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00

View File

@ -1 +1,2 @@
gRngValue
gRng2Value

View File

@ -982,7 +982,7 @@ gBattleAnims_StatusConditions::
.align 2
gBattleAnims_General::
.4byte General_CastformChange @ B_ANIM_CASTFORM_CHANGE
.4byte General_FormChange @ B_ANIM_FORM_CHANGE
.4byte General_StatsChange @ B_ANIM_STATS_CHANGE
.4byte General_SubstituteFade @ B_ANIM_SUBSTITUTE_FADE
.4byte General_SubstituteAppear @ B_ANIM_SUBSTITUTE_APPEAR
@ -991,7 +991,7 @@ gBattleAnims_General::
.4byte General_TurnTrap @ B_ANIM_TURN_TRAP
.4byte General_HeldItemEffect @ B_ANIM_HELD_ITEM_EFFECT
.4byte General_SmokeballEscape @ B_ANIM_SMOKEBALL_ESCAPE
.4byte General_FocusBand @ B_ANIM_FOCUS_BAND
.4byte General_FocusBand @ B_ANIM_HANGED_ON
.4byte General_Rain @ B_ANIM_RAIN_CONTINUES
.4byte General_Sun @ B_ANIM_SUN_CONTINUES
.4byte General_Sandstorm @ B_ANIM_SANDSTORM_CONTINUES
@ -1010,6 +1010,8 @@ gBattleAnims_General::
.4byte General_SilphScoped @ B_ANIM_SILPH_SCOPED
.4byte General_SafariRockThrow @ B_ANIM_ROCK_THROW
.4byte General_SafariReaction @ B_ANIM_SAFARI_REACTION
.4byte General_RestoreBg @ B_ANIM_RESTORE_BG
.4byte General_SlideOffScreen @ B_ANIM_SLIDE_OFFSCREEN
.align 2
gBattleAnims_Special::
@ -11696,16 +11698,9 @@ Status_Nightmare:
clearmonbg ANIM_DEF_PARTNER
end
General_CastformChange:
createvisualtask AnimTask_IsMonInvisible, 2
jumpreteq TRUE, CastformChangeSkipAnim
goto CastformChangeContinue
CastformChangeContinue:
General_FormChange:
monbg ANIM_ATTACKER
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
createvisualtask AnimTask_TransformMon, 2, 1
createvisualtask AnimTask_TransformMon, 2, 1, 0
waitforvisualfinish
clearmonbg ANIM_ATTACKER
end
@ -12278,3 +12273,17 @@ Special_SubstituteToMon:
Special_MonToSubstitute:
createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE
end
General_RestoreBg:
restorebg
waitbgfadein
end
General_SlideOffScreen:
createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 3
waitforvisualfinish
createvisualtask AnimTask_SetInvisible, 1, ANIM_TARGET, TRUE
waitforvisualfinish
end

File diff suppressed because it is too large Load Diff

View File

@ -71,56 +71,51 @@ BattleScript_UseItemMessage:
waitmessage B_WAIT_TIME_LONG
moveendcase 15
return
BattleScript_ItemRestoreHPRet:
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
return
BattleScript_ItemRestoreHP::
call BattleScript_UseItemMessage
itemrestorehp
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
moveendcase 15
end
call BattleScript_UseItemMessage
itemrestorehp BattleScript_ItemRestoreHPEnd
call BattleScript_ItemRestoreHPRet
BattleScript_ItemRestoreHPEnd:
end
BattleScript_ItemRestoreHP_Party::
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
end
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
end
BattleScript_ItemRestoreHP_SendOutRevivedBattler:
switchinanim BS_SCRIPTING, FALSE
waitstate
switchineffects BS_SCRIPTING
end
switchinanim BS_SCRIPTING, FALSE
waitstate
switchineffects BS_SCRIPTING
end
BattleScript_ItemCureStatus::
call BattleScript_UseItemMessage
itemcurestatus
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMCUREDSPECIESSTATUS
waitmessage B_WAIT_TIME_LONG
moveendcase 15
end
call BattleScript_UseItemMessage
BattleScript_ItemCureStatusAfterItemMsg:
itemcurestatus BattleScript_ItemCureStatusEnd
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMCUREDSPECIESSTATUS
waitmessage B_WAIT_TIME_LONG
BattleScript_ItemCureStatusEnd:
end
BattleScript_ItemHealAndCureStatus::
call BattleScript_UseItemMessage
itemrestorehp
itemcurestatus
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
updatestatusicon BS_SCRIPTING
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
waitmessage B_WAIT_TIME_LONG
moveendcase 15
end
call BattleScript_UseItemMessage
itemrestorehp BattleScript_ItemCureStatusAfterItemMsg
call BattleScript_ItemRestoreHPRet
goto BattleScript_ItemCureStatusAfterItemMsg
BattleScript_ItemIncreaseStat::
call BattleScript_UseItemMessage

View File

@ -95,6 +95,9 @@ ViridianCity_Mart_Items::
.2byte ITEM_PROTEIN
.2byte ITEM_ABILITY_CAPSULE
.2byte ITEM_ABILITY_PATCH
.2byte ITEM_STICKY_BARB
.2byte ITEM_ORAN_BERRY
.2byte ITEM_BEAST_BALL
.2byte ITEM_NONE
release
end

View File

@ -4,6 +4,7 @@
#include <limits.h>
#include "global.h"
#include "constants/battle.h"
#include "constants/form_change_types.h"
#include "constants/battle_script_commands.h"
#include "battle_util.h"
#include "battle_script_commands.h"
@ -48,6 +49,25 @@
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
// Special indicator value for shellBellDmg in SpecialStatus
#define IGNORE_SHELL_BELL 0xFFFF
// For defining EFFECT_HIT etc. with battle TV scores and flags etc.
struct __attribute__((packed, aligned(2))) BattleMoveEffect
{
const u8 *battleScript;
u16 encourageEncore:1;
u16 twoTurnEffect:1;
u16 semiInvulnerableEffect:1;
u16 usesProtectCounter:1;
u16 padding:12;
};
#define GET_MOVE_BATTLESCRIPT(move) gBattleMoveEffects[gMovesInfo[move].effect].battleScript
#define MAX_TRAINER_ITEMS 4
enum {
@ -56,18 +76,6 @@ enum {
BATTLER_AFFINE_RETURN,
};
#define MOVE_TARGET_SELECTED 0
#define MOVE_TARGET_DEPENDS (1 << 0)
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
#define MOVE_TARGET_RANDOM (1 << 2)
#define MOVE_TARGET_BOTH (1 << 3)
#define MOVE_TARGET_USER (1 << 4)
#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
// For the second argument of GetMoveTarget, when no target override is needed
#define NO_TARGET_OVERRIDE 0
struct TrainerMonNoItemDefaultMoves
{
u16 iv;
@ -131,106 +139,181 @@ extern const struct Trainer gTrainers[];
struct ResourceFlags
{
u32 flags[4];
u32 flags[MAX_BATTLERS_COUNT];
};
#define RESOURCE_FLAG_FLASH_FIRE 1
#define RESOURCE_FLAG_FLASH_FIRE 0x1
#define RESOURCE_FLAG_ROOST 0x2
#define RESOURCE_FLAG_UNBURDEN 0x4
#define RESOURCE_FLAG_UNUSED 0x8
#define RESOURCE_FLAG_TRACED 0x10
#define RESOURCE_FLAG_EMERGENCY_EXIT 0x20
#define RESOURCE_FLAG_NEUTRALIZING_GAS 0x40
#define RESOURCE_FLAG_ICE_FACE 0x80
struct DisableStruct
{
/*0x00*/ u32 transformedMonPersonality;
/*0x04*/ u16 disabledMove;
/*0x06*/ u16 encoredMove;
/*0x08*/ u8 protectUses;
/*0x09*/ u8 stockpileCounter;
/*0x0A*/ u8 substituteHP;
/*0x0B*/ u8 disableTimer : 4;
/*0x0B*/ u8 disableTimerStartValue : 4;
/*0x0C*/ u8 encoredMovePos;
/*0x0D*/ u8 unkD;
/*0x0E*/ u8 encoreTimer : 4;
/*0x0E*/ u8 encoreTimerStartValue : 4;
/*0x0F*/ u8 perishSongTimer : 4;
/*0x0F*/ u8 perishSongTimerStartValue : 4;
/*0x10*/ u8 furyCutterCounter;
/*0x11*/ u8 rolloutTimer : 4;
/*0x11*/ u8 rolloutTimerStartValue : 4;
/*0x12*/ u8 chargeTimer : 4;
/*0x12*/ u8 chargeTimerStartValue : 4;
/*0x13*/ u8 tauntTimer:4;
/*0x13*/ u8 tauntTimer2:4;
/*0x14*/ u8 battlerPreventingEscape;
/*0x15*/ u8 battlerWithSureHit;
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
/*0x18*/ u8 truantSwitchInHack : 1; // Unused here, but used in pokeemerald
/*0x18*/ u8 unk18_a_2 : 2;
/*0x18*/ u8 mimickedMoves : 4;
/*0x19*/ u8 rechargeTimer;
/*0x1A*/ u8 unk1A[1];
u32 transformedMonPersonality;
bool8 transformedMonShininess;
u16 disabledMove;
u16 encoredMove;
u8 protectUses:4;
u8 stockpileCounter:4;
s8 stockpileDef;
s8 stockpileSpDef;
s8 stockpileBeforeDef;
s8 stockpileBeforeSpDef;
u8 substituteHP;
u8 encoredMovePos;
u8 disableTimer:4;
u8 encoreTimer:4;
u8 perishSongTimer:4;
u8 furyCutterCounter;
u8 rolloutTimer:4;
u8 rolloutTimerStartValue:4;
u8 chargeTimer:4;
u8 tauntTimer:4;
u8 battlerPreventingEscape;
u8 battlerWithSureHit;
u8 isFirstTurn;
u8 truantCounter:1;
u8 truantSwitchInHack:1;
u8 mimickedMoves:4;
u8 rechargeTimer;
u8 autotomizeCount;
u8 slowStartTimer;
u8 embargoTimer;
u8 magnetRiseTimer;
u8 telekinesisTimer;
u8 healBlockTimer;
u8 laserFocusTimer;
u8 throatChopTimer;
u8 wrapTurns;
u8 tormentTimer:4; // used for G-Max Meltdown
u8 usedMoves:4;
u8 noRetreat:1;
u8 tarShot:1;
u8 octolock:1;
u8 cudChew:1;
u8 spikesDone:1;
u8 toxicSpikesDone:1;
u8 stickyWebDone:1;
u8 stealthRockDone:1;
u8 syrupBombTimer;
u8 syrupBombIsShiny:1;
u8 steelSurgeDone:1;
u8 weatherAbilityDone:1;
u8 terrainAbilityDone:1;
u8 usedProteanLibero:1;
};
extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
struct ProtectStruct
{
/* field_0 */
u32 protected:1;
u32 spikyShielded:1;
u32 kingsShielded:1;
u32 banefulBunkered:1;
u32 obstructed:1;
u32 endured:1;
u32 noValidMoves:1;
u32 helpingHand:1;
u32 bounceMove:1;
u32 stealMove:1;
u32 flag0Unknown:1;
u32 prlzImmobility:1;
/* field_1 */
u32 confusionSelfDmg:1;
u32 targetNotAffected:1;
u32 targetAffected:1;
u32 chargingTurn:1;
u32 fleeType:2; // for RunAway and Smoke Ball
u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY
u32 usedImprisonedMove:1;
u32 loveImmobility:1;
u32 usedDisabledMove:1;
/* field_2 */
u32 usedTauntedMove:1; // 0x1
u32 flag2Unknown:1; // 0x2
u32 flinchImmobility:1; // 0x4
u32 notFirstStrike:1; // 0x8
u32 flag_x10 : 1; // 0x10
u32 flag_x20 : 1; // 0x20
u32 flag_x40 : 1; // 0x40
u32 flag_x80 : 1; // 0x80
u32 field3 : 8;
u32 usedTauntedMove:1;
u32 flag2Unknown:1; // Only set to 0 once. Checked in 'WasUnableToUseMove' function.
u32 flinchImmobility:1;
u32 notFirstStrike:1;
u32 palaceUnableToUseMove:1;
u32 usesBouncedMove:1;
u32 usedHealBlockedMove:1;
u32 usedGravityPreventedMove:1;
u32 powderSelfDmg:1;
u32 usedThroatChopPreventedMove:1;
u32 statRaised:1;
u32 usedMicleBerry:1;
u32 usedCustapBerry:1; // also quick claw
u32 touchedProtectLike:1;
// End of 32-bit bitfield
u16 disableEjectPack:1;
u16 statFell:1;
u16 pranksterElevated:1;
u16 quickDraw:1;
u16 beakBlastCharge:1;
u16 quash:1;
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;
u32 physicalDmg;
u32 specialDmg;
u8 physicalBattlerId;
u8 specialBattlerId;
u16 fieldE;
// pokefirered
/* field_0 */
/* field_1 */
u32 targetNotAffected:1;
/* field_2 */
};
extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
struct SpecialStatus
{
u8 statLowered:1; // 0x1
u8 lightningRodRedirected:1; // 0x2
u8 restoredBattlerSprite:1; // 0x4
u8 intimidatedMon:1; // 0x8
u8 traced:1; // 0x10
u8 ppNotAffectedByPressure:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
u8 field1[3];
s32 dmg;
s32 shellBellDmg;
s32 physicalDmg;
s32 specialDmg;
u8 physicalBattlerId;
u8 specialBattlerId;
u8 field12;
u8 field13;
u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self.
u8 statLowered:1;
u8 lightningRodRedirected:1;
u8 restoredBattlerSprite: 1;
u8 traced:1;
u8 faintedHasReplacement:1;
u8 focusBanded:1;
u8 focusSashed:1;
// End of byte
u8 sturdied:1;
u8 stormDrainRedirected:1;
u8 switchInAbilityDone:1;
u8 switchInItemDone:1;
u8 instructedChosenTarget:3;
u8 berryReduced:1;
// End of byte
u8 gemParam;
// End of byte
u8 gemBoost:1;
u8 rototillerAffected:1; // to be affected by rototiller
u8 parentalBondState:2;
u8 multiHitOn:1;
u8 announceNeutralizingGas:1; // See Cmd_switchineffects
u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS
u8 affectionEndured:1;
// End of byte
u8 damagedMons:4; // Mons that have been damaged directly by using a move, includes substitute.
u8 dancerUsedMove:1;
u8 dancerOriginalTarget:3;
// End of byte
u8 emergencyExited:1;
u8 afterYou:1;
u8 preventLifeOrbDamage:1; // So that Life Orb doesn't activate various effects.
// pokeemrald
u8 intimidatedMon:1; // 0x8
u8 ppNotAffectedByPressure:1;
s32 dmg;
};
extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
@ -249,20 +332,54 @@ struct SideTimer
/*0x09*/ u8 followmeTarget;
/*0x0A*/ u8 spikesAmount;
/*0x0B*/ u8 fieldB;
// pokeemerald
u8 retaliateTimer;
u8 stealthRockAmount;
u8 stickyWebAmount;
u8 stickyWebBattlerId;
u8 stickyWebBattlerSide; // Used for Court Change
u8 tailwindTimer;
u8 tailwindBattlerId;
u8 auroraVeilTimer;
u8 auroraVeilBattlerId;
u8 toxicSpikesAmount;
u8 followmePowder:1; // Rage powder, does not affect grass type pokemon.
u8 steelsurgeAmount;
u8 luckyChantTimer;
u8 luckyChantBattlerId;
u8 damageNonTypesTimer;
u8 damageNonTypesType;
u8 rainbowTimer;
u8 seaOfFireTimer;
u8 swampTimer;
};
extern struct SideTimer gSideTimers[];
struct FieldTimer
{
u8 mudSportTimer;
u8 waterSportTimer;
u8 wonderRoomTimer;
u8 magicRoomTimer;
u8 trickRoomTimer;
u8 terrainTimer;
u8 gravityTimer;
u8 fairyLockTimer;
};
struct WishFutureKnock
{
u8 futureSightCounter[MAX_BATTLERS_COUNT];
u8 futureSightAttacker[MAX_BATTLERS_COUNT];
s32 futureSightDmg[MAX_BATTLERS_COUNT];
u8 futureSightBattlerIndex[MAX_BATTLERS_COUNT];
u8 futureSightPartyIndex[MAX_BATTLERS_COUNT];
u8 futureSightAttacker[MAX_BATTLERS_COUNT]; // pokefirered, remove
s32 futureSightDmg[MAX_BATTLERS_COUNT]; // pokefirered, remove
u16 futureSightMove[MAX_BATTLERS_COUNT];
u8 wishCounter[MAX_BATTLERS_COUNT];
u8 wishMonId[MAX_BATTLERS_COUNT];
u8 wishPartyId[MAX_BATTLERS_COUNT];
u8 weatherDuration;
u8 knockedOffMons[2];
u8 knockedOffMons[NUM_BATTLE_SIDES];
};
extern struct WishFutureKnock gWishFutureKnock;
@ -293,13 +410,18 @@ struct UsedMoves
u16 unknown[MAX_BATTLERS_COUNT];
};
#define AI_MOVE_HISTORY_COUNT 3
struct BattleHistory
{
/*0x00*/ u16 usedMoves[2][8]; // 0xFFFF means move not used (confuse self hit, etc)
/*0x20*/ u16 abilities[MAX_BATTLERS_COUNT / 2];
/*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT / 2];
u16 abilities[MAX_BATTLERS_COUNT];
/*0x22*/ u8 itemEffects[MAX_BATTLERS_COUNT];
/*0x24*/ u16 trainerItems[MAX_BATTLERS_COUNT];
/*0x2C*/ u8 itemsNo;
u16 moveHistory[MAX_BATTLERS_COUNT][AI_MOVE_HISTORY_COUNT]; // 3 last used moves for each battler
u8 moveHistoryIndex[MAX_BATTLERS_COUNT];
u16 heldItems[MAX_BATTLERS_COUNT];
};
struct BattleScriptsStack
@ -371,6 +493,74 @@ struct LinkBattlerHeader
struct BattleEnigmaBerry battleEnigmaBerry;
};
struct MegaEvolutionData
{
u8 toEvolve; // As flags using gBitTable.
bool8 alreadyEvolved[4]; // Array id is used for mon position.
u8 battlerId;
bool8 playerSelect;
u8 triggerSpriteId;
};
struct UltraBurstData
{
u8 toBurst; // As flags using gBitTable.
bool8 alreadyBursted[4]; // Array id is used for mon position.
u8 battlerId;
bool8 playerSelect;
u8 triggerSpriteId;
};
struct Illusion
{
u8 on;
u8 set;
u8 broken;
u8 partyId;
struct Pokemon *mon;
};
struct ZMoveData
{
u8 viable:1; // current move can become a z move
u8 viewing:1; // if player is viewing the z move name instead of regular moves
u8 active:1; // is z move being used this turn
u8 zStatusActive:1;
u8 healReplacement:1;
u8 activeCategory:2; // active z move category
u8 zUnused:1;
u8 triggerSpriteId;
u8 possibleZMoves[MAX_BATTLERS_COUNT];
u16 chosenZMove; // z move of move cursor is on
u8 effect;
u8 used[MAX_BATTLERS_COUNT]; //one per bank for multi-battles
u16 toBeUsed[MAX_BATTLERS_COUNT]; // z moves per battler to be used
u16 baseMoves[MAX_BATTLERS_COUNT];
u8 categories[MAX_BATTLERS_COUNT];
};
struct DynamaxData
{
bool8 playerSelect;
u8 triggerSpriteId;
u8 toDynamax; // flags using gBitTable
bool8 alreadyDynamaxed[NUM_BATTLE_SIDES];
bool8 dynamaxed[MAX_BATTLERS_COUNT];
u8 dynamaxTurns[MAX_BATTLERS_COUNT];
u8 usingMaxMove[MAX_BATTLERS_COUNT];
u8 activeCategory;
u8 categories[MAX_BATTLERS_COUNT];
u16 baseMove[MAX_BATTLERS_COUNT]; // base move of Max Move
u16 lastUsedBaseMove;
u16 levelUpHP;
};
struct LostItem
{
u16 originalItem:15;
u16 stolen:1;
};
struct BattleStruct
{
u8 turnEffectsTracker;
@ -384,7 +574,6 @@ struct BattleStruct
u8 wildVictorySong;
u8 dynamicMoveType;
u8 wrappedBy[MAX_BATTLERS_COUNT];
u16 assistPossibleMoves[PARTY_SIZE * MAX_MON_MOVES]; // 6 mons, each of them knowing 4 moves
u8 focusPunchBattlerId;
u8 battlerPreventingSwitchout;
u8 moneyMultiplier;
@ -393,7 +582,7 @@ struct BattleStruct
u8 faintedActionsState;
u8 faintedActionsBattlerId;
// balign 2
u16 expValue;
u32 expValue;
u8 scriptPartyIdx; // for printing the nickname
u8 sentInPokes;
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
@ -403,8 +592,8 @@ struct BattleStruct
u8 runTries;
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1];
u8 field_78; // unused
u8 safariRockThrowCounter;
u8 safariBaitThrowCounter;
u8 safariRockThrowCounter; // safariGoNearCounter in pokeemerald
u8 safariBaitThrowCounter; // safariPkblThrowCounter in pokeemerald
u8 safariEscapeFactor;
u8 safariCatchFactor;
u8 linkBattleVsSpriteId_V;
@ -430,11 +619,11 @@ struct BattleStruct
u8 hpScale;
u16 savedBattleTypeFlags;
void (*savedCallback)(void);
u8 synchronizeMoveEffect;
u16 synchronizeMoveEffect;
u8 multiplayerId;
u8 overworldWeatherDone;
u8 atkCancellerTracker;
u16 usedHeldItems[MAX_BATTLERS_COUNT];
u16 usedHeldItems[PARTY_SIZE][NUM_BATTLE_SIDES]; // For each party member and side. For harvest, recycle
u8 chosenItem[MAX_BATTLERS_COUNT]; // why is this an u8?
u8 AI_itemType[2];
u8 AI_itemFlags[2];
@ -446,7 +635,7 @@ struct BattleStruct
u8 turnSideTracker;
u8 fillerDC[0xDF-0xDC];
u8 givenExpMons;
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2];
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT][MAX_BATTLERS_COUNT];
u16 castformPalette[MAX_BATTLERS_COUNT][16];
u8 wishPerishSongState;
u8 wishPerishSongBattlerId;
@ -459,42 +648,134 @@ struct BattleStruct
u8 itemPartyIndex[MAX_BATTLERS_COUNT];
u8 itemMoveIndex[MAX_BATTLERS_COUNT];
u8 padding_1E4[0x14];
}; // size == 0x200 bytes
// pokeemerald
u8 isSkyBattle:1;
u8 isAtkCancelerForCalledMove:1; // Certain cases in atk canceler should only be checked once, when the original move is called, however others need to be checked the twice.
u8 swapDamageCategory:1; // Photon Geyser, Shell Side Arm, Light That Burns the Sky
u8 beatUpSlot:3;
u8 pledgeMove:1;
u8 magnitudeBasePower;
u8 presentBasePower;
u8 sameMoveTurns[MAX_BATTLERS_COUNT]; // For Metronome, number of times the same moves has been SUCCESFULLY used.
u8 lastMoveFailed; // as bits for each battler, for the sake of Stomping Tantrum
bool8 ateBoost[MAX_BATTLERS_COUNT];
u8 timesGotHit[NUM_BATTLE_SIDES][PARTY_SIZE];
u8 supremeOverlordCounter[MAX_BATTLERS_COUNT];
struct Illusion illusion[MAX_BATTLERS_COUNT];
u8 trainerSlideFirstSTABMoveMsgState:2;
u8 blunderPolicy:1; // should blunder policy activate
u8 skyDropTargets[MAX_BATTLERS_COUNT]; // For Sky Drop, to account for if multiple Pokemon use Sky Drop in a double battle.
u8 bonusCritStages[MAX_BATTLERS_COUNT]; // G-Max Chi Strike boosts crit stages of allies.
u8 enduredDamage;
u16 changedSpecies[NUM_BATTLE_SIDES][PARTY_SIZE]; // For forms when multiple mons can change into the same pokemon.
u8 trainerSlideFirstCriticalHitMsgState:2;
u8 trainerSlideFirstSuperEffectiveHitMsgState:2;
u8 additionalEffectsCounter:4; // A counter for the additionalEffects applied by the current move in Cmd_setadditionaleffects
u8 targetsDone[MAX_BATTLERS_COUNT]; // Each battler as a bit.
u16 moveEffect2; // For Knock Off
u8 stolenStats[NUM_BATTLE_STATS]; // hp byte is used for which stats to raise, other inform about by how many stages
u8 stickySyrupdBy[MAX_BATTLERS_COUNT];
u8 moneyMultiplierMove:1;
struct LostItem itemLost[PARTY_SIZE]; // Player's team that had items consumed or stolen (two bytes per party member)
u8 savedBattlerTarget;
u8 ateBerry[2]; // array id determined by side, each party pokemon as bit
u16 overwrittenAbilities[MAX_BATTLERS_COUNT]; // abilities overwritten during battle (keep separate from battle history in case of switching)
struct MegaEvolutionData mega;
struct UltraBurstData burst;
struct ZMoveData zmove;
struct DynamaxData dynamax;
u8 appearedInBattle; // Bitfield to track which Pokemon appeared in battle. Used for Burmy's form change
bool8 allowedToChangeFormInWeather[PARTY_SIZE][NUM_BATTLE_SIDES]; // For each party member and side, used by Ice Face.
u8 startingStatus; // status to apply at battle start. defined in constants/battle.h
u8 startingStatusTimer;
u8 transformZeroToHero[NUM_BATTLE_SIDES];
u8 supersweetSyrup[NUM_BATTLE_SIDES];
u8 intrepidSwordBoost[NUM_BATTLE_SIDES];
u8 dauntlessShieldBoost[NUM_BATTLE_SIDES];
u16 tracedAbility[MAX_BATTLERS_COUNT];
u16 hpBefore[MAX_BATTLERS_COUNT]; // Hp of battlers before using a move. For Berserk and Anger Shell.
u8 friskedBattler; // Frisk needs to identify 2 battlers in double battles.
bool8 friskedAbility; // If identifies two mons, show the ability pop-up only once.
bool8 spriteIgnore0Hp;
u8 moneyMultiplierItem:1;
u8 expGettersOrder[PARTY_SIZE]; // First battlers which were sent out, then via exp-share
u32 expShareExpValue;
u8 expOrderId:3;
u8 expSentInMons; // As bits for player party mons - not including exp share mons.
u8 teamGotExpMsgPrinted:1; // The 'Rest of your team got msg' has been printed.
u8 roostTypes[MAX_BATTLERS_COUNT][2];
u8 lastMoveTarget[MAX_BATTLERS_COUNT]; // The last target on which each mon used a move, for the sake of Instruct
u8 attackerBeforeBounce:2;
bool8 hitSwitchTargetFailed:1;
u8 storedHealingWish:4; // Each battler as a bit.
u8 storedLunarDance:4; // Each battler as a bit.
u8 forcedSwitch:4; // For each battler
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed Pokémon.
u8 soulheartBattlerId;
const u8 *trainerSlideMsg;
u8 battleBondTransformed[NUM_BATTLE_SIDES]; // Bitfield for each party.
// pokeemerald unknown use
u8 field_93; // related to choosing pokemon? probably related to recording
};
extern struct BattleStruct *gBattleStruct;
#define F_DYNAMIC_TYPE_1 (1 << 6)
#define F_DYNAMIC_TYPE_2 (1 << 7)
#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
#define DYNAMIC_TYPE_MASK ((1 << 6) - 1)
#define F_DYNAMIC_TYPE_IGNORE_PHYSICALITY (1 << 6) // If set, the dynamic type's physicality won't be used for certain move effects.
#define F_DYNAMIC_TYPE_SET (1 << 7) // Set for all dynamic types to distinguish a dynamic type of Normal (0) from no dynamic type.
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
else \
typeArg = gBattleMoves[move].type; \
typeArg = gMovesInfo[move].type; \
}
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define IS_MOVE_PHYSICAL(move)(GetBattleMoveCategory(move) == DAMAGE_CATEGORY_PHYSICAL)
#define IS_MOVE_SPECIAL(move)(GetBattleMoveCategory(move) == DAMAGE_CATEGORY_SPECIAL)
#define IS_MOVE_STATUS(move)(gMovesInfo[move].category == DAMAGE_CATEGORY_STATUS)
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
#define IS_MOVE_RECOIL(move)(gMovesInfo[move].recoil > 0 || gMovesInfo[move].effect == EFFECT_RECOIL_IF_MISS)
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
#define SET_BATTLER_TYPE(battlerId, type) \
{ \
gBattleMons[battlerId].type1 = type; \
gBattleMons[battlerId].type2 = type; \
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY) // TODO: remove
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY) // TODO: remove
#define BATTLER_MAX_HP(battlerId)(gBattleMons[battlerId].hp == gBattleMons[battlerId].maxHP)
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[gBattlerTarget]))
#define BATTLER_TURN_DAMAGED(battlerId) ((gSpecialStatuses[battlerId].physicalDmg != 0 || gSpecialStatuses[battlerId].specialDmg != 0) || (gBattleStruct->enduredDamage & gBitTable[battler]))
#define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0) == type || GetBattlerType(battlerId, 1) == type || (GetBattlerType(battlerId, 2) != TYPE_MYSTERY && GetBattlerType(battlerId, 2) == type)))
#define SET_BATTLER_TYPE(battlerId, type) \
{ \
gBattleMons[battlerId].type1 = type; \
gBattleMons[battlerId].type2 = type; \
gBattleMons[battlerId].type3 = TYPE_MYSTERY; \
}
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0))
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_WIDE_GUARD \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_QUICK_GUARD \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_CRAFTY_SHIELD \
|| gSideStatuses[GetBattlerSide(battlerId)] & SIDE_STATUS_MAT_BLOCK \
|| gProtectStructs[battlerId].spikyShielded \
|| gProtectStructs[battlerId].kingsShielded \
|| gProtectStructs[battlerId].banefulBunkered \
|| gProtectStructs[battlerId].burningBulwarked \
|| gProtectStructs[battlerId].obstructed \
|| gProtectStructs[battlerId].silkTrapped)
#define GET_STAT_BUFF_ID(n)((n & 7)) // first three bits 0x1, 0x2, 0x4
#define GET_STAT_BUFF_VALUE_WITH_SIGN(n)((n & 0xF8))
#define GET_STAT_BUFF_VALUE(n)(((n >> 3) & 0xF)) // 0x8, 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
#define SET_STAT_BUFF_VALUE(n)((((n) << 3) & 0xF8))
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
#define SET_STATCHANGER2(dst, statId, stage, goesDown)(dst = (statId) + ((stage) << 3) + (goesDown << 7))
// TODO: change in battle script(?) from stage << 4 to stage << 3
// NOTE: The members of this struct have hard-coded offsets
// in include/constants/battle_script_commands.h
@ -503,14 +784,14 @@ struct BattleScripting
s32 painSplitHp;
s32 bideDmg;
u8 multihitString[6];
u8 dmgMultiplier;
u8 twoTurnsMoveStringId;
bool8 expOnCatch;
u8 unused;
u8 animArg1;
u8 animArg2;
u16 tripleKickPower;
u16 savedStringId;
u8 moveendState;
u8 battlerWithAbility;
u8 multihitMoveEffect;
u8 savedStatChanger; // For further use, if attempting to change stat two times(ex. Moody)
u8 shiftSwitched; // When the game tells you the next enemy's pokemon and you switch. Option for noobs but oh well.
u8 battler;
u8 animTurn;
u8 animTargetsHit;
@ -520,10 +801,26 @@ struct BattleScripting
u8 battleStyle;
u8 drawlvlupboxState;
u8 learnMoveState;
u8 pursuitDoublesAttacker;
u8 savedBattler;
u8 reshowMainState;
u8 reshowHelperState;
u8 levelUpHP;
u8 windowsType; // B_WIN_TYPE_*
u8 multiplayerId;
u8 specialTrainerBattleType;
bool8 monCaught;
s32 savedDmg;
u16 savedMoveEffect; // For moves hitting multiple targets.
u16 moveEffect;
u16 multihitMoveEffect;
u8 illusionNickHack; // To properly display nick in STRINGID_ENEMYABOUTTOSWITCHPKMN.
bool8 fixedPopup; // Force ability popup to stick until manually called back
u16 abilityPopupOverwrite;
u8 switchCase; // Special switching conditions, eg. red card
u8 overrideBerryRequirements;
u8 stickyWebStatDrop; // To prevent Defiant activating on a Court Change'd Sticky Web
// TODO: remove pokefirered members
u8 dmgMultiplier;
};
struct BattleSpriteInfo
@ -545,7 +842,9 @@ struct BattleAnimationInfo
u8 field_5;
u8 field_6;
u8 field_7;
u8 ballThrowCaseId;
u8 ballThrowCaseId:6;
u8 isCriticalCapture:1;
u8 criticalCaptureSuccess:1;
u8 introAnimActive:1;
u8 wildMonInvisible:1;
u8 field_9_x1C:3;
@ -615,7 +914,8 @@ struct MonSpritesGfx
void *sprites[MAX_BATTLERS_COUNT];
struct SpriteTemplate templates[MAX_BATTLERS_COUNT];
struct SpriteFrameImage images[MAX_BATTLERS_COUNT][4];
u8 field_F4[0x80]; // unused
u8 field_F4[0x80 - (4 * MAX_BATTLERS_COUNT)]; // unused, original - spritesGfx
u8 *spritesGfx[MAX_BATTLERS_COUNT];
u8 *barFontGfx;
void *field_178; // freed but never allocated
u16 *multiUseBuffer;
@ -630,6 +930,12 @@ struct PokedudeBattlerState
u8 saved_bg0y;
};
struct QueuedStatBoost
{
u8 stats; // bitfield for each battle stat that is set if the stat changes
s8 statChanges[NUM_BATTLE_STATS - 1]; // highest bit being set decreases the stat
}; /* size = 8 */
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG1_X;
@ -648,6 +954,7 @@ extern u16 gLastUsedItem;
extern u32 gBattleTypeFlags;
extern struct MonSpritesGfx *gMonSpritesGfxPtr;
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
extern u16 gMoveToLearn;
extern u16 gBattleMovePower;
extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
@ -695,7 +1002,7 @@ extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT];
extern u16 gLastMoves[MAX_BATTLERS_COUNT];
extern u8 gBattlerByTurnOrder[MAX_BATTLERS_COUNT];
extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT];
extern u16 gSideStatuses[2];
extern u32 gSideStatuses[NUM_BATTLE_SIDES];
extern u32 gHitMarker;
extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
extern u8 gMoveResultFlags;
@ -727,6 +1034,19 @@ extern u8 gBattleTerrain;
extern struct MultiBattlePokemonTx gMultiPartnerParty[3];
extern u16 gRandomTurnNumber;
extern u8 gPartyCriticalHits[PARTY_SIZE];
extern const struct BattleMoveEffect gBattleMoveEffects[];
extern u32 gFieldStatuses;
extern u8 gBattlerAbility;
extern s32 gBideDmg[MAX_BATTLERS_COUNT];
extern u8 gBideTarget[MAX_BATTLERS_COUNT];
extern u16 gLastUsedMove;
extern u8 gIsCriticalHit;
extern struct FieldTimer gFieldTimers;
extern bool8 gHasFetchedBall;
extern u8 gLastUsedBall;
extern u16 gLastThrownBall;
extern u16 gBallToDisplay;
extern struct QueuedStatBoost gQueuedStatBoosts[MAX_BATTLERS_COUNT];
static inline u32 GetBattlerPosition(u32 battler)
{

View File

@ -12,9 +12,9 @@ void BattleAI_HandleItemUseBeforeAISetup(void);
void BattleAI_SetupAIData(void);
u8 BattleAI_ChooseMoveOrAction(void);
void ClearBankMoveHistory(u8 bank);
void RecordAbilityBattle(u8 bank, u16 abilityId);
void RecordAbilityBattle(u32 bank, u32 abilityId);
void ClearBankAbilityHistory(u8 bank);
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
void RecordItemEffectBattle(u32 bank, u32 itemEffect);
void ClearBankItemEffectHistory(u8 bank);
u8 BattleAI_ChooseMoveOrAction(void);

View File

@ -185,6 +185,12 @@ extern const u8 *const gBattleAnims_StatusConditions[];
extern const u8 *const gBattleAnims_Moves[];
extern const u16 gMovesWithQuietBGM[];
u8 GetAnimBattlerId(u8 wantedBattler);
// battle_anim_throw.c
bool32 IsCriticalCapture(void);
//
void MoveBattlerSpriteToBG(u8 battlerId, u8);
void ResetBattleAnimBg(u8);
void ClearBattleAnimationVars(void);

View File

@ -181,7 +181,7 @@ enum
CONTROLLER_HITANIMATION,
CONTROLLER_CANTSWITCH,
CONTROLLER_PLAYSE,
CONTROLLER_PLAYFANFARE,
CONTROLLER_PLAYFANFAREORBGM,
CONTROLLER_FAINTINGCRY,
CONTROLLER_INTROSLIDE,
CONTROLLER_INTROTRAINERBALLTHROW,
@ -206,6 +206,7 @@ void SetUpBattleVars(void);
void InitBattleControllers(void);
void TryReceiveLinkBattleData(void);
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
bool32 IsValidForBattle(struct Pokemon *mon);
// emitters
void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
@ -218,7 +219,7 @@ void BtlController_EmitTrainerSlide(u8 bufferId);
void BtlController_EmitTrainerSlideBack(u8 bufferId);
void BtlController_EmitFaintAnimation(u8 bufferId);
void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId);
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr);
void BtlController_EmitMoveAnimation(u32 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId);
@ -237,7 +238,7 @@ void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
void BtlController_EmitHitAnimation(u8 bufferId);
void BtlController_EmitCantSwitch(u8 bufferId);
void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId);
void BtlController_EmitPlayFanfareOrBGM(u32 bufferId, u16 songId, bool8 playBGM);
void BtlController_EmitFaintingCry(u8 bufferId);
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
@ -245,7 +246,7 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus *h
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
void BtlController_EmitEndBounceEffect(u8 bufferId);
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
void BtlController_EmitBattleAnimation(u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument);
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 mode);
void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void BtlController_EmitEndLinkBattle(u8 bufferId, u8 battleOutcome);

92
include/battle_dynamax.h Normal file
View File

@ -0,0 +1,92 @@
#ifndef GUARD_BATTLE_DYNAMAX_H
#define GUARD_BATTLE_DYNAMAX_H
#define DYNAMAX_TURNS_COUNT 3
enum MaxMoveEffect
{
MAX_EFFECT_NONE,
MAX_EFFECT_RAISE_TEAM_ATTACK,
MAX_EFFECT_RAISE_TEAM_DEFENSE,
MAX_EFFECT_RAISE_TEAM_SPEED,
MAX_EFFECT_RAISE_TEAM_SP_ATK,
MAX_EFFECT_RAISE_TEAM_SP_DEF,
MAX_EFFECT_LOWER_ATTACK,
MAX_EFFECT_LOWER_DEFENSE,
MAX_EFFECT_LOWER_SPEED,
MAX_EFFECT_LOWER_SP_ATK,
MAX_EFFECT_LOWER_SP_DEF,
MAX_EFFECT_SUN,
MAX_EFFECT_RAIN,
MAX_EFFECT_SANDSTORM,
MAX_EFFECT_HAIL,
MAX_EFFECT_MISTY_TERRAIN,
MAX_EFFECT_GRASSY_TERRAIN,
MAX_EFFECT_ELECTRIC_TERRAIN,
MAX_EFFECT_PSYCHIC_TERRAIN,
MAX_EFFECT_VINE_LASH,
MAX_EFFECT_WILDFIRE,
MAX_EFFECT_CANNONADE,
MAX_EFFECT_EFFECT_SPORE_FOES,
MAX_EFFECT_PARALYZE_FOES,
MAX_EFFECT_CONFUSE_FOES_PAY_DAY,
MAX_EFFECT_CRIT_PLUS,
MAX_EFFECT_MEAN_LOOK,
MAX_EFFECT_AURORA_VEIL,
MAX_EFFECT_INFATUATE_FOES,
MAX_EFFECT_RECYCLE_BERRIES,
MAX_EFFECT_POISON_FOES,
MAX_EFFECT_STEALTH_ROCK,
MAX_EFFECT_DEFOG,
MAX_EFFECT_POISON_PARALYZE_FOES,
MAX_EFFECT_HEAL_TEAM,
MAX_EFFECT_SPITE,
MAX_EFFECT_GRAVITY,
MAX_EFFECT_VOLCALITH,
MAX_EFFECT_SANDBLAST_FOES,
MAX_EFFECT_YAWN_FOE,
MAX_EFFECT_LOWER_EVASIVENESS_FOES,
MAX_EFFECT_AROMATHERAPY,
MAX_EFFECT_CONFUSE_FOES,
MAX_EFFECT_STEELSURGE,
MAX_EFFECT_TORMENT_FOES,
MAX_EFFECT_LOWER_SPEED_2_FOES,
MAX_EFFECT_FIRE_SPIN_FOES,
MAX_EFFECT_FIXED_POWER,
MAX_EFFECT_BYPASS_PROTECT,
};
// bool32 IsDynamaxed(u16 battlerId);
// bool32 CanDynamax(u16 battlerId);
// bool32 IsGigantamaxed(u16 battlerId);
// void ApplyDynamaxHPMultiplier(u32 battler, struct Pokemon* mon);
// void PrepareBattlerForDynamax(u16 battlerId);
// u16 GetNonDynamaxHP(u16 battlerId);
// u16 GetNonDynamaxMaxHP(u32 battlerId);
// void UndoDynamax(u16 battlerId);
// bool32 IsMoveBlockedByMaxGuard(u16 move);
// bool32 IsMoveBlockedByDynamax(u16 move);
// bool32 ShouldUseMaxMove(u16 battlerId, u16 baseMove);
// u16 GetMaxMove(u16 battlerId, u16 baseMove);
// u8 GetMaxMovePower(u16 move);
// bool32 IsMaxMove(u16 move);
// void ChooseDamageNonTypesString(u8 type);
// void BS_UpdateDynamax(void);
// void BS_SetMaxMoveEffect(void);
// void BS_SetSteelsurge(void);
// void BS_TrySetStatus1(void);
// void BS_TrySetStatus2(void);
// void BS_DamageNonTypes(void);
// void BS_HealOneSixth(void);
// void BS_TryRecycleBerry(void);
// void BS_JumpIfDynamaxed(void);
// void ChangeDynamaxTriggerSprite(u8 spriteId, u8 animId);
// void CreateDynamaxTriggerSprite(u8, bool8);
// void HideDynamaxTriggerSprite(void);
// bool32 IsDynamaxTriggerSpriteActive(void);
// void DestroyDynamaxTriggerSprite(void);
#endif

View File

@ -79,15 +79,20 @@ void SpriteCB_PlayerThrowInit(struct Sprite *sprite);
void UpdatePlayerPosInThrowAnim(struct Sprite *sprite);
void BeginBattleIntroDummy(void);
void BeginBattleIntro(void);
void SwitchInClearSetData(void);
void FaintClearSetData(void);
void SwitchInClearSetData(u32 battler);
const u8* FaintClearSetData(u32 battler);
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler);
u8 IsRunningFromBattleImpossible(u32 battler);
void SwitchPartyOrder(u32 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battler);
s8 GetMovePriority(u32 battlerId, u16 move);
s8 GetChosenMovePriority(u32 battlerId);
u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect);
u32 GetBattlerTotalSpeedStat(u32 battler);
void SpecialStatusesClear(void);
#endif // GUARD_BATTLE_MAIN_H

View File

@ -55,6 +55,8 @@
#define B_TXT_TRAINER2_LOSE_TEXT 0x2E
#define B_TXT_TRAINER2_WIN_TEXT 0x2F
#define B_TXT_BUFF3 0x30
#define B_TXT_ATK_TEAM2 0x38 // your/the opposing
#define B_TXT_DEF_TEAM2 0x3B // your/the opposing
// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
@ -152,7 +154,7 @@
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_MOVE; \
textVar[2] = move; \
textVar[2] = (move & 0xFF); \
textVar[3] = (move & 0xFF00) >> 8; \
textVar[4] = B_BUFF_EOS; \
}
@ -233,7 +235,6 @@ extern const u8 *const gRefereeStringsTable[];
extern const u8 *const gStatNamesTable2[];
extern const u16 gMissStringIds[];
extern const u16 gTrappingMoves[];
extern const u8 gText_Sleep[];
extern const u8 gText_Poison[];

View File

@ -7,11 +7,26 @@
#define WINDOW_CLEAR (1 << 0)
#define WINDOW_BG1 (1 << 7)
// Arguments for 'xStart, yStart, xEnd, yEnd' in HandleBattleWindow
#define YESNOBOX_X_Y 23, 8, 29, 13
struct StatFractions
{
u8 dividend;
u8 divisor;
};
struct PickupItem
{
u16 itemId;
u8 percentage[10];
};
void AI_CalcDmg(u8 attacker, u8 defender);
u8 TypeCalc(u16 move, u8 attacker, u8 defender);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u16 targetAbility);
u8 GetBattlerTurnOrderNum(u8 battlerId);
void SetMoveEffect(bool8 primary, u8 certain);
void SetMoveEffect(bool32 primary, u32 certain);
bool32 IsMonGettingExpSentOut(void);
void BattleDestroyYesNoCursorAt(void);
void BattleCreateYesNoCursorAt(void);
@ -19,7 +34,27 @@ void BufferMoveToLearnIntoBattleTextBuff2(void);
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 battlerId);
u8 GetCatchingBattler(void);
bool32 IsMoveAffectedByParentalBond(u32 move, u32 battler);
u32 GetHighestStatId(u32 battlerId);
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect);
bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move);
bool32 DoesDisguiseBlockMove(u32 battler, u32 move);
bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget);
bool32 CanParalyzeType(u8 battlerAttacker, u8 battlerTarget);
bool32 NoAliveMonsForPlayer(void);
bool32 NoAliveMonsForEitherParty(void);
void StealTargetItem(u8 battlerStealer, u8 battlerItem);
u32 IsFlowerVeilProtected(u32 battler);
u32 IsLeafGuardProtected(u32 battler);
bool32 IsShieldsDownProtected(u32 battler);
u32 IsAbilityStatusProtected(u32 battler);
bool32 TryResetBattlerStatChanges(u8 battler);
bool32 CanBattlerSwitch(u32 battlerId);
u8 GetFirstFaintedPartyIndex(u8 battlerId);
u16 GetNaturePowerMove(void);
bool32 CanCamouflage(u8 battlerId);
extern void (* const gBattleScriptingCommandsTable[])(void);
extern const struct StatFractions gAccuracyStageRatios[];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H

File diff suppressed because it is too large Load Diff

View File

@ -9,63 +9,120 @@
#define MOVE_LIMITATION_TORMENTED (1 << 3)
#define MOVE_LIMITATION_TAUNT (1 << 4)
#define MOVE_LIMITATION_IMPRISON (1 << 5)
#define MOVE_LIMITATIONS_ALL 0xFF
#define MOVE_LIMITATION_ENCORE (1 << 6)
#define MOVE_LIMITATION_CHOICE_ITEM (1 << 7)
#define MOVE_LIMITATION_ASSAULT_VEST (1 << 8)
#define MOVE_LIMITATION_GRAVITY (1 << 9)
#define MOVE_LIMITATION_HEAL_BLOCK (1 << 10)
#define MOVE_LIMITATION_BELCH (1 << 11)
#define MOVE_LIMITATION_THROAT_CHOP (1 << 12)
#define MOVE_LIMITATION_STUFF_CHEEKS (1 << 13)
#define MOVE_LIMITATION_CANT_USE_TWICE (1 << 14)
#define MOVE_LIMITATION_PLACEHOLDER (1 << 15)
#define MOVE_LIMITATIONS_ALL 0xFFFF
#define ABILITYEFFECT_ON_SWITCHIN 0
#define ABILITYEFFECT_ENDTURN 1
#define ABILITYEFFECT_MOVES_BLOCK 2
#define ABILITYEFFECT_ABSORBING 3
#define ABILITYEFFECT_ON_DAMAGE 4
#define ABILITYEFFECT_IMMUNITY 5
#define ABILITYEFFECT_FORECAST 6
#define ABILITYEFFECT_MOVE_END_ATTACKER 4
#define ABILITYEFFECT_MOVE_END 5
#define ABILITYEFFECT_IMMUNITY 6
#define ABILITYEFFECT_SYNCHRONIZE 7
#define ABILITYEFFECT_ATK_SYNCHRONIZE 8
#define ABILITYEFFECT_INTIMIDATE1 9
#define ABILITYEFFECT_INTIMIDATE2 10
#define ABILITYEFFECT_TRACE 11
#define ABILITYEFFECT_CHECK_OTHER_SIDE 12
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 13
#define ABILITYEFFECT_FIELD_SPORT 14
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 15
#define ABILITYEFFECT_COUNT_OTHER_SIDE 16
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 17
#define ABILITYEFFECT_COUNT_ON_FIELD 18
#define ABILITYEFFECT_CHECK_ON_FIELD 19
#define ABILITYEFFECT_MUD_SPORT 253
#define ABILITYEFFECT_WATER_SPORT 254
#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
#define ABILITYEFFECT_TRACE1 9
#define ABILITYEFFECT_TRACE2 10
#define ABILITYEFFECT_MOVE_END_OTHER 11
#define ABILITYEFFECT_NEUTRALIZINGGAS 12
#define ABILITYEFFECT_FIELD_SPORT 13 // Only used if B_SPORT_TURNS >= GEN_6
#define ABILITYEFFECT_ON_WEATHER 14
#define ABILITYEFFECT_ON_TERRAIN 15
#define ABILITYEFFECT_SWITCH_IN_TERRAIN 16
#define ABILITYEFFECT_SWITCH_IN_WEATHER 17
#define ABILITYEFFECT_OPPORTUNIST 18
#define ABILITYEFFECT_SWITCH_IN_STATUSES 19
// pokefirered
#define ABILITYEFFECT_CHECK_OTHER_SIDE 20
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 21
#define ABILITYEFFECT_INTIMIDATE1 22
#define ABILITYEFFECT_INTIMIDATE2 23
#define ABILITYEFFECT_TRACE 24
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 25
#define ABILITYEFFECT_CHECK_ON_FIELD 26
#define ABILITYEFFECT_ON_DAMAGE 27
#define ABILITYEFFECT_FORECAST 28
#define ABILITYEFFECT_COUNT_OTHER_SIDE 29
// Special cases
#define ABILITYEFFECT_MUD_SPORT 252 // Only used if B_SPORT_TURNS >= GEN_6
#define ABILITYEFFECT_WATER_SPORT 253 // Only used if B_SPORT_TURNS >= GEN_6
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
/// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
#define ITEMEFFECT_ON_SWITCH_IN 0
#define ITEMEFFECT_NORMAL 1
#define ITEMEFFECT_DUMMY 2 // Unused, empty
#define ITEMEFFECT_MOVE_END 3
#define ITEMEFFECT_KINGSROCK_SHELLBELL 4
#define ITEMEFFECT_KINGSROCK 4
#define ITEMEFFECT_TARGET 5
#define ITEMEFFECT_ORBS 6
#define ITEMEFFECT_LIFEORB_SHELLBELL 7
#define ITEMEFFECT_USE_LAST_ITEM 8 // move end effects for just the battler, not whole field
#define ITEMEFFECT_STATS_CHANGED 9 // For White Herb and Eject Pack
#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
#define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)))
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
#define BS_GET_SCRIPTING_BANK 10
#define BS_GET_PLAYER1 11
#define BS_GET_OPPONENT1 12
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
#define IS_WHOLE_SIDE_ALIVE(battler) ((IsBattlerAlive(battler) && IsBattlerAlive(BATTLE_PARTNER(battler))))
#define IS_ALIVE_AND_PRESENT(battler) (IsBattlerAlive(battler) && IsBattlerSpritePresent(battler))
// for Natural Gift and Fling
struct TypePower
{
u8 type;
u8 power;
u16 effect;
};
enum
{
CANCELLER_FLAGS,
CANCELLER_SKY_DROP,
CANCELLER_ASLEEP,
CANCELLER_FROZEN,
CANCELLER_TRUANT,
CANCELLER_RECHARGE,
CANCELLER_FLINCH,
CANCELLER_DISABLED,
CANCELLER_GRAVITY,
CANCELLER_HEAL_BLOCKED,
CANCELLER_TAUNTED,
CANCELLER_IMPRISONED,
CANCELLER_CONFUSED,
CANCELLER_PARALYSED,
CANCELLER_GHOST,
CANCELLER_IN_LOVE,
CANCELLER_BIDE,
CANCELLER_THAW,
CANCELLER_POWDER_MOVE,
CANCELLER_POWDER_STATUS,
CANCELLER_THROAT_CHOP,
CANCELLER_MULTIHIT_MOVES,
CANCELLER_Z_MOVES,
CANCELLER_END,
CANCELLER_PSYCHIC_TERRAIN,
CANCELLER_END2,
};
u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 target, u8 attacker, u16 move);
void PressurePPLoseOnUsingImprison(u8 attacker);
void PressurePPLoseOnUsingPerishSong(u8 attacker);
void MarkBattlerForControllerExec(u8 battlerId);
void MarkBattlerReceivedLinkData(u8 battlerId);
void CancelMultiTurnMoves(u8 battler);
bool8 WasUnableToUseMove(u8 battler);
const u8* CancelMultiTurnMoves(u32 battler);
bool32 WasUnableToUseMove(u32 battler);
void PrepareStringBattle(u16 stringId, u8 battler);
void ResetSentPokesToOpponentValue(void);
void OpponentSwitchInResetSentPokesToOpponentValue(u8 battler);
@ -74,7 +131,7 @@ void BattleScriptPush(const u8 *bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);
u8 TrySetCantSelectMoveBattleScript(void);
u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check);
u8 CheckMoveLimitations(u32 battler, u8 unusableMoves, u16 check);
bool8 AreAllMovesUnusable(void);
u8 GetImprisonedMovesCount(u8 battlerId, u16 move);
u8 DoFieldEndTurnEffects(void);
@ -82,20 +139,117 @@ u8 DoBattlerEndTurnEffects(void);
bool8 HandleWishPerishSongOnTurnEnd(void);
bool8 HandleFaintedMonActions(void);
void TryClearRageStatuses(void);
u8 AtkCanceller_UnableToUseMove(void);
bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2);
u8 AtkCanceller_UnableToUseMove(u32 moveType);
bool32 HasNoMonsToSwitch(u32 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2);
u8 CastformDataTypeChange(u8 battler);
u8 AbilityBattleEffects(u8 caseID, u8 battler, u16 ability, u8 special, u16 moveArg);
u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 moveArg);
void BattleScriptExecute(const u8 *BS_ptr);
void BattleScriptPushCursorAndCallback(const u8 *BS_ptr);
u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn);
u8 ItemBattleEffects(u8 caseID, u32 battler, bool32 moveTurn);
void ClearFuryCutterDestinyBondGrudge(u8 battlerId);
void HandleAction_RunBattleScript(void);
u8 GetMoveTarget(u16 move, u8 setTarget);
u8 IsMonDisobedient(void);
void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1);
// new
u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating);
bool32 IsAffectedByFollowMe(u32 battlerAtk, u32 defSide, u32 move);
bool32 IsNeutralizingGasOnField(void);
bool32 IsMyceliumMightOnField(void);
bool32 IsMoldBreakerTypeAbility(u32 ability);
u32 GetBattlerAbility(u32 battler);
u32 IsAbilityOnSide(u32 battler, u32 ability);
u32 IsAbilityOnOpposingSide(u32 battler, u32 ability);
u32 IsAbilityOnField(u32 ability);
u32 IsAbilityOnFieldExcept(u32 battler, u32 ability);
u32 IsAbilityPreventingEscape(u32 battler);
bool32 IsBattlerAlive(u32 battler);
bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind);
u32 CalcSecondaryEffectChance(u32 battler, u32 battlerAbility, const struct AdditionalEffect *additionalEffect);
bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect);
u8 GetBattleMoveCategory(u32 moveId);
u32 GetBattlerMoveTargetType(u32 battler, u32 move);
bool32 IsBattlerTerrainAffected(u32 battler, u32 terrainFlag);
bool32 IsBattlerGrounded(u32 battler);
u8 AtkCanceller_UnableToUseMove2(void);
void SetAtkCancellerForCalledMove(void);
bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 checkTarget);
bool32 IsBattlerProtected(u32 battler, u32 move);
bool32 IsMoveMakingContact(u32 move, u32 battlerAtk);
bool32 IsHealBlockPreventingMove(u32 battler, u32 move);
s32 CalculateMoveDamage(u32 move, u32 battlerAtk, u32 battlerDef, u32 moveType, s32 fixedBasePower, bool32 isCrit, bool32 randomFactor, bool32 updateFlags);
bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument);
u32 GetMoveSlot(u16 *moves, u32 move);
u32 GetBattlerWeight(u32 battler);
u32 CountBattlerStatIncreases(u32 battler, bool32 countEvasionAcc);
bool32 ShouldGetStatBadgeBoost(u16 flagId, u32 battler);
bool32 IsBattlerWeatherAffected(u32 battler, u32 weatherFlags);
bool32 CanBattlerGetOrLoseItem(u32 battler, u16 itemId);
bool32 MoveIsAffectedBySheerForce(u32 move);
u8 GetBattlerGender(u32 battler);
bool32 AreBattlersOfOppositeGender(u32 battler1, u32 battler2);
bool32 AreBattlersOfSameGender(u32 battler1, u32 battler2);
u32 GetBattlerHoldEffectParam(u32 battler);
uq4_12_t CalcTypeEffectivenessMultiplier(u32 move, u32 moveType, u32 battlerAtk, u32 battlerDef, u32 defAbility, bool32 recordAbilities);
bool32 MoveHasAdditionalEffectSelf(u32 move, u32 moveEffect);
uq4_12_t GetTypeModifier(u32 atkType, u32 defType);
u8 GetBattlerType(u32 battler, u8 typeIndex);
u32 GetIllusionMonSpecies(u32 battler);
struct Pokemon *GetIllusionMonPtr(u32 battler);
void ClearIllusionMon(u32 battler);
bool32 SetIllusionMon(struct Pokemon *mon, u32 battler);
u32 GetBattlerAffectionHearts(u32 battler);
u32 GetBattlerHoldEffect(u32 battler, bool32 checkNegating);
u32 GetBattlerHoldEffectIgnoreAbility(u32 battler, bool32 checkNegating);
u32 GetBattlerHoldEffectInternal(u32 battler, bool32 checkNegating, bool32 checkAbility);
void RecalcBattlerStats(u32 battler, struct Pokemon *mon);
bool32 TestIfSheerForceAffected(u32 battler, u16 move);
bool32 CanSleep(u32 battler);
bool32 CanBePoisoned(u32 battlerAttacker, u32 battlerTarget);
bool32 CanBeBurned(u32 battler);
bool32 CanBeParalyzed(u32 battler);
bool32 CanBeFrozen(u32 battler);
bool32 CanGetFrostbite(u32 battler);
bool32 CanBeConfused(u32 battler);
bool32 CanStealItem(u32 battlerStealing, u32 battlerItem, u16 item);
void TrySaveExchangedItem(u32 battler, u16 stolenItem);
void RemoveBattlerType(u32 battler, u8 type);
bool32 IsBattlerMegaEvolved(u32 battler);
bool32 IsBattlerPrimalReverted(u32 battler);
bool32 IsBattlerUltraBursted(u32 battler);
u16 GetBattleFormChangeTargetSpecies(u32 battler, u16 method);
bool32 TryBattleFormChange(u32 battler, u16 method);
bool32 TryChangeBattleWeather(u32 battler, u32 weatherEnumId, bool32 viaAbility);
u16 GetUsedHeldItem(u32 battler);
void RemoveConfusionStatus(u32 battler);
bool32 ChangeTypeBasedOnTerrain(u32 battler);
bool32 TryRoomService(u32 battler);
void BufferStatChange(u32 battler, u8 statId, u8 stringId);
s32 GetDrainedBigRootHp(u32 battler, s32 hp);
u8 TryHandleSeed(u32 battler, u32 terrainFlag, u8 statId, u16 itemId, bool32 execute);
bool32 HasEnoughHpToEatBerry(u32 battler, u32 hpFraction, u32 itemId);
bool32 IsGen6ExpShareEnabled(void);
void CopyMonLevelAndBaseStatsToBattleMon(u32 battler, struct Pokemon *mon);
void SortBattlersBySpeed(u8 *battlers, bool32 slowToFast);
bool32 CanBattlerEscape(u32 battler); // no ability check
bool32 IsBattlerAffectedByHazards(u32 battler, bool32 toxicSpikes);
bool32 TryPrimalReversion(u32 battler);
s32 GetStealthHazardDamage(u8 hazardType, u32 battler);
s32 GetStealthHazardDamageByTypesAndHP(u8 hazardType, u8 type1, u8 type2, u32 maxHp);
bool32 DoBattlersShareType(u32 battler1, u32 battler2);
bool32 MoveHasChargeTurnAdditionalEffect(u32 move);
bool32 IsPartnerMonFromSameTrainer(u32 battler);
// battle_ai_util.h
bool32 IsHealingMove(u32 move);
void RecordKnownMove(u32 battlerId, u32 move);
s32 CountUsablePartyMons(u32 battlerId);
bool32 IsAiVsAiBattle(void);
void RecordLastUsedMoveBy(u32 battlerId, u32 move);
bool32 BattlerHasAi(u32 battlerId);
void ClearBattlerItemEffectHistory(u32 battlerId);
bool32 IsAffectedByPowder(u32 battler, u32 ability, u32 holdEffect);
void RecordAllMoves(u32 battler);
// end battle_ai_util.h
#endif // GUARD_BATTLE_UTIL_H

View File

@ -3,6 +3,6 @@
#include "global.h"
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
// s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u32 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
#endif // GUARD_CALCULATE_BASE_DAMAGE_H

View File

@ -1,8 +1,6 @@
#ifndef GUARD_CONFIG_H
#define GUARD_CONFIG_H
#include "global.h"
// In the Generation 3 games, Asserts were used in various debug builds.
// Ruby/Sapphire and Emerald do not have these asserts while Fire Red
// still has them in the ROM. This is because the developers forgot

View File

@ -12,7 +12,7 @@
#define P_GEN_4_POKEMON FALSE // Generation 4 Pokémon (DPPt, HGSS)
#define P_GEN_5_POKEMON FALSE // Generation 5 Pokémon (BW, B2W2)
#define P_GEN_6_POKEMON FALSE // Generation 6 Pokémon (XY, ORAS)
#define P_GEN_7_POKEMON FALSE // Generation 7 Pokémon (SM, USUM, LGPE)
#define P_GEN_7_POKEMON TRUE // Generation 7 Pokémon (SM, USUM, LGPE)
#define P_GEN_8_POKEMON FALSE // Generation 8 Pokémon (SwSh, BDSP, LA)
#define P_GEN_9_POKEMON FALSE // Generation 9 Pokémon (SV)

View File

@ -31,11 +31,12 @@
#define B_POSITION_OPPONENT_RIGHT 3
// These macros can be used with either battler ID or positions to get the partner or the opposite mon
#define BATTLE_OPPOSITE(id) ((id) ^ 1)
#define BATTLE_PARTNER(id) ((id) ^ 2)
#define BATTLE_OPPOSITE(id) ((id) ^ BIT_SIDE)
#define BATTLE_PARTNER(id) ((id) ^ BIT_FLANK)
#define B_SIDE_PLAYER 0
#define B_SIDE_OPPONENT 1
#define NUM_BATTLE_SIDES 2
#define B_FLANK_LEFT 0
#define B_FLANK_RIGHT 1
@ -65,9 +66,15 @@
#define BATTLE_TYPE_WILD_SCRIPTED (1 << 17) // Used in pokeemerald as BATTLE_TYPE_PALACE.
#define BATTLE_TYPE_LEGENDARY_FRLG (1 << 18) // Used in pokeemerald as BATTLE_TYPE_ARENA.
#define BATTLE_TYPE_TRAINER_TOWER (1 << 19) // Used in pokeemerald as BATTLE_TYPE_FACTORY.
// pokeemerald
#define BATTLE_TYPE_INGAME_PARTNER (1 << 20)
#define BATTLE_TYPE_TOWER_LINK_MULTI (1 << 21)
#define BATTLE_TYPE_TWO_OPPONENTS (1 << 22)
#define IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && !((flags) & BATTLE_TYPE_GHOST_UNVEILED))
#define IS_BATTLE_TYPE_GHOST_WITH_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && (flags) & BATTLE_TYPE_GHOST_UNVEILED)
#define WILD_DOUBLE_BATTLE ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER))))
#define BATTLE_TWO_VS_ONE_OPPONENT ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gTrainerBattleOpponent_B == 0xFFFF))
#define RIVAL_BATTLE_HEAL_AFTER 1
#define RIVAL_BATTLE_TUTORIAL 3
@ -86,7 +93,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)
@ -108,7 +118,7 @@
#define STATUS2_FLINCHED (1 << 3)
#define STATUS2_UPROAR (1 << 4 | 1 << 5 | 1 << 6)
#define STATUS2_UPROAR_TURN(num) ((num) << 4)
#define STATUS2_UNUSED (1 << 7)
#define STATUS2_TORMENT (1 << 7)
#define STATUS2_BIDE (1 << 8 | 1 << 9)
#define STATUS2_BIDE_TURN(num) (((num) << 8) & STATUS2_BIDE)
#define STATUS2_LOCK_CONFUSE (1 << 10 | 1 << 11) // e.g. Thrash
@ -118,7 +128,7 @@
#define STATUS2_POWDER (1 << 14)
#define STATUS2_INFATUATION (1 << 16 | 1 << 17 | 1 << 18 | 1 << 19) // 4 bits, one for every battler
#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
#define STATUS2_FOCUS_ENERGY (1 << 20)
#define STATUS2_DEFENSE_CURL (1 << 20)
#define STATUS2_TRANSFORMED (1 << 21)
#define STATUS2_RECHARGE (1 << 22)
#define STATUS2_RAGE (1 << 23)
@ -128,10 +138,10 @@
#define STATUS2_NIGHTMARE (1 << 27)
#define STATUS2_CURSED (1 << 28)
#define STATUS2_FORESIGHT (1 << 29)
#define STATUS2_DEFENSE_CURL (1 << 30)
#define STATUS2_TORMENT (1 << 31)
#define STATUS2_DRAGON_CHEER (1 << 30)
#define STATUS2_FOCUS_ENERGY (1 << 31)
#define STATUS2_FOCUS_ENERGY_ANY (STATUS2_DRAGON_CHEER | STATUS2_FOCUS_ENERGY)
// Seems like per-battler statuses. Not quite sure how to categorize these
#define STATUS3_LEECHSEED_BATTLER (1 << 0 | 1 << 1) // The battler to receive HP from Leech Seed
#define STATUS3_LEECHSEED (1 << 2)
#define STATUS3_ALWAYS_HITS (1 << 3 | 1 << 4)
@ -146,7 +156,7 @@
#define STATUS3_YAWN_TURN(num) (((num) << 11) & STATUS3_YAWN)
#define STATUS3_IMPRISONED_OTHERS (1 << 13)
#define STATUS3_GRUDGE (1 << 14)
#define STATUS3_CANT_SCORE_A_CRIT (1 << 15)
#define STATUS3_CANT_SCORE_A_CRIT (1 << 15) // unused?
#define STATUS3_GASTRO_ACID (1 << 16)
#define STATUS3_EMBARGO (1 << 17)
#define STATUS3_UNDERWATER (1 << 18)
@ -175,9 +185,9 @@
// Not really sure what a "hitmarker" is.
#define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked.
#define HITMARKER_SKIP_DMG_TRACK (1 << 5)
#define HITMARKER_IGNORE_BIDE (1 << 5)
#define HITMARKER_DESTINYBOND (1 << 6)
#define HITMARKER_NO_ANIMATIONS (1 << 7)
#define HITMARKER_NO_ANIMATIONS (1 << 7) // set from battleSceneOff. Never changed during battle
#define HITMARKER_IGNORE_SUBSTITUTE (1 << 8)
#define HITMARKER_NO_ATTACKSTRING (1 << 9)
#define HITMARKER_ATTACKSTRING_PRINTED (1 << 10)
@ -186,9 +196,9 @@
#define HITMARKER_STATUS_ABILITY_EFFECT (1 << 13)
#define HITMARKER_SYNCHRONISE_EFFECT (1 << 14)
#define HITMARKER_RUN (1 << 15)
#define HITMARKER_IGNORE_ON_AIR (1 << 16)
#define HITMARKER_IGNORE_UNDERGROUND (1 << 17)
#define HITMARKER_IGNORE_UNDERWATER (1 << 18)
#define HITMARKER_IGNORE_DISGUISE (1 << 16)
#define HITMARKER_DISABLE_ANIMATION (1 << 17) // disable animations during battle scripts, e.g. for Bug Bite
// 3 free spots because of change in handling of UNDERGROUND/UNDERWATER/ON AIR
#define HITMARKER_UNABLE_TO_USE_MOVE (1 << 19)
#define HITMARKER_PASSIVE_DAMAGE (1 << 20)
#define HITMARKER_DISOBEDIENT_MOVE (1 << 21)
@ -200,42 +210,108 @@
#define HITMARKER_CHARGING (1 << 27)
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 28)
#define HITMARKER_FAINTED2(battler) ((1 << 28) << battler)
#define HITMARKER_STRING_PRINTED (1 << 29)
// TODO: old hitmarkers for compatability, remove with new battle system
#define HITMARKER_SKIP_DMG_TRACK (1 << 30)
#define HITMARKER_IGNORE_ON_AIR (1 << 31)
#define HITMARKER_IGNORE_UNDERGROUND (1 << 0)
#define HITMARKER_IGNORE_UNDERWATER (1 << 1)
// Per-side statuses that affect an entire party
#define SIDE_STATUS_REFLECT (1 << 0)
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
#define SIDE_STATUS_X4 (1 << 2)
#define SIDE_STATUS_SPIKES (1 << 4)
#define SIDE_STATUS_SAFEGUARD (1 << 5)
#define SIDE_STATUS_FUTUREATTACK (1 << 6)
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
#define SIDE_STATUS_REFLECT (1 << 0)
#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
#define SIDE_STATUS_STICKY_WEB (1 << 2)
#define SIDE_STATUS_SPIKES (1 << 4)
#define SIDE_STATUS_SAFEGUARD (1 << 5)
#define SIDE_STATUS_FUTUREATTACK (1 << 6)
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9) // TODO: remove with new battle system
// (1 << 9) previously was SIDE_STATUS_SPIKES_DAMAGED
#define SIDE_STATUS_TAILWIND (1 << 10)
#define SIDE_STATUS_AURORA_VEIL (1 << 11)
#define SIDE_STATUS_LUCKY_CHANT (1 << 12)
#define SIDE_STATUS_TOXIC_SPIKES (1 << 13)
#define SIDE_STATUS_STEALTH_ROCK (1 << 14)
// Missing flags previously were SIDE_STATUS_TOXIC_SPIKES_DAMAGED, SIDE_STATUS_STEALTH_ROCK_DAMAGED, SIDE_STATUS_STICKY_WEB_DAMAGED
#define SIDE_STATUS_QUICK_GUARD (1 << 18)
#define SIDE_STATUS_WIDE_GUARD (1 << 19)
#define SIDE_STATUS_CRAFTY_SHIELD (1 << 20)
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
#define SIDE_STATUS_STEELSURGE (1 << 22)
#define SIDE_STATUS_DAMAGE_NON_TYPES (1 << 23)
#define SIDE_STATUS_RAINBOW (1 << 24)
#define SIDE_STATUS_SEA_OF_FIRE (1 << 25)
#define SIDE_STATUS_SWAMP (1 << 26)
#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE)
#define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL)
#define SIDE_STATUS_PLEDGE_ANY (SIDE_STATUS_RAINBOW | SIDE_STATUS_SEA_OF_FIRE | SIDE_STATUS_SWAMP)
// Field affecting statuses.
#define STATUS_FIELD_MAGIC_ROOM (1 << 0)
#define STATUS_FIELD_TRICK_ROOM (1 << 1)
#define STATUS_FIELD_WONDER_ROOM (1 << 2)
#define STATUS_FIELD_MUDSPORT (1 << 3)
#define STATUS_FIELD_WATERSPORT (1 << 4)
#define STATUS_FIELD_GRAVITY (1 << 5)
#define STATUS_FIELD_GRASSY_TERRAIN (1 << 6)
#define STATUS_FIELD_MISTY_TERRAIN (1 << 7)
#define STATUS_FIELD_ELECTRIC_TERRAIN (1 << 8)
#define STATUS_FIELD_PSYCHIC_TERRAIN (1 << 9)
#define STATUS_FIELD_ION_DELUGE (1 << 10)
#define STATUS_FIELD_FAIRY_LOCK (1 << 11)
#define STATUS_FIELD_TERRAIN_PERMANENT (1 << 12) // Overworld thunderstorm generates electric terrain
#define STATUS_FIELD_TERRAIN_ANY (STATUS_FIELD_GRASSY_TERRAIN | STATUS_FIELD_MISTY_TERRAIN | STATUS_FIELD_ELECTRIC_TERRAIN | STATUS_FIELD_PSYCHIC_TERRAIN)
// Flags describing move's result
#define MOVE_RESULT_MISSED (1 << 0)
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
#define MOVE_RESULT_FAILED (1 << 5)
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
#define MOVE_RESULT_MISSED (1 << 0)
#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
#define MOVE_RESULT_FAILED (1 << 5)
#define MOVE_RESULT_FOE_ENDURED (1 << 6)
#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
#define MOVE_RESULT_STURDIED (1 << 8)
#define MOVE_RESULT_FOE_ENDURED_AFFECTION (1 << 9)
#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
// Battle Weather flags
#define B_WEATHER_NONE 0
#define B_WEATHER_RAIN_TEMPORARY (1 << 0)
#define B_WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
#define B_WEATHER_RAIN_PERMANENT (1 << 2)
#define B_WEATHER_RAIN (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_DOWNPOUR | B_WEATHER_RAIN_PERMANENT)
#define B_WEATHER_SANDSTORM_TEMPORARY (1 << 3)
#define B_WEATHER_SANDSTORM_PERMANENT (1 << 4)
#define B_WEATHER_RAIN_PRIMAL (1 << 3)
#define B_WEATHER_RAIN (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_DOWNPOUR | B_WEATHER_RAIN_PERMANENT | B_WEATHER_RAIN_PRIMAL)
#define B_WEATHER_SANDSTORM_TEMPORARY (1 << 4)
#define B_WEATHER_SANDSTORM_PERMANENT (1 << 5)
#define B_WEATHER_SANDSTORM (B_WEATHER_SANDSTORM_TEMPORARY | B_WEATHER_SANDSTORM_PERMANENT)
#define B_WEATHER_SUN_TEMPORARY (1 << 5)
#define B_WEATHER_SUN_PERMANENT (1 << 6)
#define B_WEATHER_SUN (B_WEATHER_SUN_TEMPORARY | B_WEATHER_SUN_PERMANENT)
#define B_WEATHER_HAIL_TEMPORARY (1 << 7)
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY)
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL)
#define B_WEATHER_SUN_TEMPORARY (1 << 6)
#define B_WEATHER_SUN_PERMANENT (1 << 7)
#define B_WEATHER_SUN_PRIMAL (1 << 8)
#define B_WEATHER_SUN (B_WEATHER_SUN_TEMPORARY | B_WEATHER_SUN_PERMANENT | B_WEATHER_SUN_PRIMAL)
#define B_WEATHER_HAIL_TEMPORARY (1 << 9)
#define B_WEATHER_HAIL_PERMANENT (1 << 10)
#define B_WEATHER_HAIL (B_WEATHER_HAIL_TEMPORARY | B_WEATHER_HAIL_PERMANENT)
#define B_WEATHER_STRONG_WINDS (1 << 11)
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL | B_WEATHER_STRONG_WINDS | B_WEATHER_SNOW)
#define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS)
#define B_WEATHER_SNOW_TEMPORARY (1 << 12)
#define B_WEATHER_SNOW_PERMANENT (1 << 13)
#define B_WEATHER_SNOW (B_WEATHER_SNOW_TEMPORARY | B_WEATHER_SNOW_PERMANENT)
// Battle Weather as enum
#define ENUM_WEATHER_NONE 0
#define ENUM_WEATHER_RAIN 1
#define ENUM_WEATHER_SUN 2
#define ENUM_WEATHER_SANDSTORM 3
#define ENUM_WEATHER_HAIL 4
#define ENUM_WEATHER_SUN_PRIMAL 5
#define ENUM_WEATHER_RAIN_PRIMAL 6
#define ENUM_WEATHER_STRONG_WINDS 7
#define ENUM_WEATHER_SNOW 8
// Move Effects
#define MOVE_EFFECT_SLEEP 1
@ -244,15 +320,16 @@
#define MOVE_EFFECT_FREEZE 4
#define MOVE_EFFECT_PARALYSIS 5
#define MOVE_EFFECT_TOXIC 6
#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_TOXIC // All above move effects apply primary status
#define MOVE_EFFECT_CONFUSION 7
#define MOVE_EFFECT_FLINCH 8
#define MOVE_EFFECT_TRI_ATTACK 9
#define MOVE_EFFECT_UPROAR 10
#define MOVE_EFFECT_PAYDAY 11
#define MOVE_EFFECT_CHARGING 12
#define MOVE_EFFECT_WRAP 13
#define MOVE_EFFECT_RECOIL_25 14
#define MOVE_EFFECT_FROSTBITE 7
#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_FROSTBITE // All above move effects apply primary status
#define MOVE_EFFECT_FREEZE_OR_FROSTBITE (B_USE_FROSTBITE == TRUE ? MOVE_EFFECT_FROSTBITE : MOVE_EFFECT_FREEZE)
#define MOVE_EFFECT_CONFUSION 8
#define MOVE_EFFECT_FLINCH 9
#define MOVE_EFFECT_TRI_ATTACK 10
#define MOVE_EFFECT_UPROAR 11
#define MOVE_EFFECT_PAYDAY 12
#define MOVE_EFFECT_CHARGING 13
#define MOVE_EFFECT_WRAP 14
#define MOVE_EFFECT_ATK_PLUS_1 15
#define MOVE_EFFECT_DEF_PLUS_1 16
#define MOVE_EFFECT_SPD_PLUS_1 17
@ -267,16 +344,16 @@
#define MOVE_EFFECT_SP_DEF_MINUS_1 26
#define MOVE_EFFECT_ACC_MINUS_1 27
#define MOVE_EFFECT_EVS_MINUS_1 28
#define MOVE_EFFECT_RECHARGE 29
#define MOVE_EFFECT_RAGE 30
#define MOVE_EFFECT_STEAL_ITEM 31
#define MOVE_EFFECT_PREVENT_ESCAPE 32
#define MOVE_EFFECT_NIGHTMARE 33
#define MOVE_EFFECT_ALL_STATS_UP 34
#define MOVE_EFFECT_RAPIDSPIN 35
#define MOVE_EFFECT_REMOVE_PARALYSIS 36
#define MOVE_EFFECT_ATK_DEF_DOWN 37
#define MOVE_EFFECT_RECOIL_33 38
#define MOVE_EFFECT_REMOVE_ARG_TYPE 29
#define MOVE_EFFECT_RECHARGE 30
#define MOVE_EFFECT_RAGE 31
#define MOVE_EFFECT_STEAL_ITEM 32
#define MOVE_EFFECT_PREVENT_ESCAPE 33
#define MOVE_EFFECT_NIGHTMARE 34
#define MOVE_EFFECT_ALL_STATS_UP 35
#define MOVE_EFFECT_RAPID_SPIN 36
#define MOVE_EFFECT_REMOVE_STATUS 37
#define MOVE_EFFECT_ATK_DEF_DOWN 38
#define MOVE_EFFECT_ATK_PLUS_2 39
#define MOVE_EFFECT_DEF_PLUS_2 40
#define MOVE_EFFECT_SPD_PLUS_2 41
@ -291,43 +368,86 @@
#define MOVE_EFFECT_SP_DEF_MINUS_2 50
#define MOVE_EFFECT_ACC_MINUS_2 51
#define MOVE_EFFECT_EVS_MINUS_2 52
#define MOVE_EFFECT_THRASH 53
#define MOVE_EFFECT_KNOCK_OFF 54
#define MOVE_EFFECT_NOTHING_37 55
#define MOVE_EFFECT_NOTHING_38 56
#define MOVE_EFFECT_NOTHING_39 57
#define MOVE_EFFECT_NOTHING_3A 58
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 59
#define NUM_MOVE_EFFECTS 60
#define MOVE_EFFECT_SCALE_SHOT 53
#define MOVE_EFFECT_THRASH 54
#define MOVE_EFFECT_KNOCK_OFF 55
#define MOVE_EFFECT_DEF_SPDEF_DOWN 56
#define MOVE_EFFECT_CLEAR_SMOG 57
#define MOVE_EFFECT_SP_ATK_TWO_DOWN 58
#define MOVE_EFFECT_SMACK_DOWN 59
#define MOVE_EFFECT_FLAME_BURST 60
#define MOVE_EFFECT_FEINT 61
#define MOVE_EFFECT_SPECTRAL_THIEF 62
#define MOVE_EFFECT_V_CREATE 63
#define MOVE_EFFECT_HAPPY_HOUR 64
#define MOVE_EFFECT_CORE_ENFORCER 65
#define MOVE_EFFECT_THROAT_CHOP 66
#define MOVE_EFFECT_INCINERATE 67
#define MOVE_EFFECT_BUG_BITE 68
#define MOVE_EFFECT_RECOIL_HP_25 69
#define MOVE_EFFECT_TRAP_BOTH 70
#define MOVE_EFFECT_ROUND 71
#define MOVE_EFFECT_STOCKPILE_WORE_OFF 72
#define MOVE_EFFECT_DIRE_CLAW 73
#define MOVE_EFFECT_STEALTH_ROCK 74
#define MOVE_EFFECT_SPIKES 75
#define MOVE_EFFECT_SYRUP_BOMB 76
#define MOVE_EFFECT_FLORAL_HEALING 77
#define MOVE_EFFECT_SECRET_POWER 78
#define MOVE_EFFECT_PSYCHIC_NOISE 79
// TODO: old pokefirered move effects, remove with new battle system
#define MOVE_EFFECT_RECOIL_25 80
#define MOVE_EFFECT_RAPIDSPIN 81
#define MOVE_EFFECT_REMOVE_PARALYSIS 82
#define MOVE_EFFECT_RECOIL_33 83
#define MOVE_EFFECT_AFFECTS_USER (1 << 6) // 64
#define MOVE_EFFECT_CERTAIN (1 << 7) // 128
#define NUM_MOVE_EFFECTS 84
#define MOVE_EFFECT_AFFECTS_USER 0x2000
#define MOVE_EFFECT_CERTAIN 0x4000
#define MOVE_EFFECT_CONTINUE 0x8000
// Battle terrain defines for gBattleTerrain.
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
#define BATTLE_TERRAIN_LINK 10
#define BATTLE_TERRAIN_GYM 11
#define BATTLE_TERRAIN_LEADER 12
#define BATTLE_TERRAIN_INDOOR_2 13
#define BATTLE_TERRAIN_INDOOR_1 14
#define BATTLE_TERRAIN_LORELEI 15
#define BATTLE_TERRAIN_BRUNO 16
#define BATTLE_TERRAIN_AGATHA 17
#define BATTLE_TERRAIN_LANCE 18
#define BATTLE_TERRAIN_CHAMPION 19
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// New battle terrains are used for Secret Power but not fully implemented.
#define BATTLE_TERRAIN_SOARING 10
#define BATTLE_TERRAIN_SKY_PILLAR 11
#define BATTLE_TERRAIN_BURIAL_GROUND 12
#define BATTLE_TERRAIN_PUDDLE 13
#define BATTLE_TERRAIN_MARSH 14
#define BATTLE_TERRAIN_SWAMP 15
#define BATTLE_TERRAIN_SNOW 16
#define BATTLE_TERRAIN_ICE 17
#define BATTLE_TERRAIN_VOLCANO 18
#define BATTLE_TERRAIN_DISTORTION_WORLD 19
#define BATTLE_TERRAIN_SPACE 20
#define BATTLE_TERRAIN_ULTRA_SPACE 21
#define BATTLE_TERRAIN_LINK 22
#define BATTLE_TERRAIN_GYM 23
#define BATTLE_TERRAIN_LEADER 24
#define BATTLE_TERRAIN_INDOOR_2 25
#define BATTLE_TERRAIN_INDOOR_1 26
#define BATTLE_TERRAIN_LORELEI 27
#define BATTLE_TERRAIN_BRUNO 28
#define BATTLE_TERRAIN_AGATHA 29
#define BATTLE_TERRAIN_LANCE 30
#define BATTLE_TERRAIN_CHAMPION 31
#define B_WAIT_TIME_LONG 64
#define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32
#define BATTLE_TERRAIN_COUNT 32
#define B_WAIT_TIME_LONG 64
#define B_WAIT_TIME_MED 48
#define B_WAIT_TIME_SHORT 32
#define B_WAIT_TIME_SHORTEST 16
#define CASTFORM_NORMAL 0
#define CASTFORM_FIRE 1
@ -377,4 +497,44 @@
// Indicator for the party summary bar to display an empty slot.
#define HP_EMPTY_SLOT 0xFFFF
#define MOVE_TARGET_SELECTED 0
#define MOVE_TARGET_DEPENDS (1 << 0)
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
#define MOVE_TARGET_RANDOM (1 << 2)
#define MOVE_TARGET_BOTH (1 << 3)
#define MOVE_TARGET_USER (1 << 4)
#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
#define MOVE_TARGET_ALLY (1 << 7)
#define MOVE_TARGET_ALL_BATTLERS ((1 << 8) | MOVE_TARGET_USER)
// For the second argument of GetMoveTarget, when no target override is needed
#define NO_TARGET_OVERRIDE 0
// Constants for Parental Bond
#define PARENTAL_BOND_1ST_HIT 2
#define PARENTAL_BOND_2ND_HIT 1
#define PARENTAL_BOND_OFF 0
// Constants for if HandleScriptMegaPrimalBurst should handle Mega Evolution, Primal Reversion, or Ultra Burst.
#define HANDLE_TYPE_MEGA_EVOLUTION 0
#define HANDLE_TYPE_PRIMAL_REVERSION 1
#define HANDLE_TYPE_ULTRA_BURST 2
// Constants for Torment
#define PERMANENT_TORMENT 0xF
// Constants for B_VAR_STARTING_STATUS
// Timer value controlled by B_VAR_STARTING_STATUS_TIMER
#define STARTING_STATUS_NONE 0
#define STARTING_STATUS_ELECTRIC_TERRAIN 1
#define STARTING_STATUS_MISTY_TERRAIN 2
#define STARTING_STATUS_GRASSY_TERRAIN 3
#define STARTING_STATUS_PSYCHIC_TERRAIN 4
#define STARTING_STATUS_TRICK_ROOM 5
#define STARTING_STATUS_MAGIC_ROOM 6
#define STARTING_STATUS_WONDER_ROOM 7
#define STARTING_STATUS_TAILWIND_PLAYER 8
#define STARTING_STATUS_TAILWIND_OPPONENT 9
#endif // GUARD_CONSTANTS_BATTLE_H

View File

@ -303,6 +303,13 @@
#define ANIM_ATK_PARTNER 2
#define ANIM_DEF_PARTNER 3
// Below are used by AnimTask_ShakeMon2 and AnimTask_SetGrayscaleOrOriginalPal
#define ANIM_PLAYER_LEFT (MAX_BATTLERS_COUNT + 0)
#define ANIM_OPPONENT_LEFT (MAX_BATTLERS_COUNT + 1)
#define ANIM_PLAYER_RIGHT (MAX_BATTLERS_COUNT + 2)
#define ANIM_OPPONENT_RIGHT (MAX_BATTLERS_COUNT + 3)
#define ANIM_ATTACKER_FORCE (MAX_BATTLERS_COUNT + 4)
// stereo panning constants [0-255]
//
// 0
@ -347,7 +354,7 @@
#define BG_SOLAR_BEAM_CONTESTS 26
// table ids for general animations (gBattleAnims_General)
#define B_ANIM_CASTFORM_CHANGE 0
#define B_ANIM_FORM_CHANGE 0
#define B_ANIM_STATS_CHANGE 1
#define B_ANIM_SUBSTITUTE_FADE 2
#define B_ANIM_SUBSTITUTE_APPEAR 3
@ -356,7 +363,7 @@
#define B_ANIM_TURN_TRAP 6
#define B_ANIM_HELD_ITEM_EFFECT 7
#define B_ANIM_SMOKEBALL_ESCAPE 8
#define B_ANIM_FOCUS_BAND 9
#define B_ANIM_HANGED_ON 9
#define B_ANIM_RAIN_CONTINUES 10
#define B_ANIM_SUN_CONTINUES 11
#define B_ANIM_SANDSTORM_CONTINUES 12
@ -375,6 +382,8 @@
#define B_ANIM_SILPH_SCOPED 25
#define B_ANIM_ROCK_THROW 26
#define B_ANIM_SAFARI_REACTION 27
#define B_ANIM_RESTORE_BG 28 // for Terrain Endings
#define B_ANIM_SLIDE_OFFSCREEN 29 // for Emergency Exit
// special animations table (gBattleAnims_Special)
#define B_ANIM_LVL_UP 0

View File

@ -1,219 +1,476 @@
#ifndef GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
#define GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
#define EFFECT_HIT 0
#define EFFECT_SLEEP 1
#define EFFECT_POISON_HIT 2
#define EFFECT_ABSORB 3
#define EFFECT_BURN_HIT 4
#define EFFECT_FREEZE_HIT 5
#define EFFECT_PARALYZE_HIT 6
#define EFFECT_EXPLOSION 7
#define EFFECT_DREAM_EATER 8
#define EFFECT_MIRROR_MOVE 9
#define EFFECT_ATTACK_UP 10
#define EFFECT_DEFENSE_UP 11
#define EFFECT_SPEED_UP 12
#define EFFECT_SPECIAL_ATTACK_UP 13
#define EFFECT_SPECIAL_DEFENSE_UP 14
#define EFFECT_ACCURACY_UP 15
#define EFFECT_EVASION_UP 16
#define EFFECT_ALWAYS_HIT 17
#define EFFECT_ATTACK_DOWN 18
#define EFFECT_DEFENSE_DOWN 19
#define EFFECT_SPEED_DOWN 20
#define EFFECT_SPECIAL_ATTACK_DOWN 21 // unused
#define EFFECT_SPECIAL_DEFENSE_DOWN 22 // unused
#define EFFECT_ACCURACY_DOWN 23
#define EFFECT_EVASION_DOWN 24
#define EFFECT_HAZE 25
#define EFFECT_BIDE 26
#define EFFECT_RAMPAGE 27
#define EFFECT_ROAR 28
#define EFFECT_MULTI_HIT 29
#define EFFECT_CONVERSION 30
#define EFFECT_FLINCH_HIT 31
#define EFFECT_RESTORE_HP 32
#define EFFECT_TOXIC 33
#define EFFECT_PAY_DAY 34
#define EFFECT_LIGHT_SCREEN 35
#define EFFECT_TRI_ATTACK 36
#define EFFECT_REST 37
#define EFFECT_OHKO 38
#define EFFECT_RAZOR_WIND 39
#define EFFECT_SUPER_FANG 40
#define EFFECT_DRAGON_RAGE 41
#define EFFECT_TRAP 42
#define EFFECT_HIGH_CRITICAL 43
#define EFFECT_DOUBLE_HIT 44
#define EFFECT_RECOIL_IF_MISS 45
#define EFFECT_MIST 46
#define EFFECT_FOCUS_ENERGY 47
#define EFFECT_RECOIL 48
#define EFFECT_CONFUSE 49
#define EFFECT_ATTACK_UP_2 50
#define EFFECT_DEFENSE_UP_2 51
#define EFFECT_SPEED_UP_2 52
#define EFFECT_SPECIAL_ATTACK_UP_2 53
#define EFFECT_SPECIAL_DEFENSE_UP_2 54
#define EFFECT_ACCURACY_UP_2 55
#define EFFECT_EVASION_UP_2 56
#define EFFECT_TRANSFORM 57
#define EFFECT_ATTACK_DOWN_2 58
#define EFFECT_DEFENSE_DOWN_2 59
#define EFFECT_SPEED_DOWN_2 60
#define EFFECT_SPECIAL_ATTACK_DOWN_2 61
#define EFFECT_SPECIAL_DEFENSE_DOWN_2 62
#define EFFECT_ACCURACY_DOWN_2 63
#define EFFECT_EVASION_DOWN_2 64
#define EFFECT_REFLECT 65
#define EFFECT_POISON 66
#define EFFECT_PARALYZE 67
#define EFFECT_ATTACK_DOWN_HIT 68
#define EFFECT_DEFENSE_DOWN_HIT 69
#define EFFECT_SPEED_DOWN_HIT 70
#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 71
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 72
#define EFFECT_ACCURACY_DOWN_HIT 73
#define EFFECT_EVASION_DOWN_HIT 74
#define EFFECT_SKY_ATTACK 75
#define EFFECT_CONFUSE_HIT 76
#define EFFECT_TWINEEDLE 77
#define EFFECT_VITAL_THROW 78
#define EFFECT_SUBSTITUTE 79
#define EFFECT_RECHARGE 80
#define EFFECT_RAGE 81
#define EFFECT_MIMIC 82
#define EFFECT_METRONOME 83
#define EFFECT_LEECH_SEED 84
#define EFFECT_SPLASH 85
#define EFFECT_DISABLE 86
#define EFFECT_LEVEL_DAMAGE 87
#define EFFECT_PSYWAVE 88
#define EFFECT_COUNTER 89
#define EFFECT_ENCORE 90
#define EFFECT_PAIN_SPLIT 91
#define EFFECT_SNORE 92
#define EFFECT_CONVERSION_2 93
#define EFFECT_LOCK_ON 94
#define EFFECT_SKETCH 95
#define EFFECT_UNUSED_60 96 // thaw
#define EFFECT_SLEEP_TALK 97
#define EFFECT_DESTINY_BOND 98
#define EFFECT_FLAIL 99
#define EFFECT_SPITE 100
#define EFFECT_FALSE_SWIPE 101
#define EFFECT_HEAL_BELL 102
#define EFFECT_QUICK_ATTACK 103
#define EFFECT_TRIPLE_KICK 104
#define EFFECT_THIEF 105
#define EFFECT_MEAN_LOOK 106
#define EFFECT_NIGHTMARE 107
#define EFFECT_MINIMIZE 108
#define EFFECT_CURSE 109
#define EFFECT_UNUSED_6E 110
#define EFFECT_PROTECT 111
#define EFFECT_SPIKES 112
#define EFFECT_FORESIGHT 113
#define EFFECT_PERISH_SONG 114
#define EFFECT_SANDSTORM 115
#define EFFECT_ENDURE 116
#define EFFECT_ROLLOUT 117
#define EFFECT_SWAGGER 118
#define EFFECT_FURY_CUTTER 119
#define EFFECT_ATTRACT 120
#define EFFECT_RETURN 121
#define EFFECT_PRESENT 122
#define EFFECT_FRUSTRATION 123
#define EFFECT_SAFEGUARD 124
#define EFFECT_THAW_HIT 125
#define EFFECT_MAGNITUDE 126
#define EFFECT_BATON_PASS 127
#define EFFECT_PURSUIT 128
#define EFFECT_RAPID_SPIN 129
#define EFFECT_SONICBOOM 130
#define EFFECT_UNUSED_83 131
#define EFFECT_MORNING_SUN 132
#define EFFECT_SYNTHESIS 133
#define EFFECT_MOONLIGHT 134
#define EFFECT_HIDDEN_POWER 135
#define EFFECT_RAIN_DANCE 136
#define EFFECT_SUNNY_DAY 137
#define EFFECT_DEFENSE_UP_HIT 138
#define EFFECT_ATTACK_UP_HIT 139
#define EFFECT_ALL_STATS_UP_HIT 140
#define EFFECT_UNUSED_8D 141 // incomplete fake out in gen 2
#define EFFECT_BELLY_DRUM 142
#define EFFECT_PSYCH_UP 143
#define EFFECT_MIRROR_COAT 144
#define EFFECT_SKULL_BASH 145
#define EFFECT_TWISTER 146
#define EFFECT_EARTHQUAKE 147
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLAR_BEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
#define EFFECT_BEAT_UP 154
#define EFFECT_SEMI_INVULNERABLE 155
#define EFFECT_DEFENSE_CURL 156
#define EFFECT_SOFTBOILED 157
#define EFFECT_FAKE_OUT 158
#define EFFECT_UPROAR 159
#define EFFECT_STOCKPILE 160
#define EFFECT_SPIT_UP 161
#define EFFECT_SWALLOW 162
#define EFFECT_UNUSED_A3 163
#define EFFECT_HAIL 164
#define EFFECT_TORMENT 165
#define EFFECT_FLATTER 166
#define EFFECT_WILL_O_WISP 167
#define EFFECT_MEMENTO 168
#define EFFECT_FACADE 169
#define EFFECT_FOCUS_PUNCH 170
#define EFFECT_SMELLINGSALT 171
#define EFFECT_FOLLOW_ME 172
#define EFFECT_NATURE_POWER 173
#define EFFECT_CHARGE 174
#define EFFECT_TAUNT 175
#define EFFECT_HELPING_HAND 176
#define EFFECT_TRICK 177
#define EFFECT_ROLE_PLAY 178
#define EFFECT_WISH 179
#define EFFECT_ASSIST 180
#define EFFECT_INGRAIN 181
#define EFFECT_SUPERPOWER 182
#define EFFECT_MAGIC_COAT 183
#define EFFECT_RECYCLE 184
#define EFFECT_REVENGE 185
#define EFFECT_BRICK_BREAK 186
#define EFFECT_YAWN 187
#define EFFECT_KNOCK_OFF 188
#define EFFECT_ENDEAVOR 189
#define EFFECT_ERUPTION 190
#define EFFECT_SKILL_SWAP 191
#define EFFECT_IMPRISON 192
#define EFFECT_REFRESH 193
#define EFFECT_GRUDGE 194
#define EFFECT_SNATCH 195
#define EFFECT_LOW_KICK 196
#define EFFECT_SECRET_POWER 197
#define EFFECT_DOUBLE_EDGE 198
#define EFFECT_TEETER_DANCE 199
#define EFFECT_BLAZE_KICK 200
#define EFFECT_MUD_SPORT 201
#define EFFECT_POISON_FANG 202
#define EFFECT_WEATHER_BALL 203
#define EFFECT_OVERHEAT 204
#define EFFECT_TICKLE 205
#define EFFECT_COSMIC_POWER 206
#define EFFECT_SKY_UPPERCUT 207
#define EFFECT_BULK_UP 208
#define EFFECT_POISON_TAIL 209
#define EFFECT_WATER_SPORT 210
#define EFFECT_CALM_MIND 211
#define EFFECT_DRAGON_DANCE 212
#define EFFECT_CAMOUFLAGE 213
#define EFFECT_PLACEHOLDER 0
#define EFFECT_HIT 1
#define EFFECT_SLEEP 2
#define EFFECT_ABSORB 3
#define EFFECT_EXPLOSION 4
#define EFFECT_DREAM_EATER 5
#define EFFECT_MIRROR_MOVE 6
#define EFFECT_ATTACK_UP 7
#define EFFECT_DEFENSE_UP 8
#define EFFECT_SPEED_UP 9
#define EFFECT_SPECIAL_ATTACK_UP 10
#define EFFECT_SPECIAL_DEFENSE_UP 11
#define EFFECT_ACCURACY_UP 12
#define EFFECT_EVASION_UP 13
#define EFFECT_SPECIAL_ATTACK_UP_3 14
#define EFFECT_ATTACK_DOWN 15
#define EFFECT_DEFENSE_DOWN 16
#define EFFECT_SPEED_DOWN 17
#define EFFECT_SPECIAL_ATTACK_DOWN 18
#define EFFECT_SPECIAL_DEFENSE_DOWN 19
#define EFFECT_ACCURACY_DOWN 20
#define EFFECT_EVASION_DOWN 21
#define EFFECT_HAZE 22
#define EFFECT_BIDE 23
#define EFFECT_ROAR 24
#define EFFECT_MULTI_HIT 25
#define EFFECT_CONVERSION 26
#define EFFECT_RESTORE_HP 27
#define EFFECT_TOXIC 28
#define EFFECT_LIGHT_SCREEN 29
#define EFFECT_REST 30
#define EFFECT_OHKO 31
#define EFFECT_FUSION_COMBO 32
#define EFFECT_SUPER_FANG 33
#define EFFECT_FIXED_DAMAGE_ARG 34
#define EFFECT_HEAL_BLOCK 35
#define EFFECT_RECOIL_IF_MISS 36
#define EFFECT_MIST 37
#define EFFECT_FOCUS_ENERGY 38
#define EFFECT_CONFUSE 39
#define EFFECT_ATTACK_UP_2 40
#define EFFECT_DEFENSE_UP_2 41
#define EFFECT_SPEED_UP_2 42
#define EFFECT_SPECIAL_ATTACK_UP_2 43
#define EFFECT_SPECIAL_DEFENSE_UP_2 44
#define EFFECT_ACCURACY_UP_2 45
#define EFFECT_EVASION_UP_2 46
#define EFFECT_TRANSFORM 47
#define EFFECT_ATTACK_DOWN_2 48
#define EFFECT_DEFENSE_DOWN_2 49
#define EFFECT_SPEED_DOWN_2 50
#define EFFECT_SPECIAL_ATTACK_DOWN_2 51
#define EFFECT_SPECIAL_DEFENSE_DOWN_2 52
#define EFFECT_ACCURACY_DOWN_2 53
#define EFFECT_EVASION_DOWN_2 54
#define EFFECT_REFLECT 55
#define EFFECT_POISON 56
#define EFFECT_PARALYZE 57
#define EFFECT_TWO_TURNS_ATTACK 58
#define EFFECT_SUBSTITUTE 59
#define EFFECT_RAGE 60
#define EFFECT_MIMIC 61
#define EFFECT_METRONOME 62
#define EFFECT_LEECH_SEED 63
#define EFFECT_DO_NOTHING 64
#define EFFECT_DISABLE 65
#define EFFECT_LEVEL_DAMAGE 66
#define EFFECT_PSYWAVE 67
#define EFFECT_COUNTER 68
#define EFFECT_ENCORE 69
#define EFFECT_PAIN_SPLIT 70
#define EFFECT_SNORE 71
#define EFFECT_CONVERSION_2 72
#define EFFECT_LOCK_ON 73
#define EFFECT_SKETCH 74
#define EFFECT_SLEEP_TALK 75
#define EFFECT_DESTINY_BOND 76
#define EFFECT_FLAIL 77
#define EFFECT_SPITE 78
#define EFFECT_FALSE_SWIPE 79
#define EFFECT_HEAL_BELL 80
#define EFFECT_TRIPLE_KICK 81
#define EFFECT_MEAN_LOOK 82
#define EFFECT_NIGHTMARE 83
#define EFFECT_MINIMIZE 84
#define EFFECT_CURSE 85
#define EFFECT_HEALING_WISH 86
#define EFFECT_PROTECT 87
#define EFFECT_SPIKES 88
#define EFFECT_FORESIGHT 89
#define EFFECT_PERISH_SONG 90
#define EFFECT_SANDSTORM 91
#define EFFECT_ENDURE 92
#define EFFECT_ROLLOUT 93
#define EFFECT_SWAGGER 94
#define EFFECT_FURY_CUTTER 95
#define EFFECT_ATTRACT 96
#define EFFECT_RETURN 97
#define EFFECT_PRESENT 98
#define EFFECT_FRUSTRATION 99
#define EFFECT_SAFEGUARD 100
#define EFFECT_MAGNITUDE 101
#define EFFECT_BATON_PASS 102
#define EFFECT_PURSUIT 103
#define EFFECT_CAPTIVATE 104
#define EFFECT_MORNING_SUN 105
#define EFFECT_SYNTHESIS 106
#define EFFECT_MOONLIGHT 107
#define EFFECT_HIDDEN_POWER 108
#define EFFECT_RAIN_DANCE 109
#define EFFECT_SUNNY_DAY 110
#define EFFECT_FELL_STINGER 111
#define EFFECT_BELLY_DRUM 112
#define EFFECT_PSYCH_UP 113
#define EFFECT_MIRROR_COAT 114
#define EFFECT_EARTHQUAKE 115
#define EFFECT_FUTURE_SIGHT 116
#define EFFECT_SOLAR_BEAM 117
#define EFFECT_THUNDER 118
#define EFFECT_TELEPORT 119
#define EFFECT_BEAT_UP 120
#define EFFECT_SEMI_INVULNERABLE 121
#define EFFECT_DEFENSE_CURL 122
#define EFFECT_SOFTBOILED 123 // differences vs Recover - can be used outside of battle to restore HP
#define EFFECT_FIRST_TURN_ONLY 124
#define EFFECT_UPROAR 125
#define EFFECT_STOCKPILE 126
#define EFFECT_SPIT_UP 127
#define EFFECT_SWALLOW 128
#define EFFECT_WORRY_SEED 129
#define EFFECT_HAIL 130
#define EFFECT_TORMENT 131
#define EFFECT_FLATTER 132
#define EFFECT_WILL_O_WISP 133
#define EFFECT_MEMENTO 134
#define EFFECT_FACADE 135
#define EFFECT_FOCUS_PUNCH 136
#define EFFECT_DOUBLE_POWER_ON_ARG_STATUS 137
#define EFFECT_FOLLOW_ME 138
#define EFFECT_NATURE_POWER 139
#define EFFECT_CHARGE 140
#define EFFECT_TAUNT 141
#define EFFECT_HELPING_HAND 142
#define EFFECT_TRICK 143
#define EFFECT_ROLE_PLAY 144
#define EFFECT_WISH 145
#define EFFECT_ASSIST 146
#define EFFECT_INGRAIN 147
#define EFFECT_MAGIC_COAT 148
#define EFFECT_RECYCLE 149
#define EFFECT_REVENGE 150
#define EFFECT_BRICK_BREAK 151
#define EFFECT_YAWN 152
#define EFFECT_KNOCK_OFF 153
#define EFFECT_ENDEAVOR 154
#define EFFECT_ERUPTION 155
#define EFFECT_SKILL_SWAP 156
#define EFFECT_IMPRISON 157
#define EFFECT_REFRESH 158
#define EFFECT_GRUDGE 159
#define EFFECT_SNATCH 160
#define EFFECT_LOW_KICK 161
#define EFFECT_HIT_ESCAPE 162
#define EFFECT_MUD_SPORT 163
#define EFFECT_WEATHER_BALL 164
#define EFFECT_TICKLE 165
#define EFFECT_COSMIC_POWER 166
#define EFFECT_BULK_UP 167
#define EFFECT_WATER_SPORT 168
#define EFFECT_CALM_MIND 169
#define EFFECT_DRAGON_DANCE 170
#define EFFECT_CAMOUFLAGE 171
#define EFFECT_PLEDGE 172
#define EFFECT_FLING 173
#define EFFECT_NATURAL_GIFT 174
#define EFFECT_VARY_POWER_BASED_ON_HP 175
#define EFFECT_ASSURANCE 176
#define EFFECT_TRUMP_CARD 177
#define EFFECT_ACROBATICS 178
#define EFFECT_HEAT_CRASH 179
#define EFFECT_PUNISHMENT 180
#define EFFECT_STORED_POWER 181
#define EFFECT_ELECTRO_BALL 182
#define EFFECT_GYRO_BALL 183
#define EFFECT_ECHOED_VOICE 184
#define EFFECT_PAYBACK 185
#define EFFECT_ROUND 186
#define EFFECT_BRINE 187
#define EFFECT_RETALIATE 188
#define EFFECT_BULLDOZE 189
#define EFFECT_FOUL_PLAY 190
#define EFFECT_PSYSHOCK 191
#define EFFECT_ROOST 192
#define EFFECT_GRAVITY 193
#define EFFECT_MIRACLE_EYE 194
#define EFFECT_TAILWIND 195
#define EFFECT_EMBARGO 196
#define EFFECT_AQUA_RING 197
#define EFFECT_TRICK_ROOM 198
#define EFFECT_WONDER_ROOM 199
#define EFFECT_MAGIC_ROOM 200
#define EFFECT_MAGNET_RISE 201
#define EFFECT_TOXIC_SPIKES 202
#define EFFECT_GASTRO_ACID 203
#define EFFECT_STEALTH_ROCK 204
#define EFFECT_TELEKINESIS 205
#define EFFECT_POWER_SWAP 206
#define EFFECT_GUARD_SWAP 207
#define EFFECT_HEART_SWAP 208
#define EFFECT_POWER_SPLIT 209
#define EFFECT_GUARD_SPLIT 210
#define EFFECT_STICKY_WEB 211
#define EFFECT_METAL_BURST 212
#define EFFECT_LUCKY_CHANT 213
#define EFFECT_SUCKER_PUNCH 214
#define EFFECT_SIMPLE_BEAM 215
#define EFFECT_ENTRAINMENT 216
#define EFFECT_HEAL_PULSE 217
#define EFFECT_QUASH 218
#define EFFECT_ION_DELUGE 219
#define EFFECT_FREEZE_DRY 220
#define EFFECT_TOPSY_TURVY 221
#define EFFECT_MISTY_TERRAIN 222
#define EFFECT_GRASSY_TERRAIN 223
#define EFFECT_ELECTRIC_TERRAIN 224
#define EFFECT_PSYCHIC_TERRAIN 225
#define EFFECT_ATTACK_ACCURACY_UP 226
#define EFFECT_ATTACK_SPATK_UP 227
#define EFFECT_TWO_TYPED_MOVE 228
#define EFFECT_ME_FIRST 229
#define EFFECT_QUIVER_DANCE 230
#define EFFECT_COIL 231
#define EFFECT_ELECTRIFY 232
#define EFFECT_REFLECT_TYPE 233
#define EFFECT_SOAK 234
#define EFFECT_GROWTH 235
#define EFFECT_LAST_RESORT 236
#define EFFECT_SHELL_SMASH 237
#define EFFECT_SHIFT_GEAR 238
#define EFFECT_DEFENSE_UP_3 239
#define EFFECT_NOBLE_ROAR 240
#define EFFECT_VENOM_DRENCH 241
#define EFFECT_TOXIC_THREAD 242
#define EFFECT_HIT_SWITCH_TARGET 243
#define EFFECT_FINAL_GAMBIT 244
#define EFFECT_CHANGE_TYPE_ON_ITEM 245
#define EFFECT_AUTOTOMIZE 246
#define EFFECT_COPYCAT 247
#define EFFECT_DEFOG 248
#define EFFECT_HIT_ENEMY_HEAL_ALLY 249
#define EFFECT_SYNCHRONOISE 250
#define EFFECT_PSYCHO_SHIFT 251
#define EFFECT_POWER_TRICK 252
#define EFFECT_AFTER_YOU 253
#define EFFECT_BESTOW 254
#define EFFECT_ROTOTILLER 255
#define EFFECT_FLOWER_SHIELD 256
#define EFFECT_SPEED_SWAP 257
#define EFFECT_REVELATION_DANCE 258
#define EFFECT_AURORA_VEIL 259
#define EFFECT_THIRD_TYPE 260
#define EFFECT_ACUPRESSURE 261
#define EFFECT_AROMATIC_MIST 262
#define EFFECT_POWDER 263
#define EFFECT_BELCH 264
#define EFFECT_PARTING_SHOT 265
#define EFFECT_MAT_BLOCK 266
#define EFFECT_STOMPING_TANTRUM 267
#define EFFECT_INSTRUCT 268
#define EFFECT_LASER_FOCUS 269
#define EFFECT_MAGNETIC_FLUX 270
#define EFFECT_GEAR_UP 271
#define EFFECT_STRENGTH_SAP 272
#define EFFECT_MIND_BLOWN 273
#define EFFECT_PURIFY 274
#define EFFECT_FAIL_IF_NOT_ARG_TYPE 275
#define EFFECT_SHORE_UP 276
#define EFFECT_GEOMANCY 277
#define EFFECT_FAIRY_LOCK 278
#define EFFECT_ALLY_SWITCH 279
#define EFFECT_RELIC_SONG 280
#define EFFECT_BODY_PRESS 281
#define EFFECT_EERIE_SPELL 282
#define EFFECT_JUNGLE_HEALING 283
#define EFFECT_COACHING 284
#define EFFECT_LASH_OUT 285
#define EFFECT_GRASSY_GLIDE 286
#define EFFECT_DYNAMAX_DOUBLE_DMG 287
#define EFFECT_DECORATE 288
#define EFFECT_SNIPE_SHOT 289
#define EFFECT_RECOIL_HP_25 290
#define EFFECT_STUFF_CHEEKS 291
#define EFFECT_GRAV_APPLE 292
#define EFFECT_GLITZY_GLOW 293
#define EFFECT_BADDY_BAD 294
#define EFFECT_SAPPY_SEED 295
#define EFFECT_FREEZY_FROST 296
#define EFFECT_SPARKLY_SWIRL 297
#define EFFECT_PLASMA_FISTS 298
#define EFFECT_HYPERSPACE_FURY 299
#define EFFECT_AURA_WHEEL 300
#define EFFECT_PHOTON_GEYSER 301
#define EFFECT_SHELL_SIDE_ARM 302
#define EFFECT_TERRAIN_PULSE 303
#define EFFECT_NO_RETREAT 304
#define EFFECT_TAR_SHOT 305
#define EFFECT_POLTERGEIST 306
#define EFFECT_OCTOLOCK 307
#define EFFECT_CLANGOROUS_SOUL 308
#define EFFECT_BOLT_BEAK 309
#define EFFECT_SKY_DROP 310
#define EFFECT_EXPANDING_FORCE 311
#define EFFECT_RISING_VOLTAGE 312
#define EFFECT_BEAK_BLAST 313
#define EFFECT_COURT_CHANGE 314
#define EFFECT_MAX_HP_50_RECOIL 315
#define EFFECT_EXTREME_EVOBOOST 316
#define EFFECT_HIT_SET_REMOVE_TERRAIN 317
#define EFFECT_DARK_VOID 318
#define EFFECT_VICTORY_DANCE 319
#define EFFECT_TEATIME 320
#define EFFECT_ATTACK_UP_USER_ALLY 321
#define EFFECT_SHELL_TRAP 322
#define EFFECT_PSYBLADE 323
#define EFFECT_HYDRO_STEAM 324
#define EFFECT_REVIVAL_BLESSING 325
#define EFFECT_SNOWSCAPE 326
#define EFFECT_TAKE_HEART 327
#define EFFECT_COLLISION_COURSE 328
#define EFFECT_CORROSIVE_GAS 329
#define EFFECT_POPULATION_BOMB 330
#define EFFECT_SALT_CURE 331
#define EFFECT_CHILLY_RECEPTION 332
#define EFFECT_MAX_MOVE 333
#define EFFECT_GLAIVE_RUSH 334
#define EFFECT_RAGING_BULL 335
#define EFFECT_RAGE_FIST 336
#define EFFECT_DOODLE 337
#define EFFECT_FILLET_AWAY 338
#define EFFECT_IVY_CUDGEL 339
#define EFFECT_FICKLE_BEAM 340
#define EFFECT_BLIZZARD 341
#define EFFECT_RAIN_ALWAYS_HIT 342 // Unlike EFFECT_THUNDER it doesn't get its accuracy reduced under sun.
#define EFFECT_SHED_TAIL 343
#define EFFECT_UPPER_HAND 344
#define EFFECT_DRAGON_CHEER 345
#define EFFECT_LAST_RESPECTS 346
#define EFFECT_TIDY_UP 347
// leftovers from original so game doesnt break
#define EFFECT_POISON_HIT 349
#define EFFECT_BURN_HIT 350
#define EFFECT_FREEZE_HIT 351
#define EFFECT_PARALYZE_HIT 352
#define EFFECT_ALWAYS_HIT 353
#define EFFECT_RAMPAGE 354
#define EFFECT_FLINCH_HIT 355
#define EFFECT_PAY_DAY 356
#define EFFECT_TRI_ATTACK 357
#define EFFECT_RAZOR_WIND 358
#define EFFECT_DRAGON_RAGE 359
#define EFFECT_TRAP 360
#define EFFECT_HIGH_CRITICAL 361
#define EFFECT_DOUBLE_HIT 362
#define EFFECT_RECOIL 363
#define EFFECT_ATTACK_DOWN_HIT 364
#define EFFECT_DEFENSE_DOWN_HIT 365
#define EFFECT_SPEED_DOWN_HIT 366
#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 367
#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 368
#define EFFECT_ACCURACY_DOWN_HIT 369
#define EFFECT_EVASION_DOWN_HIT 370
#define EFFECT_SKY_ATTACK 371
#define EFFECT_CONFUSE_HIT 372
#define EFFECT_TWINEEDLE 373
#define EFFECT_VITAL_THROW 374
#define EFFECT_RECHARGE 375
#define EFFECT_SPLASH 376
#define EFFECT_UNUSED_60 377
#define EFFECT_QUICK_ATTACK 378
#define EFFECT_THIEF 379
#define EFFECT_UNUSED_6E 380
#define EFFECT_THAW_HIT 381
#define EFFECT_RAPID_SPIN 382
#define EFFECT_SONICBOOM 383
#define EFFECT_UNUSED_83 384
#define EFFECT_DEFENSE_UP_HIT 385
#define EFFECT_ATTACK_UP_HIT 386
#define EFFECT_ALL_STATS_UP_HIT 387
#define EFFECT_UNUSED_8D 388 // incomplete fake out in gen 2
#define EFFECT_SKULL_BASH 389
#define EFFECT_TWISTER 390
#define EFFECT_GUST 391
#define EFFECT_FLINCH_MINIMIZE_HIT 392 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_FAKE_OUT 393
#define EFFECT_UNUSED_A3 394
#define EFFECT_SMELLINGSALT 395
#define EFFECT_SUPERPOWER 396
#define EFFECT_SECRET_POWER 397
#define EFFECT_DOUBLE_EDGE 398
#define EFFECT_TEETER_DANCE 399
#define EFFECT_BLAZE_KICK 400
#define EFFECT_POISON_FANG 401
#define EFFECT_OVERHEAT 402
#define EFFECT_SKY_UPPERCUT 403
#define EFFECT_POISON_TAIL 404
#define NUM_BATTLE_MOVE_EFFECTS 405
// enum {
// EFFECT_POISON_HIT,
// EFFECT_BURN_HIT ,
// EFFECT_FREEZE_HIT ,
// EFFECT_PARALYZE_HIT ,
// EFFECT_ALWAYS_HIT ,
// EFFECT_RAMPAGE ,
// EFFECT_FLINCH_HIT ,
// EFFECT_PAY_DAY ,
// EFFECT_TRI_ATTACK ,
// EFFECT_RAZOR_WIND ,
// EFFECT_DRAGON_RAGE ,
// EFFECT_TRAP ,
// EFFECT_HIGH_CRITICAL ,
// EFFECT_DOUBLE_HIT ,
// EFFECT_RECOIL ,
// EFFECT_ATTACK_DOWN_HIT ,
// EFFECT_DEFENSE_DOWN_HIT ,
// EFFECT_SPEED_DOWN_HIT ,
// EFFECT_SPECIAL_ATTACK_DOWN_HIT ,
// EFFECT_SPECIAL_DEFENSE_DOWN_HIT ,
// EFFECT_ACCURACY_DOWN_HIT ,
// EFFECT_EVASION_DOWN_HIT ,
// EFFECT_SKY_ATTACK ,
// EFFECT_CONFUSE_HIT ,
// EFFECT_TWINEEDLE ,
// EFFECT_VITAL_THROW ,
// EFFECT_RECHARGE ,
// EFFECT_SPLASH ,
// EFFECT_UNUSED_60,
// EFFECT_QUICK_ATTACK ,
// EFFECT_THIEF ,
// EFFECT_UNUSED_6E ,
// EFFECT_THAW_HIT ,
// EFFECT_RAPID_SPIN ,
// EFFECT_SONICBOOM ,
// EFFECT_UNUSED_83 ,
// EFFECT_DEFENSE_UP_HIT ,
// EFFECT_ATTACK_UP_HIT ,
// EFFECT_ALL_STATS_UP_HIT ,
// EFFECT_UNUSED_8D , // incomplete fake out in gen 2
// EFFECT_SKULL_BASH ,
// EFFECT_TWISTER ,
// EFFECT_GUST ,
// EFFECT_FLINCH_MINIMIZE_HIT , // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
// EFFECT_FAKE_OUT ,
// EFFECT_UNUSED_A3 ,
// EFFECT_SMELLINGSALT ,
// EFFECT_SUPERPOWER ,
// EFFECT_SECRET_POWER ,
// EFFECT_DOUBLE_EDGE ,
// EFFECT_TEETER_DANCE ,
// EFFECT_BLAZE_KICK ,
// EFFECT_POISON_FANG ,
// EFFECT_OVERHEAT ,
// EFFECT_SKY_UPPERCUT ,
// EFFECT_POISON_TAIL
// }
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -2,30 +2,45 @@
#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
// The following correspond to the struct members of BattleScripting by adding their offset
#define sPAINSPLIT_HP gBattleScripting + 0x00 // painSplitHp
#define sBIDE_DMG gBattleScripting + 0x04 // bideDmg
#define sMULTIHIT_STRING gBattleScripting + 0x08 // multihitString
#define sDMG_MULTIPLIER gBattleScripting + 0x0E // dmgMultiplier
#define sTWOTURN_STRINGID gBattleScripting + 0x0F // twoTurnsMoveStringId
#define sB_ANIM_ARG1 gBattleScripting + 0x10 // animArg1
#define sB_ANIM_ARG2 gBattleScripting + 0x11 // animArg2
#define sTRIPLE_KICK_POWER gBattleScripting + 0x12 // tripleKickPower
#define sMOVEEND_STATE gBattleScripting + 0x14 // moveendState
#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15 // battlerWithAbility
#define sMULTIHIT_EFFECT gBattleScripting + 0x16 // multihitMoveEffect
#define sBATTLER gBattleScripting + 0x17 // battler
#define sB_ANIM_TURN gBattleScripting + 0x18 // animTurn
#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19 // animTargetsHit
#define sSTATCHANGER gBattleScripting + 0x1A // statChanger
#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B // statAnimPlayed
#define sGIVEEXP_STATE gBattleScripting + 0x1C // getexpState
#define sBATTLE_STYLE gBattleScripting + 0x1D // battleStyle
#define sLVLBOX_STATE gBattleScripting + 0x1E // drawlvlupboxState
#define sLEARNMOVE_STATE gBattleScripting + 0x1F // learnMoveState
#define sPURSUIT_DOUBLES_ATTACKER gBattleScripting + 0x20 // pursuitDoublesAttacker
#define sRESHOW_MAIN_STATE gBattleScripting + 0x21 // reshowMainState
#define sRESHOW_HELPER_STATE gBattleScripting + 0x22 // reshowHelperState
#define sLVLUP_HP gBattleScripting + 0x23 // levelUpHP
#define sPAINSPLIT_HP (gBattleScripting + 0x00) // painSplitHp
#define sBIDE_DMG (gBattleScripting + 0x04) // bideDmg
#define sMULTIHIT_STRING (gBattleScripting + 0x08) // multihitString
#define sEXP_CATCH (gBattleScripting + 0x0E) // expOnCatch
#define sUNUSED (gBattleScripting + 0x0F) // unused
#define sB_ANIM_ARG1 (gBattleScripting + 0x10) // animArg1
#define sB_ANIM_ARG2 (gBattleScripting + 0x11) // animArg2
#define sSAVED_STRINID (gBattleScripting + 0x12) // savedStringId
#define sMOVEEND_STATE (gBattleScripting + 0x14) // moveendState
#define sSAVED_STAT_CHANGER (gBattleScripting + 0x15) // savedStatChanger
#define sSHIFT_SWITCHED (gBattleScripting + 0x16) // shiftSwitched
#define sBATTLER (gBattleScripting + 0x17) // battler
#define sB_ANIM_TURN (gBattleScripting + 0x18) // animTurn
#define sB_ANIM_TARGETS_HIT (gBattleScripting + 0x19) // animTargetsHit
#define sSTATCHANGER (gBattleScripting + 0x1A) // statChanger
#define sSTAT_ANIM_PLAYED (gBattleScripting + 0x1B) // statAnimPlayed
#define sGIVEEXP_STATE (gBattleScripting + 0x1C) // getexpState
#define sBATTLE_STYLE (gBattleScripting + 0x1D) // battleStyle
#define sLVLBOX_STATE (gBattleScripting + 0x1E) // drawlvlupboxState
#define sLEARNMOVE_STATE (gBattleScripting + 0x1F) // learnMoveState
#define sSAVED_BATTLER (gBattleScripting + 0x20) // savedBattler
#define sRESHOW_MAIN_STATE (gBattleScripting + 0x21) // reshowMainState
#define sRESHOW_HELPER_STATE (gBattleScripting + 0x22) // reshowHelperState
#define sLVLUP_HP (gBattleScripting + 0x23) // levelUpHP
#define sWINDOWS_TYPE (gBattleScripting + 0x24) // windowsType
#define sMULTIPLAYER_ID (gBattleScripting + 0x25) // multiplayerId
#define sSPECIAL_TRAINER_BATTLE_TYPE (gBattleScripting + 0x26) // specialTrainerBattleType
#define sMON_CAUGHT (gBattleScripting + 0x27) // monCaught
#define sSAVED_DMG (gBattleScripting + 0x28) // savedDmg
#define sSAVED_MOVE_EFFECT (gBattleScripting + 0x2C) // savedMoveEffect
#define sMOVE_EFFECT (gBattleScripting + 0x2E) // moveEffect
#define sMULTIHIT_EFFECT (gBattleScripting + 0x30) // multihitMoveEffect
#define sILLUSION_NICK_HACK (gBattleScripting + 0x32) // illusionNickHack
#define sFIXED_ABILITY_POPUP (gBattleScripting + 0x33) // fixedPopup
#define sABILITY_OVERWRITE (gBattleScripting + 0x34) // abilityPopupOverwrite
#define sSWITCH_CASE (gBattleScripting + 0x36) // switchCase
#define sBERRY_OVERRIDE (gBattleScripting + 0x37) // overrideBerryRequirements
#define sSTICKY_WEB_STAT_DROP (gBattleScripting + 0x38) // stickyWebStatDrop
#define sDMG_MULTIPLIER (gBattleScripting + 0x39) // dmgMultiplier
// Array entries for battle communication
#define MULTIUSE_STATE 0
@ -40,7 +55,6 @@
#define MSG_DISPLAY 7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
#define cEFFECT_CHOOSER (gBattleCommunication + MOVE_EFFECT_BYTE)
#define cMULTISTRING_CHOOSER (gBattleCommunication + MULTISTRING_CHOOSER)
#define cMISS_TYPE (gBattleCommunication + MISS_TYPE)
@ -54,12 +68,14 @@
#define BS_FAINTED_LINK_MULTIPLE_2 6 // for openpartyscreen
#define BS_BATTLER_0 7
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
#define BS_TARGET_SIDE 9 // for Cmd_jumpifability
#define BS_SCRIPTING 10
#define BS_PLAYER1 11
#define BS_OPPONENT1 12
#define BS_PLAYER2 13 // for Cmd_updatestatusicon
#define BS_OPPONENT2 14
#define BS_ABILITY_BATTLER 15
#define BS_ATTACKER_PARTNER 16
// atk 01, accuracy calc
#define NO_ACC_CALC 0xFFFE
@ -76,32 +92,180 @@
// TODO: documentation
// atk76, various
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_GET_BATTLER_FAINTED 4
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_RESET_PLAYER_FAINTED 7
#define VARIOUS_GET_BATTLERS_FOR_RECALL 8
#define VARIOUS_RETURN_OPPONENT_MON1 9
#define VARIOUS_RETURN_OPPONENT_MON2 10
#define VARIOUS_CHECK_POKEFLUTE 11
#define VARIOUS_WAIT_FANFARE 12
#define VARIOUS_PLAY_MOVE_ANIMATION 36
// pokeemerald
// Cmd_various
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_GET_BATTLER_FAINTED 4
#define VARIOUS_RESET_SWITCH_IN_ABILITY_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
#define VARIOUS_RESET_PLAYER_FAINTED 7
#define VARIOUS_PALACE_FLAVOR_TEXT 8 // unused from pokeemerald
#define VARIOUS_ARENA_JUDGMENT_WINDOW 9 // unused, from pokeemerald
#define VARIOUS_ARENA_OPPONENT_MON_LOST 10 // unused, from pokeemerald
#define VARIOUS_ARENA_PLAYER_MON_LOST 11 // unused, from pokeemerald
#define VARIOUS_ARENA_BOTH_MONS_LOST 12 // unused, from pokeemerald
#define VARIOUS_EMIT_YESNOBOX 13 // unused, from pokeemerald
#define VARIOUS_DRAW_ARENA_REF_TEXT_BOX 14 // unused, from pokeemerald
#define VARIOUS_ERASE_ARENA_REF_TEXT_BOX 15 // unused, from pokeemerald
#define VARIOUS_ARENA_JUDGMENT_STRING 16 // unused, from pokeemerald
#define VARIOUS_ARENA_WAIT_STRING 17 // unused, from pokeemerald
#define VARIOUS_WAIT_CRY 18
#define VARIOUS_RETURN_OPPONENT_MON1 19
#define VARIOUS_RETURN_OPPONENT_MON2 20
#define VARIOUS_VOLUME_DOWN 21
#define VARIOUS_VOLUME_UP 22
#define VARIOUS_SET_ALREADY_STATUS_MOVE_ATTEMPT 23
#define VARIOUS_PALACE_TRY_ESCAPE_STATUS 24 // unused from pokeemerald
#define VARIOUS_SET_TELEPORT_OUTCOME 25
#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
#define VARIOUS_STAT_TEXT_BUFFER 27
#define VARIOUS_SWITCHIN_ABILITIES 28
#define VARIOUS_SAVE_TARGET 29
#define VARIOUS_RESTORE_TARGET 30
#define VARIOUS_INSTANT_HP_DROP 31
#define VARIOUS_CLEAR_STATUS 32
#define VARIOUS_RESTORE_PP 33
#define VARIOUS_TRY_ACTIVATE_MOXIE 34
#define VARIOUS_TRY_ACTIVATE_FELL_STINGER 35
#define VARIOUS_PLAY_MOVE_ANIMATION 36
#define VARIOUS_SET_LUCKY_CHANT 37
#define VARIOUS_SUCKER_PUNCH_CHECK 38
#define VARIOUS_SET_SIMPLE_BEAM 39
#define VARIOUS_TRY_ENTRAINMENT 40
#define VARIOUS_SET_LAST_USED_ABILITY 41
#define VARIOUS_INVERT_STAT_STAGES 42
#define VARIOUS_TRY_ME_FIRST 43
#define VARIOUS_JUMP_IF_BATTLE_END 44
#define VARIOUS_TRY_ELECTRIFY 45
#define VARIOUS_TRY_REFLECT_TYPE 46
#define VARIOUS_TRY_SOAK 47
#define VARIOUS_HANDLE_MEGA_EVO 48
#define VARIOUS_TRY_LAST_RESORT 49
#define VARIOUS_SET_ARG_TO_BATTLE_DAMAGE 50
#define VARIOUS_TRY_HIT_SWITCH_TARGET 51
#define VARIOUS_TRY_AUTOTOMIZE 52
#define VARIOUS_ABILITY_POPUP 53
#define VARIOUS_JUMP_IF_TARGET_ALLY 54
#define VARIOUS_TRY_SYNCHRONOISE 55
#define VARIOUS_PSYCHO_SHIFT 56
#define VARIOUS_CURE_STATUS 57
#define VARIOUS_POWER_TRICK 58
#define VARIOUS_AFTER_YOU 59
#define VARIOUS_BESTOW 60
#define VARIOUS_JUMP_IF_NOT_GROUNDED 61
#define VARIOUS_HANDLE_TRAINER_SLIDE_MSG 62
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_FIRST_OFF 63
#define VARIOUS_TRY_TRAINER_SLIDE_MSG_LAST_ON 64
#define VARIOUS_SET_AURORA_VEIL 65
#define VARIOUS_TRY_THIRD_TYPE 66
#define VARIOUS_ACUPRESSURE 67
#define VARIOUS_SET_POWDER 68
#define VARIOUS_SPECTRAL_THIEF 69
#define VARIOUS_GRAVITY_ON_AIRBORNE_MONS 70
#define VARIOUS_CHECK_IF_GRASSY_TERRAIN_HEALS 71
#define VARIOUS_JUMP_IF_ROAR_FAILS 72
#define VARIOUS_TRY_INSTRUCT 73
#define VARIOUS_JUMP_IF_NOT_BERRY 74
#define VARIOUS_TRACE_ABILITY 75
#define VARIOUS_UPDATE_NICK 76
#define VARIOUS_TRY_ILLUSION_OFF 77
#define VARIOUS_SET_SPRITEIGNORE0HP 78
#define VARIOUS_HANDLE_FORM_CHANGE 79
#define VARIOUS_GET_STAT_VALUE 80
#define VARIOUS_JUMP_IF_FULL_HP 81
#define VARIOUS_LOSE_TYPE 82
#define VARIOUS_TRY_ACTIVATE_SOULHEART 83
#define VARIOUS_TRY_ACTIVATE_RECEIVER 84
#define VARIOUS_TRY_ACTIVATE_BEAST_BOOST 85
#define VARIOUS_TRY_FRISK 86
#define VARIOUS_JUMP_IF_SHIELDS_DOWN_PROTECTED 87
#define VARIOUS_TRY_FAIRY_LOCK 88
#define VARIOUS_JUMP_IF_NO_ALLY 89
#define VARIOUS_POISON_TYPE_IMMUNITY 90
#define VARIOUS_JUMP_IF_HOLD_EFFECT 91
#define VARIOUS_INFATUATE_WITH_BATTLER 92
#define VARIOUS_SET_LAST_USED_ITEM 93
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 94
#define VARIOUS_JUMP_IF_ABSENT 95
#define VARIOUS_DESTROY_ABILITY_POPUP 96
#define VARIOUS_TOTEM_BOOST 97
#define VARIOUS_TRY_ACTIVATE_GRIM_NEIGH 98
#define VARIOUS_MOVEEND_ITEM_EFFECTS 99
#define VARIOUS_TERRAIN_SEED 100
#define VARIOUS_MAKE_INVISIBLE 101
#define VARIOUS_ROOM_SERVICE 102
#define VARIOUS_EERIE_SPELL_PP_REDUCE 103
#define VARIOUS_JUMP_IF_TEAM_HEALTHY 104
#define VARIOUS_TRY_HEAL_QUARTER_HP 105
#define VARIOUS_REMOVE_TERRAIN 106
#define VARIOUS_JUMP_IF_PRANKSTER_BLOCKED 107
#define VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER 108
#define VARIOUS_GET_ROTOTILLER_TARGETS 109
#define VARIOUS_JUMP_IF_NOT_ROTOTILLER_AFFECTED 110
#define VARIOUS_TRY_ACTIVATE_BATTLE_BOND 111
#define VARIOUS_CONSUME_BERRY 112
#define VARIOUS_JUMP_IF_CANT_REVERT_TO_PRIMAL 113
#define VARIOUS_JUMP_IF_SPECIES 114
#define VARIOUS_UPDATE_ABILITY_POPUP 115
#define VARIOUS_JUMP_IF_WEATHER_AFFECTED 116
#define VARIOUS_JUMP_IF_LEAF_GUARD_PROTECTED 117
#define VARIOUS_SET_ATTACKER_STICKY_WEB_USER 118
#define VARIOUS_SHELL_SIDE_ARM_CHECK 119
#define VARIOUS_TRY_NO_RETREAT 120
#define VARIOUS_TRY_TAR_SHOT 121
#define VARIOUS_CAN_TAR_SHOT_WORK 122
#define VARIOUS_CHECK_POLTERGEIST 123
#define VARIOUS_CUT_1_3_HP_RAISE_STATS 124
#define VARIOUS_TRY_END_NEUTRALIZING_GAS 125
#define VARIOUS_JUMP_IF_UNDER_200 126
#define VARIOUS_SET_SKY_DROP 127
#define VARIOUS_CLEAR_SKY_DROP 128
#define VARIOUS_SKY_DROP_YAWN 129
#define VARIOUS_CURE_CERTAIN_STATUSES 130
#define VARIOUS_TRY_RESET_NEGATIVE_STAT_STAGES 131
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_BERRY 132
#define VARIOUS_JUMP_IF_LAST_USED_ITEM_HOLD_EFFECT 133
#define VARIOUS_SAVE_BATTLER_ITEM 134
#define VARIOUS_RESTORE_BATTLER_ITEM 135
#define VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM 136
#define VARIOUS_SET_BEAK_BLAST 137
#define VARIOUS_SWAP_SIDE_STATUSES 138
#define VARIOUS_SWAP_STATS 139
#define VARIOUS_TEATIME_INVUL 140
#define VARIOUS_TEATIME_TARGETS 141
#define VARIOUS_TRY_WIND_RIDER_POWER 142
#define VARIOUS_ACTIVATE_WEATHER_CHANGE_ABILITIES 143
#define VARIOUS_ACTIVATE_TERRAIN_CHANGE_ABILITIES 144
#define VARIOUS_STORE_HEALING_WISH 145
#define VARIOUS_HIT_SWITCH_TARGET_FAILED 146
#define VARIOUS_TRY_REVIVAL_BLESSING 147
// pokefirered
#define VARIOUS_GET_BATTLERS_FOR_RECALL 148 // for battle tower
#define VARIOUS_CHECK_POKEFLUTE 149 // pokeflute
#define VARIOUS_WAIT_FANFARE 151 // pokeflute and other
// Cmd_manipulatedmg
// Cmd_manipulatedamage
#define DMG_CHANGE_SIGN 0
#define DMG_RECOIL_FROM_MISS 1
#define DMG_DOUBLED 2
#define DMG_1_8_TARGET_HP 3
#define DMG_FULL_ATTACKER_HP 4
#define DMG_CURR_ATTACKER_HP 5
#define DMG_BIG_ROOT 6
#define DMG_1_2_ATTACKER_HP 7
#define DMG_RECOIL_FROM_IMMUNE 8 // Used to calculate recoil for the Gen 4 version of Jump Kick
// Cmd_jumpifcantswitch
#define SWITCH_IGNORE_ESCAPE_PREVENTION (1 << 7)
// Cmd_statbuffchange
#define STAT_CHANGE_ALLOW_PTR (1 << 0) // If set, allow use of jumpptr. Set in every use of statbuffchange
#define STAT_CHANGE_MIRROR_ARMOR (1 << 1) // Stat change redirection caused by Mirror Armor ability.
#define STAT_CHANGE_NOT_PROTECT_AFFECTED (1 << 5)
#define STAT_CHANGE_UPDATE_MOVE_EFFECT (1 << 6)
// stat change flags for Cmd_playstatchangeanimation
#define STAT_CHANGE_NEGATIVE (1 << 0)
@ -122,23 +286,55 @@
#define PARTY_SCREEN_OPTIONAL (1 << 7) // Flag for first argument to openpartyscreen
// cases for Cmd_moveend
#define MOVEEND_RAGE 0
#define MOVEEND_DEFROST 1
#define MOVEEND_SYNCHRONIZE_TARGET 2
#define MOVEEND_ON_DAMAGE_ABILITIES 3
#define MOVEEND_IMMUNITY_ABILITIES 4
#define MOVEEND_SYNCHRONIZE_ATTACKER 5
#define MOVEEND_CHOICE_MOVE 6
#define MOVEEND_CHANGED_ITEMS 7
#define MOVEEND_ATTACKER_INVISIBLE 8
#define MOVEEND_ATTACKER_VISIBLE 9
#define MOVEEND_TARGET_VISIBLE 10
#define MOVEEND_ITEM_EFFECTS_ALL 11
#define MOVEEND_KINGSROCK_SHELLBELL 12
#define MOVEEND_SUBSTITUTE 13
#define MOVEEND_UPDATE_LAST_MOVES 14
#define MOVEEND_MIRROR_MOVE 15
#define MOVEEND_NEXT_TARGET 16
#define MOVEEND_COUNT 17
#define MOVEEND_SUM_DAMAGE 0
#define MOVEEND_PROTECT_LIKE_EFFECT 1
#define MOVEEND_RAGE 2
#define MOVEEND_SYNCHRONIZE_TARGET 3
#define MOVEEND_ABILITIES 4
#define MOVEEND_ABILITIES_ATTACKER 5
#define MOVEEND_STATUS_IMMUNITY_ABILITIES 6
#define MOVEEND_SYNCHRONIZE_ATTACKER 7
#define MOVEEND_CHOICE_MOVE 8
#define MOVEEND_ATTACKER_INVISIBLE 9
#define MOVEEND_ATTACKER_VISIBLE 10
#define MOVEEND_TARGET_VISIBLE 11
#define MOVEEND_ITEM_EFFECTS_TARGET 12
#define MOVEEND_MOVE_EFFECTS2 13
#define MOVEEND_ITEM_EFFECTS_ALL 14
#define MOVEEND_KINGSROCK 15 // These item effects will occur each strike of a multi-hit move
#define MOVEEND_NUM_HITS 16
#define MOVEEND_SUBSTITUTE 17
#define MOVEEND_SKY_DROP_CONFUSE 18
#define MOVEEND_UPDATE_LAST_MOVES 19
#define MOVEEND_MIRROR_MOVE 20
#define MOVEEND_NEXT_TARGET 21 // Everything up until here is handled for each strike of a multi-hit move
#define MOVEEND_MULTIHIT_MOVE 22
#define MOVEEND_DEFROST 23
#define MOVEEND_RECOIL 24
#define MOVEEND_MAGICIAN 25 // Occurs after final multi-hit strike, and after other items/abilities would activate
#define MOVEEND_EJECT_ITEMS 26
#define MOVEEND_WHITE_HERB 27
#define MOVEEND_RED_CARD 28
#define MOVEEND_LIFEORB_SHELLBELL 29 // Includes shell bell, throat spray, etc
#define MOVEEND_CHANGED_ITEMS 30
#define MOVEEND_PICKPOCKET 31
#define MOVEEND_DANCER 32
#define MOVEEND_EMERGENCY_EXIT 33
#define MOVEEND_SYMBIOSIS 34
#define MOVEEND_OPPORTUNIST 35 // Occurs after other stat change items/abilities to try and copy the boosts
#define MOVEEND_SAME_MOVE_TURNS 36
#define MOVEEND_SET_EVOLUTION_TRACKER 37
#define MOVEEND_CLEAR_BITS 38
#define MOVEEND_COUNT 39
// switch cases
#define B_SWITCH_NORMAL 0
#define B_SWITCH_HIT 1 // dragon tail, circle throw
#define B_SWITCH_RED_CARD 2
// Argument labels for EFFECT_HIT_SET_REMOVE_TERRAIN
#define ARG_SET_PSYCHIC_TERRAIN 0
#define ARG_TRY_REMOVE_TERRAIN_HIT 1
#define ARG_TRY_REMOVE_TERRAIN_FAIL 2
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H

View File

@ -1,12 +1,13 @@
#ifndef GUARD_BATTLE_STRING_IDS_H
#define GUARD_BATTLE_STRING_IDS_H
#define STRINGID_INTROMSG 0
#define STRINGID_INTROMSG 0
#define STRINGID_INTROSENDOUT 1
#define STRINGID_RETURNMON 2
#define STRINGID_RETURNMON 2
#define STRINGID_SWITCHINMON 3
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
#define STRINGID_TRAINERSLIDE 6
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
@ -388,8 +389,191 @@
#define STRINGID_ITEMRESTOREDSPECIESHEALTH 386
#define STRINGID_ITEMRESTOREDSPECIESPP 387
#define STRINGID_ITEMCUREDSPECIESSTATUS 388
#define STRINGID_ELECTROSHOTCHARGING 389
#define STRINGID_METEORBEAMCHARGING 390
#define STRINGID_CLOAKEDINAHARSHLIGHT 391
#define STRINGID_VANISHEDINSTANTLY 392
#define STRINGID_PKMNTOOKTARGETHIGH 393
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 394
#define STRINGID_PKNMABSORBINGPOWER 395
#define STRINGID_POKEMONCANNOTUSEMOVE 396
#define STRINGID_PKMNMOVEBOUNCEDABILITY 397
#define STRINGID_HEALBLOCKPREVENTSUSAGE 398
#define STRINGID_GRAVITYPREVENTSUSAGE 399
#define STRINGID_PKMNFROSTBITEHEALED2 400
#define STRINGID_PKMNFROSTBITEHEALEDBY 401
#define STRINGID_SAFETYGOGGLESPROTECTED 402
#define STRINGID_POWDEREXPLODES 403
#define STRINGID_PKMNCANTUSEMOVETHROATCHOP 404
#define STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN 405
#define STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT 406
#define STRINGID_TARGETATEITEM 407
#define STRINGID_GEMACTIVATES 408
#define STRINGID_ATTACKWEAKENEDBSTRONGWINDS 409
#define STRINGID_ENDUREDSTURDY 410
#define STRINGID_BERRYDMGREDUCES 411
#define STRINGID_TARGETTOUGHEDITOUT 412
#define STRINGID_TRAPPEDBYSWIRLINGMAGMA 413
#define STRINGID_INFESTATION 414
#define STRINGID_PKMNINSNAPTRAP 415
#define STRINGID_THUNDERCAGETRAPPED 416
#define STRINGID_RESETSTARGETSSTATLEVELS 417
#define STRINGID_EXTREMESUNLIGHTFADED 418
#define STRINGID_HEAVYRAINLIFTED 419
#define STRINGID_STRONGWINDSDISSIPATED 420
#define STRINGID_SYMBIOSISITEMPASS 421
#define STRINGID_BURSTINGFLAMESHIT 422
#define STRINGID_BROKETHROUGHPROTECTION 423
#define STRINGID_FELLFORFEINT 424
#define STRINGID_SPECTRALTHIEFSTEAL 425
#define STRINGID_PKMNSABILITYSUPPRESSED 426
#define STRINGID_INCINERATEBURN 427
#define STRINGID_BUGBITE 428
#define STRINGID_BOTHCANNOLONGERESCAPE 429
#define STRINGID_ATTACKERLOSTFIRETYPE 430
#define STRINGID_ATTACKERLOSTELECTRICTYPE 431
#define STRINGID_ATTACKERLOSTITSTYPE 432
#define STRINGID_STEALTHROCKDMG 433
#define STRINGID_SHARPSTEELDMG 434
#define STRINGID_POINTEDSTONESFLOAT 435
#define STRINGID_SHARPSTEELFLOATS 436
#define STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP 437
#define STRINGID_AROMAVEILPROTECTED 438
#define STRINGID_PKMNPREVENTEDFROMHEALING 439
#define STRINGID_TERRAINBECOMESMISTY 440
#define STRINGID_TERRAINBECOMESGRASSY 441
#define STRINGID_TERRAINBECOMESELECTRIC 442
#define STRINGID_TERRAINBECOMESPSYCHIC 443
#define STRINGID_DIMENSIONSWERETWISTED 444
#define STRINGID_BIZARREARENACREATED 445
#define STRINGID_BIZARREAREACREATED 446
#define STRINGID_TAILWINDBLEW 447
#define STRINGID_ELECTRICTERRAINENDS 448
#define STRINGID_MISTYTERRAINENDS 449
#define STRINGID_PSYCHICTERRAINENDS 450
#define STRINGID_GRASSYTERRAINENDS 451
#define STRINGID_MOLDBREAKERENTERS 452
#define STRINGID_TERAVOLTENTERS 453
#define STRINGID_TURBOBLAZEENTERS 454
#define STRINGID_SLOWSTARTENTERS 455
#define STRINGID_UNNERVEENTERS 456
#define STRINGID_ANTICIPATIONACTIVATES 457
#define STRINGID_FOREWARNACTIVATES 458
#define STRINGID_PRESSUREENTERS 459
#define STRINGID_DARKAURAENTERS 460
#define STRINGID_FAIRYAURAENTERS 461
#define STRINGID_AURABREAKENTERS 462
#define STRINGID_COMATOSEENTERS 463
#define STRINGID_SCREENCLEANERENTERS 464
#define STRINGID_ASONEENTERS 465
#define STRINGID_CURIOUSMEDICINEENTERS 466
#define STRINGID_PASTELVEILENTERS 467
#define STRINGID_NEUTRALIZINGGASENTERS 468
#define STRINGID_BEINGHITCHARGEDPKMNWITHPOWER 469
#define STRINGID_IMPOSTERTRANSFORM 470
#define STRINGID_SNOWWARNINGHAIL 471
#define STRINGID_SNOWWARNINGSNOW 472
#define STRINGID_SUPERSWEETAROMAWAFTS 473
#define STRINGID_AIRLOCKACTIVATES 474
#define STRINGID_BATTLERABILITYRAISEDSTAT 475
#define STRINGID_EXTREMELYHARSHSUNLIGHT 476
#define STRINGID_HEAVYRAIN 477
#define STRINGID_MYSTERIOUSAIRCURRENT 478
#define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 479
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 480
#define STRINGID_ZEROTOHEROTRANSFORMATION 481
#define STRINGID_HOSPITALITYRESTORATION 482
#define STRINGID_HARVESTBERRY 483
#define STRINGID_BADDREAMSDMG 484
#define STRINGID_SOLARPOWERHPDROP 485
#define STRINGID_HEALERCURE 486
#define STRINGID_FETCHEDPOKEBALL 487
#define STRINGID_TARGETABILITYSTATLOWER 488
#define STRINGID_TARGETSTATWONTGOHIGHER 489
#define STRINGID_TARGETABILITYSTATRAISE 490
#define STRINGID_CUSEDBODYDISABLED 491
#define STRINGID_ATTACKERACQUIREDABILITY 492
#define STRINGID_SWAPPEDABILITIES 493
#define STRINGID_TARGETSSTATWASMAXEDOUT 494
#define STRINGID_PKMNSABILITYPREVENTSABILITY 495
#define STRINGID_AFTERMATHDMG 496
#define STRINGID_ILLUSIONWOREOFF 497
#define STRINGID_ASANDSTORMKICKEDUP 498
#define STRINGID_PKMNSWILLPERISHIN3TURNS 499
#define STRINGID_POISONSPIKESSCATTERED 500
#define STRINGID_OPPORTUNISTCOPIED 501
#define STRINGID_PKMNGOTOVERITSINFATUATION 502
#define STRINGID_PKMNSHOOKOFFTHETAUNT 503
#define STRINGID_SUNLIGHTACTIVATEDABILITY 504
#define STRINGID_STATWASHEIGHTENED 505
#define STRINGID_BATTLERTYPECHANGEDTO 506
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 507
#define STRINGID_FRISKACTIVATES 508
#define STRINGID_ATTACKERABILITYSTATRAISE 509
#define STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED 510
#define STRINGID_NORELIEFROMHEAVYRAIN 511
#define STRINGID_MYSTERIOUSAIRCURRENTBLOWSON 512
#define STRINGID_AURAFLAREDTOLIFE 513
#define STRINGID_ATKGOTOVERINFATUATION 514
#define STRINGID_TORMENTEDNOMORE 515
#define STRINGID_BUFFERENDS 516
#define STRINGID_HEALBLOCKEDNOMORE 517
#define STRINGID_MICLEBERRYACTIVATES 518
#define STRINGID_MIRRORHERBCOPIED 519
#define STRINGID_PKMNSITEMHEALEDFROSTBITE 520
#define STRINGID_AIRBALLOONFLOAT 521
#define STRINGID_EJECTBUTTONACTIVATE 522
#define STRINGID_HURTBYITEM 523
#define STRINGID_AIRBALLOONPOP 524
#define STRINGID_STICKYBARBTRANSFER 525
#define STRINGID_TEAMGAINEDEXP 526
#define STRINGID_PKMNFROSTBITEHEALED 527
#define STRINGID_STOCKPILEDEFFECTWOREOFF 528
#define STRINGID_FELLSTRAIGHTDOWN 529
#define STRINGID_TARGETWOKEUP 530
#define STRINGID_PKMNBURNHEALED 531
#define STRINGID_REDCARDACTIVATE 532
#define STRINGID_MOVEBLOCKEDBYDYNAMAX 533
#define STRINGID_ITEMCANNOTBEREMOVED 534
#define STRINGID_ZMOVERESETSSTATS 535
#define STRINGID_ZMOVEZBOOSTCRIT 536
#define STRINGID_ZMOVERESTOREHP 537
#define STRINGID_ZMOVESTATUP 538
#define STRINGID_ZMOVEHPTRAP 539
#define STRINGID_ZMOVEALLSTATSUP 540
#define STRINGID_PKMNREVERTEDTOPRIMAL 541
#define STRINGID_HEALINGWISHHEALED 542
#define STRINGID_TOXICSPIKESABSORBED 543
#define STRINGID_TOXICSPIKESPOISONED 544
#define STRINGID_STICKYWEBSWITCHIN 545
#define STRINGID_HEALINGWISHCAMETRUE 546
#define STRINGID_LUNARDANCECAMETRUE 547
#define STRINGID_SPIKESDISAPPEAREDFROMTEAM 548
#define STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM 549
#define STRINGID_STICKYWEBDISAPPEAREDFROMTEAM 550
#define STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM 551
#define STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM 552
#define STRINGID_LASTABILITYRAISEDSTAT 553
#define STRINGID_RECEIVERABILITYTAKEOVER 554
#define STRINGID_NEUTRALIZINGGASOVER 555
#define STRINGID_ATTACKERBECAMEFULLYCHARGED 556
#define STRINGID_ATTACKERBECAMEASHSPECIES 557
#define STRINGID_PROTECTEDTEAM 558
#define STRINGID_ELECTRICTERRAINPREVENTS 559
#define STRINGID_MISTYTERRAINPREVENTS 560
#define STRINGID_PSYCHICTERRAINPREVENTS 561
#define STRINGID_FLOWERVEILPROTECTED 562
#define STRINGID_DRASTICALLY 563
#define STRINGID_SEVERELY 564
#define STRINGID_CLEARAMULETWONTLOWERSTATS 565
#define STRINGID_CELEBRATEMESSAGE 566
#define STRINGID_PKMNBLEWAWAYTOXICSPIKES 567
#define STRINGID_PKMNBLEWAWAYSTICKYWEB 568
#define STRINGID_PKMNBLEWAWAYSTEALTHROCK 569
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 570
#define STRINGID_PKMNGOTFROSTBITE 571
#define BATTLESTRINGS_COUNT 389
#define BATTLESTRINGS_COUNT 572
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
@ -472,6 +656,7 @@
#define B_MSG_PROTECTED_ITSELF 0
#define B_MSG_BRACED_ITSELF 1
#define B_MSG_PROTECT_FAILED 2
#define B_MSG_PROTECTED_TEAM 3
// gRestUsedStringIds
#define B_MSG_REST 0
@ -544,6 +729,10 @@
#define B_MSG_SOMEONES_BOX_FULL 2
#define B_MSG_BILLS_BOX_FULL 3
// gPrimalWeatherBlocksStringIds
#define B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN 0
#define B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN 1
// gInobedientStringIds
#define B_MSG_LOAFING 0
#define B_MSG_WONT_OBEY 1
@ -590,6 +779,93 @@
#define B_MSG_DEFROSTED 0
#define B_MSG_DEFROSTED_BY_MOVE 1
#define NUM_TRAPPING_MOVES 6
// gFrostbiteHealedStringIds
#define B_MSG_FROSTBITE_HEALED 0
#define B_MSG_FROSTBITE_HEALED_BY_MOVE 1
// gSwitchInAbilityStringIds
#define B_MSG_SWITCHIN_MOLDBREAKER 0
#define B_MSG_SWITCHIN_TERAVOLT 1
#define B_MSG_SWITCHIN_TURBOBLAZE 2
#define B_MSG_SWITCHIN_SLOWSTART 3
#define B_MSG_SWITCHIN_UNNERVE 4
#define B_MSG_SWITCHIN_ANTICIPATION 5
#define B_MSG_SWITCHIN_FOREWARN 6
#define B_MSG_SWITCHIN_PRESSURE 7
#define B_MSG_SWITCHIN_DARKAURA 8
#define B_MSG_SWITCHIN_FAIRYAURA 9
#define B_MSG_SWITCHIN_AURABREAK 10
#define B_MSG_SWITCHIN_COMATOSE 11
#define B_MSG_SWITCHIN_SCREENCLEANER 12
#define B_MSG_SWITCHIN_ASONE 13
#define B_MSG_SWITCHIN_CURIOUS_MEDICINE 14
#define B_MSG_SWITCHIN_PASTEL_VEIL 15
#define B_MSG_SWITCHIN_NEUTRALIZING_GAS 16
// gMentalHerbCureStringIds
#define B_MSG_MENTALHERBCURE_INFATUATION 0
#define B_MSG_MENTALHERBCURE_TAUNT 1
#define B_MSG_MENTALHERBCURE_ENCORE 2
#define B_MSG_MENTALHERBCURE_TORMENT 3
#define B_MSG_MENTALHERBCURE_HEALBLOCK 4
#define B_MSG_MENTALHERBCURE_DISABLE 5
// gTerrainPreventsStringIds
#define B_MSG_TERRAINPREVENTS_MISTY 0
#define B_MSG_TERRAINPREVENTS_ELECTRIC 1
#define B_MSG_TERRAINPREVENTS_PSYCHIC 2
// gTerrainStringIds
#define B_MSG_TERRAIN_SET_MISTY 0
#define B_MSG_TERRAIN_SET_ELECTRIC 1
#define B_MSG_TERRAIN_SET_PSYCHIC 2
#define B_MSG_TERRAIN_SET_GRASSY 3
#define B_MSG_TERRAIN_END_MISTY 4
#define B_MSG_TERRAIN_END_ELECTRIC 5
#define B_MSG_TERRAIN_END_PSYCHIC 6
#define B_MSG_TERRAIN_END_GRASSY 7
#define B_MSG_TERRAIN_COUNT 8
// gStartingStatusStringIds
#define B_MSG_TERRAIN_SET_MISTY 0
#define B_MSG_TERRAIN_SET_ELECTRIC 1
#define B_MSG_TERRAIN_SET_PSYCHIC 2
#define B_MSG_TERRAIN_SET_GRASSY 3
#define B_MSG_SET_TRICK_ROOM 4
#define B_MSG_SET_MAGIC_ROOM 5
#define B_MSG_SET_WONDER_ROOM 6
#define B_MSG_SET_TAILWIND_PLAYER 7
#define B_MSG_SET_TAILWIND_OPPONENT 8
#define B_MSG_STARTING_STATUS_COUNT 9
// gWrappedStringIds
#define B_MSG_WRAPPED_BIND 0
#define B_MSG_WRAPPED_WRAP 1
#define B_MSG_WRAPPED_FIRE_SPIN 2
#define B_MSG_WRAPPED_CLAMP 3
#define B_MSG_WRAPPED_WHIRLPOOL 4
#define B_MSG_WRAPPED_SAND_TOMB 5
#define B_MSG_WRAPPED_MAGMA_STORM 6
#define B_MSG_WRAPPED_INFESTATION 7
#define B_MSG_WRAPPED_SNAP_TRAP 8
#define B_MSG_WRAPPED_THUNDER_CAGE 9
#define NUM_TRAPPING_MOVES 10
// z effects (gZEffectStringIds)
#define B_MSG_Z_RESET_STATS 0
#define B_MSG_Z_ALL_STATS_UP 1
#define B_MSG_Z_BOOST_CRITS 2
#define B_MSG_Z_FOLLOW_ME 3
#define B_MSG_Z_RECOVER_HP 4
#define B_MSG_Z_STAT_UP 5
#define B_MSG_Z_HP_TRAP 6
// gDmgHazardsStringIds
#define B_MSG_PKMNHURTBYSPIKES 0
#define B_MSG_STEALTHROCKDMG 1
#define B_MSG_SHARPSTEELDMG 2
#define B_MSG_POINTEDSTONESFLOAT 3
#define B_MSG_SPIKESSCATTERED 4
#define B_MSG_SHARPSTEELFLOATS 5
#endif // GUARD_BATTLE_STRING_IDS_H

View File

@ -0,0 +1,38 @@
#ifndef GUARD_Z_MOVE_EFFECTS_H
#define GUARD_Z_MOVE_EFFECTS_H
#define Z_EFFECT_NONE 0
#define Z_EFFECT_RESET_STATS 1
#define Z_EFFECT_ALL_STATS_UP_1 2
#define Z_EFFECT_BOOST_CRITS 3
#define Z_EFFECT_FOLLOW_ME 4
#define Z_EFFECT_CURSE 5
#define Z_EFFECT_RECOVER_HP 6
#define Z_EFFECT_RESTORE_REPLACEMENT_HP 7
#define Z_EFFECT_ATK_UP_1 8
#define Z_EFFECT_DEF_UP_1 9
#define Z_EFFECT_SPD_UP_1 10
#define Z_EFFECT_SPATK_UP_1 11
#define Z_EFFECT_SPDEF_UP_1 12
#define Z_EFFECT_ACC_UP_1 13
#define Z_EFFECT_EVSN_UP_1 14
#define Z_EFFECT_ATK_UP_2 15
#define Z_EFFECT_DEF_UP_2 16
#define Z_EFFECT_SPD_UP_2 17
#define Z_EFFECT_SPATK_UP_2 18
#define Z_EFFECT_SPDEF_UP_2 19
#define Z_EFFECT_ACC_UP_2 20
#define Z_EFFECT_EVSN_UP_2 21
#define Z_EFFECT_ATK_UP_3 22
#define Z_EFFECT_DEF_UP_3 23
#define Z_EFFECT_SPD_UP_3 24
#define Z_EFFECT_SPATK_UP_3 25
#define Z_EFFECT_SPDEF_UP_3 26
#define Z_EFFECT_ACC_UP_3 27
#define Z_EFFECT_EVSN_UP_3 28
#endif // GUARD_Z_MOVE_EFFECTS_H

View File

@ -0,0 +1,123 @@
#ifndef GUARD_CONSTANTS_FORM_CHANGE_TYPES_H
#define GUARD_CONSTANTS_FORM_CHANGE_TYPES_H
// FORM_CHANGE_BATTLE_HP_PERCENT param2 arguments
#define HP_HIGHER_THAN 1
#define HP_LOWER_EQ_THAN 2
// FORM_CHANGE_MOVE param2 Arguments
#define WHEN_LEARNED 0
#define WHEN_FORGOTTEN 1
// FORM_CHANGE_ITEM_USE param2 Arguments
#define DAY 1
#define NIGHT 2
#define FUSION_TERMINATOR 0xFF
#define FORM_CHANGE_TERMINATOR 0
// Form change that activates when the specified item is given to or taken from the selected Pokémon.
// param1: item to hold.
// param2: ability to check for, optional.
#define FORM_CHANGE_ITEM_HOLD 1
// Form change that activates when the item is used on the selected Pokémon.
// param1: item to use
// param2: time of day to check, optional.
// - DAY if Form change that activates in the daytime.
// - NIGHT if Form change that activates at nighttime.
#define FORM_CHANGE_ITEM_USE 2
// TODO: Form change that activates when the Pokémon learns or forgets the move.
// param1: move to check for
// param2:
// - WHEN_LEARNED if Form change that activates when move is forgotten
// - WHEN_FORGOTTEN if Form change that activates when move is learned
#define FORM_CHANGE_MOVE 3
// Form change that activates when the Pokémon is withdrawn from the PC or Daycare.
// Daycare withdraw done, PC withdraw TODO.
// - No parameters.
#define FORM_CHANGE_WITHDRAW 4
// Form change that activates when the Pokémon faints, either in battle or in the overworld by poison.
// If species is not specified and it's on the player's side, it will try to use the value
// saved in gBattleStruct->changedSpecies from a previous form change.
// - No parameters.
#define FORM_CHANGE_FAINT 5
// Form change that activates when the Pokémon is sent out at the beginning of a battle
// param1: item to hold, optional
// param2: a move that will be replaced, optional
// param3: a new move to replace it with, optional
#define FORM_CHANGE_BEGIN_BATTLE 6
// Form change that activates at the end of a battle. If species is not specified and it's on the player's side, it will try to use the value saved in gBattleStruct->changedSpecies from a previous form change.
// param1: item to hold, optional
// param2: a move that will be replaced, optional
// param3: a new move to replace it with, optional
#define FORM_CHANGE_END_BATTLE 7
// Form change that activates at the end of a battle based on the terrain if it participated in the battle and hasn't fainted. Takes priority over FORM_CHANGE_END_BATTLE.
// param1: battle terrain to check.
#define FORM_CHANGE_END_BATTLE_TERRAIN 8
// Form change that activates when the Pokémon is switched out in battle.
// - No parameters.
#define FORM_CHANGE_BATTLE_SWITCH 9
// Form change that activates when the Pokémon's HP % passes a certain threshold.
// param1: Ability to check.
// param2: HP comparer
// - HP_HIGHER_THAN if the form triggers when the current HP is higher than the specified threshold.
// - HP_LOWER_EQ_THAN if the form triggers when the current HP is lower or equal than the specified threshold.
// param3: HP percentage threshold.
#define FORM_CHANGE_BATTLE_HP_PERCENT 10
// Form change that activates when the mon has the defined item.
// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move.
// param1: item to hold.
#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_ITEM 11
// Form change that activates when the mon has the defined move.
// If it's on the player's side, it also requires ITEM_MEGA_RING in the user's bag and for the player to trigger it by pressing START before selecting a move.
// param1: move to have.
#define FORM_CHANGE_BATTLE_MEGA_EVOLUTION_MOVE 12
// Form change that activates automatically when entering battle with the specified item.
// If the item is a Red Orb, it uses the Omega Symbol for the animation and icon. Otherwise, it defaults to the Alpha symbol.
// The battle indicator icon is based on the species, with Primal Groudon's as Omega and otherwise being Alpha.
// param1: item to hold.
#define FORM_CHANGE_BATTLE_PRIMAL_REVERSION 13
// Form change that activates when a specific weather is set during battle.
// param1: weather to check
// param2: (optional) revert if specified ability is lost
#define FORM_CHANGE_BATTLE_WEATHER 14
// Form change that activates automatically when the turn ends.
// param1: ability to check.
#define FORM_CHANGE_BATTLE_TURN_END 15
// Form change that activates when the mon has the defined item.
// If it's on the player's side, it also requires for the player to trigger it by pressing START before selecting a move.
// param1: item to hold.
#define FORM_CHANGE_BATTLE_ULTRA_BURST 16
// Form change that activates when the mon Dynamaxes (TODO: with Gigantamax factor).
// - No parameters
#define FORM_CHANGE_BATTLE_GIGANTAMAX 17
// Form change that activates at a certain time of day in the overworld automatically.
// param1: time of day to check.
// - DAY if Form change that activates in the daytime.
// - NIGHT if Form change that activates at nighttime.
#define FORM_CHANGE_TIME_OF_DAY 18
// Form change that depends on a multichoice (e.g. Rotom Catalog).
// param1: multichoice list (starting at 0).
#define FORM_CHANGE_ITEM_USE_MULTICHOICE 19
// Form change that activates when inflicted with a specific status
// param1: status
#define FORM_CHANGE_STATUS 20
#endif // GUARD_CONSTANTS_FORM_CHANGE_TYPES_H

View File

@ -36,6 +36,10 @@
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
#endif
// party sizes
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE (PARTY_SIZE / 2)
// capacities of various saveblock objects
#define DAYCARE_MON_COUNT 2
#define PC_ITEMS_COUNT 30
@ -83,8 +87,7 @@
#define TRAINER_ID_LENGTH 4
#define MAX_MON_MOVES 4
#define PARTY_SIZE 6
#define MULTI_PARTY_SIZE (PARTY_SIZE / 2)
#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1)
#define QUEST_LOG_SCENE_COUNT 4

View File

@ -4,39 +4,74 @@
#define ITEM_NONE 0
// Poké Balls
#define ITEM_MASTER_BALL 1
#define ITEM_ULTRA_BALL 2
#define ITEM_GREAT_BALL 3
#define ITEM_POKE_BALL 4
#define ITEM_SAFARI_BALL 5
#define ITEM_NET_BALL 6
#define ITEM_DIVE_BALL 7
#define ITEM_POKE_BALL 1
#define ITEM_GREAT_BALL 2
#define ITEM_ULTRA_BALL 3
#define ITEM_MASTER_BALL 4
#define ITEM_PREMIER_BALL 5
#define ITEM_HEAL_BALL 6
#define ITEM_NET_BALL 7
#define ITEM_NEST_BALL 8
#define ITEM_REPEAT_BALL 9
#define ITEM_TIMER_BALL 10
#define ITEM_LUXURY_BALL 11
#define ITEM_PREMIER_BALL 12
#define ITEM_HEAL_BALL 13
#define ITEM_DUSK_BALL 14
#define ITEM_QUICK_BALL 15
#define ITEM_LEVEL_BALL 16
#define ITEM_LURE_BALL 17
#define ITEM_MOON_BALL 18
#define ITEM_FRIEND_BALL 19
#define ITEM_LOVE_BALL 20
#define ITEM_FAST_BALL 21
#define ITEM_HEAVY_BALL 22
#define ITEM_DREAM_BALL 23
#define ITEM_DIVE_BALL 9
#define ITEM_DUSK_BALL 10
#define ITEM_TIMER_BALL 11
#define ITEM_QUICK_BALL 12
#define ITEM_REPEAT_BALL 13
#define ITEM_LUXURY_BALL 14
#define ITEM_LEVEL_BALL 15
#define ITEM_LURE_BALL 16
#define ITEM_MOON_BALL 17
#define ITEM_FRIEND_BALL 18
#define ITEM_LOVE_BALL 19
#define ITEM_FAST_BALL 20
#define ITEM_HEAVY_BALL 21
#define ITEM_DREAM_BALL 22
#define ITEM_SAFARI_BALL 23
#define ITEM_SPORT_BALL 24
#define ITEM_PARK_BALL 25
#define ITEM_BEAST_BALL 26
#define ITEM_CHERISH_BALL 27
#define ITEM_CHERISH_BALL 27 // TODO: throwing CHERISH_BALL restarts game, intended?
// Note: If moving ball IDs around, updating FIRST_BALL/LAST_BALL is not sufficient
// Several places expect the ball IDs to be first and contiguous (e.g. MON_DATA_POKEBALL)
// If adding new balls, it's easiest to insert them after the last ball and increment the below IDs (and removing ITEM_034 for example)
#define FIRST_BALL ITEM_MASTER_BALL
#define LAST_BALL ITEM_PREMIER_BALL
#define FIRST_BALL ITEM_POKE_BALL
#define LAST_BALL ITEM_CHERISH_BALL
// // Poké Balls
// #define ITEM_MASTER_BALL 1
// #define ITEM_ULTRA_BALL 2
// #define ITEM_GREAT_BALL 3
// #define ITEM_POKE_BALL 4
// #define ITEM_SAFARI_BALL 5
// #define ITEM_NET_BALL 6
// #define ITEM_DIVE_BALL 7
// #define ITEM_NEST_BALL 8
// #define ITEM_REPEAT_BALL 9
// #define ITEM_TIMER_BALL 10
// #define ITEM_LUXURY_BALL 11
// #define ITEM_PREMIER_BALL 12
// #define ITEM_HEAL_BALL 13
// #define ITEM_DUSK_BALL 14
// #define ITEM_QUICK_BALL 15
// #define ITEM_LEVEL_BALL 16
// #define ITEM_LURE_BALL 17
// #define ITEM_MOON_BALL 18
// #define ITEM_FRIEND_BALL 19
// #define ITEM_LOVE_BALL 20
// #define ITEM_FAST_BALL 21
// #define ITEM_HEAVY_BALL 22
// #define ITEM_DREAM_BALL 23
// #define ITEM_SPORT_BALL 24
// #define ITEM_PARK_BALL 25
// #define ITEM_BEAST_BALL 26
// #define ITEM_CHERISH_BALL 27
// // Note: If moving ball IDs around, updating FIRST_BALL/LAST_BALL is not sufficient
// // Several places expect the ball IDs to be first and contiguous (e.g. MON_DATA_POKEBALL)
// // If adding new balls, it's easiest to insert them after the last ball and increment the below IDs (and removing ITEM_034 for example)
// #define FIRST_BALL ITEM_MASTER_BALL
// #define LAST_BALL ITEM_CHERISH_BALL
// Medicine
#define ITEM_POTION 28

View File

@ -70,8 +70,8 @@
#define PARTY_ACTION_CANT_SWITCH 2
#define PARTY_ACTION_USE_ITEM 3
#define PARTY_ACTION_ABILITY_PREVENTS 4
#define PARTY_ACTION_GIVE_ITEM 5
#define PARTY_ACTION_GIVE_PC_ITEM 6
#define PARTY_ACTION_GIVE_ITEM 5
#define PARTY_ACTION_GIVE_PC_ITEM 6 // Unused. Not possible to give non-mail items directly from PC
#define PARTY_ACTION_GIVE_MAILBOX_MAIL 7
#define PARTY_ACTION_SWITCH 8
#define PARTY_ACTION_SWITCHING 9
@ -79,7 +79,8 @@
#define PARTY_ACTION_CHOOSE_AND_CLOSE 11
#define PARTY_ACTION_MOVE_TUTOR 12
#define PARTY_ACTION_MINIGAME 13
#define PARTY_ACTION_REUSABLE_ITEM 14
#define PARTY_ACTION_REUSABLE_ITEM 14 // Unused. The only reusable items are handled separately
#define PARTY_ACTION_CHOOSE_FAINTED_MON 15 // TODO: Party actions
// IDs for DisplayPartyMenuStdMessage, to display the message at the bottom of the party menu
#define PARTY_MSG_CHOOSE_MON 0

View File

@ -136,11 +136,16 @@
#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 8
#define FRIENDSHIP_EVENT_FAINT_LARGE 9
#if P_UPDATED_FRIENDSHIP >= GEN_8
#define STANDARD_FRIENDSHIP 50
#else
#define STANDARD_FRIENDSHIP 70
#endif
// Constants for GetBattlerAffectionHearts (based on friendship value)
#define AFFECTION_NO_HEARTS 0 // 0-79 friendship
#define AFFECTION_ONE_HEART 1 // 80-129 friendship
#define AFFECTION_TWO_HEARTS 2 // 130-179 friendship
#define AFFECTION_THREE_HEARTS 3 // 180-219 friendship
#define AFFECTION_FOUR_HEARTS 4 // 220-254 friendship
#define AFFECTION_FIVE_HEARTS 5 // Max friendship
// Friendship value that the majority of species use.
#define STANDARD_FRIENDSHIP ((P_UPDATED_FRIENDSHIP >= GEN_8) ? 50 : 70)
#define MAX_FRIENDSHIP 255
#define MAX_SHEEN 255
@ -153,6 +158,11 @@
#define MAX_TOTAL_EVS 510
#define EV_ITEM_RAISE_LIMIT ((I_VITAMIN_EV_CAP >= GEN_8) ? MAX_PER_STAT_EVS : 100)
// Move category defines.
#define DAMAGE_CATEGORY_PHYSICAL 0
#define DAMAGE_CATEGORY_SPECIAL 1
#define DAMAGE_CATEGORY_STATUS 2
// Battle move flags
#define FLAG_MAKES_CONTACT (1 << 0)
#define FLAG_PROTECT_AFFECTED (1 << 1)
@ -253,6 +263,11 @@
// - Deoxys has 2 frames, 1 for each form
#define MAX_MON_PIC_FRAMES 4
#define BATTLE_ALIVE_EXCEPT_BATTLER 0
#define BATTLE_ALIVE_SIDE 1
#define SKIP_FRONT_ANIM (1 << 7)
// used by ShouldIgnoreDeoxysForm
#define DEOXYS_CHECK_BATTLE_SPRITE 1
#define DEOXYS_CHECK_TRADE_MAIN 3

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,7 @@
#define GUARD_DATA_H
#include "global.h"
#include "constants/trainers.h"
#define SPECIES_SHINY_TAG 500
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
@ -23,6 +24,13 @@ extern const u8 gMoveNames[][MOVE_NAME_LENGTH + 1];
extern const u8 gTrainerClassNames[][13];
static inline u16 SanitizeTrainerId(u16 trainerId)
{
if (trainerId >= NUM_TRAINERS)
return TRAINER_NONE;
return trainerId;
}
// extern const struct MonCoords gMonFrontPicCoords[];
// extern const struct CompressedSpriteSheet gMonFrontPicTable[];
// extern const struct MonCoords gMonBackPicCoords[];
@ -41,8 +49,6 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
extern const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow;
extern const struct SpriteTemplate gSpriteTemplate_EnemyShadow;
extern const u8 gEnemyMonElevation[NUM_SPECIES];
extern const u8 *const gBattleAnims_General[];
extern const u8 *const gBattleAnims_Special[];
@ -63,4 +69,9 @@ extern const struct SpriteFrameImage gTrainerBackPicTable_RSMay[];
extern const union AnimCmd sAnim_GeneralFrame0[];
// static inline const struct TrainerMon *GetTrainerPartyFromId(u16 trainerId)
// {
// return gTrainers[SanitizeTrainerId(trainerId)].party;
// }
#endif // GUARD_DATA_H

81
include/fpmath.h Normal file
View File

@ -0,0 +1,81 @@
#ifndef FPMATH_H_
#define FPMATH_H_
typedef s16 q4_12_t;
typedef u32 uq4_12_t;
#define Q_4_12_SHIFT (12)
#define UQ_4_12_SHIFT (12)
// Converts a number to Q8.8 fixed-point format
#define Q_8_8(n) ((s16)((n) * 256))
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((q4_12_t)((n) * 4096))
#define UQ_4_12(n) ((uq4_12_t)((n) * 4096))
// Converts a number to Q24.8 fixed-point format
#define Q_24_8(n) ((s32)((n) << 8))
// Converts a Q8.8 fixed-point format number to a regular integer
#define Q_8_8_TO_INT(n) ((s32)((n) / 256))
// Converts a Q4.12 fixed-point format number to a regular integer
#define Q_4_12_TO_INT(n) ((s32)((n) / 4096))
#define UQ_4_12_TO_INT(n) ((u32)((n) / 4096))
// Converts a Q24.8 fixed-point format number to a regular integer
#define Q_24_8_TO_INT(n) ((s32)((n) >> 8))
// Rounding value for Q4.12 fixed-point format
#define Q_4_12_ROUND ((1) << (Q_4_12_SHIFT - 1))
#define UQ_4_12_ROUND ((1) << (UQ_4_12_SHIFT - 1))
// Basic arithmetic for fixed point number formats
// Consumers should use encapsulated functions where possible
// FP API does not provide sanity checks against overflows
static inline uq4_12_t uq4_12_add(uq4_12_t a, uq4_12_t b)
{
return a + b;
}
static inline uq4_12_t uq4_12_subtract(uq4_12_t a, uq4_12_t b)
{
return a - b;
}
static inline uq4_12_t uq4_12_multiply(uq4_12_t a, uq4_12_t b)
{
u32 product = (u32) a * b;
return (product + UQ_4_12_ROUND) >> UQ_4_12_SHIFT;
}
static inline uq4_12_t uq4_12_multiply_half_down(uq4_12_t a, uq4_12_t b)
{
u32 product = (u32) a * b;
return (product + UQ_4_12_ROUND - 1) >> UQ_4_12_SHIFT;
}
static inline uq4_12_t uq4_12_divide(uq4_12_t dividend, uq4_12_t divisor)
{
if (divisor == UQ_4_12(0.0)) return UQ_4_12(0);
return (dividend << UQ_4_12_SHIFT) / divisor;
}
// Multiplies value by the UQ_4_12 number modifier.
// Returns an integer, rounded to nearest (rounding down on n.5)
static inline u32 uq4_12_multiply_by_int_half_down(uq4_12_t modifier, u32 value)
{
return UQ_4_12_TO_INT((modifier * value) + UQ_4_12_ROUND - 1);
}
// Multiplies value by the UQ_4_12 number modifier.
// Returns an integer, rounded to nearest (rounding up on n.5)
static inline u32 uq4_12_multiply_by_int_half_up(uq4_12_t modifier, u32 value)
{
return UQ_4_12_TO_INT((modifier * value) + UQ_4_12_ROUND);
}
#endif // FPMATH_H_

View File

@ -4,6 +4,8 @@
#include "config.h"
#include "gba/gba.h"
#include <string.h>
#include "fpmath.h"
#include "metaprogram.h"
#include "constants/global.h"
#include "constants/flags.h"
#include "constants/vars.h"
@ -51,13 +53,13 @@
#define Q_8_8(n) ((s16)((n) * 256))
// Converts a number from Q8.8 fixed-point format
#define Q_8_8_TO_INT(n) ((s16)((n) >> 8))
// #define Q_8_8_TO_INT(n) ((s16)((n) >> 8))
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
// #define Q_4_12(n) ((s16)((n) * 4096))
// Converts a number from Q4.12 fixed-point format
#define Q_4_12_TO_INT(n) ((s16)((n) >> 12))
// #define Q_4_12_TO_INT(n) ((s16)((n) >> 12))
// Converts a number to QN.S fixed-point format (16-bits)
#define Q_N_S(s, n) ((s16)((n) * (1 << (s))))
@ -86,6 +88,12 @@
#define SAFE_DIV(a, b) ((a) / (b))
#endif
// The below macro does a%n, but (to match) will switch to a&(n-1) if n is a power of 2.
// There are cases where GF does a&(n-1) where we would really like to have a%n, because
// if n is changed to a value that isn't a power of 2 then a&(n-1) is unlikely to work as
// intended, and a%n for powers of 2 isn't always optimized to use &.
#define MOD(a, n)(((n) & ((n)-1)) ? ((a) % (n)) : ((a) & ((n)-1)))
// Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
@ -132,25 +140,27 @@ extern u8 gStringVar4[];
#define NUM_ADDITIONAL_PHRASE_BYTES ROUND_BITS_TO_BYTES(NUM_ADDITIONAL_PHRASES)
// Calls m0/m1/.../m8 depending on how many arguments are passed.
#define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__)
// #define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__)
// This returns the number of arguments passed to it (up to 8).
#define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N
// #define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
// #define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N
#define CAT(a, b) CAT_(a, b)
#define CAT_(a, b) a ## b
// #define CAT(a, b) CAT_(a, b)
// #define CAT_(a, b) a ## b
#define STR(a) STR_(a)
#define STR_(a) #a
// #define STR(a) STR_(a)
// #define STR_(a) #a
// Converts a string to a compound literal, essentially making it a pointer to const u8
#define COMPOUND_STRING(str) (const u8[]) _(str)
// #define COMPOUND_STRING(str) (const u8[]) _(str)
// This produces an error at compile-time if expr is zero.
// It looks like file.c:line: size of array `id' is negative
#define STATIC_ASSERT(expr, id) typedef char id[(expr) ? 1 : -1];
#define FEATURE_FLAG_ASSERT(flag, id) STATIC_ASSERT(flag > TEMP_FLAGS_END || flag == 0, id)
struct Coords8
{
s8 x;

View File

@ -70,6 +70,7 @@ u8 ItemId_GetType(u16 itemId);
ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
u8 ItemId_GetBattleUsage(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u32 ItemId_GetFlingPower(u32 itemId);
u16 ItemId_GetPrice(u16 itemId);
void ClearBag(void);
void ClearPCItemSlots(void);

143
include/metaprogram.h Normal file
View File

@ -0,0 +1,143 @@
/* Macros to aid with metaprogramming. */
#ifndef METAPROGRAM_H
#define METAPROGRAM_H
/* Check if VA_OPT_ is supported by the compiler. GCC's version should be at least 9.5*/
#define PP_THIRD_ARG(a,b,c,...) c
#define VA_OPT_SUPPORTED_I(...) PP_THIRD_ARG(__VA_OPT__(,),TRUE,FALSE,)
#define VA_OPT_SUPPORTED VA_OPT_SUPPORTED_I(?)
#if !VA_OPT_SUPPORTED
#error ERROR: VA_OPT__ is not supported. Please update your gcc compiler to version 10 or higher
#endif // VA_OPT_SUPPORTED
/* Calls m0/m1/.../m8 depending on how many arguments are passed. */
#define VARARG_8(m, ...) CAT(m, NARG_8(__VA_ARGS__))(__VA_ARGS__)
/* Returns the number of arguments passed to it (up to 8). */
#define NARG_8(...) NARG_8_(_, ##__VA_ARGS__, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define NARG_8_(_, a, b, c, d, e, f, g, h, N, ...) N
/* Expands 'a' and 'b' and then concatenates them. */
#define CAT(a, b) CAT_(a, b)
#define CAT_(a, b) a ## b
/* Expands '__VA_ARGS__' and then stringizes them. */
#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)
/* Expands to the first/second/third/fourth argument. */
#define FIRST(a, ...) a
#define SECOND(a, ...) __VA_OPT__(FIRST(__VA_ARGS__))
#define THIRD(a, ...) __VA_OPT__(SECOND(__VA_ARGS__))
#define FOURTH(a, ...) __VA_OPT__(THIRD(__VA_ARGS__))
/* Expands to everything but the first x arguments */
#define EXCEPT_1(a, ...) __VA_OPT__(__VA_ARGS__)
#define EXCEPT_2(a, ...) __VA_OPT__(EXCEPT_1(__VA_ARGS__))
#define EXCEPT_3(a, ...) __VA_OPT__(EXCEPT_2(__VA_ARGS__))
#define EXCEPT_4(a, ...) __VA_OPT__(EXCEPT_3(__VA_ARGS__))
/* 'UNPACK (x, y, z)' expands to 'x, y, z'.
* Useful for passing arguments which may contain commas into a macro. */
#define UNPACK(...) __VA_ARGS__
/* Expands to 'macro(...args, ...)'. */
#define INVOKE_WITH(macro, args, ...) INVOKE_WITH_(macro, UNPACK args __VA_OPT__(, __VA_ARGS__))
#define INVOKE_WITH_(macro, ...) macro(__VA_ARGS__)
/* Recursive macros.
* Based on https://www.scs.stanford.edu/~dm/blog/va-opt.html
*
* Macros prefixed with R_ are recursive, to correctly expand them the
* top-level macro which references them should use 'RECURSIVELY' around
* them. 'RECURSIVELY' cannot be nested, hence the top-level macro must
* use it so that a recursive macro is able to reference another
* recursive macro. */
#define RECURSIVELY(...) RECURSIVELY_4(RECURSIVELY_4(RECURSIVELY_4(RECURSIVELY_4(__VA_ARGS__))))
#define RECURSIVELY_4(...) RECURSIVELY_3(RECURSIVELY_3(RECURSIVELY_3(RECURSIVELY_3(__VA_ARGS__))))
#define RECURSIVELY_3(...) RECURSIVELY_2(RECURSIVELY_2(RECURSIVELY_2(RECURSIVELY_2(__VA_ARGS__))))
#define RECURSIVELY_2(...) RECURSIVELY_1(RECURSIVELY_1(RECURSIVELY_1(RECURSIVELY_1(__VA_ARGS__))))
#define RECURSIVELY_1(...) __VA_ARGS__
/* Useful for deferring expansion until the second scan. See
* https://www.scs.stanford.edu/~dm/blog/va-opt.html for more info. */
#define PARENS ()
/* Expands to 'macro(a)' for each 'a' in '...' */
#define R_FOR_EACH(macro, ...) __VA_OPT__(R_FOR_EACH_(macro, __VA_ARGS__))
#define R_FOR_EACH_(macro, a, ...) macro(a) __VA_OPT__(R_FOR_EACH_P PARENS (macro, __VA_ARGS__))
#define R_FOR_EACH_P() R_FOR_EACH_
/* Expands to 'macro(...args, a)' for each 'a' in '...'. */
#define R_FOR_EACH_WITH(macro, args, ...) __VA_OPT__(R_FOR_EACH_WITH_(macro, args, __VA_ARGS__))
#define R_FOR_EACH_WITH_(macro, args, a, ...) INVOKE_WITH(macro, args, a) __VA_OPT__(R_FOR_EACH_WITH_P PARENS (macro, args, __VA_ARGS__))
#define R_FOR_EACH_WITH_P() R_FOR_EACH_WITH_
/* Picks the xth VA_ARG if it exists, otherwise returns a default value */
#define DEFAULT(_default, ...) FIRST(__VA_OPT__(__VA_ARGS__, ) _default)
#define DEFAULT_2(_default, ...) DEFAULT(_default __VA_OPT__(, SECOND(__VA_ARGS__)))
#define DEFAULT_3(_default, ...) DEFAULT(_default __VA_OPT__(, THIRD(__VA_ARGS__)))
#define DEFAULT_4(_default, ...) DEFAULT(_default __VA_OPT__(, FOURTH(__VA_ARGS__)))
/* (Credit to MGriffin) A rather monstrous way of finding the set bit in a word.
Invalid input causes a compiler error. Sample: https://cexplore.karathan.at/z/x1hm7B */
#define BIT_INDEX(n) \
(n) == (1 << 0) ? 0 : \
(n) == (1 << 1) ? 1 : \
(n) == (1 << 2) ? 2 : \
(n) == (1 << 3) ? 3 : \
(n) == (1 << 4) ? 4 : \
(n) == (1 << 5) ? 5 : \
(n) == (1 << 6) ? 6 : \
(n) == (1 << 7) ? 7 : \
(n) == (1 << 8) ? 8 : \
(n) == (1 << 9) ? 9 : \
(n) == (1 << 10) ? 10 : \
(n) == (1 << 11) ? 11 : \
(n) == (1 << 12) ? 12 : \
(n) == (1 << 13) ? 13 : \
(n) == (1 << 14) ? 14 : \
(n) == (1 << 15) ? 15 : \
(n) == (1 << 16) ? 16 : \
(n) == (1 << 17) ? 17 : \
(n) == (1 << 18) ? 18 : \
(n) == (1 << 19) ? 19 : \
(n) == (1 << 20) ? 20 : \
(n) == (1 << 21) ? 21 : \
(n) == (1 << 22) ? 22 : \
(n) == (1 << 23) ? 23 : \
(n) == (1 << 24) ? 24 : \
(n) == (1 << 25) ? 25 : \
(n) == (1 << 26) ? 26 : \
(n) == (1 << 27) ? 27 : \
(n) == (1 << 28) ? 28 : \
(n) == (1 << 29) ? 29 : \
(n) == (1 << 30) ? 30 : \
(n) == (1 << 31) ? 31 : \
*(u32 *)NULL
#define COMPRESS_BITS_0 0, 1
#define COMPRESS_BITS_1 1, 1
#define COMPRESS_BITS_2 2, 1
#define COMPRESS_BITS_3 3, 1
#define COMPRESS_BITS_4 4, 1
#define COMPRESS_BITS_5 5, 1
#define COMPRESS_BITS_6 6, 1
#define COMPRESS_BITS_7 7, 1
/* Will try and compress a set bit (or up to three sequential bits) into a single byte
Input must be of the form (upper << lower) where upper can be up to 3, lower up to 31 */
#define COMPRESS_BITS(_val) COMPRESS_BITS_STEP_2 _val
#define COMPRESS_BITS_STEP_2(_unpacked) COMPRESS_BITS_STEP_3(COMPRESS_BITS_## _unpacked)
#define COMPRESS_BITS_STEP_3(...) COMPRESS_BITS_STEP_4(__VA_ARGS__)
#define COMPRESS_BITS_STEP_4(upper, lower) (((upper % 8) << 5) + (BIT_INDEX(lower)))
/* Will read a compressed bit stored by COMPRESS_BIT into a single byte */
#define UNCOMPRESS_BITS(compressed) ((compressed >> 5) << (compressed & 0x1F))
#endif

View File

@ -60,8 +60,8 @@ void ItemUseCB_ResetEVs(u8 taskId, TaskFunc task);
void ItemUseCB_PPRecovery(u8 taskId, TaskFunc func);
void ItemUseCB_PPUp(u8 taskId, TaskFunc func);
u16 ItemIdToBattleMoveId(u16 item);
bool8 IsMoveHm(u16 move);
bool8 MonKnowsMove(struct Pokemon *mon, u16 move);
bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move);
void ItemUseCB_TMHM(u8 taskId, TaskFunc func);
void ItemUseCB_RareCandy(u8 taskId, TaskFunc func);
void ItemUseCB_SacredAsh(u8 taskId, TaskFunc func);

View File

@ -3,10 +3,11 @@
#include "global.h"
#include "sprite.h"
#include "constants/pokemon.h"
#include "constants/items.h"
#include "constants/region_map_sections.h"
#include "constants/pokemon.h"
#define GET_BASE_SPECIES_ID(speciesId) (GetFormSpeciesId(speciesId, 0))
#define FORM_SPECIES_END (0xffff)
@ -321,27 +322,28 @@ struct BattlePokemon
/*0x15*/ u32 speedIV:5;
/*0x16*/ u32 spAttackIV:5;
/*0x17*/ u32 spDefenseIV:5;
/*0x17*/ u32 isEgg:1;
/*0x17*/ u32 abilityNum:2;
/*0x18*/ s8 statStages[NUM_BATTLE_STATS];
/*0x20*/ u16 ability;
/*0x21*/ u8 type1;
/*0x22*/ u8 type2;
/*0x23*/ u8 unknown;
/*0x24*/ u8 pp[MAX_MON_MOVES];
/*0x28*/ u16 hp;
/*0x2A*/ u8 level;
/*0x2B*/ u8 friendship;
/*0x2C*/ u16 maxHP;
/*0x2E*/ u16 item;
/*0x30*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x3B*/ u8 ppBonuses;
/*0x3C*/ u8 otName[PLAYER_NAME_LENGTH + 1];
/*0x44*/ u32 experience;
/*0x48*/ u32 personality;
/*0x4C*/ u32 status1;
/*0x50*/ u32 status2;
/*0x54*/ u32 otId;
/*0x22*/ u8 type1;
/*0x23*/ u8 type2;
/*0x24*/ u8 type3;
/*0x25*/ u8 pp[MAX_MON_MOVES];
/*0x29*/ u16 hp;
/*0x2B*/ u8 level;
/*0x2C*/ u8 friendship;
/*0x2D*/ u16 maxHP;
/*0x2F*/ u16 item;
/*0x31*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x3C*/ u8 ppBonuses;
/*0x3D*/ u8 otName[PLAYER_NAME_LENGTH + 1];
/*0x45*/ u32 experience;
/*0x49*/ u32 personality;
/*0x4D*/ u32 status1;
/*0x51*/ u32 status2;
/*0x55*/ u32 otId;
/*0x59*/ u8 metLevel;
/*0x5A*/ bool8 isShiny;
};
struct SpeciesInfo /*0x8C*/
@ -384,9 +386,9 @@ struct SpeciesInfo /*0x8C*/
/* 0x38 */ u16 trainerScale;
/* 0x3A */ u16 trainerOffset;
/* 0x3C */ const u8 *description;
/* 0x40 */ u8 bodyColor : 7;
/* 0x40 */ u8 bodyColor:7;
// Graphical Data
u8 noFlip : 1;
u8 noFlip:1;
/* 0x41 */ u8 frontAnimDelay;
/* 0x42 */ u8 frontAnimId;
/* 0x43 */ u8 backAnimId;
@ -401,7 +403,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.
@ -417,6 +421,7 @@ struct SpeciesInfo /*0x8C*/
/* 0x7A */ u32 isLegendary:1;
u32 isMythical:1;
u32 isUltraBeast:1;
u32 isTotem:1;
u32 isParadoxForm:1;
u32 isMegaEvolution:1;
u32 isPrimalReversion:1;
@ -429,7 +434,8 @@ struct SpeciesInfo /*0x8C*/
u32 cannotBeTraded:1;
u32 allPerfectIVs:1;
u32 dexForceRequired:1; // This species will be taken into account for Pokédex ratings even if they have the "isMythical" flag set.
u32 padding4:17;
u32 tmIlliterate:1; // This species will be unable to learn the universal moves.
u32 padding4:15;
// Move Data
/* 0x80 */ const struct LevelUpMove *levelUpLearnset;
/* 0x84 */ const u16 *teachableLearnset;
@ -585,6 +591,17 @@ struct FormChange
u16 param3;
};
struct Fusion
{
u16 fusionStorageIndex;
u16 itemId;
u16 targetSpecies1;
u16 targetSpecies2;
u16 fusingIntoMon;
u16 fusionMove;
u16 unfuseForgetMove;
};
// struct __attribute__((packed)) LevelUpMove
// {
// u16 move:9;
@ -610,7 +627,7 @@ struct Evolution
#define GET_SHINY_VALUE(otId, personality) (HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality))
extern const struct MoveInfo gMovesInfo[];
extern const struct BattleMove gBattleMoves[];
// extern const struct BattleMove gBattleMoves[];
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
@ -651,13 +668,9 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef);
#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
#define BATTLE_ALIVE_ATK_SIDE 1
#define BATTLE_ALIVE_DEF_SIDE 2
u8 CountAliveMonsInBattle(u8 caseId);
s32 CalculateBaseDamageOld(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u32 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef);
u32 GetMonAffectionHearts(struct Pokemon *pokemon);
u8 CountAliveMonsInBattle(u8 caseId, u32 battler);
u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
@ -698,7 +711,7 @@ u8 GiveMonToPlayer(struct Pokemon *mon);
u8 CalculatePlayerPartyCount(void);
u8 CalculateEnemyPartyCount(void);
u8 GetMonsStateToDoubles(void);
u16 GetAbilityBySpecies(u16 species, bool8 abilityNum);
u16 GetAbilityBySpecies(u16 species, u8 abilityNum);
u16 GetMonAbility(struct Pokemon *mon);
u8 GetSecretBaseTrainerPicIndex(void);
u8 GetSecretBaseTrainerNameIndex(void);
@ -754,7 +767,7 @@ const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const u32 *GetMonSpritePalStruct(struct Pokemon *mon);
const u32 *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
bool32 IsHMMove2(u16 move);
bool32 IsMoveHM(u16 move);
bool8 IsMonSpriteNotFlipped(u16 species);
s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
bool8 IsTradedMon(struct Pokemon *mon);
@ -777,6 +790,14 @@ bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank);
struct MonSpritesGfxManager *CreateMonSpritesGfxManager(u8 battlePosition, u8 mode);
void DestroyMonSpritesGfxManager(void);
u8 *MonSpritesGfxManager_GetSpritePtr(u8 bufferId);
u16 GetFormSpeciesId(u16 speciesId, u8 formId);
u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId);
u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg);
u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg);
bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method);
void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method);
bool8 IsMonPastEvolutionLevel(struct Pokemon *mon);
bool32 IsPersonalityFemale(u16 species, u32 personality);
bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battleId);

View File

@ -8,7 +8,7 @@ extern const struct SpritePalette gMonIconPaletteTable[];
extern const u16 gMonIconPalettes[][16];
// extern const u8 gMonIconPaletteIndices[];
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u8 *GetMonIconPtr(u16 speciesId, u32 personality);
const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
void LoadMonIconPalettes(void);

View File

@ -3,24 +3,258 @@
#include "global.h"
extern u32 gRngValue;
extern u32 gRng2Value;
// extern u32 gRngValue;
// extern u32 gRng2Value;
// //Returns a 16-bit pseudorandom number
// u16 Random(void);
// u16 Random2(void);
// //Returns a 32-bit pseudorandom number
// #define Random32() (Random() | (Random() << 16))
// // The number 1103515245 comes from the example implementation of rand and srand
// // in the ISO C standard.
#define RAND_MULT 1103515245
// #define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
// #define ISO_RANDOMIZE2(val)(RAND_MULT * (val) + 12345)
// //Sets the initial seed value of the pseudorandom number generator
// void SeedRng(u16 seed);
// void SeedRng2(u16 seed);
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
#define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
#define ISO_RANDOMIZE2(val)(RAND_MULT * (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.
* LocalRandomSeed(u32) returns a properly seeded rng_value_t.
*
* 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;
}
void SeedRng(u32 seed);
void SeedRng2(u32 seed);
rng_value_t LocalRandomSeed(u32 seed);
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);
u16 Random2(void);
//Returns a 32-bit pseudorandom number
#define Random32() (Random() | (Random() << 16))
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
#define RAND_MULT 1103515245
#define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
#define ISO_RANDOMIZE2(val)(RAND_MULT * (val) + 12345)
//Sets the initial seed value of the pseudorandom number generator
void SeedRng(u16 seed);
void SeedRng2(u16 seed);
//Returns a 32-bit pseudorandom number
#define Random32() (Random() | (Random() << 16))
#define Random2_32() (Random2() | (Random2() << 16))
static inline u16 LocalRandom(rng_value_t *val)
{
*val = ISO_RANDOMIZE1(*val);
return *val >> 16;
}
static inline void AdvanceRandom(void)
{
Random();
}
static inline rng_value_t LocalRandomSeed(u32 seed)
{
return seed;
}
#endif
extern rng_value_t gRngValue;
extern rng_value_t gRng2Value;
void Shuffle8(void *data, size_t n);
void Shuffle16(void *data, size_t n);
void Shuffle32(void *data, size_t n);
void ShuffleN(void *data, size_t n, size_t size);
static inline void Shuffle(void *data, size_t n, size_t size)
{
switch (size)
{
case 1: Shuffle8(data, n); break;
case 2: Shuffle16(data, n); break;
case 4: Shuffle32(data, n); break;
default: ShuffleN(data, n, size); break;
}
}
/* Structured random number generator.
* Instead of the caller converting bits from Random() to a meaningful
* value, the caller provides metadata that is used to return the
* meaningful value directly. This allows code to interpret the random
* call, for example, battle tests know what the domain of a random call
* is, and can exhaustively test it.
*
* RandomTag identifies the purpose of the value.
*
* RandomUniform(tag, lo, hi) returns a number from lo to hi inclusive
* with uniform probability.
*
* RandomUniformExcept(tag, lo, hi, reject) returns a number from lo to
* hi inclusive with uniform probability, excluding those for which
* reject returns TRUE.
*
* RandomElement(tag, array) returns an element in array with uniform
* probability. The array must be known at compile-time (e.g. a global
* const array).
*
* RandomPercentage(tag, t) returns FALSE with probability (1-t)/100,
* and TRUE with probability t/100.
*
* RandomWeighted(tag, w0, w1, ... wN) returns a number from 0 to N
* inclusive. The return value is proportional to the weights, e.g.
* RandomWeighted(..., 1, 1) returns 50% 0s and 50% 1s.
* RandomWeighted(..., 2, 1) returns 2/3 0s and 1/3 1s. */
enum RandomTag
{
RNG_NONE,
RNG_ACCURACY,
RNG_CONFUSION,
RNG_CRITICAL_HIT,
RNG_CUTE_CHARM,
RNG_DAMAGE_MODIFIER,
RNG_DIRE_CLAW,
RNG_FLAME_BODY,
RNG_FORCE_RANDOM_SWITCH,
RNG_FROZEN,
RNG_G_MAX_STUN_SHOCK,
RNG_G_MAX_BEFUDDLE,
RNG_G_MAX_REPLENISH,
RNG_G_MAX_SNOOZE,
RNG_HITS,
RNG_HOLD_EFFECT_FLINCH,
RNG_INFATUATION,
RNG_LOADED_DICE,
RNG_METRONOME,
RNG_PARALYSIS,
RNG_POISON_POINT,
RNG_RAMPAGE_TURNS,
RNG_SECONDARY_EFFECT,
RNG_SECONDARY_EFFECT_2,
RNG_SECONDARY_EFFECT_3,
RNG_SLEEP_TURNS,
RNG_SPEED_TIE,
RNG_STATIC,
RNG_STENCH,
RNG_TRI_ATTACK,
RNG_QUICK_DRAW,
RNG_QUICK_CLAW,
RNG_TRACE,
RNG_FICKLE_BEAM,
};
#define RandomWeighted(tag, ...) \
({ \
const u8 weights[] = { __VA_ARGS__ }; \
u32 sum, i; \
for (i = 0, sum = 0; i < ARRAY_COUNT(weights); i++) \
sum += weights[i]; \
RandomWeightedArray(tag, sum, ARRAY_COUNT(weights), weights); \
})
#define RandomPercentage(tag, t) \
({ \
u32 r; \
if (t <= 0) \
{ \
r = FALSE; \
} \
else if (t >= 100) \
{ \
r = TRUE; \
} \
else \
{ \
const u8 weights[] = { 100 - t, t }; \
r = RandomWeightedArray(tag, 100, ARRAY_COUNT(weights), weights); \
} \
r; \
})
#define RandomElement(tag, array) \
({ \
*(typeof((array)[0]) *)RandomElementArray(tag, array, sizeof((array)[0]), ARRAY_COUNT(array)); \
})
u32 RandomUniform(enum RandomTag, u32 lo, u32 hi);
u32 RandomUniformExcept(enum RandomTag, u32 lo, u32 hi, bool32 (*reject)(u32));
u32 RandomWeightedArray(enum RandomTag, u32 sum, u32 n, const u8 *weights);
const void *RandomElementArray(enum RandomTag, const void *array, size_t size, size_t count);
u32 RandomUniformDefault(enum RandomTag, u32 lo, u32 hi);
u32 RandomUniformExceptDefault(enum RandomTag, u32 lo, u32 hi, bool32 (*reject)(u32));
u32 RandomWeightedArrayDefault(enum RandomTag, u32 sum, u32 n, const u8 *weights);
const void *RandomElementArrayDefault(enum RandomTag, const void *array, size_t size, size_t count);
#endif // GUARD_RANDOM_H

View File

@ -282,10 +282,8 @@ static const u16 sDiscouragedPowerfulMoveEffects[] =
{
EFFECT_EXPLOSION,
EFFECT_DREAM_EATER,
EFFECT_RAZOR_WIND,
EFFECT_SKY_ATTACK,
EFFECT_TWO_TURNS_ATTACK,
EFFECT_RECHARGE,
EFFECT_SKULL_BASH,
EFFECT_SOLAR_BEAM,
EFFECT_SPIT_UP,
EFFECT_FOCUS_PUNCH,
@ -514,16 +512,18 @@ static void ClearBattlerMoveHistory(u8 battlerId)
BATTLE_HISTORY->usedMoves[battlerId / 2][i] = MOVE_NONE;
}
void RecordAbilityBattle(u8 battlerId, u16 abilityId)
void RecordAbilityBattle(u32 battlerId, u32 abilityId)
{
if (GetBattlerSide(battlerId) == 0)
BATTLE_HISTORY->abilities[GET_BATTLER_SIDE(battlerId)] = abilityId;
BATTLE_HISTORY->abilities[battlerId] = abilityId;
// TODO: AI
// AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].ability = abilityId;
}
void RecordItemEffectBattle(u8 battlerId, u8 itemEffect)
void RecordItemEffectBattle(u32 battlerId, u32 itemEffect)
{
if (GetBattlerSide(battlerId) == 0)
BATTLE_HISTORY->itemEffects[GET_BATTLER_SIDE(battlerId)] = itemEffect;
BATTLE_HISTORY->itemEffects[battlerId] = itemEffect;
// TODO: AI
// AI_PARTY->mons[GetBattlerSide(battlerId)][gBattlerPartyIndexes[battlerId]].heldEffect = itemEffect;
}
static void Cmd_if_random_less_than(void)
@ -948,7 +948,7 @@ static void Cmd_if_user_has_attacking_move(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
&& gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
break;
}
@ -965,7 +965,7 @@ static void Cmd_if_user_has_no_attacking_moves(void)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
&& gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
break;
}
@ -998,7 +998,7 @@ static void Cmd_get_type(void)
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2;
break;
case AI_TYPE_MOVE:
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->moveConsidered].type;
break;
}
sAIScriptPtr += 2;
@ -1006,7 +1006,7 @@ static void Cmd_get_type(void)
static void Cmd_get_considered_move_power(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power;
sAIScriptPtr += 1;
}
@ -1017,11 +1017,11 @@ static void Cmd_get_how_powerful_move_is(void)
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
break;
}
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power > 1
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
{
gDynamicBasePower = 0;
@ -1034,13 +1034,13 @@ static void Cmd_get_how_powerful_move_is(void)
{
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
if (gMovesInfo[gBattleMons[gBattlerAttacker].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
break;
}
if (gBattleMons[gBattlerAttacker].moves[checkedMove] != MOVE_NONE
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[checkedMove]].power > 1)
&& gMovesInfo[gBattleMons[gBattlerAttacker].moves[checkedMove]].power > 1)
{
gCurrentMove = gBattleMons[gBattlerAttacker].moves[checkedMove];
AI_CalcDmg(gBattlerAttacker, gBattlerTarget);
@ -1178,7 +1178,7 @@ static void Cmd_get_considered_move(void)
static void Cmd_get_considered_move_effect(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect;
sAIScriptPtr += 1;
}
@ -1446,7 +1446,7 @@ static void Cmd_get_weather(void)
static void Cmd_if_effect(void)
{
CMD_ARGS(u16 byte, const u8 *ptr);
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == cmd->byte)
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect == cmd->byte)
{
sAIScriptPtr = cmd->ptr;
}
@ -1459,7 +1459,7 @@ static void Cmd_if_effect(void)
static void Cmd_if_not_effect(void)
{
CMD_ARGS(u16 byte, const u8 *ptr);
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect != cmd->byte)
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].effect != cmd->byte)
{
sAIScriptPtr = cmd->ptr;
}
@ -1531,7 +1531,7 @@ static void Cmd_if_stat_level_not_equal(void)
static void Cmd_if_can_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
sAIScriptPtr += 5;
return;
@ -1560,7 +1560,7 @@ static void Cmd_if_can_faint(void)
static void Cmd_if_cant_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
if (gMovesInfo[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
sAIScriptPtr += 5;
return;
@ -1664,7 +1664,7 @@ static void Cmd_if_has_move_with_effect(void)
case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == cmd->effect)
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].effect == cmd->effect)
break;
}
if (i != MAX_MON_MOVES)
@ -1676,7 +1676,7 @@ static void Cmd_if_has_move_with_effect(void)
case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == cmd->effect)
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gMovesInfo[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == cmd->effect)
break;
}
sAIScriptPtr = cmd->ptr;
@ -1694,7 +1694,7 @@ static void Cmd_if_doesnt_have_move_with_effect(void)
case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == cmd->effect)
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gMovesInfo[gBattleMons[gBattlerAttacker].moves[i]].effect == cmd->effect)
break;
}
if (i != MAX_MON_MOVES)
@ -1706,7 +1706,7 @@ static void Cmd_if_doesnt_have_move_with_effect(void)
case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == cmd->effect)
if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] != 0 && gMovesInfo[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == cmd->effect)
break;
}
sAIScriptPtr = cmd->nextInstr;
@ -1878,27 +1878,27 @@ static void Cmd_get_used_held_item(void)
else
battlerId = gBattlerTarget;
AI_THINKING_STRUCT->funcResult = ((u8 *)gBattleStruct->usedHeldItems)[battlerId * 2];
AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[battlerId][GetBattlerSide(battlerId)];
sAIScriptPtr += 2;
}
static void Cmd_get_move_type_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].type;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->funcResult].type;
sAIScriptPtr += 1;
}
static void Cmd_get_move_power_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].power;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->funcResult].power;
sAIScriptPtr += 1;
}
static void Cmd_get_move_effect_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].effect;
AI_THINKING_STRUCT->funcResult = gMovesInfo[AI_THINKING_STRUCT->funcResult].effect;
sAIScriptPtr += 1;
}

View File

@ -90,7 +90,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|| (gLastLandedMoves[gActiveBattler] == MOVE_NONE))
return FALSE;
if (gLastLandedMoves[gActiveBattler] == 0xFFFF
|| gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)
|| gMovesInfo[gLastLandedMoves[gActiveBattler]].power == 0)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@ -105,11 +105,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
battlerIn1 = gActiveBattler;
battlerIn2 = gActiveBattler;
}
if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
if (gMovesInfo[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
absorbingTypeAbility = ABILITY_FLASH_FIRE;
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER)
else if (gMovesInfo[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER)
absorbingTypeAbility = ABILITY_WATER_ABSORB;
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC)
else if (gMovesInfo[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC)
absorbingTypeAbility = ABILITY_VOLT_ABSORB;
else
return FALSE;
@ -156,7 +156,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
else if (gMovesInfo[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + (GetBattlerPosition(gActiveBattler) >> 1)) = PARTY_SIZE;
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
@ -245,7 +245,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
return FALSE;
if ((gLastLandedMoves[gActiveBattler] == 0xFFFF)
|| (gLastHitBy[gActiveBattler] == 0xFF)
|| (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0))
|| (gMovesInfo[gLastLandedMoves[gActiveBattler]].power == 0))
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@ -529,7 +529,7 @@ u8 GetMostSuitableMonToSwitchInto(void)
{
move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j);
gBattleMoveDamage = 0;
if (move != MOVE_NONE && gBattleMoves[move].power != 1)
if (move != MOVE_NONE && gMovesInfo[move].power != 1)
{
AI_CalcDmg(gActiveBattler, opposingBattler);
TypeCalc(move, gActiveBattler, opposingBattler);

View File

@ -1723,3 +1723,30 @@ static void Cmd_stopsound(void)
m4aMPlayStop(&gMPlayInfo_SE2);
sBattleAnimScriptPtr++;
}
u8 GetAnimBattlerId(u8 wantedBattler)
{
switch (wantedBattler)
{
case ANIM_ATTACKER:
default:
return gBattleAnimAttacker;
case ANIM_TARGET:
return gBattleAnimTarget;
case ANIM_ATK_PARTNER:
return BATTLE_PARTNER(gBattleAnimAttacker);
case ANIM_DEF_PARTNER:
return BATTLE_PARTNER(gBattleAnimTarget);
case ANIM_PLAYER_LEFT ... ANIM_OPPONENT_RIGHT:
return wantedBattler - MAX_BATTLERS_COUNT;
}
}
// battle_anim_throw.c
bool32 IsCriticalCapture(void)
{
return gBattleSpritesDataPtr->animationData->isCriticalCapture;
}
//

View File

@ -223,9 +223,9 @@ static u8 GetBattlerElevation(u8 battlerId, u16 species)
if (species == SPECIES_CASTFORM)
ret = sCastformElevations[gBattleMonForms[battlerId]];
else if (species > NUM_SPECIES)
ret = gEnemyMonElevation[0];
ret = gSpeciesInfo[SPECIES_NONE].enemyMonElevation;
else
ret = gEnemyMonElevation[species];
ret = gSpeciesInfo[species].enemyMonElevation;
}
return ret;
}

View File

@ -968,3 +968,12 @@ static void AnimTask_WaitAndRestoreVisibility(u8 taskId)
DestroyTask(taskId);
}
}
void AnimTask_SetInvisible(u8 taskId)
{
u32 battlerId = GetAnimBattlerId(gBattleAnimArgs[0]);
u32 spriteId = gBattlerSpriteIds[battlerId];
gSprites[spriteId].invisible = gBattleSpritesDataPtr->battlerData[battlerId].invisible = gBattleAnimArgs[1];
DestroyAnimVisualTask(taskId);
}

View File

@ -132,7 +132,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = LinkOpponentHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = LinkOpponentHandleCantSwitch,
[CONTROLLER_PLAYSE] = LinkOpponentHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = LinkOpponentHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = LinkOpponentHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = LinkOpponentHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = LinkOpponentHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkOpponentHandleIntroTrainerBallThrow,
@ -505,7 +505,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);

View File

@ -129,7 +129,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = LinkPartnerHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = LinkPartnerHandleCantSwitch,
[CONTROLLER_PLAYSE] = LinkPartnerHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = LinkPartnerHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = LinkPartnerHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = LinkPartnerHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = LinkPartnerHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = LinkPartnerHandleIntroTrainerBallThrow,
@ -466,7 +466,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG); TODO: check controllers if this is correct
battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);

View File

@ -142,7 +142,7 @@ static void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = OakOldManHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = OakOldManHandleCmd42,
[CONTROLLER_PLAYSE] = OakOldManHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = OakOldManHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = OakOldManHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = OakOldManHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = OakOldManHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = OakOldManHandleIntroTrainerBallThrow,
@ -1029,7 +1029,7 @@ static u32 CopyOakOldManMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);

View File

@ -136,7 +136,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = OpponentHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = OpponentHandleCmd42,
[CONTROLLER_PLAYSE] = OpponentHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = OpponentHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = OpponentHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = OpponentHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = OpponentHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = OpponentHandleIntroTrainerBallThrow,
@ -490,7 +490,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gEnemyParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gEnemyParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gEnemyParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gEnemyParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gEnemyParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gEnemyParty[monId], MON_DATA_OT_ID);
GetMonData(&gEnemyParty[monId], MON_DATA_NICKNAME, nickname);
@ -1367,9 +1367,9 @@ static void OpponentHandleChooseMove(void)
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
break;
default:
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
gBattlerTarget = gActiveBattler;
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
if (gMovesInfo[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
{
gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
@ -1390,7 +1390,7 @@ static void OpponentHandleChooseMove(void)
move = moveInfo->moves[chosenMoveId];
}
while (move == MOVE_NONE);
if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
if (gMovesInfo[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBattler << 8));
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));

View File

@ -153,7 +153,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = PlayerHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = PlayerHandleCmd42,
[CONTROLLER_PLAYSE] = PlayerHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = PlayerHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = PlayerHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = PlayerHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = PlayerHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = PlayerHandleIntroTrainerBallThrow,
@ -378,7 +378,7 @@ static void HandleInputChooseTarget(void)
case B_POSITION_PLAYER_RIGHT:
if (gActiveBattler != gMultiUsePlayerCursor)
++i;
else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
else if (gMovesInfo[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
++i;
break;
case B_POSITION_OPPONENT_LEFT:
@ -418,7 +418,7 @@ static void HandleInputChooseTarget(void)
case B_POSITION_PLAYER_RIGHT:
if (gActiveBattler != gMultiUsePlayerCursor)
++i;
else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
else if (gMovesInfo[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER_OR_SELECTED)
++i;
break;
case B_POSITION_OPPONENT_LEFT:
@ -454,7 +454,7 @@ void HandleInputChooseMove(void)
}
else
{
moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
moveTarget = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
}
if (moveTarget & MOVE_TARGET_USER)
@ -475,7 +475,7 @@ void HandleInputChooseMove(void)
{
canSelectTarget = FALSE;
}
else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) <= 1)
else if (!(moveTarget & (MOVE_TARGET_USER | MOVE_TARGET_USER_OR_SELECTED)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, gActiveBattler) <= 1)
{
gMultiUsePlayerCursor = GetDefaultMoveTarget(gActiveBattler);
canSelectTarget = FALSE;
@ -1409,7 +1409,7 @@ static void MoveSelectionDisplayMoveType(void)
*txtPtr++ = 6;
*txtPtr++ = 1;
txtPtr = StringCopy(txtPtr, gText_MoveInterfaceDynamicColors);
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
StringCopy(txtPtr, gTypeNames[gMovesInfo[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE);
}
@ -1549,7 +1549,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED);
battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK);
battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID);
GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname);
@ -2900,7 +2900,7 @@ static void PreviewDeterminativeMoveTargets(void)
}
else
{
moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
moveTarget = gMovesInfo[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
}
switch (moveTarget)
{

View File

@ -166,7 +166,7 @@ static void (*const sPokedudeBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = PokedudeHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = PokedudeHandleCmd42,
[CONTROLLER_PLAYSE] = PokedudeHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = PokedudeHandlePlayFanfare,
[CONTROLLER_PLAYFANFAREORBGM] = PokedudeHandlePlayFanfare,
[CONTROLLER_FAINTINGCRY] = PokedudeHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = PokedudeHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = PokedudeHandleIntroTrainerBallThrow,
@ -777,7 +777,7 @@ static u32 CopyPokedudeMonData(u8 monId, u8 *dst)
battleMon.speed = GetMonData(mon, MON_DATA_SPEED);
battleMon.spAttack = GetMonData(mon, MON_DATA_SPATK);
battleMon.spDefense = GetMonData(mon, MON_DATA_SPDEF);
battleMon.isEgg = GetMonData(mon, MON_DATA_IS_EGG);
// battleMon.isEgg = GetMonData(mon, MON_DATA_IS_EGG);
battleMon.abilityNum = GetMonData(mon, MON_DATA_ABILITY_NUM);
battleMon.otId = GetMonData(mon, MON_DATA_OT_ID);
GetMonData(mon, MON_DATA_NICKNAME, nickname);

View File

@ -123,7 +123,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = SafariHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = SafariHandleCmd42,
[CONTROLLER_PLAYSE] = SafariHandlePlaySE,
[CONTROLLER_PLAYFANFARE] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_PLAYFANFAREORBGM] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = SafariHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = SafariHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = SafariHandleIntroTrainerBallThrow,

View File

@ -287,6 +287,14 @@ static void InitLinkBtlControllers(void)
}
}
bool32 IsValidForBattle(struct Pokemon *mon)
{
u32 species = GetMonData(mon, MON_DATA_SPECIES_OR_EGG);
return (species != SPECIES_NONE && species != SPECIES_EGG
&& GetMonData(mon, MON_DATA_HP) != 0
&& GetMonData(mon, MON_DATA_IS_EGG) == FALSE);
}
static void SetBattlePartyIds(void)
{
s32 i, j;
@ -740,7 +748,7 @@ static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
}
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr)
void BtlController_EmitMoveAnimation(u32 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit)
{
sBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION;
sBattleBuffersTransferData[1] = move;
@ -753,7 +761,7 @@ void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 m
sBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16;
sBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24;
sBattleBuffersTransferData[10] = friendship;
sBattleBuffersTransferData[11] = gMultiHitCounter; // multihit in pokeem
sBattleBuffersTransferData[11] = multihit; // multihit in pokeem
if (WEATHER_HAS_EFFECT2)
{
sBattleBuffersTransferData[12] = gBattleWeather;
@ -789,7 +797,7 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx;
stringInfo->hpScale = gBattleStruct->hpScale;
stringInfo->itemEffectBattler = gPotentialItemEffectBattler;
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
stringInfo->moveType = gMovesInfo[gCurrentMove].type;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
stringInfo->abilities[i] = gBattleMons[i].ability;
@ -1109,12 +1117,12 @@ void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitPlayFanfare(u8 bufferId, u16 songId)
void BtlController_EmitPlayFanfareOrBGM(u32 bufferId, u16 songId, bool8 playBGM)
{
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFARE;
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
sBattleBuffersTransferData[1] = songId;
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
sBattleBuffersTransferData[3] = 0;
sBattleBuffersTransferData[3] = playBGM;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
@ -1183,13 +1191,14 @@ void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
void BtlController_EmitBattleAnimation(u32 bufferId, u8 animationId, struct DisableStruct* disableStructPtr, u16 argument)
{
sBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION;
sBattleBuffersTransferData[1] = animationId;
sBattleBuffersTransferData[2] = argument;
sBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
memcpy(&sBattleBuffersTransferData[4], disableStructPtr, sizeof(struct DisableStruct));
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4 + sizeof(struct DisableStruct));
}
// mode is a LINK_STANDBY_* constant

View File

@ -209,7 +209,7 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
{
u8 taskId;
if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
if (tableId == B_ANIM_FORM_CHANGE && (argument & 0x80))
{
gBattleMonForms[activeBattler] = (argument & ~(0x80));
return TRUE;
@ -918,7 +918,7 @@ static void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
if (gAnimScriptActive || battlerSprite->invisible)
invisible = TRUE;
else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE
&& gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0)
&& gSpeciesInfo[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies].enemyMonElevation == 0)
invisible = TRUE;
if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
invisible = TRUE;
@ -941,7 +941,7 @@ void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species)
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
if (gEnemyMonElevation[species] != 0)
if (gSpeciesInfo[species].enemyMonElevation != 0)
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_EnemyShadow;
else
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;

File diff suppressed because it is too large Load Diff

View File

@ -518,14 +518,189 @@ const u8 gText_HowDissapointing[] = _("OAK: Hm…\nHow disappointing…\pIf you
static const u8 sText_ItemRestoredSpeciesHealth[] = _("{B_BUFF1} had its\nHP restored!");
static const u8 sText_ItemCuredSpeciesStatus[] = _("{B_BUFF1} had\nits status healed!");
static const u8 sText_ItemRestoredSpeciesPP[] = _("{B_BUFF1} had its\nPP restored!");
const u16 gTrainerUsedItemStringIds[] =
{
STRINGID_PLAYERUSEDITEM, STRINGID_TRAINER1USEDITEM
};
//
static const u8 sText_ElectroShotCharging[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nelectricity!");
static const u8 sText_MeteorBeamCharging[] = _("{B_ATK_NAME_WITH_PREFIX} is overflowing\nwith space energy!");
static const u8 sText_PkmnIsCloakedInAHarshLight[] = _("{B_ATK_NAME_WITH_PREFIX} became\ncloaked in a harsh light!");
static const u8 sText_VanishedInstantly[] =_("{B_ATK_NAME_WITH_PREFIX} vanished\ninstantly!");
static const u8 sText_PkmnTookTargetHigh[] = _("{B_ATK_NAME_WITH_PREFIX} took {B_DEF_NAME_WITH_PREFIX}\ninto the air!");
static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!");
static const u8 sText_PkmnAbsorbingPower[] = _("{B_ATK_NAME_WITH_PREFIX} is absorbing power!");
static const u8 sText_PokemonCannotUseMove[] = _("{B_ATK_NAME_WITH_PREFIX} cannot\nuse {B_CURRENT_MOVE}!");
static const u8 sText_PkmnMoveBouncedViaAbility[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} was\nbounced back by {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY}!");
static const u8 sText_HealBlockPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} was\nprevented from healing!\p");
static const u8 sText_GravityPreventsUsage[] = _("{B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE}\nbecause of gravity!\p");
static const u8 sText_PkmnFrostbiteHealed2[] = _("{B_ATK_NAME_WITH_PREFIX}'s\nfrostbite was healed!");
static const u8 sText_PkmnFrostbiteHealedBy[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\nhealed its frostbite!");
static const u8 sText_SafetyGogglesProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is not affected\nthanks to its {B_LAST_ITEM}!");
static const u8 sText_PowderExplodes[] = _("When the flame touched the powder\non the Pokémon, it exploded!");
static const u8 sText_PkmnCantUseMoveThroatChop[] = _("{B_ATK_NAME_WITH_PREFIX} can't use\n{B_CURRENT_MOVE} due to Throat Chop!\p");
static const u8 sText_MoveFizzledOutInTheHeavyRain[] = _("The Fire-type attack fizzled out\nin the heavy rain!");
static const u8 sText_MoveEvaporatedInTheHarshSunlight[] = _("The Water-type attack evaporated\nin the harsh sunlight!");
static const u8 sText_TargetAteItem[] = _("{B_DEF_NAME_WITH_PREFIX} ate its {B_LAST_ITEM}!");
static const u8 sText_GemActivates[] = _("{B_LAST_ITEM} strengthened\n{B_ATK_NAME_WITH_PREFIX}'s power!");
static const u8 sText_AttackWeakenedByStrongWinds[] = _("The mysterious strong winds\nweakened the attack!");
static const u8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} endured\nthe hit using {B_DEF_ABILITY}!");
static const u8 sText_BerryDmgReducing[] = _("{B_LAST_ITEM} weakened the damage\nto {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_TargetToughedItOut[] = _("{B_DEF_NAME_WITH_PREFIX} toughed it out\nto show you its best side!");
static const u8 sText_TrappedBySwirlingMagma[] =_("{B_DEF_NAME_WITH_PREFIX} became\ntrapped by swirling magma!");
static const u8 sText_Infestation[] = _("{B_DEF_NAME_WITH_PREFIX} has been afflicted\nwith an infestation by {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnInSnapTrap[] = _("{B_DEF_NAME_WITH_PREFIX} got trapped\nby a snap trap!");
static const u8 sText_AtkTrappedDef[] = _("{B_ATK_NAME_WITH_PREFIX} trapped\nthe {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_ResetsTargetsStatLevels[] =_("{B_DEF_NAME_WITH_PREFIX}'s stat changes\nwere removed!");
static const u8 sText_StrongWindsDissipated[] = _("The mysterious strong winds\nhave dissipated!{PAUSE 64}");
static const u8 sText_ExtremeSunlightFaded[] = _("The extreme sunlight faded.{PAUSE 64}");
static const u8 sText_HeavyRainLifted[] = _("The heavy rain has lifted!{PAUSE 64}");
static const u8 sText_SymbiosisItemPass[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_ATK_NAME_WITH_PREFIX} through {B_LAST_ABILITY}!");
static const u8 sText_BurstingFlames[] = _("The bursting flames\nhit {B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
static const u8 sText_BrokeThroughProtection[] = _("It broke through\n{B_DEF_NAME_WITH_PREFIX}'s protection!");
static const u8 sText_FellForFeint[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe feint!");
static const u8 sText_SpectralThiefSteal[] = _("{B_ATK_NAME_WITH_PREFIX} stole the target's\nboosted stats!");
static const u8 sText_PkmnsAbilitySuppressed[] = _("{B_DEF_NAME_WITH_PREFIX}'s ability\nwas suppressed!");
static const u8 sText_IncinerateBurn[] = _("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nwas burnt up!");
static const u8 sText_BugBite[] = _("{B_ATK_NAME_WITH_PREFIX} stole and ate\n{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!");
static const u8 sText_BothCanNoLongerEscape[] = _("Neither Pokémon can run away!");
static const u8 sText_AttackerLostFireType[] = _("{B_ATK_NAME_WITH_PREFIX} burned itself out!");
static const u8 sText_AttackerLostElectricType[] = _("{B_ATK_NAME_WITH_PREFIX} used up all\nof its electricity!");
static const u8 sText_AttackerLostItsType[] = _("{B_ATK_NAME_WITH_PREFIX} lost\nits {B_BUFF1} type!");
static const u8 sText_StealthRockDmg[] = _("Pointed stones dug into\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PointedStonesFloat[] =_("Pointed stones float in the air\naround {B_DEF_TEAM2} team!");
static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!");
static const u8 sText_TargetCoveredInStickyCandySyrup[] = _("{B_DEF_NAME_WITH_PREFIX} got covered\nin sticky syrup!");
static const u8 sText_AromaVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} is protected\nby an aromatic veil!");
static const u8 sText_PkmnPreventedFromHealing[] = _("{B_DEF_NAME_WITH_PREFIX} was prevented\nfrom healing!");
static const u8 sText_TerrainBecomesMisty[] = _("Mist swirled about\nthe battlefield!");
static const u8 sText_TerrainBecomesGrassy[] = _("Grass grew to cover\nthe battlefield!");
static const u8 sText_TerrainBecomesElectric[] = _("An electric current runs across\nthe battlefield!");
static const u8 sText_TerrainBecomesPsychic[] = _("The battlefield got weird!");
static const u8 sText_DimensionsWereTwisted[] = _("The dimensions were\ntwisted!");
static const u8 sText_BizzareAreaCreated[] =_("A bizarre area was created in which the\nDefense and Sp. Def stats are swapped!");
static const u8 sText_BizarreArenaCreated[] =_("A bizarre area was created!\nHold items lost their effects!");
static const u8 sText_TailWindBlew[] = _("The tailwind blew from\nbehind {B_ATK_TEAM2} team!");
static const u8 sText_ElectricTerrainEnds[] = _("The electricity disappeared\nfrom the battlefield.");
static const u8 sText_MistyTerrainEnds[] = _("The mist disappeared\nfrom the battlefield.");
static const u8 sText_PsychicTerrainEnds[] = _("The weirdness disappeared\nfrom the battlefield.");
static const u8 sText_GrassyTerrainEnds[] = _("The grass disappeared\nfrom the battlefield.");
static const u8 sText_MoldBreakerEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} breaks the mold!");
static const u8 sText_TeravoltEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na bursting aura!");
static const u8 sText_TurboblazeEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na blazing aura!");
static const u8 sText_SlowStartEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} can't get it going!");
static const u8 sText_UnnerveEnters[] = _("The opposing team is too nervous\nto eat Berries!");
static const u8 sText_AnticipationActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shuddered\nin anticipation!");
static const u8 sText_ForewarnActivates[] = _("{B_SCR_ACTIVE_ABILITY} alerted {B_SCR_ACTIVE_NAME_WITH_PREFIX}\nto {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!");
static const u8 sText_PressureActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is exerting its\npressure!");
static const u8 sText_DarkAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na dark aura!");
static const u8 sText_FairyAuraActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is radiating\na fairy aura!");
static const u8 sText_AuraBreakActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} reversed all\nother Pokémon's auras!");
static const u8 sText_ComatoseActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is drowsing!");
static const u8 sText_ScreenCleanerActivates[] = _("All screens on the field were\ncleansed!");
static const u8 sText_AsOneEnters[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} has two Abilities!");
static const u8 sText_CuriousMedicineEnters[] = _("{B_EFF_NAME_WITH_PREFIX}'s\nstat changes were reset!");
static const u8 sText_PastelVeilEnters[] = _("{B_DEF_NAME_WITH_PREFIX} was cured\nof its poisoning!");
static const u8 sText_NeutralizingGasEnters[] = _("Neutralizing Gas filled the area!");
static const u8 sText_BeingHitChargedPkmnWithPower[] = _("Being hit by {B_CURRENT_MOVE}\ncharged {B_DEF_NAME_WITH_PREFIX} with power!");
static const u8 sText_ImposterTransform[] = _("{B_ATK_NAME_WITH_PREFIX} transformed into\n{B_DEF_NAME_WITH_PREFIX} using {B_LAST_ABILITY}!");
static const u8 sText_SnowWarningHail[] = _("It started to hail!");
static const u8 sText_SnowWarningSnow[] = _("It started to snow!");
static const u8 sText_SupersweetAromaWafts[] = _("A supersweet aroma is wafting from\nthe syrup covering {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_AirLockActivates[] = _("The effects of weather\ndisappeared.");
static const u8 sText_BattlerAbilityRaisedStat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_ExtremelyHarshSunlight[] = _("The sunlight turned\nextremely harsh!");
static const u8 sText_HeavyRain[] = _("A heavy rain began to fall!");
static const u8 sText_MysteriousAirCurrent[] = _("A mysterious air current is\nprotecting Flying-type Pokémon!");
static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nweakened the {B_BUFF1} of\lall surrounding Pokémon!\p");
static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!");
static const u8 sText_ZeroToHeroTransformation[] = _("{B_ATK_NAME_WITH_PREFIX} underwent a heroic\ntransformation!");
static const u8 sText_HospitalityRestoration[] = _("{B_ATK_PARTNER_NAME} drank down all the\nmatcha that {B_ATK_NAME_WITH_PREFIX} made!");
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
static const u8 sText_BadDreamsDmg[] = _("{B_DEF_NAME_WITH_PREFIX} is tormented!");
static const u8 sText_SolarPowerHpDrop[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\ntakes its toll!");
static const u8 sText_HealerCure[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\ncured {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s problem!");
static const u8 sText_FetchedPokeBall[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} found\na {B_LAST_ITEM}!");
static const u8 sText_TargetAbilityLoweredStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nlowered its {B_BUFF1}!");
static const u8 sText_TargetStatWontGoHigher[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwon't go higher!");
static const u8 sText_TargetAbilityRaisedStat[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_CursedBodyDisabled[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled\nby {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!");
static const u8 sText_AttackerAquiredAbility[] = _("{B_ATK_NAME_WITH_PREFIX} acquired\n{B_LAST_ABILITY}!");
static const u8 sText_SwappedAbilities[] = _("{B_DEF_NAME_WITH_PREFIX} swapped Abilities\nwith its target!");
static const u8 sText_TargetsStatWasMaxedOut[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed\nits {B_BUFF1}!");
static const u8 sText_PkmnsAbilityPreventsAbility[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}'s\l{B_DEF_ABILITY} from working!");
static const u8 sText_AftermathDmg[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt!");
static const u8 sText_IllusionWoreOff[] = _("{B_DEF_NAME_WITH_PREFIX}'s Illusion wore off!");
static const u8 sText_ASandstormKickedUp[] = _("A sandstorm kicked up!");
static const u8 sText_PkmnsWillPerishIn3Turns[] = _("Both Pokémon will perish\nin three turns!");
static const u8 sText_PoisonSpikesScattered[] = _("Poison Spikes were scattered all\naround {B_DEF_TEAM2} team's feet!");
static const u8 sText_OpportunistCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} copied its\nopponent's stat changes!");
static const u8 sText_PkmnGotOverItsInfatuation[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} got over\nits infatuation!");
static const u8 sText_PkmnShookOffTheTaunt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} shook off\nthe taunt!");
static const u8 sText_SunlightActivatedAbility[] = _("The harsh sunlight activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!");
static const u8 sText_StatWasHeightened[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_BUFF1} was heightened!");
static const u8 sText_BattlerTypeChangedTo[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s type\nchanged to {B_BUFF1}!");
static const u8 sText_ElectricTerrainActivatedAbility[] = _("The Electric Terrain activated\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}!");
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
static const u8 sText_AttackerAbilityRaisedStat[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_ExtremelyHarshSunlightWasNotLessened[] = _("The extremely harsh sunlight\nwas not lessened at all!");
static const u8 sText_NoReliefFromHeavyRain[] = _("There is no relief from\nthis heavy rain!");
static const u8 sText_MysteriousAirCurrentBlowsOn[] = _("The mysterious air current\nblows on regardless!");
static const u8 sText_AuraFlaredToLife[] = _("{B_DEF_NAME_WITH_PREFIX}'s aura flared to life!");
static const u8 sText_AttackerGotOverInfatuation[] =_("{B_ATK_NAME_WITH_PREFIX} got over\nits infatuation!");
static const u8 sText_TormentedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is\ntormented no more!");
static const u8 sText_BufferEnds[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\nwore off!");
static const u8 sText_HealBlockedNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is cured of\nits heal block!");
static const u8 sText_MicleBerryActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted the accuracy of its\nnext move using {B_LAST_ITEM}!");
static const u8 sText_MirrorHerbCopied[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used its {B_LAST_ITEM}\nto mirror its opponent's stat changes!");
static const u8 sText_PkmnsItemHealedFrostbite[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its frostbite!");
static const u8 sText_AirBalloonFloat[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} floats in the air\nwith its {B_LAST_ITEM}!");
static const u8 sText_EjectButtonActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is switched\nout with the {B_LAST_ITEM}!");
static const u8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!");
static const u8 sText_AirBalloonPop[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} popped!");
static const u8 sText_StickyBarbTransfer[] = _("The {B_LAST_ITEM} attached itself to\n{B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_TeamGainedEXP[] = _("The rest of your team gained EXP.\nPoints thanks to the {B_LAST_ITEM}!\p");
static const u8 sText_PkmnFrostbiteHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nfrostbite was healed!");
static const u8 sText_StockpiledEffectWoreOff[] = _("{B_ATK_NAME_WITH_PREFIX}'s stockpiled\neffect wore off!");
static const u8 sText_FellStraightDown[] =_("{B_DEF_NAME_WITH_PREFIX} fell\nstraight down!");
static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!");
static const u8 sText_PkmnBurnHealed[] = _("{B_DEF_NAME_WITH_PREFIX}'s\nburn was healed.");
static const u8 sText_RedCardActivate[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} held up its {B_LAST_ITEM}\nagainst {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_MoveBlockedByDynamax[] = _("The move was blocked by\nthe power of Dynamax!");
static const u8 sText_ItemCannotBeRemoved[] = _("{B_ATK_NAME_WITH_PREFIX}'s item cannot be removed!");
static const u8 sText_ZMoveResetsStats[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} returned its\ndecreased stats to normal using\lits Z-Power!");
static const u8 sText_ZMoveBoostCrit[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted its\ncritical-hit ratio using its Z-Power!");
static const u8 sText_ZMoveRestoreHp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} restored its\nHP using its Z-Power!");
static const u8 sText_ZMoveStatUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted\nits stats using its Z-Power!");
static const u8 sText_ZMoveHpSwitchInTrap[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s HP was restored by the Z-Power!");
static const u8 sText_ZMoveAllStatsUp[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} boosted all\nof its stats using its Z-Power!");
static const u8 sText_PkmnRevertedToPrimal[] = _("{B_ATK_NAME_WITH_PREFIX}'s Primal Reversion!\nIt reverted to its primal form!");
static const u8 sText_HealingWishHealed[] = _("{B_ATK_NAME_WITH_PREFIX} regained health!");
static const u8 sText_ToxicSpikesAbsorbed[] = _("The poison spikes disappeared\nfrom around {B_DEF_TEAM2} team's feet!");
static const u8 sText_ToxicSpikesPoisoned[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was poisoned!");
static const u8 sText_StickyWebSwitchIn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was\ncaught in a Sticky Web!");
static const u8 sText_HealingWishCameTrue[] = _("The healing wish came true\nfor {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_LunarDanceCameTrue[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin mystical moonlight!");
static const u8 sText_SpikesDisappearedFromTeam[] = _("The spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_ToxicSpikesDisappearedFromTeam[] = _("The poison spikes disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_StickyWebDisappearedFromTeam[] = _("The sticky web has disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_StealthRockDisappearedFromTeam[] = _("The pointed stones disappeared\nfrom around {B_ATK_TEAM2} team!");
static const u8 sText_SharpSteelDisappearedFromTeam[] = _("The sharp steel disappeared from\nthe ground around {B_ATK_TEAM2} team!");
static const u8 sText_LastAbilityRaisedBuff1[] = _("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_ReceiverAbilityTakeOver[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\nwas taken over!");
static const u8 sText_NeutralizingGasOver[] = _("The effects of Neutralizing\nGas wore off!");
static const u8 sText_AttackerBecameFullyCharged[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its bond with its trainer!\p");
static const u8 sText_AttackerBecameAshSpecies[] = _("{B_ATK_NAME_WITH_PREFIX} became Ash-{B_BUFF1}!\p");
static const u8 sText_ProtectedTeam[] =_("{B_CURRENT_MOVE} protected\n{B_ATK_TEAM2} team!");
static const u8 sText_ElectricTerrainPreventsSleep[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith electrified terrain!");
static const u8 sText_MistyTerrainPreventsStatus[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith a protective mist!");
static const u8 sText_PsychicTerrainPreventsPriority[] = _("{B_DEF_NAME_WITH_PREFIX} surrounds itself\nwith psychic terrain!");
static const u8 sText_FlowerVeilProtected[] = _("{B_DEF_NAME_WITH_PREFIX} surrounded itself\nwith a veil of petals!");
static const u8 sText_drastically[] = _("drastically ");
static const u8 sText_severely[] = _("severely ");
static const u8 sText_ClearAmuletWontLowerStats[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} prevents\nits stats from being lowered!");
static const u8 sText_CelebrateMessage[] = _("Congratulations, {B_PLAYER_NAME}!");
static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nToxic Spikes!");
static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSticky Web!");
static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nStealth Rock!");
static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!");
static const u8 sText_PkmnGotFrostbite[] = _("{B_EFF_NAME_WITH_PREFIX} got frostbite!");
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_START] = {
@ -906,6 +1081,288 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_ST
[STRINGID_ITEMRESTOREDSPECIESHEALTH - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesHealth,
[STRINGID_ITEMRESTOREDSPECIESPP - BATTLESTRINGS_TABLE_START] = sText_ItemRestoredSpeciesPP,
[STRINGID_ITEMCUREDSPECIESSTATUS - BATTLESTRINGS_TABLE_START] = sText_ItemCuredSpeciesStatus,
[STRINGID_ELECTROSHOTCHARGING - BATTLESTRINGS_TABLE_START] = sText_ElectroShotCharging,
[STRINGID_METEORBEAMCHARGING - BATTLESTRINGS_TABLE_START] = sText_MeteorBeamCharging,
[STRINGID_CLOAKEDINAHARSHLIGHT - BATTLESTRINGS_TABLE_START] = sText_PkmnIsCloakedInAHarshLight,
[STRINGID_VANISHEDINSTANTLY - BATTLESTRINGS_TABLE_START] = sText_VanishedInstantly,
[STRINGID_PKMNTOOKTARGETHIGH - BATTLESTRINGS_TABLE_START] = sText_PkmnTookTargetHigh,
[STRINGID_CLOAKEDINAFREEZINGLIGHT - BATTLESTRINGS_TABLE_START] = sText_CloakedInAFreezingLight,
[STRINGID_PKNMABSORBINGPOWER - BATTLESTRINGS_TABLE_START] = sText_PkmnAbsorbingPower,
[STRINGID_POKEMONCANNOTUSEMOVE - BATTLESTRINGS_TABLE_START] = sText_PokemonCannotUseMove,
[STRINGID_PKMNMOVEBOUNCEDABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnMoveBouncedViaAbility,
[STRINGID_HEALBLOCKPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_HealBlockPreventsUsage,
[STRINGID_GRAVITYPREVENTSUSAGE - BATTLESTRINGS_TABLE_START] = sText_GravityPreventsUsage,
[STRINGID_PKMNFROSTBITEHEALED2 - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed2,
[STRINGID_PKMNFROSTBITEHEALEDBY - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealedBy,
[STRINGID_SAFETYGOGGLESPROTECTED - BATTLESTRINGS_TABLE_START] = sText_SafetyGogglesProtected,
[STRINGID_POWDEREXPLODES - BATTLESTRINGS_TABLE_START] = sText_PowderExplodes,
[STRINGID_PKMNCANTUSEMOVETHROATCHOP - BATTLESTRINGS_TABLE_START] = sText_PkmnCantUseMoveThroatChop,
[STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_MoveFizzledOutInTheHeavyRain,
[STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_MoveEvaporatedInTheHarshSunlight,
[STRINGID_TARGETATEITEM - BATTLESTRINGS_TABLE_START] = sText_TargetAteItem,
[STRINGID_GEMACTIVATES - BATTLESTRINGS_TABLE_START] = sText_GemActivates,
[STRINGID_ATTACKWEAKENEDBSTRONGWINDS - BATTLESTRINGS_TABLE_START] = sText_AttackWeakenedByStrongWinds,
[STRINGID_ENDUREDSTURDY - BATTLESTRINGS_TABLE_START] = sText_EnduredViaSturdy,
[STRINGID_BERRYDMGREDUCES - BATTLESTRINGS_TABLE_START] = sText_BerryDmgReducing,
[STRINGID_TARGETTOUGHEDITOUT - BATTLESTRINGS_TABLE_START] = sText_TargetToughedItOut,
[STRINGID_TRAPPEDBYSWIRLINGMAGMA - BATTLESTRINGS_TABLE_START] = sText_TrappedBySwirlingMagma,
[STRINGID_INFESTATION - BATTLESTRINGS_TABLE_START] = sText_Infestation,
[STRINGID_PKMNINSNAPTRAP - BATTLESTRINGS_TABLE_START] = sText_PkmnInSnapTrap,
[STRINGID_THUNDERCAGETRAPPED - BATTLESTRINGS_TABLE_START] = sText_AtkTrappedDef,
[STRINGID_RESETSTARGETSSTATLEVELS - BATTLESTRINGS_TABLE_START] = sText_ResetsTargetsStatLevels,
[STRINGID_STRONGWINDSDISSIPATED - BATTLESTRINGS_TABLE_START] = sText_StrongWindsDissipated,
[STRINGID_EXTREMESUNLIGHTFADED - BATTLESTRINGS_TABLE_START] = sText_ExtremeSunlightFaded,
[STRINGID_HEAVYRAINLIFTED - BATTLESTRINGS_TABLE_START] = sText_HeavyRainLifted,
[STRINGID_SYMBIOSISITEMPASS - BATTLESTRINGS_TABLE_START] = sText_SymbiosisItemPass,
[STRINGID_BURSTINGFLAMESHIT - BATTLESTRINGS_TABLE_START] = sText_BurstingFlames,
[STRINGID_BROKETHROUGHPROTECTION - BATTLESTRINGS_TABLE_START] = sText_BrokeThroughProtection,
[STRINGID_FELLFORFEINT - BATTLESTRINGS_TABLE_START] = sText_FellForFeint,
[STRINGID_SPECTRALTHIEFSTEAL - BATTLESTRINGS_TABLE_START] = sText_SpectralThiefSteal,
[STRINGID_PKMNSABILITYSUPPRESSED - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilitySuppressed,
[STRINGID_INCINERATEBURN - BATTLESTRINGS_TABLE_START] = sText_IncinerateBurn,
[STRINGID_BUGBITE - BATTLESTRINGS_TABLE_START] = sText_BugBite,
[STRINGID_BOTHCANNOLONGERESCAPE - BATTLESTRINGS_TABLE_START] = sText_BothCanNoLongerEscape,
[STRINGID_ATTACKERLOSTFIRETYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostFireType,
[STRINGID_ATTACKERLOSTELECTRICTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostElectricType,
[STRINGID_ATTACKERLOSTITSTYPE - BATTLESTRINGS_TABLE_START] = sText_AttackerLostItsType,
[STRINGID_STEALTHROCKDMG - BATTLESTRINGS_TABLE_START] = sText_StealthRockDmg,
[STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg,
[STRINGID_POINTEDSTONESFLOAT - BATTLESTRINGS_TABLE_START] = sText_PointedStonesFloat,
[STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats,
[STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP - BATTLESTRINGS_TABLE_START] = sText_TargetCoveredInStickyCandySyrup,
[STRINGID_AROMAVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_AromaVeilProtected,
[STRINGID_PKMNPREVENTEDFROMHEALING - BATTLESTRINGS_TABLE_START] = sText_PkmnPreventedFromHealing,
[STRINGID_TERRAINBECOMESMISTY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesMisty,
[STRINGID_TERRAINBECOMESGRASSY - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesGrassy,
[STRINGID_TERRAINBECOMESELECTRIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesElectric,
[STRINGID_TERRAINBECOMESPSYCHIC - BATTLESTRINGS_TABLE_START] = sText_TerrainBecomesPsychic,
[STRINGID_DIMENSIONSWERETWISTED - BATTLESTRINGS_TABLE_START] = sText_DimensionsWereTwisted,
[STRINGID_BIZARREAREACREATED - BATTLESTRINGS_TABLE_START] = sText_BizzareAreaCreated,
[STRINGID_BIZARREARENACREATED - BATTLESTRINGS_TABLE_START] = sText_BizarreArenaCreated,
[STRINGID_TAILWINDBLEW - BATTLESTRINGS_TABLE_START] = sText_TailWindBlew,
[STRINGID_ELECTRICTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainEnds,
[STRINGID_MISTYTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainEnds,
[STRINGID_PSYCHICTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainEnds,
[STRINGID_GRASSYTERRAINENDS - BATTLESTRINGS_TABLE_START] = sText_GrassyTerrainEnds,
[STRINGID_MOLDBREAKERENTERS - BATTLESTRINGS_TABLE_START] = sText_MoldBreakerEnters,
[STRINGID_TERAVOLTENTERS - BATTLESTRINGS_TABLE_START] = sText_TeravoltEnters,
[STRINGID_TURBOBLAZEENTERS - BATTLESTRINGS_TABLE_START] = sText_TurboblazeEnters,
[STRINGID_SLOWSTARTENTERS - BATTLESTRINGS_TABLE_START] = sText_SlowStartEnters,
[STRINGID_UNNERVEENTERS - BATTLESTRINGS_TABLE_START] = sText_UnnerveEnters,
[STRINGID_ANTICIPATIONACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AnticipationActivates,
[STRINGID_FOREWARNACTIVATES - BATTLESTRINGS_TABLE_START] = sText_ForewarnActivates,
[STRINGID_PRESSUREENTERS - BATTLESTRINGS_TABLE_START] = sText_PressureActivates,
[STRINGID_DARKAURAENTERS - BATTLESTRINGS_TABLE_START] = sText_DarkAuraActivates,
[STRINGID_FAIRYAURAENTERS - BATTLESTRINGS_TABLE_START] = sText_FairyAuraActivates,
[STRINGID_AURABREAKENTERS - BATTLESTRINGS_TABLE_START] = sText_AuraBreakActivates,
[STRINGID_COMATOSEENTERS - BATTLESTRINGS_TABLE_START] = sText_ComatoseActivates,
[STRINGID_SCREENCLEANERENTERS - BATTLESTRINGS_TABLE_START] = sText_ScreenCleanerActivates,
[STRINGID_ASONEENTERS - BATTLESTRINGS_TABLE_START] = sText_AsOneEnters,
[STRINGID_CURIOUSMEDICINEENTERS - BATTLESTRINGS_TABLE_START] = sText_CuriousMedicineEnters,
[STRINGID_PASTELVEILENTERS - BATTLESTRINGS_TABLE_START] = sText_PastelVeilEnters,
[STRINGID_NEUTRALIZINGGASENTERS - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasEnters,
[STRINGID_BEINGHITCHARGEDPKMNWITHPOWER - BATTLESTRINGS_TABLE_START] = sText_BeingHitChargedPkmnWithPower,
[STRINGID_IMPOSTERTRANSFORM - BATTLESTRINGS_TABLE_START] = sText_ImposterTransform,
[STRINGID_SNOWWARNINGHAIL - BATTLESTRINGS_TABLE_START] = sText_SnowWarningHail,
[STRINGID_SNOWWARNINGSNOW - BATTLESTRINGS_TABLE_START] = sText_SnowWarningSnow,
[STRINGID_SUPERSWEETAROMAWAFTS - BATTLESTRINGS_TABLE_START] = sText_SupersweetAromaWafts,
[STRINGID_AIRLOCKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_AirLockActivates,
[STRINGID_BATTLERABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_BattlerAbilityRaisedStat,
[STRINGID_EXTREMELYHARSHSUNLIGHT - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlight,
[STRINGID_HEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_HeavyRain,
[STRINGID_MYSTERIOUSAIRCURRENT - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrent,
[STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat,
[STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen,
[STRINGID_ZEROTOHEROTRANSFORMATION - BATTLESTRINGS_TABLE_START] = sText_ZeroToHeroTransformation,
[STRINGID_HOSPITALITYRESTORATION - BATTLESTRINGS_TABLE_START] = sText_HospitalityRestoration,
[STRINGID_HARVESTBERRY - BATTLESTRINGS_TABLE_START] = sText_HarvestBerry,
[STRINGID_BADDREAMSDMG - BATTLESTRINGS_TABLE_START] = sText_BadDreamsDmg,
[STRINGID_SOLARPOWERHPDROP - BATTLESTRINGS_TABLE_START] = sText_SolarPowerHpDrop,
[STRINGID_HEALERCURE - BATTLESTRINGS_TABLE_START] = sText_HealerCure,
[STRINGID_FETCHEDPOKEBALL - BATTLESTRINGS_TABLE_START] = sText_FetchedPokeBall,
[STRINGID_TARGETABILITYSTATLOWER - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityLoweredStat,
[STRINGID_TARGETSTATWONTGOHIGHER - BATTLESTRINGS_TABLE_START] = sText_TargetStatWontGoHigher,
[STRINGID_TARGETABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_TargetAbilityRaisedStat,
[STRINGID_CUSEDBODYDISABLED - BATTLESTRINGS_TABLE_START] = sText_CursedBodyDisabled,
[STRINGID_ATTACKERACQUIREDABILITY - BATTLESTRINGS_TABLE_START] = sText_AttackerAquiredAbility,
[STRINGID_SWAPPEDABILITIES - BATTLESTRINGS_TABLE_START] = sText_SwappedAbilities,
[STRINGID_TARGETSSTATWASMAXEDOUT - BATTLESTRINGS_TABLE_START] = sText_TargetsStatWasMaxedOut,
[STRINGID_PKMNSABILITYPREVENTSABILITY - BATTLESTRINGS_TABLE_START] = sText_PkmnsAbilityPreventsAbility,
[STRINGID_AFTERMATHDMG - BATTLESTRINGS_TABLE_START] = sText_AftermathDmg,
[STRINGID_ILLUSIONWOREOFF - BATTLESTRINGS_TABLE_START] = sText_IllusionWoreOff,
[STRINGID_ASANDSTORMKICKEDUP - BATTLESTRINGS_TABLE_START] = sText_ASandstormKickedUp,
[STRINGID_PKMNSWILLPERISHIN3TURNS - BATTLESTRINGS_TABLE_START] = sText_PkmnsWillPerishIn3Turns,
[STRINGID_POISONSPIKESSCATTERED - BATTLESTRINGS_TABLE_START] = sText_PoisonSpikesScattered,
[STRINGID_OPPORTUNISTCOPIED - BATTLESTRINGS_TABLE_START] = sText_OpportunistCopied,
[STRINGID_PKMNGOTOVERITSINFATUATION - BATTLESTRINGS_TABLE_START] = sText_PkmnGotOverItsInfatuation,
[STRINGID_PKMNSHOOKOFFTHETAUNT - BATTLESTRINGS_TABLE_START] = sText_PkmnShookOffTheTaunt,
[STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility,
[STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened,
[STRINGID_BATTLERTYPECHANGEDTO - BATTLESTRINGS_TABLE_START] = sText_BattlerTypeChangedTo,
[STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility,
[STRINGID_FRISKACTIVATES - BATTLESTRINGS_TABLE_START] = sText_FriskActivates,
[STRINGID_ATTACKERABILITYSTATRAISE - BATTLESTRINGS_TABLE_START] = sText_AttackerAbilityRaisedStat,
[STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED - BATTLESTRINGS_TABLE_START] = sText_ExtremelyHarshSunlightWasNotLessened,
[STRINGID_NORELIEFROMHEAVYRAIN - BATTLESTRINGS_TABLE_START] = sText_NoReliefFromHeavyRain,
[STRINGID_MYSTERIOUSAIRCURRENTBLOWSON - BATTLESTRINGS_TABLE_START] = sText_MysteriousAirCurrentBlowsOn,
[STRINGID_AURAFLAREDTOLIFE - BATTLESTRINGS_TABLE_START] = sText_AuraFlaredToLife,
[STRINGID_ATKGOTOVERINFATUATION - BATTLESTRINGS_TABLE_START] = sText_AttackerGotOverInfatuation,
[STRINGID_TORMENTEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_TormentedNoMore,
[STRINGID_BUFFERENDS - BATTLESTRINGS_TABLE_START] = sText_BufferEnds,
[STRINGID_HEALBLOCKEDNOMORE - BATTLESTRINGS_TABLE_START] = sText_HealBlockedNoMore,
[STRINGID_MICLEBERRYACTIVATES - BATTLESTRINGS_TABLE_START] = sText_MicleBerryActivates,
[STRINGID_MIRRORHERBCOPIED - BATTLESTRINGS_TABLE_START] = sText_MirrorHerbCopied,
[STRINGID_PKMNSITEMHEALEDFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnsItemHealedFrostbite,
[STRINGID_AIRBALLOONFLOAT - BATTLESTRINGS_TABLE_START] = sText_AirBalloonFloat,
[STRINGID_EJECTBUTTONACTIVATE - BATTLESTRINGS_TABLE_START] = sText_EjectButtonActivate,
[STRINGID_HURTBYITEM - BATTLESTRINGS_TABLE_START] = sText_HurtByItem,
[STRINGID_AIRBALLOONPOP - BATTLESTRINGS_TABLE_START] = sText_AirBalloonPop,
[STRINGID_STICKYBARBTRANSFER - BATTLESTRINGS_TABLE_START] = sText_StickyBarbTransfer,
[STRINGID_TEAMGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_TeamGainedEXP,
[STRINGID_PKMNFROSTBITEHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnFrostbiteHealed,
[STRINGID_STOCKPILEDEFFECTWOREOFF - BATTLESTRINGS_TABLE_START] = sText_StockpiledEffectWoreOff,
[STRINGID_FELLSTRAIGHTDOWN - BATTLESTRINGS_TABLE_START] = sText_FellStraightDown,
[STRINGID_TARGETWOKEUP - BATTLESTRINGS_TABLE_START] = sText_TargetWokeUp,
[STRINGID_PKMNBURNHEALED - BATTLESTRINGS_TABLE_START] = sText_PkmnBurnHealed,
[STRINGID_REDCARDACTIVATE - BATTLESTRINGS_TABLE_START] = sText_RedCardActivate,
[STRINGID_MOVEBLOCKEDBYDYNAMAX - BATTLESTRINGS_TABLE_START] = sText_MoveBlockedByDynamax,
[STRINGID_ITEMCANNOTBEREMOVED - BATTLESTRINGS_TABLE_START] = sText_ItemCannotBeRemoved,
[STRINGID_ZMOVERESETSSTATS - BATTLESTRINGS_TABLE_START] = sText_ZMoveResetsStats,
[STRINGID_ZMOVEZBOOSTCRIT - BATTLESTRINGS_TABLE_START] = sText_ZMoveBoostCrit,
[STRINGID_ZMOVERESTOREHP - BATTLESTRINGS_TABLE_START] = sText_ZMoveRestoreHp,
[STRINGID_ZMOVESTATUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveStatUp,
[STRINGID_ZMOVEHPTRAP - BATTLESTRINGS_TABLE_START] = sText_ZMoveHpSwitchInTrap,
[STRINGID_ZMOVEALLSTATSUP - BATTLESTRINGS_TABLE_START] = sText_ZMoveAllStatsUp,
[STRINGID_PKMNREVERTEDTOPRIMAL - BATTLESTRINGS_TABLE_START] = sText_PkmnRevertedToPrimal,
[STRINGID_HEALINGWISHHEALED - BATTLESTRINGS_TABLE_START] = sText_HealingWishHealed,
[STRINGID_TOXICSPIKESABSORBED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesAbsorbed,
[STRINGID_TOXICSPIKESPOISONED - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesPoisoned,
[STRINGID_STICKYWEBSWITCHIN - BATTLESTRINGS_TABLE_START] = sText_StickyWebSwitchIn,
[STRINGID_HEALINGWISHCAMETRUE - BATTLESTRINGS_TABLE_START] = sText_HealingWishCameTrue,
[STRINGID_LUNARDANCECAMETRUE - BATTLESTRINGS_TABLE_START] = sText_LunarDanceCameTrue,
[STRINGID_SPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SpikesDisappearedFromTeam,
[STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_ToxicSpikesDisappearedFromTeam,
[STRINGID_STICKYWEBDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StickyWebDisappearedFromTeam,
[STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_StealthRockDisappearedFromTeam,
[STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDisappearedFromTeam,
[STRINGID_LASTABILITYRAISEDSTAT - BATTLESTRINGS_TABLE_START] = sText_LastAbilityRaisedBuff1,
[STRINGID_RECEIVERABILITYTAKEOVER - BATTLESTRINGS_TABLE_START] = sText_ReceiverAbilityTakeOver,
[STRINGID_NEUTRALIZINGGASOVER - BATTLESTRINGS_TABLE_START] = sText_NeutralizingGasOver,
[STRINGID_ATTACKERBECAMEFULLYCHARGED - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameFullyCharged,
[STRINGID_ATTACKERBECAMEASHSPECIES - BATTLESTRINGS_TABLE_START] = sText_AttackerBecameAshSpecies,
[STRINGID_PROTECTEDTEAM - BATTLESTRINGS_TABLE_START] = sText_ProtectedTeam,
[STRINGID_ELECTRICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainPreventsSleep,
[STRINGID_MISTYTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_MistyTerrainPreventsStatus,
[STRINGID_PSYCHICTERRAINPREVENTS - BATTLESTRINGS_TABLE_START] = sText_PsychicTerrainPreventsPriority,
[STRINGID_FLOWERVEILPROTECTED - BATTLESTRINGS_TABLE_START] = sText_FlowerVeilProtected,
[STRINGID_DRASTICALLY - BATTLESTRINGS_TABLE_START] = sText_drastically,
[STRINGID_SEVERELY - BATTLESTRINGS_TABLE_START] = sText_severely,
[STRINGID_CLEARAMULETWONTLOWERSTATS - BATTLESTRINGS_TABLE_START] = sText_ClearAmuletWontLowerStats,
[STRINGID_CELEBRATEMESSAGE - BATTLESTRINGS_TABLE_START] = sText_CelebrateMessage,
[STRINGID_PKMNBLEWAWAYTOXICSPIKES - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayToxicSpikes,
[STRINGID_PKMNBLEWAWAYSTICKYWEB - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStickyWeb,
[STRINGID_PKMNBLEWAWAYSTEALTHROCK - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwayStealthRock,
[STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel,
[STRINGID_PKMNGOTFROSTBITE - BATTLESTRINGS_TABLE_START] = sText_PkmnGotFrostbite,
};
const u16 gTrainerUsedItemStringIds[] =
{
STRINGID_PLAYERUSEDITEM, STRINGID_TRAINER1USEDITEM
};
const u16 gZEffectStringIds[] =
{
[B_MSG_Z_RESET_STATS] = STRINGID_ZMOVERESETSSTATS,
[B_MSG_Z_ALL_STATS_UP]= STRINGID_ZMOVEALLSTATSUP,
[B_MSG_Z_BOOST_CRITS] = STRINGID_ZMOVEZBOOSTCRIT,
[B_MSG_Z_FOLLOW_ME] = STRINGID_PKMNCENTERATTENTION,
[B_MSG_Z_RECOVER_HP] = STRINGID_ZMOVERESTOREHP,
[B_MSG_Z_STAT_UP] = STRINGID_ZMOVESTATUP,
[B_MSG_Z_HP_TRAP] = STRINGID_ZMOVEHPTRAP,
};
const u16 gMentalHerbCureStringIds[] =
{
[B_MSG_MENTALHERBCURE_INFATUATION] = STRINGID_ATKGOTOVERINFATUATION,
[B_MSG_MENTALHERBCURE_TAUNT] = STRINGID_BUFFERENDS,
[B_MSG_MENTALHERBCURE_ENCORE] = STRINGID_PKMNENCOREENDED,
[B_MSG_MENTALHERBCURE_TORMENT] = STRINGID_TORMENTEDNOMORE,
[B_MSG_MENTALHERBCURE_HEALBLOCK] = STRINGID_HEALBLOCKEDNOMORE,
[B_MSG_MENTALHERBCURE_DISABLE] = STRINGID_PKMNMOVEDISABLEDNOMORE,
};
const u16 gStartingStatusStringIds[B_MSG_STARTING_STATUS_COUNT] =
{
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY,
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC,
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_TERRAINBECOMESPSYCHIC,
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_TERRAINBECOMESGRASSY,
[B_MSG_SET_TRICK_ROOM] = STRINGID_DIMENSIONSWERETWISTED,
[B_MSG_SET_MAGIC_ROOM] = STRINGID_BIZARREARENACREATED,
[B_MSG_SET_WONDER_ROOM] = STRINGID_BIZARREAREACREATED,
[B_MSG_SET_TAILWIND_PLAYER] = STRINGID_TAILWINDBLEW,
[B_MSG_SET_TAILWIND_OPPONENT] = STRINGID_TAILWINDBLEW,
};
const u16 gTerrainStringIds[B_MSG_TERRAIN_COUNT] =
{
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY,
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC,
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_TERRAINBECOMESPSYCHIC,
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_TERRAINBECOMESGRASSY,
[B_MSG_TERRAIN_END_MISTY] = STRINGID_MISTYTERRAINENDS,
[B_MSG_TERRAIN_END_ELECTRIC] = STRINGID_ELECTRICTERRAINENDS,
[B_MSG_TERRAIN_END_PSYCHIC] = STRINGID_PSYCHICTERRAINENDS,
[B_MSG_TERRAIN_END_GRASSY] = STRINGID_GRASSYTERRAINENDS,
};
const u16 gTerrainPreventsStringIds[] =
{
[B_MSG_TERRAINPREVENTS_MISTY] = STRINGID_MISTYTERRAINPREVENTS,
[B_MSG_TERRAINPREVENTS_ELECTRIC] = STRINGID_ELECTRICTERRAINPREVENTS,
[B_MSG_TERRAINPREVENTS_PSYCHIC] = STRINGID_PSYCHICTERRAINPREVENTS
};
const u16 gMagicCoatBounceStringIds[] =
{
STRINGID_PKMNMOVEBOUNCED, STRINGID_PKMNMOVEBOUNCEDABILITY
};
const u16 gHealingWishStringIds[] =
{
STRINGID_HEALINGWISHCAMETRUE, STRINGID_LUNARDANCECAMETRUE
};
const u16 gDmgHazardsStringIds[] =
{
[B_MSG_PKMNHURTBYSPIKES] = STRINGID_PKMNHURTBYSPIKES,
[B_MSG_STEALTHROCKDMG] = STRINGID_STEALTHROCKDMG,
[B_MSG_SHARPSTEELDMG] = STRINGID_SHARPSTEELDMG,
[B_MSG_POINTEDSTONESFLOAT] = STRINGID_POINTEDSTONESFLOAT,
[B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED,
[B_MSG_SHARPSTEELFLOATS] = STRINGID_SHARPSTEELFLOATS,
};
const u16 gSwitchInAbilityStringIds[] =
{
[B_MSG_SWITCHIN_MOLDBREAKER] = STRINGID_MOLDBREAKERENTERS,
[B_MSG_SWITCHIN_TERAVOLT] = STRINGID_TERAVOLTENTERS,
[B_MSG_SWITCHIN_TURBOBLAZE] = STRINGID_TURBOBLAZEENTERS,
[B_MSG_SWITCHIN_SLOWSTART] = STRINGID_SLOWSTARTENTERS,
[B_MSG_SWITCHIN_UNNERVE] = STRINGID_UNNERVEENTERS,
[B_MSG_SWITCHIN_ANTICIPATION] = STRINGID_ANTICIPATIONACTIVATES,
[B_MSG_SWITCHIN_FOREWARN] = STRINGID_FOREWARNACTIVATES,
[B_MSG_SWITCHIN_PRESSURE] = STRINGID_PRESSUREENTERS,
[B_MSG_SWITCHIN_DARKAURA] = STRINGID_DARKAURAENTERS,
[B_MSG_SWITCHIN_FAIRYAURA] = STRINGID_FAIRYAURAENTERS,
[B_MSG_SWITCHIN_AURABREAK] = STRINGID_AURABREAKENTERS,
[B_MSG_SWITCHIN_COMATOSE] = STRINGID_COMATOSEENTERS,
[B_MSG_SWITCHIN_SCREENCLEANER] = STRINGID_SCREENCLEANERENTERS,
[B_MSG_SWITCHIN_ASONE] = STRINGID_ASONEENTERS,
[B_MSG_SWITCHIN_CURIOUS_MEDICINE] = STRINGID_CURIOUSMEDICINEENTERS,
[B_MSG_SWITCHIN_PASTEL_VEIL] = STRINGID_PASTELVEILENTERS,
[B_MSG_SWITCHIN_NEUTRALIZING_GAS] = STRINGID_NEUTRALIZINGGASENTERS,
};
const u16 gMissStringIds[] =
@ -965,7 +1422,8 @@ const u16 gProtectLikeUsedStringIds[] =
{
[B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2,
[B_MSG_BRACED_ITSELF] = STRINGID_PKMNBRACEDITSELF,
[B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED
[B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED,
[B_MSG_PROTECTED_TEAM] = STRINGID_PROTECTEDTEAM,
};
const u16 gReflectLightScreenSafeguardStringIds[] =
@ -1055,15 +1513,19 @@ const u16 gFirstTurnOfTwoStringIds[] =
[B_MSG_TURN1_BOUNCE] = STRINGID_PKMNSPRANGUP
};
// Index copied from move's index in gTrappingMoves
const u16 gWrappedStringIds[] =
// Index copied from move's index in sTrappingMoves
const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] =
{
STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
STRINGID_PKMNCLAMPED, // MOVE_CLAMP
STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
STRINGID_PKMNTRAPPEDBYSANDTOMB // MOVE_SAND_TOMB
[B_MSG_WRAPPED_BIND] = STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
[B_MSG_WRAPPED_WRAP] = STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
[B_MSG_WRAPPED_FIRE_SPIN] = STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
[B_MSG_WRAPPED_CLAMP] = STRINGID_PKMNCLAMPED, // MOVE_CLAMP
[B_MSG_WRAPPED_WHIRLPOOL] = STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
[B_MSG_WRAPPED_SAND_TOMB] = STRINGID_PKMNTRAPPEDBYSANDTOMB, // MOVE_SAND_TOMB
[B_MSG_WRAPPED_MAGMA_STORM] = STRINGID_TRAPPEDBYSWIRLINGMAGMA, // MOVE_MAGMA_STORM
[B_MSG_WRAPPED_INFESTATION] = STRINGID_INFESTATION, // MOVE_INFESTATION
[B_MSG_WRAPPED_SNAP_TRAP] = STRINGID_PKMNINSNAPTRAP, // MOVE_SNAP_TRAP
[B_MSG_WRAPPED_THUNDER_CAGE]= STRINGID_THUNDERCAGETRAPPED, // MOVE_THUNDER_CAGE
};
const u16 gMistUsedStringIds[] =
@ -1114,6 +1576,17 @@ const u16 gGotBurnedStringIds[] =
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY
};
const u16 gGotFrostbiteStringIds[] =
{
[B_MSG_STATUSED] = STRINGID_PKMNGOTFROSTBITE
};
const u16 gFrostbiteHealedStringIds[] =
{
[B_MSG_FROSTBITE_HEALED] = STRINGID_PKMNFROSTBITEHEALED2,
[B_MSG_FROSTBITE_HEALED_BY_MOVE] = STRINGID_PKMNFROSTBITEHEALEDBY
};
const u16 gGotFrozenStringIds[] =
{
[B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN,
@ -1194,6 +1667,12 @@ const u16 gWeatherStartsStringIds[] =
[WEATHER_ABNORMAL] = STRINGID_ITISRAINING
};
const u16 gPrimalWeatherBlocksStringIds[] =
{
[B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN] = STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN,
[B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN] = STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT,
};
const u16 gInobedientStringIds[] =
{
[B_MSG_LOAFING] = STRINGID_PKMNLOAFING,
@ -1277,17 +1756,6 @@ const u16 gDoubleBattleRecallStrings[1 << (MAX_BATTLERS_COUNT / 2)] =
STRINGID_TRAINER1MON1AND2COMEBACK
};
const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] =
{
MOVE_BIND,
MOVE_WRAP,
MOVE_FIRE_SPIN,
MOVE_CLAMP,
MOVE_WHIRLPOOL,
MOVE_SAND_TOMB,
0xFFFF // Never read
};
const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p");
const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
@ -1391,6 +1859,9 @@ static const u8 sText_Trainer1Fled[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B
static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
static const u8 sText_Your2[] = _("your");
static const u8 sText_Opposing2[] = _("the opposing");
static const u8 *const sATypeMove_Table[NUMBER_OF_MON_TYPES] =
{
[TYPE_NORMAL] = gText_ANormalMove,
@ -1779,6 +2250,9 @@ void BufferStringBattle(u16 stringId)
}
}
break;
case STRINGID_TRAINERSLIDE:
stringPtr = gBattleStruct->trainerSlideMsg;
break;
default: // load a string from the table
if (stringId >= BATTLESTRINGS_COUNT)
{
@ -2202,8 +2676,21 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
else
toCpy = sText_FoePkmnPrefix4;
break;
case B_TXT_ATK_TEAM2:
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
toCpy = sText_Your2;
else
toCpy = sText_Opposing2;
break;
case B_TXT_DEF_TEAM2:
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
toCpy = sText_Your2;
else
toCpy = sText_Opposing2;
break;
}
// missing if (toCpy != NULL) check
while (*toCpy != EOS)
{

File diff suppressed because it is too large Load Diff

View File

@ -72,6 +72,7 @@ static const u8 *GetTrainerCantBattleSpeech(void);
static EWRAM_DATA u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
static EWRAM_DATA u16 sTrainerObjectEventLocalId = 0;
static EWRAM_DATA u8 *sTrainerAIntroSpeech = NULL;
static EWRAM_DATA u8 *sTrainerADefeatSpeech = NULL;

File diff suppressed because it is too large Load Diff

View File

@ -75,7 +75,7 @@ void FreeBattleResources(void)
}
}
void AdjustFriendshipOnBattleFaint(u8 battlerId)
void AdjustFriendshipOnBattleFaint(u8 battler)
{
u8 opposingBattlerId;
@ -94,15 +94,15 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId)
opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
}
if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level)
if (gBattleMons[opposingBattlerId].level > gBattleMons[battler].level)
{
if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29)
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_LARGE);
if (gBattleMons[opposingBattlerId].level - gBattleMons[battler].level > 29)
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_LARGE);
else
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
else
{
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], FRIENDSHIP_EVENT_FAINT_SMALL);
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL);
}
}

View File

@ -284,22 +284,12 @@ const union AnimCmd *const gAnims_MonPic[] =
#define TRAINER_SPRITE(trainerPic, sprite, size) [TRAINER_PIC_##trainerPic] = {sprite, size, TRAINER_PIC_##trainerPic}
#define TRAINER_PAL(trainerPic, pal) [TRAINER_PIC_##trainerPic] = {pal, TRAINER_PIC_##trainerPic}
#include "data/pokemon_graphics/front_pic_coordinates.h"
#include "data/pokemon_graphics/front_pic_table.h"
#include "data/pokemon_graphics/back_pic_coordinates.h"
#include "data/pokemon_graphics/back_pic_table.h"
#include "data/pokemon_graphics/palette_table.h"
#include "data/pokemon_graphics/shiny_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/pokemon_graphics/enemy_mon_elevation.h"
#include "data/trainer_parties.h"
#include "data/text/trainer_class_names.h"
#include "data/trainers.h"
#include "data/text/species_names.h"
#include "data/text/move_names.h"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

18118
src/data/moves_info.h Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,415 +0,0 @@
// const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
// {
// [SPECIES_NONE] = sBulbasaurLevelUpLearnset,
// [SPECIES_BULBASAUR] = sBulbasaurLevelUpLearnset,
// [SPECIES_IVYSAUR] = sIvysaurLevelUpLearnset,
// [SPECIES_VENUSAUR] = sVenusaurLevelUpLearnset,
// [SPECIES_CHARMANDER] = sCharmanderLevelUpLearnset,
// [SPECIES_CHARMELEON] = sCharmeleonLevelUpLearnset,
// [SPECIES_CHARIZARD] = sCharizardLevelUpLearnset,
// [SPECIES_SQUIRTLE] = sSquirtleLevelUpLearnset,
// [SPECIES_WARTORTLE] = sWartortleLevelUpLearnset,
// [SPECIES_BLASTOISE] = sBlastoiseLevelUpLearnset,
// [SPECIES_CATERPIE] = sCaterpieLevelUpLearnset,
// [SPECIES_METAPOD] = sMetapodLevelUpLearnset,
// [SPECIES_BUTTERFREE] = sButterfreeLevelUpLearnset,
// [SPECIES_WEEDLE] = sWeedleLevelUpLearnset,
// [SPECIES_KAKUNA] = sKakunaLevelUpLearnset,
// [SPECIES_BEEDRILL] = sBeedrillLevelUpLearnset,
// [SPECIES_PIDGEY] = sPidgeyLevelUpLearnset,
// [SPECIES_PIDGEOTTO] = sPidgeottoLevelUpLearnset,
// [SPECIES_PIDGEOT] = sPidgeotLevelUpLearnset,
// [SPECIES_RATTATA] = sRattataLevelUpLearnset,
// [SPECIES_RATICATE] = sRaticateLevelUpLearnset,
// [SPECIES_SPEAROW] = sSpearowLevelUpLearnset,
// [SPECIES_FEAROW] = sFearowLevelUpLearnset,
// [SPECIES_EKANS] = sEkansLevelUpLearnset,
// [SPECIES_ARBOK] = sArbokLevelUpLearnset,
// [SPECIES_PIKACHU] = sPikachuLevelUpLearnset,
// [SPECIES_RAICHU] = sRaichuLevelUpLearnset,
// [SPECIES_SANDSHREW] = sSandshrewLevelUpLearnset,
// [SPECIES_SANDSLASH] = sSandslashLevelUpLearnset,
// [SPECIES_NIDORAN_F] = sNidoranFLevelUpLearnset,
// [SPECIES_NIDORINA] = sNidorinaLevelUpLearnset,
// [SPECIES_NIDOQUEEN] = sNidoqueenLevelUpLearnset,
// [SPECIES_NIDORAN_M] = sNidoranMLevelUpLearnset,
// [SPECIES_NIDORINO] = sNidorinoLevelUpLearnset,
// [SPECIES_NIDOKING] = sNidokingLevelUpLearnset,
// [SPECIES_CLEFAIRY] = sClefairyLevelUpLearnset,
// [SPECIES_CLEFABLE] = sClefableLevelUpLearnset,
// [SPECIES_VULPIX] = sVulpixLevelUpLearnset,
// [SPECIES_NINETALES] = sNinetalesLevelUpLearnset,
// [SPECIES_JIGGLYPUFF] = sJigglypuffLevelUpLearnset,
// [SPECIES_WIGGLYTUFF] = sWigglytuffLevelUpLearnset,
// [SPECIES_ZUBAT] = sZubatLevelUpLearnset,
// [SPECIES_GOLBAT] = sGolbatLevelUpLearnset,
// [SPECIES_ODDISH] = sOddishLevelUpLearnset,
// [SPECIES_GLOOM] = sGloomLevelUpLearnset,
// [SPECIES_VILEPLUME] = sVileplumeLevelUpLearnset,
// [SPECIES_PARAS] = sParasLevelUpLearnset,
// [SPECIES_PARASECT] = sParasectLevelUpLearnset,
// [SPECIES_VENONAT] = sVenonatLevelUpLearnset,
// [SPECIES_VENOMOTH] = sVenomothLevelUpLearnset,
// [SPECIES_DIGLETT] = sDiglettLevelUpLearnset,
// [SPECIES_DUGTRIO] = sDugtrioLevelUpLearnset,
// [SPECIES_MEOWTH] = sMeowthLevelUpLearnset,
// [SPECIES_PERSIAN] = sPersianLevelUpLearnset,
// [SPECIES_PSYDUCK] = sPsyduckLevelUpLearnset,
// [SPECIES_GOLDUCK] = sGolduckLevelUpLearnset,
// [SPECIES_MANKEY] = sMankeyLevelUpLearnset,
// [SPECIES_PRIMEAPE] = sPrimeapeLevelUpLearnset,
// [SPECIES_GROWLITHE] = sGrowlitheLevelUpLearnset,
// [SPECIES_ARCANINE] = sArcanineLevelUpLearnset,
// [SPECIES_POLIWAG] = sPoliwagLevelUpLearnset,
// [SPECIES_POLIWHIRL] = sPoliwhirlLevelUpLearnset,
// [SPECIES_POLIWRATH] = sPoliwrathLevelUpLearnset,
// [SPECIES_ABRA] = sAbraLevelUpLearnset,
// [SPECIES_KADABRA] = sKadabraLevelUpLearnset,
// [SPECIES_ALAKAZAM] = sAlakazamLevelUpLearnset,
// [SPECIES_MACHOP] = sMachopLevelUpLearnset,
// [SPECIES_MACHOKE] = sMachokeLevelUpLearnset,
// [SPECIES_MACHAMP] = sMachampLevelUpLearnset,
// [SPECIES_BELLSPROUT] = sBellsproutLevelUpLearnset,
// [SPECIES_WEEPINBELL] = sWeepinbellLevelUpLearnset,
// [SPECIES_VICTREEBEL] = sVictreebelLevelUpLearnset,
// [SPECIES_TENTACOOL] = sTentacoolLevelUpLearnset,
// [SPECIES_TENTACRUEL] = sTentacruelLevelUpLearnset,
// [SPECIES_GEODUDE] = sGeodudeLevelUpLearnset,
// [SPECIES_GRAVELER] = sGravelerLevelUpLearnset,
// [SPECIES_GOLEM] = sGolemLevelUpLearnset,
// [SPECIES_PONYTA] = sPonytaLevelUpLearnset,
// [SPECIES_RAPIDASH] = sRapidashLevelUpLearnset,
// [SPECIES_SLOWPOKE] = sSlowpokeLevelUpLearnset,
// [SPECIES_SLOWBRO] = sSlowbroLevelUpLearnset,
// [SPECIES_MAGNEMITE] = sMagnemiteLevelUpLearnset,
// [SPECIES_MAGNETON] = sMagnetonLevelUpLearnset,
// [SPECIES_FARFETCHD] = sFarfetchdLevelUpLearnset,
// [SPECIES_DODUO] = sDoduoLevelUpLearnset,
// [SPECIES_DODRIO] = sDodrioLevelUpLearnset,
// [SPECIES_SEEL] = sSeelLevelUpLearnset,
// [SPECIES_DEWGONG] = sDewgongLevelUpLearnset,
// [SPECIES_GRIMER] = sGrimerLevelUpLearnset,
// [SPECIES_MUK] = sMukLevelUpLearnset,
// [SPECIES_SHELLDER] = sShellderLevelUpLearnset,
// [SPECIES_CLOYSTER] = sCloysterLevelUpLearnset,
// [SPECIES_GASTLY] = sGastlyLevelUpLearnset,
// [SPECIES_HAUNTER] = sHaunterLevelUpLearnset,
// [SPECIES_GENGAR] = sGengarLevelUpLearnset,
// [SPECIES_ONIX] = sOnixLevelUpLearnset,
// [SPECIES_DROWZEE] = sDrowzeeLevelUpLearnset,
// [SPECIES_HYPNO] = sHypnoLevelUpLearnset,
// [SPECIES_KRABBY] = sKrabbyLevelUpLearnset,
// [SPECIES_KINGLER] = sKinglerLevelUpLearnset,
// [SPECIES_VOLTORB] = sVoltorbLevelUpLearnset,
// [SPECIES_ELECTRODE] = sElectrodeLevelUpLearnset,
// [SPECIES_EXEGGCUTE] = sExeggcuteLevelUpLearnset,
// [SPECIES_EXEGGUTOR] = sExeggutorLevelUpLearnset,
// [SPECIES_CUBONE] = sCuboneLevelUpLearnset,
// [SPECIES_MAROWAK] = sMarowakLevelUpLearnset,
// [SPECIES_HITMONLEE] = sHitmonleeLevelUpLearnset,
// [SPECIES_HITMONCHAN] = sHitmonchanLevelUpLearnset,
// [SPECIES_LICKITUNG] = sLickitungLevelUpLearnset,
// [SPECIES_KOFFING] = sKoffingLevelUpLearnset,
// [SPECIES_WEEZING] = sWeezingLevelUpLearnset,
// [SPECIES_RHYHORN] = sRhyhornLevelUpLearnset,
// [SPECIES_RHYDON] = sRhydonLevelUpLearnset,
// [SPECIES_CHANSEY] = sChanseyLevelUpLearnset,
// [SPECIES_TANGELA] = sTangelaLevelUpLearnset,
// [SPECIES_KANGASKHAN] = sKangaskhanLevelUpLearnset,
// [SPECIES_HORSEA] = sHorseaLevelUpLearnset,
// [SPECIES_SEADRA] = sSeadraLevelUpLearnset,
// [SPECIES_GOLDEEN] = sGoldeenLevelUpLearnset,
// [SPECIES_SEAKING] = sSeakingLevelUpLearnset,
// [SPECIES_STARYU] = sStaryuLevelUpLearnset,
// [SPECIES_STARMIE] = sStarmieLevelUpLearnset,
// [SPECIES_MR_MIME] = sMrMimeLevelUpLearnset,
// [SPECIES_SCYTHER] = sScytherLevelUpLearnset,
// [SPECIES_JYNX] = sJynxLevelUpLearnset,
// [SPECIES_ELECTABUZZ] = sElectabuzzLevelUpLearnset,
// [SPECIES_MAGMAR] = sMagmarLevelUpLearnset,
// [SPECIES_PINSIR] = sPinsirLevelUpLearnset,
// [SPECIES_TAUROS] = sTaurosLevelUpLearnset,
// [SPECIES_MAGIKARP] = sMagikarpLevelUpLearnset,
// [SPECIES_GYARADOS] = sGyaradosLevelUpLearnset,
// [SPECIES_LAPRAS] = sLaprasLevelUpLearnset,
// [SPECIES_DITTO] = sDittoLevelUpLearnset,
// [SPECIES_EEVEE] = sEeveeLevelUpLearnset,
// [SPECIES_VAPOREON] = sVaporeonLevelUpLearnset,
// [SPECIES_JOLTEON] = sJolteonLevelUpLearnset,
// [SPECIES_FLAREON] = sFlareonLevelUpLearnset,
// [SPECIES_PORYGON] = sPorygonLevelUpLearnset,
// [SPECIES_OMANYTE] = sOmanyteLevelUpLearnset,
// [SPECIES_OMASTAR] = sOmastarLevelUpLearnset,
// [SPECIES_KABUTO] = sKabutoLevelUpLearnset,
// [SPECIES_KABUTOPS] = sKabutopsLevelUpLearnset,
// [SPECIES_AERODACTYL] = sAerodactylLevelUpLearnset,
// [SPECIES_SNORLAX] = sSnorlaxLevelUpLearnset,
// [SPECIES_ARTICUNO] = sArticunoLevelUpLearnset,
// [SPECIES_ZAPDOS] = sZapdosLevelUpLearnset,
// [SPECIES_MOLTRES] = sMoltresLevelUpLearnset,
// [SPECIES_DRATINI] = sDratiniLevelUpLearnset,
// [SPECIES_DRAGONAIR] = sDragonairLevelUpLearnset,
// [SPECIES_DRAGONITE] = sDragoniteLevelUpLearnset,
// [SPECIES_MEWTWO] = sMewtwoLevelUpLearnset,
// [SPECIES_MEW] = sMewLevelUpLearnset,
// [SPECIES_CHIKORITA] = sChikoritaLevelUpLearnset,
// [SPECIES_BAYLEEF] = sBayleefLevelUpLearnset,
// [SPECIES_MEGANIUM] = sMeganiumLevelUpLearnset,
// [SPECIES_CYNDAQUIL] = sCyndaquilLevelUpLearnset,
// [SPECIES_QUILAVA] = sQuilavaLevelUpLearnset,
// [SPECIES_TYPHLOSION] = sTyphlosionLevelUpLearnset,
// [SPECIES_TOTODILE] = sTotodileLevelUpLearnset,
// [SPECIES_CROCONAW] = sCroconawLevelUpLearnset,
// [SPECIES_FERALIGATR] = sFeraligatrLevelUpLearnset,
// [SPECIES_SENTRET] = sSentretLevelUpLearnset,
// [SPECIES_FURRET] = sFurretLevelUpLearnset,
// [SPECIES_HOOTHOOT] = sHoothootLevelUpLearnset,
// [SPECIES_NOCTOWL] = sNoctowlLevelUpLearnset,
// [SPECIES_LEDYBA] = sLedybaLevelUpLearnset,
// [SPECIES_LEDIAN] = sLedianLevelUpLearnset,
// [SPECIES_SPINARAK] = sSpinarakLevelUpLearnset,
// [SPECIES_ARIADOS] = sAriadosLevelUpLearnset,
// [SPECIES_CROBAT] = sCrobatLevelUpLearnset,
// [SPECIES_CHINCHOU] = sChinchouLevelUpLearnset,
// [SPECIES_LANTURN] = sLanturnLevelUpLearnset,
// [SPECIES_PICHU] = sPichuLevelUpLearnset,
// [SPECIES_CLEFFA] = sCleffaLevelUpLearnset,
// [SPECIES_IGGLYBUFF] = sIgglybuffLevelUpLearnset,
// [SPECIES_TOGEPI] = sTogepiLevelUpLearnset,
// [SPECIES_TOGETIC] = sTogeticLevelUpLearnset,
// [SPECIES_NATU] = sNatuLevelUpLearnset,
// [SPECIES_XATU] = sXatuLevelUpLearnset,
// [SPECIES_MAREEP] = sMareepLevelUpLearnset,
// [SPECIES_FLAAFFY] = sFlaaffyLevelUpLearnset,
// [SPECIES_AMPHAROS] = sAmpharosLevelUpLearnset,
// [SPECIES_BELLOSSOM] = sBellossomLevelUpLearnset,
// [SPECIES_MARILL] = sMarillLevelUpLearnset,
// [SPECIES_AZUMARILL] = sAzumarillLevelUpLearnset,
// [SPECIES_SUDOWOODO] = sSudowoodoLevelUpLearnset,
// [SPECIES_POLITOED] = sPolitoedLevelUpLearnset,
// [SPECIES_HOPPIP] = sHoppipLevelUpLearnset,
// [SPECIES_SKIPLOOM] = sSkiploomLevelUpLearnset,
// [SPECIES_JUMPLUFF] = sJumpluffLevelUpLearnset,
// [SPECIES_AIPOM] = sAipomLevelUpLearnset,
// [SPECIES_SUNKERN] = sSunkernLevelUpLearnset,
// [SPECIES_SUNFLORA] = sSunfloraLevelUpLearnset,
// [SPECIES_YANMA] = sYanmaLevelUpLearnset,
// [SPECIES_WOOPER] = sWooperLevelUpLearnset,
// [SPECIES_QUAGSIRE] = sQuagsireLevelUpLearnset,
// [SPECIES_ESPEON] = sEspeonLevelUpLearnset,
// [SPECIES_UMBREON] = sUmbreonLevelUpLearnset,
// [SPECIES_MURKROW] = sMurkrowLevelUpLearnset,
// [SPECIES_SLOWKING] = sSlowkingLevelUpLearnset,
// [SPECIES_MISDREAVUS] = sMisdreavusLevelUpLearnset,
// [SPECIES_UNOWN] = sUnownLevelUpLearnset,
// [SPECIES_WOBBUFFET] = sWobbuffetLevelUpLearnset,
// [SPECIES_GIRAFARIG] = sGirafarigLevelUpLearnset,
// [SPECIES_PINECO] = sPinecoLevelUpLearnset,
// [SPECIES_FORRETRESS] = sForretressLevelUpLearnset,
// [SPECIES_DUNSPARCE] = sDunsparceLevelUpLearnset,
// [SPECIES_GLIGAR] = sGligarLevelUpLearnset,
// [SPECIES_STEELIX] = sSteelixLevelUpLearnset,
// [SPECIES_SNUBBULL] = sSnubbullLevelUpLearnset,
// [SPECIES_GRANBULL] = sGranbullLevelUpLearnset,
// [SPECIES_QWILFISH] = sQwilfishLevelUpLearnset,
// [SPECIES_SCIZOR] = sScizorLevelUpLearnset,
// [SPECIES_SHUCKLE] = sShuckleLevelUpLearnset,
// [SPECIES_HERACROSS] = sHeracrossLevelUpLearnset,
// [SPECIES_SNEASEL] = sSneaselLevelUpLearnset,
// [SPECIES_TEDDIURSA] = sTeddiursaLevelUpLearnset,
// [SPECIES_URSARING] = sUrsaringLevelUpLearnset,
// [SPECIES_SLUGMA] = sSlugmaLevelUpLearnset,
// [SPECIES_MAGCARGO] = sMagcargoLevelUpLearnset,
// [SPECIES_SWINUB] = sSwinubLevelUpLearnset,
// [SPECIES_PILOSWINE] = sPiloswineLevelUpLearnset,
// [SPECIES_CORSOLA] = sCorsolaLevelUpLearnset,
// [SPECIES_REMORAID] = sRemoraidLevelUpLearnset,
// [SPECIES_OCTILLERY] = sOctilleryLevelUpLearnset,
// [SPECIES_DELIBIRD] = sDelibirdLevelUpLearnset,
// [SPECIES_MANTINE] = sMantineLevelUpLearnset,
// [SPECIES_SKARMORY] = sSkarmoryLevelUpLearnset,
// [SPECIES_HOUNDOUR] = sHoundourLevelUpLearnset,
// [SPECIES_HOUNDOOM] = sHoundoomLevelUpLearnset,
// [SPECIES_KINGDRA] = sKingdraLevelUpLearnset,
// [SPECIES_PHANPY] = sPhanpyLevelUpLearnset,
// [SPECIES_DONPHAN] = sDonphanLevelUpLearnset,
// [SPECIES_PORYGON2] = sPorygon2LevelUpLearnset,
// [SPECIES_STANTLER] = sStantlerLevelUpLearnset,
// [SPECIES_SMEARGLE] = sSmeargleLevelUpLearnset,
// [SPECIES_TYROGUE] = sTyrogueLevelUpLearnset,
// [SPECIES_HITMONTOP] = sHitmontopLevelUpLearnset,
// [SPECIES_SMOOCHUM] = sSmoochumLevelUpLearnset,
// [SPECIES_ELEKID] = sElekidLevelUpLearnset,
// [SPECIES_MAGBY] = sMagbyLevelUpLearnset,
// [SPECIES_MILTANK] = sMiltankLevelUpLearnset,
// [SPECIES_BLISSEY] = sBlisseyLevelUpLearnset,
// [SPECIES_RAIKOU] = sRaikouLevelUpLearnset,
// [SPECIES_ENTEI] = sEnteiLevelUpLearnset,
// [SPECIES_SUICUNE] = sSuicuneLevelUpLearnset,
// [SPECIES_LARVITAR] = sLarvitarLevelUpLearnset,
// [SPECIES_PUPITAR] = sPupitarLevelUpLearnset,
// [SPECIES_TYRANITAR] = sTyranitarLevelUpLearnset,
// [SPECIES_LUGIA] = sLugiaLevelUpLearnset,
// [SPECIES_HO_OH] = sHoOhLevelUpLearnset,
// [SPECIES_CELEBI] = sCelebiLevelUpLearnset,
// [SPECIES_OLD_UNOWN_B] = sSpecies252LevelUpLearnset,
// [SPECIES_OLD_UNOWN_C] = sSpecies253LevelUpLearnset,
// [SPECIES_OLD_UNOWN_D] = sSpecies254LevelUpLearnset,
// [SPECIES_OLD_UNOWN_E] = sSpecies255LevelUpLearnset,
// [SPECIES_OLD_UNOWN_F] = sSpecies256LevelUpLearnset,
// [SPECIES_OLD_UNOWN_G] = sSpecies257LevelUpLearnset,
// [SPECIES_OLD_UNOWN_H] = sSpecies258LevelUpLearnset,
// [SPECIES_OLD_UNOWN_I] = sSpecies259LevelUpLearnset,
// [SPECIES_OLD_UNOWN_J] = sSpecies260LevelUpLearnset,
// [SPECIES_OLD_UNOWN_K] = sSpecies261LevelUpLearnset,
// [SPECIES_OLD_UNOWN_L] = sSpecies262LevelUpLearnset,
// [SPECIES_OLD_UNOWN_M] = sSpecies263LevelUpLearnset,
// [SPECIES_OLD_UNOWN_N] = sSpecies264LevelUpLearnset,
// [SPECIES_OLD_UNOWN_O] = sSpecies265LevelUpLearnset,
// [SPECIES_OLD_UNOWN_P] = sSpecies266LevelUpLearnset,
// [SPECIES_OLD_UNOWN_Q] = sSpecies267LevelUpLearnset,
// [SPECIES_OLD_UNOWN_R] = sSpecies268LevelUpLearnset,
// [SPECIES_OLD_UNOWN_S] = sSpecies269LevelUpLearnset,
// [SPECIES_OLD_UNOWN_T] = sSpecies270LevelUpLearnset,
// [SPECIES_OLD_UNOWN_U] = sSpecies271LevelUpLearnset,
// [SPECIES_OLD_UNOWN_V] = sSpecies272LevelUpLearnset,
// [SPECIES_OLD_UNOWN_W] = sSpecies273LevelUpLearnset,
// [SPECIES_OLD_UNOWN_X] = sSpecies274LevelUpLearnset,
// [SPECIES_OLD_UNOWN_Y] = sSpecies275LevelUpLearnset,
// [SPECIES_OLD_UNOWN_Z] = sSpecies276LevelUpLearnset,
// [SPECIES_TREECKO] = sTreeckoLevelUpLearnset,
// [SPECIES_GROVYLE] = sGrovyleLevelUpLearnset,
// [SPECIES_SCEPTILE] = sSceptileLevelUpLearnset,
// [SPECIES_TORCHIC] = sTorchicLevelUpLearnset,
// [SPECIES_COMBUSKEN] = sCombuskenLevelUpLearnset,
// [SPECIES_BLAZIKEN] = sBlazikenLevelUpLearnset,
// [SPECIES_MUDKIP] = sMudkipLevelUpLearnset,
// [SPECIES_MARSHTOMP] = sMarshtompLevelUpLearnset,
// [SPECIES_SWAMPERT] = sSwampertLevelUpLearnset,
// [SPECIES_POOCHYENA] = sPoochyenaLevelUpLearnset,
// [SPECIES_MIGHTYENA] = sMightyenaLevelUpLearnset,
// [SPECIES_ZIGZAGOON] = sZigzagoonLevelUpLearnset,
// [SPECIES_LINOONE] = sLinooneLevelUpLearnset,
// [SPECIES_WURMPLE] = sWurmpleLevelUpLearnset,
// [SPECIES_SILCOON] = sSilcoonLevelUpLearnset,
// [SPECIES_BEAUTIFLY] = sBeautiflyLevelUpLearnset,
// [SPECIES_CASCOON] = sCascoonLevelUpLearnset,
// [SPECIES_DUSTOX] = sDustoxLevelUpLearnset,
// [SPECIES_LOTAD] = sLotadLevelUpLearnset,
// [SPECIES_LOMBRE] = sLombreLevelUpLearnset,
// [SPECIES_LUDICOLO] = sLudicoloLevelUpLearnset,
// [SPECIES_SEEDOT] = sSeedotLevelUpLearnset,
// [SPECIES_NUZLEAF] = sNuzleafLevelUpLearnset,
// [SPECIES_SHIFTRY] = sShiftryLevelUpLearnset,
// [SPECIES_NINCADA] = sNincadaLevelUpLearnset,
// [SPECIES_NINJASK] = sNinjaskLevelUpLearnset,
// [SPECIES_SHEDINJA] = sShedinjaLevelUpLearnset,
// [SPECIES_TAILLOW] = sTaillowLevelUpLearnset,
// [SPECIES_SWELLOW] = sSwellowLevelUpLearnset,
// [SPECIES_SHROOMISH] = sShroomishLevelUpLearnset,
// [SPECIES_BRELOOM] = sBreloomLevelUpLearnset,
// [SPECIES_SPINDA] = sSpindaLevelUpLearnset,
// [SPECIES_WINGULL] = sWingullLevelUpLearnset,
// [SPECIES_PELIPPER] = sPelipperLevelUpLearnset,
// [SPECIES_SURSKIT] = sSurskitLevelUpLearnset,
// [SPECIES_MASQUERAIN] = sMasquerainLevelUpLearnset,
// [SPECIES_WAILMER] = sWailmerLevelUpLearnset,
// [SPECIES_WAILORD] = sWailordLevelUpLearnset,
// [SPECIES_SKITTY] = sSkittyLevelUpLearnset,
// [SPECIES_DELCATTY] = sDelcattyLevelUpLearnset,
// [SPECIES_KECLEON] = sKecleonLevelUpLearnset,
// [SPECIES_BALTOY] = sBaltoyLevelUpLearnset,
// [SPECIES_CLAYDOL] = sClaydolLevelUpLearnset,
// [SPECIES_NOSEPASS] = sNosepassLevelUpLearnset,
// [SPECIES_TORKOAL] = sTorkoalLevelUpLearnset,
// [SPECIES_SABLEYE] = sSableyeLevelUpLearnset,
// [SPECIES_BARBOACH] = sBarboachLevelUpLearnset,
// [SPECIES_WHISCASH] = sWhiscashLevelUpLearnset,
// [SPECIES_LUVDISC] = sLuvdiscLevelUpLearnset,
// [SPECIES_CORPHISH] = sCorphishLevelUpLearnset,
// [SPECIES_CRAWDAUNT] = sCrawdauntLevelUpLearnset,
// [SPECIES_FEEBAS] = sFeebasLevelUpLearnset,
// [SPECIES_MILOTIC] = sMiloticLevelUpLearnset,
// [SPECIES_CARVANHA] = sCarvanhaLevelUpLearnset,
// [SPECIES_SHARPEDO] = sSharpedoLevelUpLearnset,
// [SPECIES_TRAPINCH] = sTrapinchLevelUpLearnset,
// [SPECIES_VIBRAVA] = sVibravaLevelUpLearnset,
// [SPECIES_FLYGON] = sFlygonLevelUpLearnset,
// [SPECIES_MAKUHITA] = sMakuhitaLevelUpLearnset,
// [SPECIES_HARIYAMA] = sHariyamaLevelUpLearnset,
// [SPECIES_ELECTRIKE] = sElectrikeLevelUpLearnset,
// [SPECIES_MANECTRIC] = sManectricLevelUpLearnset,
// [SPECIES_NUMEL] = sNumelLevelUpLearnset,
// [SPECIES_CAMERUPT] = sCameruptLevelUpLearnset,
// [SPECIES_SPHEAL] = sSphealLevelUpLearnset,
// [SPECIES_SEALEO] = sSealeoLevelUpLearnset,
// [SPECIES_WALREIN] = sWalreinLevelUpLearnset,
// [SPECIES_CACNEA] = sCacneaLevelUpLearnset,
// [SPECIES_CACTURNE] = sCacturneLevelUpLearnset,
// [SPECIES_SNORUNT] = sSnoruntLevelUpLearnset,
// [SPECIES_GLALIE] = sGlalieLevelUpLearnset,
// [SPECIES_LUNATONE] = sLunatoneLevelUpLearnset,
// [SPECIES_SOLROCK] = sSolrockLevelUpLearnset,
// [SPECIES_AZURILL] = sAzurillLevelUpLearnset,
// [SPECIES_SPOINK] = sSpoinkLevelUpLearnset,
// [SPECIES_GRUMPIG] = sGrumpigLevelUpLearnset,
// [SPECIES_PLUSLE] = sPlusleLevelUpLearnset,
// [SPECIES_MINUN] = sMinunLevelUpLearnset,
// [SPECIES_MAWILE] = sMawileLevelUpLearnset,
// [SPECIES_MEDITITE] = sMedititeLevelUpLearnset,
// [SPECIES_MEDICHAM] = sMedichamLevelUpLearnset,
// [SPECIES_SWABLU] = sSwabluLevelUpLearnset,
// [SPECIES_ALTARIA] = sAltariaLevelUpLearnset,
// [SPECIES_WYNAUT] = sWynautLevelUpLearnset,
// [SPECIES_DUSKULL] = sDuskullLevelUpLearnset,
// [SPECIES_DUSCLOPS] = sDusclopsLevelUpLearnset,
// [SPECIES_ROSELIA] = sRoseliaLevelUpLearnset,
// [SPECIES_SLAKOTH] = sSlakothLevelUpLearnset,
// [SPECIES_VIGOROTH] = sVigorothLevelUpLearnset,
// [SPECIES_SLAKING] = sSlakingLevelUpLearnset,
// [SPECIES_GULPIN] = sGulpinLevelUpLearnset,
// [SPECIES_SWALOT] = sSwalotLevelUpLearnset,
// [SPECIES_TROPIUS] = sTropiusLevelUpLearnset,
// [SPECIES_WHISMUR] = sWhismurLevelUpLearnset,
// [SPECIES_LOUDRED] = sLoudredLevelUpLearnset,
// [SPECIES_EXPLOUD] = sExploudLevelUpLearnset,
// [SPECIES_CLAMPERL] = sClamperlLevelUpLearnset,
// [SPECIES_HUNTAIL] = sHuntailLevelUpLearnset,
// [SPECIES_GOREBYSS] = sGorebyssLevelUpLearnset,
// [SPECIES_ABSOL] = sAbsolLevelUpLearnset,
// [SPECIES_SHUPPET] = sShuppetLevelUpLearnset,
// [SPECIES_BANETTE] = sBanetteLevelUpLearnset,
// [SPECIES_SEVIPER] = sSeviperLevelUpLearnset,
// [SPECIES_ZANGOOSE] = sZangooseLevelUpLearnset,
// [SPECIES_RELICANTH] = sRelicanthLevelUpLearnset,
// [SPECIES_ARON] = sAronLevelUpLearnset,
// [SPECIES_LAIRON] = sLaironLevelUpLearnset,
// [SPECIES_AGGRON] = sAggronLevelUpLearnset,
// [SPECIES_CASTFORM] = sCastformLevelUpLearnset,
// [SPECIES_VOLBEAT] = sVolbeatLevelUpLearnset,
// [SPECIES_ILLUMISE] = sIllumiseLevelUpLearnset,
// [SPECIES_LILEEP] = sLileepLevelUpLearnset,
// [SPECIES_CRADILY] = sCradilyLevelUpLearnset,
// [SPECIES_ANORITH] = sAnorithLevelUpLearnset,
// [SPECIES_ARMALDO] = sArmaldoLevelUpLearnset,
// [SPECIES_RALTS] = sRaltsLevelUpLearnset,
// [SPECIES_KIRLIA] = sKirliaLevelUpLearnset,
// [SPECIES_GARDEVOIR] = sGardevoirLevelUpLearnset,
// [SPECIES_BAGON] = sBagonLevelUpLearnset,
// [SPECIES_SHELGON] = sShelgonLevelUpLearnset,
// [SPECIES_SALAMENCE] = sSalamenceLevelUpLearnset,
// [SPECIES_BELDUM] = sBeldumLevelUpLearnset,
// [SPECIES_METANG] = sMetangLevelUpLearnset,
// [SPECIES_METAGROSS] = sMetagrossLevelUpLearnset,
// [SPECIES_REGIROCK] = sRegirockLevelUpLearnset,
// [SPECIES_REGICE] = sRegiceLevelUpLearnset,
// [SPECIES_REGISTEEL] = sRegisteelLevelUpLearnset,
// [SPECIES_KYOGRE] = sKyogreLevelUpLearnset,
// [SPECIES_GROUDON] = sGroudonLevelUpLearnset,
// [SPECIES_RAYQUAZA] = sRayquazaLevelUpLearnset,
// [SPECIES_LATIAS] = sLatiasLevelUpLearnset,
// [SPECIES_LATIOS] = sLatiosLevelUpLearnset,
// [SPECIES_JIRACHI] = sJirachiLevelUpLearnset,
// [SPECIES_DEOXYS] = sDeoxysLevelUpLearnset,
// [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset,
// };

File diff suppressed because it is too large Load Diff

View File

@ -918,7 +918,7 @@ const struct SpeciesInfo gSpeciesInfoGen7[] =
ICON(Crabrawler, 2),
.footprint = gMonFootprint_Crabrawler,
LEARNSETS(Crabrawler),
.evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM, SPECIES_CRABOMINABLE},
.evolutions = EVOLUTION({EVO_SPECIFIC_MAP, MAPSEC_SEAFOAM_ISLANDS, SPECIES_CRABOMINABLE},
{EVO_ITEM, ITEM_ICE_STONE, SPECIES_CRABOMINABLE}),
},

File diff suppressed because it is too large Load Diff

View File

@ -1,443 +0,0 @@
// const struct CompressedSpriteSheet gMonBackPicTable[] =
// {
// SPECIES_SPRITE(NONE, gMonBackPic_CircledQuestionMark),
// SPECIES_SPRITE(BULBASAUR, gMonBackPic_Bulbasaur),
// SPECIES_SPRITE(IVYSAUR, gMonBackPic_Ivysaur),
// SPECIES_SPRITE(VENUSAUR, gMonBackPic_Venusaur),
// SPECIES_SPRITE(CHARMANDER, gMonBackPic_Charmander),
// SPECIES_SPRITE(CHARMELEON, gMonBackPic_Charmeleon),
// SPECIES_SPRITE(CHARIZARD, gMonBackPic_Charizard),
// SPECIES_SPRITE(SQUIRTLE, gMonBackPic_Squirtle),
// SPECIES_SPRITE(WARTORTLE, gMonBackPic_Wartortle),
// SPECIES_SPRITE(BLASTOISE, gMonBackPic_Blastoise),
// SPECIES_SPRITE(CATERPIE, gMonBackPic_Caterpie),
// SPECIES_SPRITE(METAPOD, gMonBackPic_Metapod),
// SPECIES_SPRITE(BUTTERFREE, gMonBackPic_Butterfree),
// SPECIES_SPRITE(WEEDLE, gMonBackPic_Weedle),
// SPECIES_SPRITE(KAKUNA, gMonBackPic_Kakuna),
// SPECIES_SPRITE(BEEDRILL, gMonBackPic_Beedrill),
// SPECIES_SPRITE(PIDGEY, gMonBackPic_Pidgey),
// SPECIES_SPRITE(PIDGEOTTO, gMonBackPic_Pidgeotto),
// SPECIES_SPRITE(PIDGEOT, gMonBackPic_Pidgeot),
// SPECIES_SPRITE(RATTATA, gMonBackPic_Rattata),
// SPECIES_SPRITE(RATICATE, gMonBackPic_Raticate),
// SPECIES_SPRITE(SPEAROW, gMonBackPic_Spearow),
// SPECIES_SPRITE(FEAROW, gMonBackPic_Fearow),
// SPECIES_SPRITE(EKANS, gMonBackPic_Ekans),
// SPECIES_SPRITE(ARBOK, gMonBackPic_Arbok),
// SPECIES_SPRITE(PIKACHU, gMonBackPic_Pikachu),
// SPECIES_SPRITE(RAICHU, gMonBackPic_Raichu),
// SPECIES_SPRITE(SANDSHREW, gMonBackPic_Sandshrew),
// SPECIES_SPRITE(SANDSLASH, gMonBackPic_Sandslash),
// SPECIES_SPRITE(NIDORAN_F, gMonBackPic_NidoranF),
// SPECIES_SPRITE(NIDORINA, gMonBackPic_Nidorina),
// SPECIES_SPRITE(NIDOQUEEN, gMonBackPic_Nidoqueen),
// SPECIES_SPRITE(NIDORAN_M, gMonBackPic_NidoranM),
// SPECIES_SPRITE(NIDORINO, gMonBackPic_Nidorino),
// SPECIES_SPRITE(NIDOKING, gMonBackPic_Nidoking),
// SPECIES_SPRITE(CLEFAIRY, gMonBackPic_Clefairy),
// SPECIES_SPRITE(CLEFABLE, gMonBackPic_Clefable),
// SPECIES_SPRITE(VULPIX, gMonBackPic_Vulpix),
// SPECIES_SPRITE(NINETALES, gMonBackPic_Ninetales),
// SPECIES_SPRITE(JIGGLYPUFF, gMonBackPic_Jigglypuff),
// SPECIES_SPRITE(WIGGLYTUFF, gMonBackPic_Wigglytuff),
// SPECIES_SPRITE(ZUBAT, gMonBackPic_Zubat),
// SPECIES_SPRITE(GOLBAT, gMonBackPic_Golbat),
// SPECIES_SPRITE(ODDISH, gMonBackPic_Oddish),
// SPECIES_SPRITE(GLOOM, gMonBackPic_Gloom),
// SPECIES_SPRITE(VILEPLUME, gMonBackPic_Vileplume),
// SPECIES_SPRITE(PARAS, gMonBackPic_Paras),
// SPECIES_SPRITE(PARASECT, gMonBackPic_Parasect),
// SPECIES_SPRITE(VENONAT, gMonBackPic_Venonat),
// SPECIES_SPRITE(VENOMOTH, gMonBackPic_Venomoth),
// SPECIES_SPRITE(DIGLETT, gMonBackPic_Diglett),
// SPECIES_SPRITE(DUGTRIO, gMonBackPic_Dugtrio),
// SPECIES_SPRITE(MEOWTH, gMonBackPic_Meowth),
// SPECIES_SPRITE(PERSIAN, gMonBackPic_Persian),
// SPECIES_SPRITE(PSYDUCK, gMonBackPic_Psyduck),
// SPECIES_SPRITE(GOLDUCK, gMonBackPic_Golduck),
// SPECIES_SPRITE(MANKEY, gMonBackPic_Mankey),
// SPECIES_SPRITE(PRIMEAPE, gMonBackPic_Primeape),
// SPECIES_SPRITE(GROWLITHE, gMonBackPic_Growlithe),
// SPECIES_SPRITE(ARCANINE, gMonBackPic_Arcanine),
// SPECIES_SPRITE(POLIWAG, gMonBackPic_Poliwag),
// SPECIES_SPRITE(POLIWHIRL, gMonBackPic_Poliwhirl),
// SPECIES_SPRITE(POLIWRATH, gMonBackPic_Poliwrath),
// SPECIES_SPRITE(ABRA, gMonBackPic_Abra),
// SPECIES_SPRITE(KADABRA, gMonBackPic_Kadabra),
// SPECIES_SPRITE(ALAKAZAM, gMonBackPic_Alakazam),
// SPECIES_SPRITE(MACHOP, gMonBackPic_Machop),
// SPECIES_SPRITE(MACHOKE, gMonBackPic_Machoke),
// SPECIES_SPRITE(MACHAMP, gMonBackPic_Machamp),
// SPECIES_SPRITE(BELLSPROUT, gMonBackPic_Bellsprout),
// SPECIES_SPRITE(WEEPINBELL, gMonBackPic_Weepinbell),
// SPECIES_SPRITE(VICTREEBEL, gMonBackPic_Victreebel),
// SPECIES_SPRITE(TENTACOOL, gMonBackPic_Tentacool),
// SPECIES_SPRITE(TENTACRUEL, gMonBackPic_Tentacruel),
// SPECIES_SPRITE(GEODUDE, gMonBackPic_Geodude),
// SPECIES_SPRITE(GRAVELER, gMonBackPic_Graveler),
// SPECIES_SPRITE(GOLEM, gMonBackPic_Golem),
// SPECIES_SPRITE(PONYTA, gMonBackPic_Ponyta),
// SPECIES_SPRITE(RAPIDASH, gMonBackPic_Rapidash),
// SPECIES_SPRITE(SLOWPOKE, gMonBackPic_Slowpoke),
// SPECIES_SPRITE(SLOWBRO, gMonBackPic_Slowbro),
// SPECIES_SPRITE(MAGNEMITE, gMonBackPic_Magnemite),
// SPECIES_SPRITE(MAGNETON, gMonBackPic_Magneton),
// SPECIES_SPRITE(FARFETCHD, gMonBackPic_Farfetchd),
// SPECIES_SPRITE(DODUO, gMonBackPic_Doduo),
// SPECIES_SPRITE(DODRIO, gMonBackPic_Dodrio),
// SPECIES_SPRITE(SEEL, gMonBackPic_Seel),
// SPECIES_SPRITE(DEWGONG, gMonBackPic_Dewgong),
// SPECIES_SPRITE(GRIMER, gMonBackPic_Grimer),
// SPECIES_SPRITE(MUK, gMonBackPic_Muk),
// SPECIES_SPRITE(SHELLDER, gMonBackPic_Shellder),
// SPECIES_SPRITE(CLOYSTER, gMonBackPic_Cloyster),
// SPECIES_SPRITE(GASTLY, gMonBackPic_Gastly),
// SPECIES_SPRITE(HAUNTER, gMonBackPic_Haunter),
// SPECIES_SPRITE(GENGAR, gMonBackPic_Gengar),
// SPECIES_SPRITE(ONIX, gMonBackPic_Onix),
// SPECIES_SPRITE(DROWZEE, gMonBackPic_Drowzee),
// SPECIES_SPRITE(HYPNO, gMonBackPic_Hypno),
// SPECIES_SPRITE(KRABBY, gMonBackPic_Krabby),
// SPECIES_SPRITE(KINGLER, gMonBackPic_Kingler),
// SPECIES_SPRITE(VOLTORB, gMonBackPic_Voltorb),
// SPECIES_SPRITE(ELECTRODE, gMonBackPic_Electrode),
// SPECIES_SPRITE(EXEGGCUTE, gMonBackPic_Exeggcute),
// SPECIES_SPRITE(EXEGGUTOR, gMonBackPic_Exeggutor),
// SPECIES_SPRITE(CUBONE, gMonBackPic_Cubone),
// SPECIES_SPRITE(MAROWAK, gMonBackPic_Marowak),
// SPECIES_SPRITE(HITMONLEE, gMonBackPic_Hitmonlee),
// SPECIES_SPRITE(HITMONCHAN, gMonBackPic_Hitmonchan),
// SPECIES_SPRITE(LICKITUNG, gMonBackPic_Lickitung),
// SPECIES_SPRITE(KOFFING, gMonBackPic_Koffing),
// SPECIES_SPRITE(WEEZING, gMonBackPic_Weezing),
// SPECIES_SPRITE(RHYHORN, gMonBackPic_Rhyhorn),
// SPECIES_SPRITE(RHYDON, gMonBackPic_Rhydon),
// SPECIES_SPRITE(CHANSEY, gMonBackPic_Chansey),
// SPECIES_SPRITE(TANGELA, gMonBackPic_Tangela),
// SPECIES_SPRITE(KANGASKHAN, gMonBackPic_Kangaskhan),
// SPECIES_SPRITE(HORSEA, gMonBackPic_Horsea),
// SPECIES_SPRITE(SEADRA, gMonBackPic_Seadra),
// SPECIES_SPRITE(GOLDEEN, gMonBackPic_Goldeen),
// SPECIES_SPRITE(SEAKING, gMonBackPic_Seaking),
// SPECIES_SPRITE(STARYU, gMonBackPic_Staryu),
// SPECIES_SPRITE(STARMIE, gMonBackPic_Starmie),
// SPECIES_SPRITE(MR_MIME, gMonBackPic_Mrmime),
// SPECIES_SPRITE(SCYTHER, gMonBackPic_Scyther),
// SPECIES_SPRITE(JYNX, gMonBackPic_Jynx),
// SPECIES_SPRITE(ELECTABUZZ, gMonBackPic_Electabuzz),
// SPECIES_SPRITE(MAGMAR, gMonBackPic_Magmar),
// SPECIES_SPRITE(PINSIR, gMonBackPic_Pinsir),
// SPECIES_SPRITE(TAUROS, gMonBackPic_Tauros),
// SPECIES_SPRITE(MAGIKARP, gMonBackPic_Magikarp),
// SPECIES_SPRITE(GYARADOS, gMonBackPic_Gyarados),
// SPECIES_SPRITE(LAPRAS, gMonBackPic_Lapras),
// SPECIES_SPRITE(DITTO, gMonBackPic_Ditto),
// SPECIES_SPRITE(EEVEE, gMonBackPic_Eevee),
// SPECIES_SPRITE(VAPOREON, gMonBackPic_Vaporeon),
// SPECIES_SPRITE(JOLTEON, gMonBackPic_Jolteon),
// SPECIES_SPRITE(FLAREON, gMonBackPic_Flareon),
// SPECIES_SPRITE(PORYGON, gMonBackPic_Porygon),
// SPECIES_SPRITE(OMANYTE, gMonBackPic_Omanyte),
// SPECIES_SPRITE(OMASTAR, gMonBackPic_Omastar),
// SPECIES_SPRITE(KABUTO, gMonBackPic_Kabuto),
// SPECIES_SPRITE(KABUTOPS, gMonBackPic_Kabutops),
// SPECIES_SPRITE(AERODACTYL, gMonBackPic_Aerodactyl),
// SPECIES_SPRITE(SNORLAX, gMonBackPic_Snorlax),
// SPECIES_SPRITE(ARTICUNO, gMonBackPic_Articuno),
// SPECIES_SPRITE(ZAPDOS, gMonBackPic_Zapdos),
// SPECIES_SPRITE(MOLTRES, gMonBackPic_Moltres),
// SPECIES_SPRITE(DRATINI, gMonBackPic_Dratini),
// SPECIES_SPRITE(DRAGONAIR, gMonBackPic_Dragonair),
// SPECIES_SPRITE(DRAGONITE, gMonBackPic_Dragonite),
// SPECIES_SPRITE(MEWTWO, gMonBackPic_Mewtwo),
// SPECIES_SPRITE(MEW, gMonBackPic_Mew),
// SPECIES_SPRITE(CHIKORITA, gMonBackPic_Chikorita),
// SPECIES_SPRITE(BAYLEEF, gMonBackPic_Bayleef),
// SPECIES_SPRITE(MEGANIUM, gMonBackPic_Meganium),
// SPECIES_SPRITE(CYNDAQUIL, gMonBackPic_Cyndaquil),
// SPECIES_SPRITE(QUILAVA, gMonBackPic_Quilava),
// SPECIES_SPRITE(TYPHLOSION, gMonBackPic_Typhlosion),
// SPECIES_SPRITE(TOTODILE, gMonBackPic_Totodile),
// SPECIES_SPRITE(CROCONAW, gMonBackPic_Croconaw),
// SPECIES_SPRITE(FERALIGATR, gMonBackPic_Feraligatr),
// SPECIES_SPRITE(SENTRET, gMonBackPic_Sentret),
// SPECIES_SPRITE(FURRET, gMonBackPic_Furret),
// SPECIES_SPRITE(HOOTHOOT, gMonBackPic_Hoothoot),
// SPECIES_SPRITE(NOCTOWL, gMonBackPic_Noctowl),
// SPECIES_SPRITE(LEDYBA, gMonBackPic_Ledyba),
// SPECIES_SPRITE(LEDIAN, gMonBackPic_Ledian),
// SPECIES_SPRITE(SPINARAK, gMonBackPic_Spinarak),
// SPECIES_SPRITE(ARIADOS, gMonBackPic_Ariados),
// SPECIES_SPRITE(CROBAT, gMonBackPic_Crobat),
// SPECIES_SPRITE(CHINCHOU, gMonBackPic_Chinchou),
// SPECIES_SPRITE(LANTURN, gMonBackPic_Lanturn),
// SPECIES_SPRITE(PICHU, gMonBackPic_Pichu),
// SPECIES_SPRITE(CLEFFA, gMonBackPic_Cleffa),
// SPECIES_SPRITE(IGGLYBUFF, gMonBackPic_Igglybuff),
// SPECIES_SPRITE(TOGEPI, gMonBackPic_Togepi),
// SPECIES_SPRITE(TOGETIC, gMonBackPic_Togetic),
// SPECIES_SPRITE(NATU, gMonBackPic_Natu),
// SPECIES_SPRITE(XATU, gMonBackPic_Xatu),
// SPECIES_SPRITE(MAREEP, gMonBackPic_Mareep),
// SPECIES_SPRITE(FLAAFFY, gMonBackPic_Flaaffy),
// SPECIES_SPRITE(AMPHAROS, gMonBackPic_Ampharos),
// SPECIES_SPRITE(BELLOSSOM, gMonBackPic_Bellossom),
// SPECIES_SPRITE(MARILL, gMonBackPic_Marill),
// SPECIES_SPRITE(AZUMARILL, gMonBackPic_Azumarill),
// SPECIES_SPRITE(SUDOWOODO, gMonBackPic_Sudowoodo),
// SPECIES_SPRITE(POLITOED, gMonBackPic_Politoed),
// SPECIES_SPRITE(HOPPIP, gMonBackPic_Hoppip),
// SPECIES_SPRITE(SKIPLOOM, gMonBackPic_Skiploom),
// SPECIES_SPRITE(JUMPLUFF, gMonBackPic_Jumpluff),
// SPECIES_SPRITE(AIPOM, gMonBackPic_Aipom),
// SPECIES_SPRITE(SUNKERN, gMonBackPic_Sunkern),
// SPECIES_SPRITE(SUNFLORA, gMonBackPic_Sunflora),
// SPECIES_SPRITE(YANMA, gMonBackPic_Yanma),
// SPECIES_SPRITE(WOOPER, gMonBackPic_Wooper),
// SPECIES_SPRITE(QUAGSIRE, gMonBackPic_Quagsire),
// SPECIES_SPRITE(ESPEON, gMonBackPic_Espeon),
// SPECIES_SPRITE(UMBREON, gMonBackPic_Umbreon),
// SPECIES_SPRITE(MURKROW, gMonBackPic_Murkrow),
// SPECIES_SPRITE(SLOWKING, gMonBackPic_Slowking),
// SPECIES_SPRITE(MISDREAVUS, gMonBackPic_Misdreavus),
// SPECIES_SPRITE(UNOWN, gMonBackPic_UnownA),
// SPECIES_SPRITE(WOBBUFFET, gMonBackPic_Wobbuffet),
// SPECIES_SPRITE(GIRAFARIG, gMonBackPic_Girafarig),
// SPECIES_SPRITE(PINECO, gMonBackPic_Pineco),
// SPECIES_SPRITE(FORRETRESS, gMonBackPic_Forretress),
// SPECIES_SPRITE(DUNSPARCE, gMonBackPic_Dunsparce),
// SPECIES_SPRITE(GLIGAR, gMonBackPic_Gligar),
// SPECIES_SPRITE(STEELIX, gMonBackPic_Steelix),
// SPECIES_SPRITE(SNUBBULL, gMonBackPic_Snubbull),
// SPECIES_SPRITE(GRANBULL, gMonBackPic_Granbull),
// SPECIES_SPRITE(QWILFISH, gMonBackPic_Qwilfish),
// SPECIES_SPRITE(SCIZOR, gMonBackPic_Scizor),
// SPECIES_SPRITE(SHUCKLE, gMonBackPic_Shuckle),
// SPECIES_SPRITE(HERACROSS, gMonBackPic_Heracross),
// SPECIES_SPRITE(SNEASEL, gMonBackPic_Sneasel),
// SPECIES_SPRITE(TEDDIURSA, gMonBackPic_Teddiursa),
// SPECIES_SPRITE(URSARING, gMonBackPic_Ursaring),
// SPECIES_SPRITE(SLUGMA, gMonBackPic_Slugma),
// SPECIES_SPRITE(MAGCARGO, gMonBackPic_Magcargo),
// SPECIES_SPRITE(SWINUB, gMonBackPic_Swinub),
// SPECIES_SPRITE(PILOSWINE, gMonBackPic_Piloswine),
// SPECIES_SPRITE(CORSOLA, gMonBackPic_Corsola),
// SPECIES_SPRITE(REMORAID, gMonBackPic_Remoraid),
// SPECIES_SPRITE(OCTILLERY, gMonBackPic_Octillery),
// SPECIES_SPRITE(DELIBIRD, gMonBackPic_Delibird),
// SPECIES_SPRITE(MANTINE, gMonBackPic_Mantine),
// SPECIES_SPRITE(SKARMORY, gMonBackPic_Skarmory),
// SPECIES_SPRITE(HOUNDOUR, gMonBackPic_Houndour),
// SPECIES_SPRITE(HOUNDOOM, gMonBackPic_Houndoom),
// SPECIES_SPRITE(KINGDRA, gMonBackPic_Kingdra),
// SPECIES_SPRITE(PHANPY, gMonBackPic_Phanpy),
// SPECIES_SPRITE(DONPHAN, gMonBackPic_Donphan),
// SPECIES_SPRITE(PORYGON2, gMonBackPic_Porygon2),
// SPECIES_SPRITE(STANTLER, gMonBackPic_Stantler),
// SPECIES_SPRITE(SMEARGLE, gMonBackPic_Smeargle),
// SPECIES_SPRITE(TYROGUE, gMonBackPic_Tyrogue),
// SPECIES_SPRITE(HITMONTOP, gMonBackPic_Hitmontop),
// SPECIES_SPRITE(SMOOCHUM, gMonBackPic_Smoochum),
// SPECIES_SPRITE(ELEKID, gMonBackPic_Elekid),
// SPECIES_SPRITE(MAGBY, gMonBackPic_Magby),
// SPECIES_SPRITE(MILTANK, gMonBackPic_Miltank),
// SPECIES_SPRITE(BLISSEY, gMonBackPic_Blissey),
// SPECIES_SPRITE(RAIKOU, gMonBackPic_Raikou),
// SPECIES_SPRITE(ENTEI, gMonBackPic_Entei),
// SPECIES_SPRITE(SUICUNE, gMonBackPic_Suicune),
// SPECIES_SPRITE(LARVITAR, gMonBackPic_Larvitar),
// SPECIES_SPRITE(PUPITAR, gMonBackPic_Pupitar),
// SPECIES_SPRITE(TYRANITAR, gMonBackPic_Tyranitar),
// SPECIES_SPRITE(LUGIA, gMonBackPic_Lugia),
// SPECIES_SPRITE(HO_OH, gMonBackPic_HoOh),
// SPECIES_SPRITE(CELEBI, gMonBackPic_Celebi),
// SPECIES_SPRITE(OLD_UNOWN_B, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_C, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_D, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_E, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_F, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_G, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_H, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_I, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_J, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_K, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_L, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_M, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_N, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_O, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_P, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Q, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_R, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_S, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_T, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_U, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_V, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_W, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_X, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Y, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Z, gMonBackPic_DoubleQuestionMark),
// SPECIES_SPRITE(TREECKO, gMonBackPic_Treecko),
// SPECIES_SPRITE(GROVYLE, gMonBackPic_Grovyle),
// SPECIES_SPRITE(SCEPTILE, gMonBackPic_Sceptile),
// SPECIES_SPRITE(TORCHIC, gMonBackPic_Torchic),
// SPECIES_SPRITE(COMBUSKEN, gMonBackPic_Combusken),
// SPECIES_SPRITE(BLAZIKEN, gMonBackPic_Blaziken),
// SPECIES_SPRITE(MUDKIP, gMonBackPic_Mudkip),
// SPECIES_SPRITE(MARSHTOMP, gMonBackPic_Marshtomp),
// SPECIES_SPRITE(SWAMPERT, gMonBackPic_Swampert),
// SPECIES_SPRITE(POOCHYENA, gMonBackPic_Poochyena),
// SPECIES_SPRITE(MIGHTYENA, gMonBackPic_Mightyena),
// SPECIES_SPRITE(ZIGZAGOON, gMonBackPic_Zigzagoon),
// SPECIES_SPRITE(LINOONE, gMonBackPic_Linoone),
// SPECIES_SPRITE(WURMPLE, gMonBackPic_Wurmple),
// SPECIES_SPRITE(SILCOON, gMonBackPic_Silcoon),
// SPECIES_SPRITE(BEAUTIFLY, gMonBackPic_Beautifly),
// SPECIES_SPRITE(CASCOON, gMonBackPic_Cascoon),
// SPECIES_SPRITE(DUSTOX, gMonBackPic_Dustox),
// SPECIES_SPRITE(LOTAD, gMonBackPic_Lotad),
// SPECIES_SPRITE(LOMBRE, gMonBackPic_Lombre),
// SPECIES_SPRITE(LUDICOLO, gMonBackPic_Ludicolo),
// SPECIES_SPRITE(SEEDOT, gMonBackPic_Seedot),
// SPECIES_SPRITE(NUZLEAF, gMonBackPic_Nuzleaf),
// SPECIES_SPRITE(SHIFTRY, gMonBackPic_Shiftry),
// SPECIES_SPRITE(NINCADA, gMonBackPic_Nincada),
// SPECIES_SPRITE(NINJASK, gMonBackPic_Ninjask),
// SPECIES_SPRITE(SHEDINJA, gMonBackPic_Shedinja),
// SPECIES_SPRITE(TAILLOW, gMonBackPic_Taillow),
// SPECIES_SPRITE(SWELLOW, gMonBackPic_Swellow),
// SPECIES_SPRITE(SHROOMISH, gMonBackPic_Shroomish),
// SPECIES_SPRITE(BRELOOM, gMonBackPic_Breloom),
// SPECIES_SPRITE(SPINDA, gMonBackPic_Spinda),
// SPECIES_SPRITE(WINGULL, gMonBackPic_Wingull),
// SPECIES_SPRITE(PELIPPER, gMonBackPic_Pelipper),
// SPECIES_SPRITE(SURSKIT, gMonBackPic_Surskit),
// SPECIES_SPRITE(MASQUERAIN, gMonBackPic_Masquerain),
// SPECIES_SPRITE(WAILMER, gMonBackPic_Wailmer),
// SPECIES_SPRITE(WAILORD, gMonBackPic_Wailord),
// SPECIES_SPRITE(SKITTY, gMonBackPic_Skitty),
// SPECIES_SPRITE(DELCATTY, gMonBackPic_Delcatty),
// SPECIES_SPRITE(KECLEON, gMonBackPic_Kecleon),
// SPECIES_SPRITE(BALTOY, gMonBackPic_Baltoy),
// SPECIES_SPRITE(CLAYDOL, gMonBackPic_Claydol),
// SPECIES_SPRITE(NOSEPASS, gMonBackPic_Nosepass),
// SPECIES_SPRITE(TORKOAL, gMonBackPic_Torkoal),
// SPECIES_SPRITE(SABLEYE, gMonBackPic_Sableye),
// SPECIES_SPRITE(BARBOACH, gMonBackPic_Barboach),
// SPECIES_SPRITE(WHISCASH, gMonBackPic_Whiscash),
// SPECIES_SPRITE(LUVDISC, gMonBackPic_Luvdisc),
// SPECIES_SPRITE(CORPHISH, gMonBackPic_Corphish),
// SPECIES_SPRITE(CRAWDAUNT, gMonBackPic_Crawdaunt),
// SPECIES_SPRITE(FEEBAS, gMonBackPic_Feebas),
// SPECIES_SPRITE(MILOTIC, gMonBackPic_Milotic),
// SPECIES_SPRITE(CARVANHA, gMonBackPic_Carvanha),
// SPECIES_SPRITE(SHARPEDO, gMonBackPic_Sharpedo),
// SPECIES_SPRITE(TRAPINCH, gMonBackPic_Trapinch),
// SPECIES_SPRITE(VIBRAVA, gMonBackPic_Vibrava),
// SPECIES_SPRITE(FLYGON, gMonBackPic_Flygon),
// SPECIES_SPRITE(MAKUHITA, gMonBackPic_Makuhita),
// SPECIES_SPRITE(HARIYAMA, gMonBackPic_Hariyama),
// SPECIES_SPRITE(ELECTRIKE, gMonBackPic_Electrike),
// SPECIES_SPRITE(MANECTRIC, gMonBackPic_Manectric),
// SPECIES_SPRITE(NUMEL, gMonBackPic_Numel),
// SPECIES_SPRITE(CAMERUPT, gMonBackPic_Camerupt),
// SPECIES_SPRITE(SPHEAL, gMonBackPic_Spheal),
// SPECIES_SPRITE(SEALEO, gMonBackPic_Sealeo),
// SPECIES_SPRITE(WALREIN, gMonBackPic_Walrein),
// SPECIES_SPRITE(CACNEA, gMonBackPic_Cacnea),
// SPECIES_SPRITE(CACTURNE, gMonBackPic_Cacturne),
// SPECIES_SPRITE(SNORUNT, gMonBackPic_Snorunt),
// SPECIES_SPRITE(GLALIE, gMonBackPic_Glalie),
// SPECIES_SPRITE(LUNATONE, gMonBackPic_Lunatone),
// SPECIES_SPRITE(SOLROCK, gMonBackPic_Solrock),
// SPECIES_SPRITE(AZURILL, gMonBackPic_Azurill),
// SPECIES_SPRITE(SPOINK, gMonBackPic_Spoink),
// SPECIES_SPRITE(GRUMPIG, gMonBackPic_Grumpig),
// SPECIES_SPRITE(PLUSLE, gMonBackPic_Plusle),
// SPECIES_SPRITE(MINUN, gMonBackPic_Minun),
// SPECIES_SPRITE(MAWILE, gMonBackPic_Mawile),
// SPECIES_SPRITE(MEDITITE, gMonBackPic_Meditite),
// SPECIES_SPRITE(MEDICHAM, gMonBackPic_Medicham),
// SPECIES_SPRITE(SWABLU, gMonBackPic_Swablu),
// SPECIES_SPRITE(ALTARIA, gMonBackPic_Altaria),
// SPECIES_SPRITE(WYNAUT, gMonBackPic_Wynaut),
// SPECIES_SPRITE(DUSKULL, gMonBackPic_Duskull),
// SPECIES_SPRITE(DUSCLOPS, gMonBackPic_Dusclops),
// SPECIES_SPRITE(ROSELIA, gMonBackPic_Roselia),
// SPECIES_SPRITE(SLAKOTH, gMonBackPic_Slakoth),
// SPECIES_SPRITE(VIGOROTH, gMonBackPic_Vigoroth),
// SPECIES_SPRITE(SLAKING, gMonBackPic_Slaking),
// SPECIES_SPRITE(GULPIN, gMonBackPic_Gulpin),
// SPECIES_SPRITE(SWALOT, gMonBackPic_Swalot),
// SPECIES_SPRITE(TROPIUS, gMonBackPic_Tropius),
// SPECIES_SPRITE(WHISMUR, gMonBackPic_Whismur),
// SPECIES_SPRITE(LOUDRED, gMonBackPic_Loudred),
// SPECIES_SPRITE(EXPLOUD, gMonBackPic_Exploud),
// SPECIES_SPRITE(CLAMPERL, gMonBackPic_Clamperl),
// SPECIES_SPRITE(HUNTAIL, gMonBackPic_Huntail),
// SPECIES_SPRITE(GOREBYSS, gMonBackPic_Gorebyss),
// SPECIES_SPRITE(ABSOL, gMonBackPic_Absol),
// SPECIES_SPRITE(SHUPPET, gMonBackPic_Shuppet),
// SPECIES_SPRITE(BANETTE, gMonBackPic_Banette),
// SPECIES_SPRITE(SEVIPER, gMonBackPic_Seviper),
// SPECIES_SPRITE(ZANGOOSE, gMonBackPic_Zangoose),
// SPECIES_SPRITE(RELICANTH, gMonBackPic_Relicanth),
// SPECIES_SPRITE(ARON, gMonBackPic_Aron),
// SPECIES_SPRITE(LAIRON, gMonBackPic_Lairon),
// SPECIES_SPRITE(AGGRON, gMonBackPic_Aggron),
// SPECIES_SPRITE(CASTFORM, gMonBackPic_Castform),
// SPECIES_SPRITE(VOLBEAT, gMonBackPic_Volbeat),
// SPECIES_SPRITE(ILLUMISE, gMonBackPic_Illumise),
// SPECIES_SPRITE(LILEEP, gMonBackPic_Lileep),
// SPECIES_SPRITE(CRADILY, gMonBackPic_Cradily),
// SPECIES_SPRITE(ANORITH, gMonBackPic_Anorith),
// SPECIES_SPRITE(ARMALDO, gMonBackPic_Armaldo),
// SPECIES_SPRITE(RALTS, gMonBackPic_Ralts),
// SPECIES_SPRITE(KIRLIA, gMonBackPic_Kirlia),
// SPECIES_SPRITE(GARDEVOIR, gMonBackPic_Gardevoir),
// SPECIES_SPRITE(BAGON, gMonBackPic_Bagon),
// SPECIES_SPRITE(SHELGON, gMonBackPic_Shelgon),
// SPECIES_SPRITE(SALAMENCE, gMonBackPic_Salamence),
// SPECIES_SPRITE(BELDUM, gMonBackPic_Beldum),
// SPECIES_SPRITE(METANG, gMonBackPic_Metang),
// SPECIES_SPRITE(METAGROSS, gMonBackPic_Metagross),
// SPECIES_SPRITE(REGIROCK, gMonBackPic_Regirock),
// SPECIES_SPRITE(REGICE, gMonBackPic_Regice),
// SPECIES_SPRITE(REGISTEEL, gMonBackPic_Registeel),
// SPECIES_SPRITE(KYOGRE, gMonBackPic_Kyogre),
// SPECIES_SPRITE(GROUDON, gMonBackPic_Groudon),
// SPECIES_SPRITE(RAYQUAZA, gMonBackPic_Rayquaza),
// SPECIES_SPRITE(LATIAS, gMonBackPic_Latias),
// SPECIES_SPRITE(LATIOS, gMonBackPic_Latios),
// SPECIES_SPRITE(JIRACHI, gMonBackPic_Jirachi),
// SPECIES_SPRITE(DEOXYS, gMonBackPic_Deoxys),
// SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho),
// SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
// SPECIES_SPRITE(UNOWN_B, gMonBackPic_UnownB),
// SPECIES_SPRITE(UNOWN_C, gMonBackPic_UnownC),
// SPECIES_SPRITE(UNOWN_D, gMonBackPic_UnownD),
// SPECIES_SPRITE(UNOWN_E, gMonBackPic_UnownE),
// SPECIES_SPRITE(UNOWN_F, gMonBackPic_UnownF),
// SPECIES_SPRITE(UNOWN_G, gMonBackPic_UnownG),
// SPECIES_SPRITE(UNOWN_H, gMonBackPic_UnownH),
// SPECIES_SPRITE(UNOWN_I, gMonBackPic_UnownI),
// SPECIES_SPRITE(UNOWN_J, gMonBackPic_UnownJ),
// SPECIES_SPRITE(UNOWN_K, gMonBackPic_UnownK),
// SPECIES_SPRITE(UNOWN_L, gMonBackPic_UnownL),
// SPECIES_SPRITE(UNOWN_M, gMonBackPic_UnownM),
// SPECIES_SPRITE(UNOWN_N, gMonBackPic_UnownN),
// SPECIES_SPRITE(UNOWN_O, gMonBackPic_UnownO),
// SPECIES_SPRITE(UNOWN_P, gMonBackPic_UnownP),
// SPECIES_SPRITE(UNOWN_Q, gMonBackPic_UnownQ),
// SPECIES_SPRITE(UNOWN_R, gMonBackPic_UnownR),
// SPECIES_SPRITE(UNOWN_S, gMonBackPic_UnownS),
// SPECIES_SPRITE(UNOWN_T, gMonBackPic_UnownT),
// SPECIES_SPRITE(UNOWN_U, gMonBackPic_UnownU),
// SPECIES_SPRITE(UNOWN_V, gMonBackPic_UnownV),
// SPECIES_SPRITE(UNOWN_W, gMonBackPic_UnownW),
// SPECIES_SPRITE(UNOWN_X, gMonBackPic_UnownX),
// SPECIES_SPRITE(UNOWN_Y, gMonBackPic_UnownY),
// SPECIES_SPRITE(UNOWN_Z, gMonBackPic_UnownZ),
// SPECIES_SPRITE(UNOWN_EMARK, gMonBackPic_UnownExclamationMark),
// SPECIES_SPRITE(UNOWN_QMARK, gMonBackPic_UnownQuestionMark),
// };

View File

@ -1,65 +0,0 @@
// This determines how much higher above the usual position the enemy Pokémon
// is during battle. Species that float or fly have nonzero values.
const u8 gEnemyMonElevation[NUM_SPECIES] =
{
[SPECIES_BUTTERFREE] = 8,
[SPECIES_BEEDRILL] = 8,
[SPECIES_PIDGEOT] = 4,
[SPECIES_FEAROW] = 6,
[SPECIES_ZUBAT] = 8,
[SPECIES_GOLBAT] = 8,
[SPECIES_VENOMOTH] = 8,
[SPECIES_GEODUDE] = 16,
[SPECIES_MAGNEMITE] = 16,
[SPECIES_MAGNETON] = 8,
[SPECIES_GASTLY] = 4,
[SPECIES_HAUNTER] = 4,
[SPECIES_VOLTORB] = 10,
[SPECIES_ELECTRODE] = 12,
[SPECIES_KOFFING] = 8,
[SPECIES_WEEZING] = 6,
[SPECIES_AERODACTYL] = 7,
[SPECIES_ARTICUNO] = 6,
[SPECIES_ZAPDOS] = 8,
[SPECIES_MOLTRES] = 5,
[SPECIES_DRAGONITE] = 6,
[SPECIES_MEW] = 8,
[SPECIES_LEDIAN] = 8,
[SPECIES_CROBAT] = 6,
[SPECIES_HOPPIP] = 11,
[SPECIES_SKIPLOOM] = 12,
[SPECIES_JUMPLUFF] = 9,
[SPECIES_YANMA] = 8,
[SPECIES_MISDREAVUS] = 8,
[SPECIES_UNOWN] = 8,
[SPECIES_GLIGAR] = 6,
[SPECIES_LUGIA] = 6,
[SPECIES_HO_OH] = 6,
[SPECIES_CELEBI] = 15,
[SPECIES_BEAUTIFLY] = 8,
[SPECIES_DUSTOX] = 10,
[SPECIES_NINJASK] = 10,
[SPECIES_SHEDINJA] = 8,
[SPECIES_WINGULL] = 16,
[SPECIES_PELIPPER] = 8,
[SPECIES_MASQUERAIN] = 10,
[SPECIES_BALTOY] = 4,
[SPECIES_CLAYDOL] = 10,
[SPECIES_FLYGON] = 7,
[SPECIES_GLALIE] = 12,
[SPECIES_LUNATONE] = 13,
[SPECIES_SOLROCK] = 4,
[SPECIES_SWABLU] = 12,
[SPECIES_ALTARIA] = 8,
[SPECIES_DUSKULL] = 9,
[SPECIES_SHUPPET] = 12,
[SPECIES_BANETTE] = 8,
[SPECIES_CASTFORM] = 16,
[SPECIES_BELDUM] = 8,
[SPECIES_RAYQUAZA] = 6,
[SPECIES_LATIAS] = 6,
[SPECIES_LATIOS] = 6,
[SPECIES_JIRACHI] = 12,
[SPECIES_DEOXYS] = 8,
[SPECIES_CHIMECHO] = 12,
};

View File

@ -1,416 +0,0 @@
// const u8 *const gMonFootprintTable[] =
// {
// [SPECIES_NONE] = gMonFootprint_Bulbasaur,
// [SPECIES_BULBASAUR] = gMonFootprint_Bulbasaur,
// [SPECIES_IVYSAUR] = gMonFootprint_Ivysaur,
// [SPECIES_VENUSAUR] = gMonFootprint_Venusaur,
// [SPECIES_CHARMANDER] = gMonFootprint_Charmander,
// [SPECIES_CHARMELEON] = gMonFootprint_Charmeleon,
// [SPECIES_CHARIZARD] = gMonFootprint_Charizard,
// [SPECIES_SQUIRTLE] = gMonFootprint_Squirtle,
// [SPECIES_WARTORTLE] = gMonFootprint_Wartortle,
// [SPECIES_BLASTOISE] = gMonFootprint_Blastoise,
// [SPECIES_CATERPIE] = gMonFootprint_Caterpie,
// [SPECIES_METAPOD] = gMonFootprint_Metapod,
// [SPECIES_BUTTERFREE] = gMonFootprint_Butterfree,
// [SPECIES_WEEDLE] = gMonFootprint_Weedle,
// [SPECIES_KAKUNA] = gMonFootprint_Kakuna,
// [SPECIES_BEEDRILL] = gMonFootprint_Beedrill,
// [SPECIES_PIDGEY] = gMonFootprint_Pidgey,
// [SPECIES_PIDGEOTTO] = gMonFootprint_Pidgeotto,
// [SPECIES_PIDGEOT] = gMonFootprint_Pidgeot,
// [SPECIES_RATTATA] = gMonFootprint_Rattata,
// [SPECIES_RATICATE] = gMonFootprint_Raticate,
// [SPECIES_SPEAROW] = gMonFootprint_Spearow,
// [SPECIES_FEAROW] = gMonFootprint_Fearow,
// [SPECIES_EKANS] = gMonFootprint_Ekans,
// [SPECIES_ARBOK] = gMonFootprint_Arbok,
// [SPECIES_PIKACHU] = gMonFootprint_Pikachu,
// [SPECIES_RAICHU] = gMonFootprint_Raichu,
// [SPECIES_SANDSHREW] = gMonFootprint_Sandshrew,
// [SPECIES_SANDSLASH] = gMonFootprint_Sandslash,
// [SPECIES_NIDORAN_F] = gMonFootprint_NidoranF,
// [SPECIES_NIDORINA] = gMonFootprint_Nidorina,
// [SPECIES_NIDOQUEEN] = gMonFootprint_Nidoqueen,
// [SPECIES_NIDORAN_M] = gMonFootprint_NidoranM,
// [SPECIES_NIDORINO] = gMonFootprint_Nidorino,
// [SPECIES_NIDOKING] = gMonFootprint_Nidoking,
// [SPECIES_CLEFAIRY] = gMonFootprint_Clefairy,
// [SPECIES_CLEFABLE] = gMonFootprint_Clefable,
// [SPECIES_VULPIX] = gMonFootprint_Vulpix,
// [SPECIES_NINETALES] = gMonFootprint_Ninetales,
// [SPECIES_JIGGLYPUFF] = gMonFootprint_Jigglypuff,
// [SPECIES_WIGGLYTUFF] = gMonFootprint_Wigglytuff,
// [SPECIES_ZUBAT] = gMonFootprint_Zubat,
// [SPECIES_GOLBAT] = gMonFootprint_Golbat,
// [SPECIES_ODDISH] = gMonFootprint_Oddish,
// [SPECIES_GLOOM] = gMonFootprint_Gloom,
// [SPECIES_VILEPLUME] = gMonFootprint_Vileplume,
// [SPECIES_PARAS] = gMonFootprint_Paras,
// [SPECIES_PARASECT] = gMonFootprint_Parasect,
// [SPECIES_VENONAT] = gMonFootprint_Venonat,
// [SPECIES_VENOMOTH] = gMonFootprint_Venomoth,
// [SPECIES_DIGLETT] = gMonFootprint_Diglett,
// [SPECIES_DUGTRIO] = gMonFootprint_Dugtrio,
// [SPECIES_MEOWTH] = gMonFootprint_Meowth,
// [SPECIES_PERSIAN] = gMonFootprint_Persian,
// [SPECIES_PSYDUCK] = gMonFootprint_Psyduck,
// [SPECIES_GOLDUCK] = gMonFootprint_Golduck,
// [SPECIES_MANKEY] = gMonFootprint_Mankey,
// [SPECIES_PRIMEAPE] = gMonFootprint_Primeape,
// [SPECIES_GROWLITHE] = gMonFootprint_Growlithe,
// [SPECIES_ARCANINE] = gMonFootprint_Arcanine,
// [SPECIES_POLIWAG] = gMonFootprint_Poliwag,
// [SPECIES_POLIWHIRL] = gMonFootprint_Poliwhirl,
// [SPECIES_POLIWRATH] = gMonFootprint_Poliwrath,
// [SPECIES_ABRA] = gMonFootprint_Abra,
// [SPECIES_KADABRA] = gMonFootprint_Kadabra,
// [SPECIES_ALAKAZAM] = gMonFootprint_Alakazam,
// [SPECIES_MACHOP] = gMonFootprint_Machop,
// [SPECIES_MACHOKE] = gMonFootprint_Machoke,
// [SPECIES_MACHAMP] = gMonFootprint_Machamp,
// [SPECIES_BELLSPROUT] = gMonFootprint_Bellsprout,
// [SPECIES_WEEPINBELL] = gMonFootprint_Weepinbell,
// [SPECIES_VICTREEBEL] = gMonFootprint_Victreebel,
// [SPECIES_TENTACOOL] = gMonFootprint_Tentacool,
// [SPECIES_TENTACRUEL] = gMonFootprint_Tentacruel,
// [SPECIES_GEODUDE] = gMonFootprint_Geodude,
// [SPECIES_GRAVELER] = gMonFootprint_Graveler,
// [SPECIES_GOLEM] = gMonFootprint_Golem,
// [SPECIES_PONYTA] = gMonFootprint_Ponyta,
// [SPECIES_RAPIDASH] = gMonFootprint_Rapidash,
// [SPECIES_SLOWPOKE] = gMonFootprint_Slowpoke,
// [SPECIES_SLOWBRO] = gMonFootprint_Slowbro,
// [SPECIES_MAGNEMITE] = gMonFootprint_Magnemite,
// [SPECIES_MAGNETON] = gMonFootprint_Magneton,
// [SPECIES_FARFETCHD] = gMonFootprint_Farfetchd,
// [SPECIES_DODUO] = gMonFootprint_Doduo,
// [SPECIES_DODRIO] = gMonFootprint_Dodrio,
// [SPECIES_SEEL] = gMonFootprint_Seel,
// [SPECIES_DEWGONG] = gMonFootprint_Dewgong,
// [SPECIES_GRIMER] = gMonFootprint_Grimer,
// [SPECIES_MUK] = gMonFootprint_Muk,
// [SPECIES_SHELLDER] = gMonFootprint_Shellder,
// [SPECIES_CLOYSTER] = gMonFootprint_Cloyster,
// [SPECIES_GASTLY] = gMonFootprint_Gastly,
// [SPECIES_HAUNTER] = gMonFootprint_Haunter,
// [SPECIES_GENGAR] = gMonFootprint_Gengar,
// [SPECIES_ONIX] = gMonFootprint_Onix,
// [SPECIES_DROWZEE] = gMonFootprint_Drowzee,
// [SPECIES_HYPNO] = gMonFootprint_Hypno,
// [SPECIES_KRABBY] = gMonFootprint_Krabby,
// [SPECIES_KINGLER] = gMonFootprint_Kingler,
// [SPECIES_VOLTORB] = gMonFootprint_Voltorb,
// [SPECIES_ELECTRODE] = gMonFootprint_Electrode,
// [SPECIES_EXEGGCUTE] = gMonFootprint_Exeggcute,
// [SPECIES_EXEGGUTOR] = gMonFootprint_Exeggutor,
// [SPECIES_CUBONE] = gMonFootprint_Cubone,
// [SPECIES_MAROWAK] = gMonFootprint_Marowak,
// [SPECIES_HITMONLEE] = gMonFootprint_Hitmonlee,
// [SPECIES_HITMONCHAN] = gMonFootprint_Hitmonchan,
// [SPECIES_LICKITUNG] = gMonFootprint_Lickitung,
// [SPECIES_KOFFING] = gMonFootprint_Koffing,
// [SPECIES_WEEZING] = gMonFootprint_Weezing,
// [SPECIES_RHYHORN] = gMonFootprint_Rhyhorn,
// [SPECIES_RHYDON] = gMonFootprint_Rhydon,
// [SPECIES_CHANSEY] = gMonFootprint_Chansey,
// [SPECIES_TANGELA] = gMonFootprint_Tangela,
// [SPECIES_KANGASKHAN] = gMonFootprint_Kangaskhan,
// [SPECIES_HORSEA] = gMonFootprint_Horsea,
// [SPECIES_SEADRA] = gMonFootprint_Seadra,
// [SPECIES_GOLDEEN] = gMonFootprint_Goldeen,
// [SPECIES_SEAKING] = gMonFootprint_Seaking,
// [SPECIES_STARYU] = gMonFootprint_Staryu,
// [SPECIES_STARMIE] = gMonFootprint_Starmie,
// [SPECIES_MR_MIME] = gMonFootprint_Mrmime,
// [SPECIES_SCYTHER] = gMonFootprint_Scyther,
// [SPECIES_JYNX] = gMonFootprint_Jynx,
// [SPECIES_ELECTABUZZ] = gMonFootprint_Electabuzz,
// [SPECIES_MAGMAR] = gMonFootprint_Magmar,
// [SPECIES_PINSIR] = gMonFootprint_Pinsir,
// [SPECIES_TAUROS] = gMonFootprint_Tauros,
// [SPECIES_MAGIKARP] = gMonFootprint_Magikarp,
// [SPECIES_GYARADOS] = gMonFootprint_Gyarados,
// [SPECIES_LAPRAS] = gMonFootprint_Lapras,
// [SPECIES_DITTO] = gMonFootprint_Ditto,
// [SPECIES_EEVEE] = gMonFootprint_Eevee,
// [SPECIES_VAPOREON] = gMonFootprint_Vaporeon,
// [SPECIES_JOLTEON] = gMonFootprint_Jolteon,
// [SPECIES_FLAREON] = gMonFootprint_Flareon,
// [SPECIES_PORYGON] = gMonFootprint_Porygon,
// [SPECIES_OMANYTE] = gMonFootprint_Omanyte,
// [SPECIES_OMASTAR] = gMonFootprint_Omastar,
// [SPECIES_KABUTO] = gMonFootprint_Kabuto,
// [SPECIES_KABUTOPS] = gMonFootprint_Kabutops,
// [SPECIES_AERODACTYL] = gMonFootprint_Aerodactyl,
// [SPECIES_SNORLAX] = gMonFootprint_Snorlax,
// [SPECIES_ARTICUNO] = gMonFootprint_Articuno,
// [SPECIES_ZAPDOS] = gMonFootprint_Zapdos,
// [SPECIES_MOLTRES] = gMonFootprint_Moltres,
// [SPECIES_DRATINI] = gMonFootprint_Dratini,
// [SPECIES_DRAGONAIR] = gMonFootprint_Dragonair,
// [SPECIES_DRAGONITE] = gMonFootprint_Dragonite,
// [SPECIES_MEWTWO] = gMonFootprint_Mewtwo,
// [SPECIES_MEW] = gMonFootprint_Mew,
// [SPECIES_CHIKORITA] = gMonFootprint_Chikorita,
// [SPECIES_BAYLEEF] = gMonFootprint_Bayleef,
// [SPECIES_MEGANIUM] = gMonFootprint_Meganium,
// [SPECIES_CYNDAQUIL] = gMonFootprint_Cyndaquil,
// [SPECIES_QUILAVA] = gMonFootprint_Quilava,
// [SPECIES_TYPHLOSION] = gMonFootprint_Typhlosion,
// [SPECIES_TOTODILE] = gMonFootprint_Totodile,
// [SPECIES_CROCONAW] = gMonFootprint_Croconaw,
// [SPECIES_FERALIGATR] = gMonFootprint_Feraligatr,
// [SPECIES_SENTRET] = gMonFootprint_Sentret,
// [SPECIES_FURRET] = gMonFootprint_Furret,
// [SPECIES_HOOTHOOT] = gMonFootprint_Hoothoot,
// [SPECIES_NOCTOWL] = gMonFootprint_Noctowl,
// [SPECIES_LEDYBA] = gMonFootprint_Ledyba,
// [SPECIES_LEDIAN] = gMonFootprint_Ledian,
// [SPECIES_SPINARAK] = gMonFootprint_Spinarak,
// [SPECIES_ARIADOS] = gMonFootprint_Ariados,
// [SPECIES_CROBAT] = gMonFootprint_Crobat,
// [SPECIES_CHINCHOU] = gMonFootprint_Chinchou,
// [SPECIES_LANTURN] = gMonFootprint_Lanturn,
// [SPECIES_PICHU] = gMonFootprint_Pichu,
// [SPECIES_CLEFFA] = gMonFootprint_Cleffa,
// [SPECIES_IGGLYBUFF] = gMonFootprint_Igglybuff,
// [SPECIES_TOGEPI] = gMonFootprint_Togepi,
// [SPECIES_TOGETIC] = gMonFootprint_Togetic,
// [SPECIES_NATU] = gMonFootprint_Natu,
// [SPECIES_XATU] = gMonFootprint_Xatu,
// [SPECIES_MAREEP] = gMonFootprint_Mareep,
// [SPECIES_FLAAFFY] = gMonFootprint_Flaaffy,
// [SPECIES_AMPHAROS] = gMonFootprint_Ampharos,
// [SPECIES_BELLOSSOM] = gMonFootprint_Bellossom,
// [SPECIES_MARILL] = gMonFootprint_Marill,
// [SPECIES_AZUMARILL] = gMonFootprint_Azumarill,
// [SPECIES_SUDOWOODO] = gMonFootprint_Sudowoodo,
// [SPECIES_POLITOED] = gMonFootprint_Politoed,
// [SPECIES_HOPPIP] = gMonFootprint_Hoppip,
// [SPECIES_SKIPLOOM] = gMonFootprint_Skiploom,
// [SPECIES_JUMPLUFF] = gMonFootprint_Jumpluff,
// [SPECIES_AIPOM] = gMonFootprint_Aipom,
// [SPECIES_SUNKERN] = gMonFootprint_Sunkern,
// [SPECIES_SUNFLORA] = gMonFootprint_Sunflora,
// [SPECIES_YANMA] = gMonFootprint_Yanma,
// [SPECIES_WOOPER] = gMonFootprint_Wooper,
// [SPECIES_QUAGSIRE] = gMonFootprint_Quagsire,
// [SPECIES_ESPEON] = gMonFootprint_Espeon,
// [SPECIES_UMBREON] = gMonFootprint_Umbreon,
// [SPECIES_MURKROW] = gMonFootprint_Murkrow,
// [SPECIES_SLOWKING] = gMonFootprint_Slowking,
// [SPECIES_MISDREAVUS] = gMonFootprint_Misdreavus,
// [SPECIES_UNOWN] = gMonFootprint_Unown,
// [SPECIES_WOBBUFFET] = gMonFootprint_Wobbuffet,
// [SPECIES_GIRAFARIG] = gMonFootprint_Girafarig,
// [SPECIES_PINECO] = gMonFootprint_Pineco,
// [SPECIES_FORRETRESS] = gMonFootprint_Forretress,
// [SPECIES_DUNSPARCE] = gMonFootprint_Dunsparce,
// [SPECIES_GLIGAR] = gMonFootprint_Gligar,
// [SPECIES_STEELIX] = gMonFootprint_Steelix,
// [SPECIES_SNUBBULL] = gMonFootprint_Snubbull,
// [SPECIES_GRANBULL] = gMonFootprint_Granbull,
// [SPECIES_QWILFISH] = gMonFootprint_Qwilfish,
// [SPECIES_SCIZOR] = gMonFootprint_Scizor,
// [SPECIES_SHUCKLE] = gMonFootprint_Shuckle,
// [SPECIES_HERACROSS] = gMonFootprint_Heracross,
// [SPECIES_SNEASEL] = gMonFootprint_Sneasel,
// [SPECIES_TEDDIURSA] = gMonFootprint_Teddiursa,
// [SPECIES_URSARING] = gMonFootprint_Ursaring,
// [SPECIES_SLUGMA] = gMonFootprint_Slugma,
// [SPECIES_MAGCARGO] = gMonFootprint_Magcargo,
// [SPECIES_SWINUB] = gMonFootprint_Swinub,
// [SPECIES_PILOSWINE] = gMonFootprint_Piloswine,
// [SPECIES_CORSOLA] = gMonFootprint_Corsola,
// [SPECIES_REMORAID] = gMonFootprint_Remoraid,
// [SPECIES_OCTILLERY] = gMonFootprint_Octillery,
// [SPECIES_DELIBIRD] = gMonFootprint_Delibird,
// [SPECIES_MANTINE] = gMonFootprint_Mantine,
// [SPECIES_SKARMORY] = gMonFootprint_Skarmory,
// [SPECIES_HOUNDOUR] = gMonFootprint_Houndour,
// [SPECIES_HOUNDOOM] = gMonFootprint_Houndoom,
// [SPECIES_KINGDRA] = gMonFootprint_Kingdra,
// [SPECIES_PHANPY] = gMonFootprint_Phanpy,
// [SPECIES_DONPHAN] = gMonFootprint_Donphan,
// [SPECIES_PORYGON2] = gMonFootprint_Porygon2,
// [SPECIES_STANTLER] = gMonFootprint_Stantler,
// [SPECIES_SMEARGLE] = gMonFootprint_Smeargle,
// [SPECIES_TYROGUE] = gMonFootprint_Tyrogue,
// [SPECIES_HITMONTOP] = gMonFootprint_Hitmontop,
// [SPECIES_SMOOCHUM] = gMonFootprint_Smoochum,
// [SPECIES_ELEKID] = gMonFootprint_Elekid,
// [SPECIES_MAGBY] = gMonFootprint_Magby,
// [SPECIES_MILTANK] = gMonFootprint_Miltank,
// [SPECIES_BLISSEY] = gMonFootprint_Blissey,
// [SPECIES_RAIKOU] = gMonFootprint_Raikou,
// [SPECIES_ENTEI] = gMonFootprint_Entei,
// [SPECIES_SUICUNE] = gMonFootprint_Suicune,
// [SPECIES_LARVITAR] = gMonFootprint_Larvitar,
// [SPECIES_PUPITAR] = gMonFootprint_Pupitar,
// [SPECIES_TYRANITAR] = gMonFootprint_Tyranitar,
// [SPECIES_LUGIA] = gMonFootprint_Lugia,
// [SPECIES_HO_OH] = gMonFootprint_HoOh,
// [SPECIES_CELEBI] = gMonFootprint_Celebi,
// [SPECIES_OLD_UNOWN_B] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_C] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_D] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_E] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_F] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_G] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_H] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_I] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_J] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_K] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_L] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_M] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_N] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_O] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_P] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_Q] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_R] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_S] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_T] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_U] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_V] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_W] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_X] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_Y] = gMonFootprint_QuestionMark,
// [SPECIES_OLD_UNOWN_Z] = gMonFootprint_QuestionMark,
// [SPECIES_TREECKO] = gMonFootprint_Treecko,
// [SPECIES_GROVYLE] = gMonFootprint_Grovyle,
// [SPECIES_SCEPTILE] = gMonFootprint_Sceptile,
// [SPECIES_TORCHIC] = gMonFootprint_Torchic,
// [SPECIES_COMBUSKEN] = gMonFootprint_Combusken,
// [SPECIES_BLAZIKEN] = gMonFootprint_Blaziken,
// [SPECIES_MUDKIP] = gMonFootprint_Mudkip,
// [SPECIES_MARSHTOMP] = gMonFootprint_Marshtomp,
// [SPECIES_SWAMPERT] = gMonFootprint_Swampert,
// [SPECIES_POOCHYENA] = gMonFootprint_Poochyena,
// [SPECIES_MIGHTYENA] = gMonFootprint_Mightyena,
// [SPECIES_ZIGZAGOON] = gMonFootprint_Zigzagoon,
// [SPECIES_LINOONE] = gMonFootprint_Linoone,
// [SPECIES_WURMPLE] = gMonFootprint_Wurmple,
// [SPECIES_SILCOON] = gMonFootprint_Silcoon,
// [SPECIES_BEAUTIFLY] = gMonFootprint_Beautifly,
// [SPECIES_CASCOON] = gMonFootprint_Cascoon,
// [SPECIES_DUSTOX] = gMonFootprint_Dustox,
// [SPECIES_LOTAD] = gMonFootprint_Lotad,
// [SPECIES_LOMBRE] = gMonFootprint_Lombre,
// [SPECIES_LUDICOLO] = gMonFootprint_Ludicolo,
// [SPECIES_SEEDOT] = gMonFootprint_Seedot,
// [SPECIES_NUZLEAF] = gMonFootprint_Nuzleaf,
// [SPECIES_SHIFTRY] = gMonFootprint_Shiftry,
// [SPECIES_NINCADA] = gMonFootprint_Nincada,
// [SPECIES_NINJASK] = gMonFootprint_Ninjask,
// [SPECIES_SHEDINJA] = gMonFootprint_Shedinja,
// [SPECIES_TAILLOW] = gMonFootprint_Taillow,
// [SPECIES_SWELLOW] = gMonFootprint_Swellow,
// [SPECIES_SHROOMISH] = gMonFootprint_Shroomish,
// [SPECIES_BRELOOM] = gMonFootprint_Breloom,
// [SPECIES_SPINDA] = gMonFootprint_Spinda,
// [SPECIES_WINGULL] = gMonFootprint_Wingull,
// [SPECIES_PELIPPER] = gMonFootprint_Pelipper,
// [SPECIES_SURSKIT] = gMonFootprint_Surskit,
// [SPECIES_MASQUERAIN] = gMonFootprint_Masquerain,
// [SPECIES_WAILMER] = gMonFootprint_Wailmer,
// [SPECIES_WAILORD] = gMonFootprint_Wailord,
// [SPECIES_SKITTY] = gMonFootprint_Skitty,
// [SPECIES_DELCATTY] = gMonFootprint_Delcatty,
// [SPECIES_KECLEON] = gMonFootprint_Kecleon,
// [SPECIES_BALTOY] = gMonFootprint_Baltoy,
// [SPECIES_CLAYDOL] = gMonFootprint_Claydol,
// [SPECIES_NOSEPASS] = gMonFootprint_Nosepass,
// [SPECIES_TORKOAL] = gMonFootprint_Torkoal,
// [SPECIES_SABLEYE] = gMonFootprint_Sableye,
// [SPECIES_BARBOACH] = gMonFootprint_Barboach,
// [SPECIES_WHISCASH] = gMonFootprint_Whiscash,
// [SPECIES_LUVDISC] = gMonFootprint_Luvdisc,
// [SPECIES_CORPHISH] = gMonFootprint_Corphish,
// [SPECIES_CRAWDAUNT] = gMonFootprint_Crawdaunt,
// [SPECIES_FEEBAS] = gMonFootprint_Feebas,
// [SPECIES_MILOTIC] = gMonFootprint_Milotic,
// [SPECIES_CARVANHA] = gMonFootprint_Carvanha,
// [SPECIES_SHARPEDO] = gMonFootprint_Sharpedo,
// [SPECIES_TRAPINCH] = gMonFootprint_Trapinch,
// [SPECIES_VIBRAVA] = gMonFootprint_Vibrava,
// [SPECIES_FLYGON] = gMonFootprint_Flygon,
// [SPECIES_MAKUHITA] = gMonFootprint_Makuhita,
// [SPECIES_HARIYAMA] = gMonFootprint_Hariyama,
// [SPECIES_ELECTRIKE] = gMonFootprint_Electrike,
// [SPECIES_MANECTRIC] = gMonFootprint_Manectric,
// [SPECIES_NUMEL] = gMonFootprint_Numel,
// [SPECIES_CAMERUPT] = gMonFootprint_Camerupt,
// [SPECIES_SPHEAL] = gMonFootprint_Spheal,
// [SPECIES_SEALEO] = gMonFootprint_Sealeo,
// [SPECIES_WALREIN] = gMonFootprint_Walrein,
// [SPECIES_CACNEA] = gMonFootprint_Cacnea,
// [SPECIES_CACTURNE] = gMonFootprint_Cacturne,
// [SPECIES_SNORUNT] = gMonFootprint_Snorunt,
// [SPECIES_GLALIE] = gMonFootprint_Glalie,
// [SPECIES_LUNATONE] = gMonFootprint_Lunatone,
// [SPECIES_SOLROCK] = gMonFootprint_Solrock,
// [SPECIES_AZURILL] = gMonFootprint_Azurill,
// [SPECIES_SPOINK] = gMonFootprint_Spoink,
// [SPECIES_GRUMPIG] = gMonFootprint_Grumpig,
// [SPECIES_PLUSLE] = gMonFootprint_Plusle,
// [SPECIES_MINUN] = gMonFootprint_Minun,
// [SPECIES_MAWILE] = gMonFootprint_Mawile,
// [SPECIES_MEDITITE] = gMonFootprint_Meditite,
// [SPECIES_MEDICHAM] = gMonFootprint_Medicham,
// [SPECIES_SWABLU] = gMonFootprint_Swablu,
// [SPECIES_ALTARIA] = gMonFootprint_Altaria,
// [SPECIES_WYNAUT] = gMonFootprint_Wynaut,
// [SPECIES_DUSKULL] = gMonFootprint_Duskull,
// [SPECIES_DUSCLOPS] = gMonFootprint_Dusclops,
// [SPECIES_ROSELIA] = gMonFootprint_Roselia,
// [SPECIES_SLAKOTH] = gMonFootprint_Slakoth,
// [SPECIES_VIGOROTH] = gMonFootprint_Vigoroth,
// [SPECIES_SLAKING] = gMonFootprint_Slaking,
// [SPECIES_GULPIN] = gMonFootprint_Gulpin,
// [SPECIES_SWALOT] = gMonFootprint_Swalot,
// [SPECIES_TROPIUS] = gMonFootprint_Tropius,
// [SPECIES_WHISMUR] = gMonFootprint_Whismur,
// [SPECIES_LOUDRED] = gMonFootprint_Loudred,
// [SPECIES_EXPLOUD] = gMonFootprint_Exploud,
// [SPECIES_CLAMPERL] = gMonFootprint_Clamperl,
// [SPECIES_HUNTAIL] = gMonFootprint_Huntail,
// [SPECIES_GOREBYSS] = gMonFootprint_Gorebyss,
// [SPECIES_ABSOL] = gMonFootprint_Absol,
// [SPECIES_SHUPPET] = gMonFootprint_Shuppet,
// [SPECIES_BANETTE] = gMonFootprint_Banette,
// [SPECIES_SEVIPER] = gMonFootprint_Seviper,
// [SPECIES_ZANGOOSE] = gMonFootprint_Zangoose,
// [SPECIES_RELICANTH] = gMonFootprint_Relicanth,
// [SPECIES_ARON] = gMonFootprint_Aron,
// [SPECIES_LAIRON] = gMonFootprint_Lairon,
// [SPECIES_AGGRON] = gMonFootprint_Aggron,
// [SPECIES_CASTFORM] = gMonFootprint_Castform,
// [SPECIES_VOLBEAT] = gMonFootprint_Volbeat,
// [SPECIES_ILLUMISE] = gMonFootprint_Illumise,
// [SPECIES_LILEEP] = gMonFootprint_Lileep,
// [SPECIES_CRADILY] = gMonFootprint_Cradily,
// [SPECIES_ANORITH] = gMonFootprint_Anorith,
// [SPECIES_ARMALDO] = gMonFootprint_Armaldo,
// [SPECIES_RALTS] = gMonFootprint_Ralts,
// [SPECIES_KIRLIA] = gMonFootprint_Kirlia,
// [SPECIES_GARDEVOIR] = gMonFootprint_Gardevoir,
// [SPECIES_BAGON] = gMonFootprint_Bagon,
// [SPECIES_SHELGON] = gMonFootprint_Shelgon,
// [SPECIES_SALAMENCE] = gMonFootprint_Salamence,
// [SPECIES_BELDUM] = gMonFootprint_Beldum,
// [SPECIES_METANG] = gMonFootprint_Metang,
// [SPECIES_METAGROSS] = gMonFootprint_Metagross,
// [SPECIES_REGIROCK] = gMonFootprint_Regirock,
// [SPECIES_REGICE] = gMonFootprint_Regice,
// [SPECIES_REGISTEEL] = gMonFootprint_Registeel,
// [SPECIES_KYOGRE] = gMonFootprint_Kyogre,
// [SPECIES_GROUDON] = gMonFootprint_Groudon,
// [SPECIES_RAYQUAZA] = gMonFootprint_Rayquaza,
// [SPECIES_LATIAS] = gMonFootprint_Latias,
// [SPECIES_LATIOS] = gMonFootprint_Latios,
// [SPECIES_JIRACHI] = gMonFootprint_Jirachi,
// [SPECIES_DEOXYS] = gMonFootprint_Deoxys,
// [SPECIES_CHIMECHO] = gMonFootprint_Chimecho,
// [SPECIES_EGG] = gMonFootprint_Bulbasaur,
// };

File diff suppressed because it is too large Load Diff

View File

@ -1,443 +0,0 @@
// const struct CompressedSpriteSheet gMonFrontPicTable[] =
// {
// SPECIES_SPRITE(NONE, gMonFrontPic_CircledQuestionMark),
// SPECIES_SPRITE(BULBASAUR, gMonFrontPic_Bulbasaur),
// SPECIES_SPRITE(IVYSAUR, gMonFrontPic_Ivysaur),
// SPECIES_SPRITE(VENUSAUR, gMonFrontPic_Venusaur),
// SPECIES_SPRITE(CHARMANDER, gMonFrontPic_Charmander),
// SPECIES_SPRITE(CHARMELEON, gMonFrontPic_Charmeleon),
// SPECIES_SPRITE(CHARIZARD, gMonFrontPic_Charizard),
// SPECIES_SPRITE(SQUIRTLE, gMonFrontPic_Squirtle),
// SPECIES_SPRITE(WARTORTLE, gMonFrontPic_Wartortle),
// SPECIES_SPRITE(BLASTOISE, gMonFrontPic_Blastoise),
// SPECIES_SPRITE(CATERPIE, gMonFrontPic_Caterpie),
// SPECIES_SPRITE(METAPOD, gMonFrontPic_Metapod),
// SPECIES_SPRITE(BUTTERFREE, gMonFrontPic_Butterfree),
// SPECIES_SPRITE(WEEDLE, gMonFrontPic_Weedle),
// SPECIES_SPRITE(KAKUNA, gMonFrontPic_Kakuna),
// SPECIES_SPRITE(BEEDRILL, gMonFrontPic_Beedrill),
// SPECIES_SPRITE(PIDGEY, gMonFrontPic_Pidgey),
// SPECIES_SPRITE(PIDGEOTTO, gMonFrontPic_Pidgeotto),
// SPECIES_SPRITE(PIDGEOT, gMonFrontPic_Pidgeot),
// SPECIES_SPRITE(RATTATA, gMonFrontPic_Rattata),
// SPECIES_SPRITE(RATICATE, gMonFrontPic_Raticate),
// SPECIES_SPRITE(SPEAROW, gMonFrontPic_Spearow),
// SPECIES_SPRITE(FEAROW, gMonFrontPic_Fearow),
// SPECIES_SPRITE(EKANS, gMonFrontPic_Ekans),
// SPECIES_SPRITE(ARBOK, gMonFrontPic_Arbok),
// SPECIES_SPRITE(PIKACHU, gMonFrontPic_Pikachu),
// SPECIES_SPRITE(RAICHU, gMonFrontPic_Raichu),
// SPECIES_SPRITE(SANDSHREW, gMonFrontPic_Sandshrew),
// SPECIES_SPRITE(SANDSLASH, gMonFrontPic_Sandslash),
// SPECIES_SPRITE(NIDORAN_F, gMonFrontPic_NidoranF),
// SPECIES_SPRITE(NIDORINA, gMonFrontPic_Nidorina),
// SPECIES_SPRITE(NIDOQUEEN, gMonFrontPic_Nidoqueen),
// SPECIES_SPRITE(NIDORAN_M, gMonFrontPic_NidoranM),
// SPECIES_SPRITE(NIDORINO, gMonFrontPic_Nidorino),
// SPECIES_SPRITE(NIDOKING, gMonFrontPic_Nidoking),
// SPECIES_SPRITE(CLEFAIRY, gMonFrontPic_Clefairy),
// SPECIES_SPRITE(CLEFABLE, gMonFrontPic_Clefable),
// SPECIES_SPRITE(VULPIX, gMonFrontPic_Vulpix),
// SPECIES_SPRITE(NINETALES, gMonFrontPic_Ninetales),
// SPECIES_SPRITE(JIGGLYPUFF, gMonFrontPic_Jigglypuff),
// SPECIES_SPRITE(WIGGLYTUFF, gMonFrontPic_Wigglytuff),
// SPECIES_SPRITE(ZUBAT, gMonFrontPic_Zubat),
// SPECIES_SPRITE(GOLBAT, gMonFrontPic_Golbat),
// SPECIES_SPRITE(ODDISH, gMonFrontPic_Oddish),
// SPECIES_SPRITE(GLOOM, gMonFrontPic_Gloom),
// SPECIES_SPRITE(VILEPLUME, gMonFrontPic_Vileplume),
// SPECIES_SPRITE(PARAS, gMonFrontPic_Paras),
// SPECIES_SPRITE(PARASECT, gMonFrontPic_Parasect),
// SPECIES_SPRITE(VENONAT, gMonFrontPic_Venonat),
// SPECIES_SPRITE(VENOMOTH, gMonFrontPic_Venomoth),
// SPECIES_SPRITE(DIGLETT, gMonFrontPic_Diglett),
// SPECIES_SPRITE(DUGTRIO, gMonFrontPic_Dugtrio),
// SPECIES_SPRITE(MEOWTH, gMonFrontPic_Meowth),
// SPECIES_SPRITE(PERSIAN, gMonFrontPic_Persian),
// SPECIES_SPRITE(PSYDUCK, gMonFrontPic_Psyduck),
// SPECIES_SPRITE(GOLDUCK, gMonFrontPic_Golduck),
// SPECIES_SPRITE(MANKEY, gMonFrontPic_Mankey),
// SPECIES_SPRITE(PRIMEAPE, gMonFrontPic_Primeape),
// SPECIES_SPRITE(GROWLITHE, gMonFrontPic_Growlithe),
// SPECIES_SPRITE(ARCANINE, gMonFrontPic_Arcanine),
// SPECIES_SPRITE(POLIWAG, gMonFrontPic_Poliwag),
// SPECIES_SPRITE(POLIWHIRL, gMonFrontPic_Poliwhirl),
// SPECIES_SPRITE(POLIWRATH, gMonFrontPic_Poliwrath),
// SPECIES_SPRITE(ABRA, gMonFrontPic_Abra),
// SPECIES_SPRITE(KADABRA, gMonFrontPic_Kadabra),
// SPECIES_SPRITE(ALAKAZAM, gMonFrontPic_Alakazam),
// SPECIES_SPRITE(MACHOP, gMonFrontPic_Machop),
// SPECIES_SPRITE(MACHOKE, gMonFrontPic_Machoke),
// SPECIES_SPRITE(MACHAMP, gMonFrontPic_Machamp),
// SPECIES_SPRITE(BELLSPROUT, gMonFrontPic_Bellsprout),
// SPECIES_SPRITE(WEEPINBELL, gMonFrontPic_Weepinbell),
// SPECIES_SPRITE(VICTREEBEL, gMonFrontPic_Victreebel),
// SPECIES_SPRITE(TENTACOOL, gMonFrontPic_Tentacool),
// SPECIES_SPRITE(TENTACRUEL, gMonFrontPic_Tentacruel),
// SPECIES_SPRITE(GEODUDE, gMonFrontPic_Geodude),
// SPECIES_SPRITE(GRAVELER, gMonFrontPic_Graveler),
// SPECIES_SPRITE(GOLEM, gMonFrontPic_Golem),
// SPECIES_SPRITE(PONYTA, gMonFrontPic_Ponyta),
// SPECIES_SPRITE(RAPIDASH, gMonFrontPic_Rapidash),
// SPECIES_SPRITE(SLOWPOKE, gMonFrontPic_Slowpoke),
// SPECIES_SPRITE(SLOWBRO, gMonFrontPic_Slowbro),
// SPECIES_SPRITE(MAGNEMITE, gMonFrontPic_Magnemite),
// SPECIES_SPRITE(MAGNETON, gMonFrontPic_Magneton),
// SPECIES_SPRITE(FARFETCHD, gMonFrontPic_Farfetchd),
// SPECIES_SPRITE(DODUO, gMonFrontPic_Doduo),
// SPECIES_SPRITE(DODRIO, gMonFrontPic_Dodrio),
// SPECIES_SPRITE(SEEL, gMonFrontPic_Seel),
// SPECIES_SPRITE(DEWGONG, gMonFrontPic_Dewgong),
// SPECIES_SPRITE(GRIMER, gMonFrontPic_Grimer),
// SPECIES_SPRITE(MUK, gMonFrontPic_Muk),
// SPECIES_SPRITE(SHELLDER, gMonFrontPic_Shellder),
// SPECIES_SPRITE(CLOYSTER, gMonFrontPic_Cloyster),
// SPECIES_SPRITE(GASTLY, gMonFrontPic_Gastly),
// SPECIES_SPRITE(HAUNTER, gMonFrontPic_Haunter),
// SPECIES_SPRITE(GENGAR, gMonFrontPic_Gengar),
// SPECIES_SPRITE(ONIX, gMonFrontPic_Onix),
// SPECIES_SPRITE(DROWZEE, gMonFrontPic_Drowzee),
// SPECIES_SPRITE(HYPNO, gMonFrontPic_Hypno),
// SPECIES_SPRITE(KRABBY, gMonFrontPic_Krabby),
// SPECIES_SPRITE(KINGLER, gMonFrontPic_Kingler),
// SPECIES_SPRITE(VOLTORB, gMonFrontPic_Voltorb),
// SPECIES_SPRITE(ELECTRODE, gMonFrontPic_Electrode),
// SPECIES_SPRITE(EXEGGCUTE, gMonFrontPic_Exeggcute),
// SPECIES_SPRITE(EXEGGUTOR, gMonFrontPic_Exeggutor),
// SPECIES_SPRITE(CUBONE, gMonFrontPic_Cubone),
// SPECIES_SPRITE(MAROWAK, gMonFrontPic_Marowak),
// SPECIES_SPRITE(HITMONLEE, gMonFrontPic_Hitmonlee),
// SPECIES_SPRITE(HITMONCHAN, gMonFrontPic_Hitmonchan),
// SPECIES_SPRITE(LICKITUNG, gMonFrontPic_Lickitung),
// SPECIES_SPRITE(KOFFING, gMonFrontPic_Koffing),
// SPECIES_SPRITE(WEEZING, gMonFrontPic_Weezing),
// SPECIES_SPRITE(RHYHORN, gMonFrontPic_Rhyhorn),
// SPECIES_SPRITE(RHYDON, gMonFrontPic_Rhydon),
// SPECIES_SPRITE(CHANSEY, gMonFrontPic_Chansey),
// SPECIES_SPRITE(TANGELA, gMonFrontPic_Tangela),
// SPECIES_SPRITE(KANGASKHAN, gMonFrontPic_Kangaskhan),
// SPECIES_SPRITE(HORSEA, gMonFrontPic_Horsea),
// SPECIES_SPRITE(SEADRA, gMonFrontPic_Seadra),
// SPECIES_SPRITE(GOLDEEN, gMonFrontPic_Goldeen),
// SPECIES_SPRITE(SEAKING, gMonFrontPic_Seaking),
// SPECIES_SPRITE(STARYU, gMonFrontPic_Staryu),
// SPECIES_SPRITE(STARMIE, gMonFrontPic_Starmie),
// SPECIES_SPRITE(MR_MIME, gMonFrontPic_Mrmime),
// SPECIES_SPRITE(SCYTHER, gMonFrontPic_Scyther),
// SPECIES_SPRITE(JYNX, gMonFrontPic_Jynx),
// SPECIES_SPRITE(ELECTABUZZ, gMonFrontPic_Electabuzz),
// SPECIES_SPRITE(MAGMAR, gMonFrontPic_Magmar),
// SPECIES_SPRITE(PINSIR, gMonFrontPic_Pinsir),
// SPECIES_SPRITE(TAUROS, gMonFrontPic_Tauros),
// SPECIES_SPRITE(MAGIKARP, gMonFrontPic_Magikarp),
// SPECIES_SPRITE(GYARADOS, gMonFrontPic_Gyarados),
// SPECIES_SPRITE(LAPRAS, gMonFrontPic_Lapras),
// SPECIES_SPRITE(DITTO, gMonFrontPic_Ditto),
// SPECIES_SPRITE(EEVEE, gMonFrontPic_Eevee),
// SPECIES_SPRITE(VAPOREON, gMonFrontPic_Vaporeon),
// SPECIES_SPRITE(JOLTEON, gMonFrontPic_Jolteon),
// SPECIES_SPRITE(FLAREON, gMonFrontPic_Flareon),
// SPECIES_SPRITE(PORYGON, gMonFrontPic_Porygon),
// SPECIES_SPRITE(OMANYTE, gMonFrontPic_Omanyte),
// SPECIES_SPRITE(OMASTAR, gMonFrontPic_Omastar),
// SPECIES_SPRITE(KABUTO, gMonFrontPic_Kabuto),
// SPECIES_SPRITE(KABUTOPS, gMonFrontPic_Kabutops),
// SPECIES_SPRITE(AERODACTYL, gMonFrontPic_Aerodactyl),
// SPECIES_SPRITE(SNORLAX, gMonFrontPic_Snorlax),
// SPECIES_SPRITE(ARTICUNO, gMonFrontPic_Articuno),
// SPECIES_SPRITE(ZAPDOS, gMonFrontPic_Zapdos),
// SPECIES_SPRITE(MOLTRES, gMonFrontPic_Moltres),
// SPECIES_SPRITE(DRATINI, gMonFrontPic_Dratini),
// SPECIES_SPRITE(DRAGONAIR, gMonFrontPic_Dragonair),
// SPECIES_SPRITE(DRAGONITE, gMonFrontPic_Dragonite),
// SPECIES_SPRITE(MEWTWO, gMonFrontPic_Mewtwo),
// SPECIES_SPRITE(MEW, gMonFrontPic_Mew),
// SPECIES_SPRITE(CHIKORITA, gMonFrontPic_Chikorita),
// SPECIES_SPRITE(BAYLEEF, gMonFrontPic_Bayleef),
// SPECIES_SPRITE(MEGANIUM, gMonFrontPic_Meganium),
// SPECIES_SPRITE(CYNDAQUIL, gMonFrontPic_Cyndaquil),
// SPECIES_SPRITE(QUILAVA, gMonFrontPic_Quilava),
// SPECIES_SPRITE(TYPHLOSION, gMonFrontPic_Typhlosion),
// SPECIES_SPRITE(TOTODILE, gMonFrontPic_Totodile),
// SPECIES_SPRITE(CROCONAW, gMonFrontPic_Croconaw),
// SPECIES_SPRITE(FERALIGATR, gMonFrontPic_Feraligatr),
// SPECIES_SPRITE(SENTRET, gMonFrontPic_Sentret),
// SPECIES_SPRITE(FURRET, gMonFrontPic_Furret),
// SPECIES_SPRITE(HOOTHOOT, gMonFrontPic_Hoothoot),
// SPECIES_SPRITE(NOCTOWL, gMonFrontPic_Noctowl),
// SPECIES_SPRITE(LEDYBA, gMonFrontPic_Ledyba),
// SPECIES_SPRITE(LEDIAN, gMonFrontPic_Ledian),
// SPECIES_SPRITE(SPINARAK, gMonFrontPic_Spinarak),
// SPECIES_SPRITE(ARIADOS, gMonFrontPic_Ariados),
// SPECIES_SPRITE(CROBAT, gMonFrontPic_Crobat),
// SPECIES_SPRITE(CHINCHOU, gMonFrontPic_Chinchou),
// SPECIES_SPRITE(LANTURN, gMonFrontPic_Lanturn),
// SPECIES_SPRITE(PICHU, gMonFrontPic_Pichu),
// SPECIES_SPRITE(CLEFFA, gMonFrontPic_Cleffa),
// SPECIES_SPRITE(IGGLYBUFF, gMonFrontPic_Igglybuff),
// SPECIES_SPRITE(TOGEPI, gMonFrontPic_Togepi),
// SPECIES_SPRITE(TOGETIC, gMonFrontPic_Togetic),
// SPECIES_SPRITE(NATU, gMonFrontPic_Natu),
// SPECIES_SPRITE(XATU, gMonFrontPic_Xatu),
// SPECIES_SPRITE(MAREEP, gMonFrontPic_Mareep),
// SPECIES_SPRITE(FLAAFFY, gMonFrontPic_Flaaffy),
// SPECIES_SPRITE(AMPHAROS, gMonFrontPic_Ampharos),
// SPECIES_SPRITE(BELLOSSOM, gMonFrontPic_Bellossom),
// SPECIES_SPRITE(MARILL, gMonFrontPic_Marill),
// SPECIES_SPRITE(AZUMARILL, gMonFrontPic_Azumarill),
// SPECIES_SPRITE(SUDOWOODO, gMonFrontPic_Sudowoodo),
// SPECIES_SPRITE(POLITOED, gMonFrontPic_Politoed),
// SPECIES_SPRITE(HOPPIP, gMonFrontPic_Hoppip),
// SPECIES_SPRITE(SKIPLOOM, gMonFrontPic_Skiploom),
// SPECIES_SPRITE(JUMPLUFF, gMonFrontPic_Jumpluff),
// SPECIES_SPRITE(AIPOM, gMonFrontPic_Aipom),
// SPECIES_SPRITE(SUNKERN, gMonFrontPic_Sunkern),
// SPECIES_SPRITE(SUNFLORA, gMonFrontPic_Sunflora),
// SPECIES_SPRITE(YANMA, gMonFrontPic_Yanma),
// SPECIES_SPRITE(WOOPER, gMonFrontPic_Wooper),
// SPECIES_SPRITE(QUAGSIRE, gMonFrontPic_Quagsire),
// SPECIES_SPRITE(ESPEON, gMonFrontPic_Espeon),
// SPECIES_SPRITE(UMBREON, gMonFrontPic_Umbreon),
// SPECIES_SPRITE(MURKROW, gMonFrontPic_Murkrow),
// SPECIES_SPRITE(SLOWKING, gMonFrontPic_Slowking),
// SPECIES_SPRITE(MISDREAVUS, gMonFrontPic_Misdreavus),
// SPECIES_SPRITE(UNOWN, gMonFrontPic_UnownA),
// SPECIES_SPRITE(WOBBUFFET, gMonFrontPic_Wobbuffet),
// SPECIES_SPRITE(GIRAFARIG, gMonFrontPic_Girafarig),
// SPECIES_SPRITE(PINECO, gMonFrontPic_Pineco),
// SPECIES_SPRITE(FORRETRESS, gMonFrontPic_Forretress),
// SPECIES_SPRITE(DUNSPARCE, gMonFrontPic_Dunsparce),
// SPECIES_SPRITE(GLIGAR, gMonFrontPic_Gligar),
// SPECIES_SPRITE(STEELIX, gMonFrontPic_Steelix),
// SPECIES_SPRITE(SNUBBULL, gMonFrontPic_Snubbull),
// SPECIES_SPRITE(GRANBULL, gMonFrontPic_Granbull),
// SPECIES_SPRITE(QWILFISH, gMonFrontPic_Qwilfish),
// SPECIES_SPRITE(SCIZOR, gMonFrontPic_Scizor),
// SPECIES_SPRITE(SHUCKLE, gMonFrontPic_Shuckle),
// SPECIES_SPRITE(HERACROSS, gMonFrontPic_Heracross),
// SPECIES_SPRITE(SNEASEL, gMonFrontPic_Sneasel),
// SPECIES_SPRITE(TEDDIURSA, gMonFrontPic_Teddiursa),
// SPECIES_SPRITE(URSARING, gMonFrontPic_Ursaring),
// SPECIES_SPRITE(SLUGMA, gMonFrontPic_Slugma),
// SPECIES_SPRITE(MAGCARGO, gMonFrontPic_Magcargo),
// SPECIES_SPRITE(SWINUB, gMonFrontPic_Swinub),
// SPECIES_SPRITE(PILOSWINE, gMonFrontPic_Piloswine),
// SPECIES_SPRITE(CORSOLA, gMonFrontPic_Corsola),
// SPECIES_SPRITE(REMORAID, gMonFrontPic_Remoraid),
// SPECIES_SPRITE(OCTILLERY, gMonFrontPic_Octillery),
// SPECIES_SPRITE(DELIBIRD, gMonFrontPic_Delibird),
// SPECIES_SPRITE(MANTINE, gMonFrontPic_Mantine),
// SPECIES_SPRITE(SKARMORY, gMonFrontPic_Skarmory),
// SPECIES_SPRITE(HOUNDOUR, gMonFrontPic_Houndour),
// SPECIES_SPRITE(HOUNDOOM, gMonFrontPic_Houndoom),
// SPECIES_SPRITE(KINGDRA, gMonFrontPic_Kingdra),
// SPECIES_SPRITE(PHANPY, gMonFrontPic_Phanpy),
// SPECIES_SPRITE(DONPHAN, gMonFrontPic_Donphan),
// SPECIES_SPRITE(PORYGON2, gMonFrontPic_Porygon2),
// SPECIES_SPRITE(STANTLER, gMonFrontPic_Stantler),
// SPECIES_SPRITE(SMEARGLE, gMonFrontPic_Smeargle),
// SPECIES_SPRITE(TYROGUE, gMonFrontPic_Tyrogue),
// SPECIES_SPRITE(HITMONTOP, gMonFrontPic_Hitmontop),
// SPECIES_SPRITE(SMOOCHUM, gMonFrontPic_Smoochum),
// SPECIES_SPRITE(ELEKID, gMonFrontPic_Elekid),
// SPECIES_SPRITE(MAGBY, gMonFrontPic_Magby),
// SPECIES_SPRITE(MILTANK, gMonFrontPic_Miltank),
// SPECIES_SPRITE(BLISSEY, gMonFrontPic_Blissey),
// SPECIES_SPRITE(RAIKOU, gMonFrontPic_Raikou),
// SPECIES_SPRITE(ENTEI, gMonFrontPic_Entei),
// SPECIES_SPRITE(SUICUNE, gMonFrontPic_Suicune),
// SPECIES_SPRITE(LARVITAR, gMonFrontPic_Larvitar),
// SPECIES_SPRITE(PUPITAR, gMonFrontPic_Pupitar),
// SPECIES_SPRITE(TYRANITAR, gMonFrontPic_Tyranitar),
// SPECIES_SPRITE(LUGIA, gMonFrontPic_Lugia),
// SPECIES_SPRITE(HO_OH, gMonFrontPic_HoOh),
// SPECIES_SPRITE(CELEBI, gMonFrontPic_Celebi),
// SPECIES_SPRITE(OLD_UNOWN_B, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_C, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_D, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_E, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_F, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_G, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_H, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_I, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_J, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_K, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_L, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_M, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_N, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_O, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_P, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Q, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_R, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_S, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_T, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_U, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_V, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_W, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_X, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Y, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(OLD_UNOWN_Z, gMonFrontPic_DoubleQuestionMark),
// SPECIES_SPRITE(TREECKO, gMonFrontPic_Treecko),
// SPECIES_SPRITE(GROVYLE, gMonFrontPic_Grovyle),
// SPECIES_SPRITE(SCEPTILE, gMonFrontPic_Sceptile),
// SPECIES_SPRITE(TORCHIC, gMonFrontPic_Torchic),
// SPECIES_SPRITE(COMBUSKEN, gMonFrontPic_Combusken),
// SPECIES_SPRITE(BLAZIKEN, gMonFrontPic_Blaziken),
// SPECIES_SPRITE(MUDKIP, gMonFrontPic_Mudkip),
// SPECIES_SPRITE(MARSHTOMP, gMonFrontPic_Marshtomp),
// SPECIES_SPRITE(SWAMPERT, gMonFrontPic_Swampert),
// SPECIES_SPRITE(POOCHYENA, gMonFrontPic_Poochyena),
// SPECIES_SPRITE(MIGHTYENA, gMonFrontPic_Mightyena),
// SPECIES_SPRITE(ZIGZAGOON, gMonFrontPic_Zigzagoon),
// SPECIES_SPRITE(LINOONE, gMonFrontPic_Linoone),
// SPECIES_SPRITE(WURMPLE, gMonFrontPic_Wurmple),
// SPECIES_SPRITE(SILCOON, gMonFrontPic_Silcoon),
// SPECIES_SPRITE(BEAUTIFLY, gMonFrontPic_Beautifly),
// SPECIES_SPRITE(CASCOON, gMonFrontPic_Cascoon),
// SPECIES_SPRITE(DUSTOX, gMonFrontPic_Dustox),
// SPECIES_SPRITE(LOTAD, gMonFrontPic_Lotad),
// SPECIES_SPRITE(LOMBRE, gMonFrontPic_Lombre),
// SPECIES_SPRITE(LUDICOLO, gMonFrontPic_Ludicolo),
// SPECIES_SPRITE(SEEDOT, gMonFrontPic_Seedot),
// SPECIES_SPRITE(NUZLEAF, gMonFrontPic_Nuzleaf),
// SPECIES_SPRITE(SHIFTRY, gMonFrontPic_Shiftry),
// SPECIES_SPRITE(NINCADA, gMonFrontPic_Nincada),
// SPECIES_SPRITE(NINJASK, gMonFrontPic_Ninjask),
// SPECIES_SPRITE(SHEDINJA, gMonFrontPic_Shedinja),
// SPECIES_SPRITE(TAILLOW, gMonFrontPic_Taillow),
// SPECIES_SPRITE(SWELLOW, gMonFrontPic_Swellow),
// SPECIES_SPRITE(SHROOMISH, gMonFrontPic_Shroomish),
// SPECIES_SPRITE(BRELOOM, gMonFrontPic_Breloom),
// SPECIES_SPRITE(SPINDA, gMonFrontPic_Spinda),
// SPECIES_SPRITE(WINGULL, gMonFrontPic_Wingull),
// SPECIES_SPRITE(PELIPPER, gMonFrontPic_Pelipper),
// SPECIES_SPRITE(SURSKIT, gMonFrontPic_Surskit),
// SPECIES_SPRITE(MASQUERAIN, gMonFrontPic_Masquerain),
// SPECIES_SPRITE(WAILMER, gMonFrontPic_Wailmer),
// SPECIES_SPRITE(WAILORD, gMonFrontPic_Wailord),
// SPECIES_SPRITE(SKITTY, gMonFrontPic_Skitty),
// SPECIES_SPRITE(DELCATTY, gMonFrontPic_Delcatty),
// SPECIES_SPRITE(KECLEON, gMonFrontPic_Kecleon),
// SPECIES_SPRITE(BALTOY, gMonFrontPic_Baltoy),
// SPECIES_SPRITE(CLAYDOL, gMonFrontPic_Claydol),
// SPECIES_SPRITE(NOSEPASS, gMonFrontPic_Nosepass),
// SPECIES_SPRITE(TORKOAL, gMonFrontPic_Torkoal),
// SPECIES_SPRITE(SABLEYE, gMonFrontPic_Sableye),
// SPECIES_SPRITE(BARBOACH, gMonFrontPic_Barboach),
// SPECIES_SPRITE(WHISCASH, gMonFrontPic_Whiscash),
// SPECIES_SPRITE(LUVDISC, gMonFrontPic_Luvdisc),
// SPECIES_SPRITE(CORPHISH, gMonFrontPic_Corphish),
// SPECIES_SPRITE(CRAWDAUNT, gMonFrontPic_Crawdaunt),
// SPECIES_SPRITE(FEEBAS, gMonFrontPic_Feebas),
// SPECIES_SPRITE(MILOTIC, gMonFrontPic_Milotic),
// SPECIES_SPRITE(CARVANHA, gMonFrontPic_Carvanha),
// SPECIES_SPRITE(SHARPEDO, gMonFrontPic_Sharpedo),
// SPECIES_SPRITE(TRAPINCH, gMonFrontPic_Trapinch),
// SPECIES_SPRITE(VIBRAVA, gMonFrontPic_Vibrava),
// SPECIES_SPRITE(FLYGON, gMonFrontPic_Flygon),
// SPECIES_SPRITE(MAKUHITA, gMonFrontPic_Makuhita),
// SPECIES_SPRITE(HARIYAMA, gMonFrontPic_Hariyama),
// SPECIES_SPRITE(ELECTRIKE, gMonFrontPic_Electrike),
// SPECIES_SPRITE(MANECTRIC, gMonFrontPic_Manectric),
// SPECIES_SPRITE(NUMEL, gMonFrontPic_Numel),
// SPECIES_SPRITE(CAMERUPT, gMonFrontPic_Camerupt),
// SPECIES_SPRITE(SPHEAL, gMonFrontPic_Spheal),
// SPECIES_SPRITE(SEALEO, gMonFrontPic_Sealeo),
// SPECIES_SPRITE(WALREIN, gMonFrontPic_Walrein),
// SPECIES_SPRITE(CACNEA, gMonFrontPic_Cacnea),
// SPECIES_SPRITE(CACTURNE, gMonFrontPic_Cacturne),
// SPECIES_SPRITE(SNORUNT, gMonFrontPic_Snorunt),
// SPECIES_SPRITE(GLALIE, gMonFrontPic_Glalie),
// SPECIES_SPRITE(LUNATONE, gMonFrontPic_Lunatone),
// SPECIES_SPRITE(SOLROCK, gMonFrontPic_Solrock),
// SPECIES_SPRITE(AZURILL, gMonFrontPic_Azurill),
// SPECIES_SPRITE(SPOINK, gMonFrontPic_Spoink),
// SPECIES_SPRITE(GRUMPIG, gMonFrontPic_Grumpig),
// SPECIES_SPRITE(PLUSLE, gMonFrontPic_Plusle),
// SPECIES_SPRITE(MINUN, gMonFrontPic_Minun),
// SPECIES_SPRITE(MAWILE, gMonFrontPic_Mawile),
// SPECIES_SPRITE(MEDITITE, gMonFrontPic_Meditite),
// SPECIES_SPRITE(MEDICHAM, gMonFrontPic_Medicham),
// SPECIES_SPRITE(SWABLU, gMonFrontPic_Swablu),
// SPECIES_SPRITE(ALTARIA, gMonFrontPic_Altaria),
// SPECIES_SPRITE(WYNAUT, gMonFrontPic_Wynaut),
// SPECIES_SPRITE(DUSKULL, gMonFrontPic_Duskull),
// SPECIES_SPRITE(DUSCLOPS, gMonFrontPic_Dusclops),
// SPECIES_SPRITE(ROSELIA, gMonFrontPic_Roselia),
// SPECIES_SPRITE(SLAKOTH, gMonFrontPic_Slakoth),
// SPECIES_SPRITE(VIGOROTH, gMonFrontPic_Vigoroth),
// SPECIES_SPRITE(SLAKING, gMonFrontPic_Slaking),
// SPECIES_SPRITE(GULPIN, gMonFrontPic_Gulpin),
// SPECIES_SPRITE(SWALOT, gMonFrontPic_Swalot),
// SPECIES_SPRITE(TROPIUS, gMonFrontPic_Tropius),
// SPECIES_SPRITE(WHISMUR, gMonFrontPic_Whismur),
// SPECIES_SPRITE(LOUDRED, gMonFrontPic_Loudred),
// SPECIES_SPRITE(EXPLOUD, gMonFrontPic_Exploud),
// SPECIES_SPRITE(CLAMPERL, gMonFrontPic_Clamperl),
// SPECIES_SPRITE(HUNTAIL, gMonFrontPic_Huntail),
// SPECIES_SPRITE(GOREBYSS, gMonFrontPic_Gorebyss),
// SPECIES_SPRITE(ABSOL, gMonFrontPic_Absol),
// SPECIES_SPRITE(SHUPPET, gMonFrontPic_Shuppet),
// SPECIES_SPRITE(BANETTE, gMonFrontPic_Banette),
// SPECIES_SPRITE(SEVIPER, gMonFrontPic_Seviper),
// SPECIES_SPRITE(ZANGOOSE, gMonFrontPic_Zangoose),
// SPECIES_SPRITE(RELICANTH, gMonFrontPic_Relicanth),
// SPECIES_SPRITE(ARON, gMonFrontPic_Aron),
// SPECIES_SPRITE(LAIRON, gMonFrontPic_Lairon),
// SPECIES_SPRITE(AGGRON, gMonFrontPic_Aggron),
// SPECIES_SPRITE(CASTFORM, gMonFrontPic_Castform),
// SPECIES_SPRITE(VOLBEAT, gMonFrontPic_Volbeat),
// SPECIES_SPRITE(ILLUMISE, gMonFrontPic_Illumise),
// SPECIES_SPRITE(LILEEP, gMonFrontPic_Lileep),
// SPECIES_SPRITE(CRADILY, gMonFrontPic_Cradily),
// SPECIES_SPRITE(ANORITH, gMonFrontPic_Anorith),
// SPECIES_SPRITE(ARMALDO, gMonFrontPic_Armaldo),
// SPECIES_SPRITE(RALTS, gMonFrontPic_Ralts),
// SPECIES_SPRITE(KIRLIA, gMonFrontPic_Kirlia),
// SPECIES_SPRITE(GARDEVOIR, gMonFrontPic_Gardevoir),
// SPECIES_SPRITE(BAGON, gMonFrontPic_Bagon),
// SPECIES_SPRITE(SHELGON, gMonFrontPic_Shelgon),
// SPECIES_SPRITE(SALAMENCE, gMonFrontPic_Salamence),
// SPECIES_SPRITE(BELDUM, gMonFrontPic_Beldum),
// SPECIES_SPRITE(METANG, gMonFrontPic_Metang),
// SPECIES_SPRITE(METAGROSS, gMonFrontPic_Metagross),
// SPECIES_SPRITE(REGIROCK, gMonFrontPic_Regirock),
// SPECIES_SPRITE(REGICE, gMonFrontPic_Regice),
// SPECIES_SPRITE(REGISTEEL, gMonFrontPic_Registeel),
// SPECIES_SPRITE(KYOGRE, gMonFrontPic_Kyogre),
// SPECIES_SPRITE(GROUDON, gMonFrontPic_Groudon),
// SPECIES_SPRITE(RAYQUAZA, gMonFrontPic_Rayquaza),
// SPECIES_SPRITE(LATIAS, gMonFrontPic_Latias),
// SPECIES_SPRITE(LATIOS, gMonFrontPic_Latios),
// SPECIES_SPRITE(JIRACHI, gMonFrontPic_Jirachi),
// SPECIES_SPRITE(DEOXYS, gMonFrontPic_Deoxys),
// SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho),
// SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
// SPECIES_SPRITE(UNOWN_B, gMonFrontPic_UnownB),
// SPECIES_SPRITE(UNOWN_C, gMonFrontPic_UnownC),
// SPECIES_SPRITE(UNOWN_D, gMonFrontPic_UnownD),
// SPECIES_SPRITE(UNOWN_E, gMonFrontPic_UnownE),
// SPECIES_SPRITE(UNOWN_F, gMonFrontPic_UnownF),
// SPECIES_SPRITE(UNOWN_G, gMonFrontPic_UnownG),
// SPECIES_SPRITE(UNOWN_H, gMonFrontPic_UnownH),
// SPECIES_SPRITE(UNOWN_I, gMonFrontPic_UnownI),
// SPECIES_SPRITE(UNOWN_J, gMonFrontPic_UnownJ),
// SPECIES_SPRITE(UNOWN_K, gMonFrontPic_UnownK),
// SPECIES_SPRITE(UNOWN_L, gMonFrontPic_UnownL),
// SPECIES_SPRITE(UNOWN_M, gMonFrontPic_UnownM),
// SPECIES_SPRITE(UNOWN_N, gMonFrontPic_UnownN),
// SPECIES_SPRITE(UNOWN_O, gMonFrontPic_UnownO),
// SPECIES_SPRITE(UNOWN_P, gMonFrontPic_UnownP),
// SPECIES_SPRITE(UNOWN_Q, gMonFrontPic_UnownQ),
// SPECIES_SPRITE(UNOWN_R, gMonFrontPic_UnownR),
// SPECIES_SPRITE(UNOWN_S, gMonFrontPic_UnownS),
// SPECIES_SPRITE(UNOWN_T, gMonFrontPic_UnownT),
// SPECIES_SPRITE(UNOWN_U, gMonFrontPic_UnownU),
// SPECIES_SPRITE(UNOWN_V, gMonFrontPic_UnownV),
// SPECIES_SPRITE(UNOWN_W, gMonFrontPic_UnownW),
// SPECIES_SPRITE(UNOWN_X, gMonFrontPic_UnownX),
// SPECIES_SPRITE(UNOWN_Y, gMonFrontPic_UnownY),
// SPECIES_SPRITE(UNOWN_Z, gMonFrontPic_UnownZ),
// SPECIES_SPRITE(UNOWN_EMARK, gMonFrontPic_UnownExclamationMark),
// SPECIES_SPRITE(UNOWN_QMARK, gMonFrontPic_UnownQuestionMark),
// };

View File

@ -1,443 +0,0 @@
// const struct CompressedSpritePalette gMonPaletteTable[] =
// {
// SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
// SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
// SPECIES_PAL(IVYSAUR, gMonPalette_Ivysaur),
// SPECIES_PAL(VENUSAUR, gMonPalette_Venusaur),
// SPECIES_PAL(CHARMANDER, gMonPalette_Charmander),
// SPECIES_PAL(CHARMELEON, gMonPalette_Charmeleon),
// SPECIES_PAL(CHARIZARD, gMonPalette_Charizard),
// SPECIES_PAL(SQUIRTLE, gMonPalette_Squirtle),
// SPECIES_PAL(WARTORTLE, gMonPalette_Wartortle),
// SPECIES_PAL(BLASTOISE, gMonPalette_Blastoise),
// SPECIES_PAL(CATERPIE, gMonPalette_Caterpie),
// SPECIES_PAL(METAPOD, gMonPalette_Metapod),
// SPECIES_PAL(BUTTERFREE, gMonPalette_Butterfree),
// SPECIES_PAL(WEEDLE, gMonPalette_Weedle),
// SPECIES_PAL(KAKUNA, gMonPalette_Kakuna),
// SPECIES_PAL(BEEDRILL, gMonPalette_Beedrill),
// SPECIES_PAL(PIDGEY, gMonPalette_Pidgey),
// SPECIES_PAL(PIDGEOTTO, gMonPalette_Pidgeotto),
// SPECIES_PAL(PIDGEOT, gMonPalette_Pidgeot),
// SPECIES_PAL(RATTATA, gMonPalette_Rattata),
// SPECIES_PAL(RATICATE, gMonPalette_Raticate),
// SPECIES_PAL(SPEAROW, gMonPalette_Spearow),
// SPECIES_PAL(FEAROW, gMonPalette_Fearow),
// SPECIES_PAL(EKANS, gMonPalette_Ekans),
// SPECIES_PAL(ARBOK, gMonPalette_Arbok),
// SPECIES_PAL(PIKACHU, gMonPalette_Pikachu),
// SPECIES_PAL(RAICHU, gMonPalette_Raichu),
// SPECIES_PAL(SANDSHREW, gMonPalette_Sandshrew),
// SPECIES_PAL(SANDSLASH, gMonPalette_Sandslash),
// SPECIES_PAL(NIDORAN_F, gMonPalette_NidoranF),
// SPECIES_PAL(NIDORINA, gMonPalette_Nidorina),
// SPECIES_PAL(NIDOQUEEN, gMonPalette_Nidoqueen),
// SPECIES_PAL(NIDORAN_M, gMonPalette_NidoranM),
// SPECIES_PAL(NIDORINO, gMonPalette_Nidorino),
// SPECIES_PAL(NIDOKING, gMonPalette_Nidoking),
// SPECIES_PAL(CLEFAIRY, gMonPalette_Clefairy),
// SPECIES_PAL(CLEFABLE, gMonPalette_Clefable),
// SPECIES_PAL(VULPIX, gMonPalette_Vulpix),
// SPECIES_PAL(NINETALES, gMonPalette_Ninetales),
// SPECIES_PAL(JIGGLYPUFF, gMonPalette_Jigglypuff),
// SPECIES_PAL(WIGGLYTUFF, gMonPalette_Wigglytuff),
// SPECIES_PAL(ZUBAT, gMonPalette_Zubat),
// SPECIES_PAL(GOLBAT, gMonPalette_Golbat),
// SPECIES_PAL(ODDISH, gMonPalette_Oddish),
// SPECIES_PAL(GLOOM, gMonPalette_Gloom),
// SPECIES_PAL(VILEPLUME, gMonPalette_Vileplume),
// SPECIES_PAL(PARAS, gMonPalette_Paras),
// SPECIES_PAL(PARASECT, gMonPalette_Parasect),
// SPECIES_PAL(VENONAT, gMonPalette_Venonat),
// SPECIES_PAL(VENOMOTH, gMonPalette_Venomoth),
// SPECIES_PAL(DIGLETT, gMonPalette_Diglett),
// SPECIES_PAL(DUGTRIO, gMonPalette_Dugtrio),
// SPECIES_PAL(MEOWTH, gMonPalette_Meowth),
// SPECIES_PAL(PERSIAN, gMonPalette_Persian),
// SPECIES_PAL(PSYDUCK, gMonPalette_Psyduck),
// SPECIES_PAL(GOLDUCK, gMonPalette_Golduck),
// SPECIES_PAL(MANKEY, gMonPalette_Mankey),
// SPECIES_PAL(PRIMEAPE, gMonPalette_Primeape),
// SPECIES_PAL(GROWLITHE, gMonPalette_Growlithe),
// SPECIES_PAL(ARCANINE, gMonPalette_Arcanine),
// SPECIES_PAL(POLIWAG, gMonPalette_Poliwag),
// SPECIES_PAL(POLIWHIRL, gMonPalette_Poliwhirl),
// SPECIES_PAL(POLIWRATH, gMonPalette_Poliwrath),
// SPECIES_PAL(ABRA, gMonPalette_Abra),
// SPECIES_PAL(KADABRA, gMonPalette_Kadabra),
// SPECIES_PAL(ALAKAZAM, gMonPalette_Alakazam),
// SPECIES_PAL(MACHOP, gMonPalette_Machop),
// SPECIES_PAL(MACHOKE, gMonPalette_Machoke),
// SPECIES_PAL(MACHAMP, gMonPalette_Machamp),
// SPECIES_PAL(BELLSPROUT, gMonPalette_Bellsprout),
// SPECIES_PAL(WEEPINBELL, gMonPalette_Weepinbell),
// SPECIES_PAL(VICTREEBEL, gMonPalette_Victreebel),
// SPECIES_PAL(TENTACOOL, gMonPalette_Tentacool),
// SPECIES_PAL(TENTACRUEL, gMonPalette_Tentacruel),
// SPECIES_PAL(GEODUDE, gMonPalette_Geodude),
// SPECIES_PAL(GRAVELER, gMonPalette_Graveler),
// SPECIES_PAL(GOLEM, gMonPalette_Golem),
// SPECIES_PAL(PONYTA, gMonPalette_Ponyta),
// SPECIES_PAL(RAPIDASH, gMonPalette_Rapidash),
// SPECIES_PAL(SLOWPOKE, gMonPalette_Slowpoke),
// SPECIES_PAL(SLOWBRO, gMonPalette_Slowbro),
// SPECIES_PAL(MAGNEMITE, gMonPalette_Magnemite),
// SPECIES_PAL(MAGNETON, gMonPalette_Magneton),
// SPECIES_PAL(FARFETCHD, gMonPalette_Farfetchd),
// SPECIES_PAL(DODUO, gMonPalette_Doduo),
// SPECIES_PAL(DODRIO, gMonPalette_Dodrio),
// SPECIES_PAL(SEEL, gMonPalette_Seel),
// SPECIES_PAL(DEWGONG, gMonPalette_Dewgong),
// SPECIES_PAL(GRIMER, gMonPalette_Grimer),
// SPECIES_PAL(MUK, gMonPalette_Muk),
// SPECIES_PAL(SHELLDER, gMonPalette_Shellder),
// SPECIES_PAL(CLOYSTER, gMonPalette_Cloyster),
// SPECIES_PAL(GASTLY, gMonPalette_Gastly),
// SPECIES_PAL(HAUNTER, gMonPalette_Haunter),
// SPECIES_PAL(GENGAR, gMonPalette_Gengar),
// SPECIES_PAL(ONIX, gMonPalette_Onix),
// SPECIES_PAL(DROWZEE, gMonPalette_Drowzee),
// SPECIES_PAL(HYPNO, gMonPalette_Hypno),
// SPECIES_PAL(KRABBY, gMonPalette_Krabby),
// SPECIES_PAL(KINGLER, gMonPalette_Kingler),
// SPECIES_PAL(VOLTORB, gMonPalette_Voltorb),
// SPECIES_PAL(ELECTRODE, gMonPalette_Electrode),
// SPECIES_PAL(EXEGGCUTE, gMonPalette_Exeggcute),
// SPECIES_PAL(EXEGGUTOR, gMonPalette_Exeggutor),
// SPECIES_PAL(CUBONE, gMonPalette_Cubone),
// SPECIES_PAL(MAROWAK, gMonPalette_Marowak),
// SPECIES_PAL(HITMONLEE, gMonPalette_Hitmonlee),
// SPECIES_PAL(HITMONCHAN, gMonPalette_Hitmonchan),
// SPECIES_PAL(LICKITUNG, gMonPalette_Lickitung),
// SPECIES_PAL(KOFFING, gMonPalette_Koffing),
// SPECIES_PAL(WEEZING, gMonPalette_Weezing),
// SPECIES_PAL(RHYHORN, gMonPalette_Rhyhorn),
// SPECIES_PAL(RHYDON, gMonPalette_Rhydon),
// SPECIES_PAL(CHANSEY, gMonPalette_Chansey),
// SPECIES_PAL(TANGELA, gMonPalette_Tangela),
// SPECIES_PAL(KANGASKHAN, gMonPalette_Kangaskhan),
// SPECIES_PAL(HORSEA, gMonPalette_Horsea),
// SPECIES_PAL(SEADRA, gMonPalette_Seadra),
// SPECIES_PAL(GOLDEEN, gMonPalette_Goldeen),
// SPECIES_PAL(SEAKING, gMonPalette_Seaking),
// SPECIES_PAL(STARYU, gMonPalette_Staryu),
// SPECIES_PAL(STARMIE, gMonPalette_Starmie),
// SPECIES_PAL(MR_MIME, gMonPalette_Mrmime),
// SPECIES_PAL(SCYTHER, gMonPalette_Scyther),
// SPECIES_PAL(JYNX, gMonPalette_Jynx),
// SPECIES_PAL(ELECTABUZZ, gMonPalette_Electabuzz),
// SPECIES_PAL(MAGMAR, gMonPalette_Magmar),
// SPECIES_PAL(PINSIR, gMonPalette_Pinsir),
// SPECIES_PAL(TAUROS, gMonPalette_Tauros),
// SPECIES_PAL(MAGIKARP, gMonPalette_Magikarp),
// SPECIES_PAL(GYARADOS, gMonPalette_Gyarados),
// SPECIES_PAL(LAPRAS, gMonPalette_Lapras),
// SPECIES_PAL(DITTO, gMonPalette_Ditto),
// SPECIES_PAL(EEVEE, gMonPalette_Eevee),
// SPECIES_PAL(VAPOREON, gMonPalette_Vaporeon),
// SPECIES_PAL(JOLTEON, gMonPalette_Jolteon),
// SPECIES_PAL(FLAREON, gMonPalette_Flareon),
// SPECIES_PAL(PORYGON, gMonPalette_Porygon),
// SPECIES_PAL(OMANYTE, gMonPalette_Omanyte),
// SPECIES_PAL(OMASTAR, gMonPalette_Omastar),
// SPECIES_PAL(KABUTO, gMonPalette_Kabuto),
// SPECIES_PAL(KABUTOPS, gMonPalette_Kabutops),
// SPECIES_PAL(AERODACTYL, gMonPalette_Aerodactyl),
// SPECIES_PAL(SNORLAX, gMonPalette_Snorlax),
// SPECIES_PAL(ARTICUNO, gMonPalette_Articuno),
// SPECIES_PAL(ZAPDOS, gMonPalette_Zapdos),
// SPECIES_PAL(MOLTRES, gMonPalette_Moltres),
// SPECIES_PAL(DRATINI, gMonPalette_Dratini),
// SPECIES_PAL(DRAGONAIR, gMonPalette_Dragonair),
// SPECIES_PAL(DRAGONITE, gMonPalette_Dragonite),
// SPECIES_PAL(MEWTWO, gMonPalette_Mewtwo),
// SPECIES_PAL(MEW, gMonPalette_Mew),
// SPECIES_PAL(CHIKORITA, gMonPalette_Chikorita),
// SPECIES_PAL(BAYLEEF, gMonPalette_Bayleef),
// SPECIES_PAL(MEGANIUM, gMonPalette_Meganium),
// SPECIES_PAL(CYNDAQUIL, gMonPalette_Cyndaquil),
// SPECIES_PAL(QUILAVA, gMonPalette_Quilava),
// SPECIES_PAL(TYPHLOSION, gMonPalette_Typhlosion),
// SPECIES_PAL(TOTODILE, gMonPalette_Totodile),
// SPECIES_PAL(CROCONAW, gMonPalette_Croconaw),
// SPECIES_PAL(FERALIGATR, gMonPalette_Feraligatr),
// SPECIES_PAL(SENTRET, gMonPalette_Sentret),
// SPECIES_PAL(FURRET, gMonPalette_Furret),
// SPECIES_PAL(HOOTHOOT, gMonPalette_Hoothoot),
// SPECIES_PAL(NOCTOWL, gMonPalette_Noctowl),
// SPECIES_PAL(LEDYBA, gMonPalette_Ledyba),
// SPECIES_PAL(LEDIAN, gMonPalette_Ledian),
// SPECIES_PAL(SPINARAK, gMonPalette_Spinarak),
// SPECIES_PAL(ARIADOS, gMonPalette_Ariados),
// SPECIES_PAL(CROBAT, gMonPalette_Crobat),
// SPECIES_PAL(CHINCHOU, gMonPalette_Chinchou),
// SPECIES_PAL(LANTURN, gMonPalette_Lanturn),
// SPECIES_PAL(PICHU, gMonPalette_Pichu),
// SPECIES_PAL(CLEFFA, gMonPalette_Cleffa),
// SPECIES_PAL(IGGLYBUFF, gMonPalette_Igglybuff),
// SPECIES_PAL(TOGEPI, gMonPalette_Togepi),
// SPECIES_PAL(TOGETIC, gMonPalette_Togetic),
// SPECIES_PAL(NATU, gMonPalette_Natu),
// SPECIES_PAL(XATU, gMonPalette_Xatu),
// SPECIES_PAL(MAREEP, gMonPalette_Mareep),
// SPECIES_PAL(FLAAFFY, gMonPalette_Flaaffy),
// SPECIES_PAL(AMPHAROS, gMonPalette_Ampharos),
// SPECIES_PAL(BELLOSSOM, gMonPalette_Bellossom),
// SPECIES_PAL(MARILL, gMonPalette_Marill),
// SPECIES_PAL(AZUMARILL, gMonPalette_Azumarill),
// SPECIES_PAL(SUDOWOODO, gMonPalette_Sudowoodo),
// SPECIES_PAL(POLITOED, gMonPalette_Politoed),
// SPECIES_PAL(HOPPIP, gMonPalette_Hoppip),
// SPECIES_PAL(SKIPLOOM, gMonPalette_Skiploom),
// SPECIES_PAL(JUMPLUFF, gMonPalette_Jumpluff),
// SPECIES_PAL(AIPOM, gMonPalette_Aipom),
// SPECIES_PAL(SUNKERN, gMonPalette_Sunkern),
// SPECIES_PAL(SUNFLORA, gMonPalette_Sunflora),
// SPECIES_PAL(YANMA, gMonPalette_Yanma),
// SPECIES_PAL(WOOPER, gMonPalette_Wooper),
// SPECIES_PAL(QUAGSIRE, gMonPalette_Quagsire),
// SPECIES_PAL(ESPEON, gMonPalette_Espeon),
// SPECIES_PAL(UMBREON, gMonPalette_Umbreon),
// SPECIES_PAL(MURKROW, gMonPalette_Murkrow),
// SPECIES_PAL(SLOWKING, gMonPalette_Slowking),
// SPECIES_PAL(MISDREAVUS, gMonPalette_Misdreavus),
// SPECIES_PAL(UNOWN, gMonPalette_Unown),
// SPECIES_PAL(WOBBUFFET, gMonPalette_Wobbuffet),
// SPECIES_PAL(GIRAFARIG, gMonPalette_Girafarig),
// SPECIES_PAL(PINECO, gMonPalette_Pineco),
// SPECIES_PAL(FORRETRESS, gMonPalette_Forretress),
// SPECIES_PAL(DUNSPARCE, gMonPalette_Dunsparce),
// SPECIES_PAL(GLIGAR, gMonPalette_Gligar),
// SPECIES_PAL(STEELIX, gMonPalette_Steelix),
// SPECIES_PAL(SNUBBULL, gMonPalette_Snubbull),
// SPECIES_PAL(GRANBULL, gMonPalette_Granbull),
// SPECIES_PAL(QWILFISH, gMonPalette_Qwilfish),
// SPECIES_PAL(SCIZOR, gMonPalette_Scizor),
// SPECIES_PAL(SHUCKLE, gMonPalette_Shuckle),
// SPECIES_PAL(HERACROSS, gMonPalette_Heracross),
// SPECIES_PAL(SNEASEL, gMonPalette_Sneasel),
// SPECIES_PAL(TEDDIURSA, gMonPalette_Teddiursa),
// SPECIES_PAL(URSARING, gMonPalette_Ursaring),
// SPECIES_PAL(SLUGMA, gMonPalette_Slugma),
// SPECIES_PAL(MAGCARGO, gMonPalette_Magcargo),
// SPECIES_PAL(SWINUB, gMonPalette_Swinub),
// SPECIES_PAL(PILOSWINE, gMonPalette_Piloswine),
// SPECIES_PAL(CORSOLA, gMonPalette_Corsola),
// SPECIES_PAL(REMORAID, gMonPalette_Remoraid),
// SPECIES_PAL(OCTILLERY, gMonPalette_Octillery),
// SPECIES_PAL(DELIBIRD, gMonPalette_Delibird),
// SPECIES_PAL(MANTINE, gMonPalette_Mantine),
// SPECIES_PAL(SKARMORY, gMonPalette_Skarmory),
// SPECIES_PAL(HOUNDOUR, gMonPalette_Houndour),
// SPECIES_PAL(HOUNDOOM, gMonPalette_Houndoom),
// SPECIES_PAL(KINGDRA, gMonPalette_Kingdra),
// SPECIES_PAL(PHANPY, gMonPalette_Phanpy),
// SPECIES_PAL(DONPHAN, gMonPalette_Donphan),
// SPECIES_PAL(PORYGON2, gMonPalette_Porygon2),
// SPECIES_PAL(STANTLER, gMonPalette_Stantler),
// SPECIES_PAL(SMEARGLE, gMonPalette_Smeargle),
// SPECIES_PAL(TYROGUE, gMonPalette_Tyrogue),
// SPECIES_PAL(HITMONTOP, gMonPalette_Hitmontop),
// SPECIES_PAL(SMOOCHUM, gMonPalette_Smoochum),
// SPECIES_PAL(ELEKID, gMonPalette_Elekid),
// SPECIES_PAL(MAGBY, gMonPalette_Magby),
// SPECIES_PAL(MILTANK, gMonPalette_Miltank),
// SPECIES_PAL(BLISSEY, gMonPalette_Blissey),
// SPECIES_PAL(RAIKOU, gMonPalette_Raikou),
// SPECIES_PAL(ENTEI, gMonPalette_Entei),
// SPECIES_PAL(SUICUNE, gMonPalette_Suicune),
// SPECIES_PAL(LARVITAR, gMonPalette_Larvitar),
// SPECIES_PAL(PUPITAR, gMonPalette_Pupitar),
// SPECIES_PAL(TYRANITAR, gMonPalette_Tyranitar),
// SPECIES_PAL(LUGIA, gMonPalette_Lugia),
// SPECIES_PAL(HO_OH, gMonPalette_HoOh),
// SPECIES_PAL(CELEBI, gMonPalette_Celebi),
// SPECIES_PAL(OLD_UNOWN_B, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_C, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_D, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_E, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_F, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_G, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_H, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_I, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_J, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_K, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_L, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_M, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_N, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_O, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_P, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_Q, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_R, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_S, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_T, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_U, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_V, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_W, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_X, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_Y, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(OLD_UNOWN_Z, gMonPalette_DoubleQuestionMark),
// SPECIES_PAL(TREECKO, gMonPalette_Treecko),
// SPECIES_PAL(GROVYLE, gMonPalette_Grovyle),
// SPECIES_PAL(SCEPTILE, gMonPalette_Sceptile),
// SPECIES_PAL(TORCHIC, gMonPalette_Torchic),
// SPECIES_PAL(COMBUSKEN, gMonPalette_Combusken),
// SPECIES_PAL(BLAZIKEN, gMonPalette_Blaziken),
// SPECIES_PAL(MUDKIP, gMonPalette_Mudkip),
// SPECIES_PAL(MARSHTOMP, gMonPalette_Marshtomp),
// SPECIES_PAL(SWAMPERT, gMonPalette_Swampert),
// SPECIES_PAL(POOCHYENA, gMonPalette_Poochyena),
// SPECIES_PAL(MIGHTYENA, gMonPalette_Mightyena),
// SPECIES_PAL(ZIGZAGOON, gMonPalette_Zigzagoon),
// SPECIES_PAL(LINOONE, gMonPalette_Linoone),
// SPECIES_PAL(WURMPLE, gMonPalette_Wurmple),
// SPECIES_PAL(SILCOON, gMonPalette_Silcoon),
// SPECIES_PAL(BEAUTIFLY, gMonPalette_Beautifly),
// SPECIES_PAL(CASCOON, gMonPalette_Cascoon),
// SPECIES_PAL(DUSTOX, gMonPalette_Dustox),
// SPECIES_PAL(LOTAD, gMonPalette_Lotad),
// SPECIES_PAL(LOMBRE, gMonPalette_Lombre),
// SPECIES_PAL(LUDICOLO, gMonPalette_Ludicolo),
// SPECIES_PAL(SEEDOT, gMonPalette_Seedot),
// SPECIES_PAL(NUZLEAF, gMonPalette_Nuzleaf),
// SPECIES_PAL(SHIFTRY, gMonPalette_Shiftry),
// SPECIES_PAL(NINCADA, gMonPalette_Nincada),
// SPECIES_PAL(NINJASK, gMonPalette_Ninjask),
// SPECIES_PAL(SHEDINJA, gMonPalette_Shedinja),
// SPECIES_PAL(TAILLOW, gMonPalette_Taillow),
// SPECIES_PAL(SWELLOW, gMonPalette_Swellow),
// SPECIES_PAL(SHROOMISH, gMonPalette_Shroomish),
// SPECIES_PAL(BRELOOM, gMonPalette_Breloom),
// SPECIES_PAL(SPINDA, gMonPalette_Spinda),
// SPECIES_PAL(WINGULL, gMonPalette_Wingull),
// SPECIES_PAL(PELIPPER, gMonPalette_Pelipper),
// SPECIES_PAL(SURSKIT, gMonPalette_Surskit),
// SPECIES_PAL(MASQUERAIN, gMonPalette_Masquerain),
// SPECIES_PAL(WAILMER, gMonPalette_Wailmer),
// SPECIES_PAL(WAILORD, gMonPalette_Wailord),
// SPECIES_PAL(SKITTY, gMonPalette_Skitty),
// SPECIES_PAL(DELCATTY, gMonPalette_Delcatty),
// SPECIES_PAL(KECLEON, gMonPalette_Kecleon),
// SPECIES_PAL(BALTOY, gMonPalette_Baltoy),
// SPECIES_PAL(CLAYDOL, gMonPalette_Claydol),
// SPECIES_PAL(NOSEPASS, gMonPalette_Nosepass),
// SPECIES_PAL(TORKOAL, gMonPalette_Torkoal),
// SPECIES_PAL(SABLEYE, gMonPalette_Sableye),
// SPECIES_PAL(BARBOACH, gMonPalette_Barboach),
// SPECIES_PAL(WHISCASH, gMonPalette_Whiscash),
// SPECIES_PAL(LUVDISC, gMonPalette_Luvdisc),
// SPECIES_PAL(CORPHISH, gMonPalette_Corphish),
// SPECIES_PAL(CRAWDAUNT, gMonPalette_Crawdaunt),
// SPECIES_PAL(FEEBAS, gMonPalette_Feebas),
// SPECIES_PAL(MILOTIC, gMonPalette_Milotic),
// SPECIES_PAL(CARVANHA, gMonPalette_Carvanha),
// SPECIES_PAL(SHARPEDO, gMonPalette_Sharpedo),
// SPECIES_PAL(TRAPINCH, gMonPalette_Trapinch),
// SPECIES_PAL(VIBRAVA, gMonPalette_Vibrava),
// SPECIES_PAL(FLYGON, gMonPalette_Flygon),
// SPECIES_PAL(MAKUHITA, gMonPalette_Makuhita),
// SPECIES_PAL(HARIYAMA, gMonPalette_Hariyama),
// SPECIES_PAL(ELECTRIKE, gMonPalette_Electrike),
// SPECIES_PAL(MANECTRIC, gMonPalette_Manectric),
// SPECIES_PAL(NUMEL, gMonPalette_Numel),
// SPECIES_PAL(CAMERUPT, gMonPalette_Camerupt),
// SPECIES_PAL(SPHEAL, gMonPalette_Spheal),
// SPECIES_PAL(SEALEO, gMonPalette_Sealeo),
// SPECIES_PAL(WALREIN, gMonPalette_Walrein),
// SPECIES_PAL(CACNEA, gMonPalette_Cacnea),
// SPECIES_PAL(CACTURNE, gMonPalette_Cacturne),
// SPECIES_PAL(SNORUNT, gMonPalette_Snorunt),
// SPECIES_PAL(GLALIE, gMonPalette_Glalie),
// SPECIES_PAL(LUNATONE, gMonPalette_Lunatone),
// SPECIES_PAL(SOLROCK, gMonPalette_Solrock),
// SPECIES_PAL(AZURILL, gMonPalette_Azurill),
// SPECIES_PAL(SPOINK, gMonPalette_Spoink),
// SPECIES_PAL(GRUMPIG, gMonPalette_Grumpig),
// SPECIES_PAL(PLUSLE, gMonPalette_Plusle),
// SPECIES_PAL(MINUN, gMonPalette_Minun),
// SPECIES_PAL(MAWILE, gMonPalette_Mawile),
// SPECIES_PAL(MEDITITE, gMonPalette_Meditite),
// SPECIES_PAL(MEDICHAM, gMonPalette_Medicham),
// SPECIES_PAL(SWABLU, gMonPalette_Swablu),
// SPECIES_PAL(ALTARIA, gMonPalette_Altaria),
// SPECIES_PAL(WYNAUT, gMonPalette_Wynaut),
// SPECIES_PAL(DUSKULL, gMonPalette_Duskull),
// SPECIES_PAL(DUSCLOPS, gMonPalette_Dusclops),
// SPECIES_PAL(ROSELIA, gMonPalette_Roselia),
// SPECIES_PAL(SLAKOTH, gMonPalette_Slakoth),
// SPECIES_PAL(VIGOROTH, gMonPalette_Vigoroth),
// SPECIES_PAL(SLAKING, gMonPalette_Slaking),
// SPECIES_PAL(GULPIN, gMonPalette_Gulpin),
// SPECIES_PAL(SWALOT, gMonPalette_Swalot),
// SPECIES_PAL(TROPIUS, gMonPalette_Tropius),
// SPECIES_PAL(WHISMUR, gMonPalette_Whismur),
// SPECIES_PAL(LOUDRED, gMonPalette_Loudred),
// SPECIES_PAL(EXPLOUD, gMonPalette_Exploud),
// SPECIES_PAL(CLAMPERL, gMonPalette_Clamperl),
// SPECIES_PAL(HUNTAIL, gMonPalette_Huntail),
// SPECIES_PAL(GOREBYSS, gMonPalette_Gorebyss),
// SPECIES_PAL(ABSOL, gMonPalette_Absol),
// SPECIES_PAL(SHUPPET, gMonPalette_Shuppet),
// SPECIES_PAL(BANETTE, gMonPalette_Banette),
// SPECIES_PAL(SEVIPER, gMonPalette_Seviper),
// SPECIES_PAL(ZANGOOSE, gMonPalette_Zangoose),
// SPECIES_PAL(RELICANTH, gMonPalette_Relicanth),
// SPECIES_PAL(ARON, gMonPalette_Aron),
// SPECIES_PAL(LAIRON, gMonPalette_Lairon),
// SPECIES_PAL(AGGRON, gMonPalette_Aggron),
// SPECIES_PAL(CASTFORM, gMonPalette_Castform),
// SPECIES_PAL(VOLBEAT, gMonPalette_Volbeat),
// SPECIES_PAL(ILLUMISE, gMonPalette_Illumise),
// SPECIES_PAL(LILEEP, gMonPalette_Lileep),
// SPECIES_PAL(CRADILY, gMonPalette_Cradily),
// SPECIES_PAL(ANORITH, gMonPalette_Anorith),
// SPECIES_PAL(ARMALDO, gMonPalette_Armaldo),
// SPECIES_PAL(RALTS, gMonPalette_Ralts),
// SPECIES_PAL(KIRLIA, gMonPalette_Kirlia),
// SPECIES_PAL(GARDEVOIR, gMonPalette_Gardevoir),
// SPECIES_PAL(BAGON, gMonPalette_Bagon),
// SPECIES_PAL(SHELGON, gMonPalette_Shelgon),
// SPECIES_PAL(SALAMENCE, gMonPalette_Salamence),
// SPECIES_PAL(BELDUM, gMonPalette_Beldum),
// SPECIES_PAL(METANG, gMonPalette_Metang),
// SPECIES_PAL(METAGROSS, gMonPalette_Metagross),
// SPECIES_PAL(REGIROCK, gMonPalette_Regirock),
// SPECIES_PAL(REGICE, gMonPalette_Regice),
// SPECIES_PAL(REGISTEEL, gMonPalette_Registeel),
// SPECIES_PAL(KYOGRE, gMonPalette_Kyogre),
// SPECIES_PAL(GROUDON, gMonPalette_Groudon),
// SPECIES_PAL(RAYQUAZA, gMonPalette_Rayquaza),
// SPECIES_PAL(LATIAS, gMonPalette_Latias),
// SPECIES_PAL(LATIOS, gMonPalette_Latios),
// SPECIES_PAL(JIRACHI, gMonPalette_Jirachi),
// SPECIES_PAL(DEOXYS, gMonPalette_Deoxys),
// SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho),
// SPECIES_PAL(EGG, gMonPalette_Egg),
// SPECIES_PAL(UNOWN_B, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_C, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_D, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_E, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_F, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_G, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_H, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_I, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_J, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_K, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_L, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_M, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_N, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_O, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_P, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_Q, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_R, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_S, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_T, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_U, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_V, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_W, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_X, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_Y, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_Z, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_EMARK, gMonPalette_Unown),
// SPECIES_PAL(UNOWN_QMARK, gMonPalette_Unown),
// };

View File

@ -1,443 +0,0 @@
// const struct CompressedSpritePalette gMonShinyPaletteTable[] =
// {
// SPECIES_SHINY_PAL(NONE, gMonShinyPalette_CircledQuestionMark),
// SPECIES_SHINY_PAL(BULBASAUR, gMonShinyPalette_Bulbasaur),
// SPECIES_SHINY_PAL(IVYSAUR, gMonShinyPalette_Ivysaur),
// SPECIES_SHINY_PAL(VENUSAUR, gMonShinyPalette_Venusaur),
// SPECIES_SHINY_PAL(CHARMANDER, gMonShinyPalette_Charmander),
// SPECIES_SHINY_PAL(CHARMELEON, gMonShinyPalette_Charmeleon),
// SPECIES_SHINY_PAL(CHARIZARD, gMonShinyPalette_Charizard),
// SPECIES_SHINY_PAL(SQUIRTLE, gMonShinyPalette_Squirtle),
// SPECIES_SHINY_PAL(WARTORTLE, gMonShinyPalette_Wartortle),
// SPECIES_SHINY_PAL(BLASTOISE, gMonShinyPalette_Blastoise),
// SPECIES_SHINY_PAL(CATERPIE, gMonShinyPalette_Caterpie),
// SPECIES_SHINY_PAL(METAPOD, gMonShinyPalette_Metapod),
// SPECIES_SHINY_PAL(BUTTERFREE, gMonShinyPalette_Butterfree),
// SPECIES_SHINY_PAL(WEEDLE, gMonShinyPalette_Weedle),
// SPECIES_SHINY_PAL(KAKUNA, gMonShinyPalette_Kakuna),
// SPECIES_SHINY_PAL(BEEDRILL, gMonShinyPalette_Beedrill),
// SPECIES_SHINY_PAL(PIDGEY, gMonShinyPalette_Pidgey),
// SPECIES_SHINY_PAL(PIDGEOTTO, gMonShinyPalette_Pidgeotto),
// SPECIES_SHINY_PAL(PIDGEOT, gMonShinyPalette_Pidgeot),
// SPECIES_SHINY_PAL(RATTATA, gMonShinyPalette_Rattata),
// SPECIES_SHINY_PAL(RATICATE, gMonShinyPalette_Raticate),
// SPECIES_SHINY_PAL(SPEAROW, gMonShinyPalette_Spearow),
// SPECIES_SHINY_PAL(FEAROW, gMonShinyPalette_Fearow),
// SPECIES_SHINY_PAL(EKANS, gMonShinyPalette_Ekans),
// SPECIES_SHINY_PAL(ARBOK, gMonShinyPalette_Arbok),
// SPECIES_SHINY_PAL(PIKACHU, gMonShinyPalette_Pikachu),
// SPECIES_SHINY_PAL(RAICHU, gMonShinyPalette_Raichu),
// SPECIES_SHINY_PAL(SANDSHREW, gMonShinyPalette_Sandshrew),
// SPECIES_SHINY_PAL(SANDSLASH, gMonShinyPalette_Sandslash),
// SPECIES_SHINY_PAL(NIDORAN_F, gMonShinyPalette_NidoranF),
// SPECIES_SHINY_PAL(NIDORINA, gMonShinyPalette_Nidorina),
// SPECIES_SHINY_PAL(NIDOQUEEN, gMonShinyPalette_Nidoqueen),
// SPECIES_SHINY_PAL(NIDORAN_M, gMonShinyPalette_NidoranM),
// SPECIES_SHINY_PAL(NIDORINO, gMonShinyPalette_Nidorino),
// SPECIES_SHINY_PAL(NIDOKING, gMonShinyPalette_Nidoking),
// SPECIES_SHINY_PAL(CLEFAIRY, gMonShinyPalette_Clefairy),
// SPECIES_SHINY_PAL(CLEFABLE, gMonShinyPalette_Clefable),
// SPECIES_SHINY_PAL(VULPIX, gMonShinyPalette_Vulpix),
// SPECIES_SHINY_PAL(NINETALES, gMonShinyPalette_Ninetales),
// SPECIES_SHINY_PAL(JIGGLYPUFF, gMonShinyPalette_Jigglypuff),
// SPECIES_SHINY_PAL(WIGGLYTUFF, gMonShinyPalette_Wigglytuff),
// SPECIES_SHINY_PAL(ZUBAT, gMonShinyPalette_Zubat),
// SPECIES_SHINY_PAL(GOLBAT, gMonShinyPalette_Golbat),
// SPECIES_SHINY_PAL(ODDISH, gMonShinyPalette_Oddish),
// SPECIES_SHINY_PAL(GLOOM, gMonShinyPalette_Gloom),
// SPECIES_SHINY_PAL(VILEPLUME, gMonShinyPalette_Vileplume),
// SPECIES_SHINY_PAL(PARAS, gMonShinyPalette_Paras),
// SPECIES_SHINY_PAL(PARASECT, gMonShinyPalette_Parasect),
// SPECIES_SHINY_PAL(VENONAT, gMonShinyPalette_Venonat),
// SPECIES_SHINY_PAL(VENOMOTH, gMonShinyPalette_Venomoth),
// SPECIES_SHINY_PAL(DIGLETT, gMonShinyPalette_Diglett),
// SPECIES_SHINY_PAL(DUGTRIO, gMonShinyPalette_Dugtrio),
// SPECIES_SHINY_PAL(MEOWTH, gMonShinyPalette_Meowth),
// SPECIES_SHINY_PAL(PERSIAN, gMonShinyPalette_Persian),
// SPECIES_SHINY_PAL(PSYDUCK, gMonShinyPalette_Psyduck),
// SPECIES_SHINY_PAL(GOLDUCK, gMonShinyPalette_Golduck),
// SPECIES_SHINY_PAL(MANKEY, gMonShinyPalette_Mankey),
// SPECIES_SHINY_PAL(PRIMEAPE, gMonShinyPalette_Primeape),
// SPECIES_SHINY_PAL(GROWLITHE, gMonShinyPalette_Growlithe),
// SPECIES_SHINY_PAL(ARCANINE, gMonShinyPalette_Arcanine),
// SPECIES_SHINY_PAL(POLIWAG, gMonShinyPalette_Poliwag),
// SPECIES_SHINY_PAL(POLIWHIRL, gMonShinyPalette_Poliwhirl),
// SPECIES_SHINY_PAL(POLIWRATH, gMonShinyPalette_Poliwrath),
// SPECIES_SHINY_PAL(ABRA, gMonShinyPalette_Abra),
// SPECIES_SHINY_PAL(KADABRA, gMonShinyPalette_Kadabra),
// SPECIES_SHINY_PAL(ALAKAZAM, gMonShinyPalette_Alakazam),
// SPECIES_SHINY_PAL(MACHOP, gMonShinyPalette_Machop),
// SPECIES_SHINY_PAL(MACHOKE, gMonShinyPalette_Machoke),
// SPECIES_SHINY_PAL(MACHAMP, gMonShinyPalette_Machamp),
// SPECIES_SHINY_PAL(BELLSPROUT, gMonShinyPalette_Bellsprout),
// SPECIES_SHINY_PAL(WEEPINBELL, gMonShinyPalette_Weepinbell),
// SPECIES_SHINY_PAL(VICTREEBEL, gMonShinyPalette_Victreebel),
// SPECIES_SHINY_PAL(TENTACOOL, gMonShinyPalette_Tentacool),
// SPECIES_SHINY_PAL(TENTACRUEL, gMonShinyPalette_Tentacruel),
// SPECIES_SHINY_PAL(GEODUDE, gMonShinyPalette_Geodude),
// SPECIES_SHINY_PAL(GRAVELER, gMonShinyPalette_Graveler),
// SPECIES_SHINY_PAL(GOLEM, gMonShinyPalette_Golem),
// SPECIES_SHINY_PAL(PONYTA, gMonShinyPalette_Ponyta),
// SPECIES_SHINY_PAL(RAPIDASH, gMonShinyPalette_Rapidash),
// SPECIES_SHINY_PAL(SLOWPOKE, gMonShinyPalette_Slowpoke),
// SPECIES_SHINY_PAL(SLOWBRO, gMonShinyPalette_Slowbro),
// SPECIES_SHINY_PAL(MAGNEMITE, gMonShinyPalette_Magnemite),
// SPECIES_SHINY_PAL(MAGNETON, gMonShinyPalette_Magneton),
// SPECIES_SHINY_PAL(FARFETCHD, gMonShinyPalette_Farfetchd),
// SPECIES_SHINY_PAL(DODUO, gMonShinyPalette_Doduo),
// SPECIES_SHINY_PAL(DODRIO, gMonShinyPalette_Dodrio),
// SPECIES_SHINY_PAL(SEEL, gMonShinyPalette_Seel),
// SPECIES_SHINY_PAL(DEWGONG, gMonShinyPalette_Dewgong),
// SPECIES_SHINY_PAL(GRIMER, gMonShinyPalette_Grimer),
// SPECIES_SHINY_PAL(MUK, gMonShinyPalette_Muk),
// SPECIES_SHINY_PAL(SHELLDER, gMonShinyPalette_Shellder),
// SPECIES_SHINY_PAL(CLOYSTER, gMonShinyPalette_Cloyster),
// SPECIES_SHINY_PAL(GASTLY, gMonShinyPalette_Gastly),
// SPECIES_SHINY_PAL(HAUNTER, gMonShinyPalette_Haunter),
// SPECIES_SHINY_PAL(GENGAR, gMonShinyPalette_Gengar),
// SPECIES_SHINY_PAL(ONIX, gMonShinyPalette_Onix),
// SPECIES_SHINY_PAL(DROWZEE, gMonShinyPalette_Drowzee),
// SPECIES_SHINY_PAL(HYPNO, gMonShinyPalette_Hypno),
// SPECIES_SHINY_PAL(KRABBY, gMonShinyPalette_Krabby),
// SPECIES_SHINY_PAL(KINGLER, gMonShinyPalette_Kingler),
// SPECIES_SHINY_PAL(VOLTORB, gMonShinyPalette_Voltorb),
// SPECIES_SHINY_PAL(ELECTRODE, gMonShinyPalette_Electrode),
// SPECIES_SHINY_PAL(EXEGGCUTE, gMonShinyPalette_Exeggcute),
// SPECIES_SHINY_PAL(EXEGGUTOR, gMonShinyPalette_Exeggutor),
// SPECIES_SHINY_PAL(CUBONE, gMonShinyPalette_Cubone),
// SPECIES_SHINY_PAL(MAROWAK, gMonShinyPalette_Marowak),
// SPECIES_SHINY_PAL(HITMONLEE, gMonShinyPalette_Hitmonlee),
// SPECIES_SHINY_PAL(HITMONCHAN, gMonShinyPalette_Hitmonchan),
// SPECIES_SHINY_PAL(LICKITUNG, gMonShinyPalette_Lickitung),
// SPECIES_SHINY_PAL(KOFFING, gMonShinyPalette_Koffing),
// SPECIES_SHINY_PAL(WEEZING, gMonShinyPalette_Weezing),
// SPECIES_SHINY_PAL(RHYHORN, gMonShinyPalette_Rhyhorn),
// SPECIES_SHINY_PAL(RHYDON, gMonShinyPalette_Rhydon),
// SPECIES_SHINY_PAL(CHANSEY, gMonShinyPalette_Chansey),
// SPECIES_SHINY_PAL(TANGELA, gMonShinyPalette_Tangela),
// SPECIES_SHINY_PAL(KANGASKHAN, gMonShinyPalette_Kangaskhan),
// SPECIES_SHINY_PAL(HORSEA, gMonShinyPalette_Horsea),
// SPECIES_SHINY_PAL(SEADRA, gMonShinyPalette_Seadra),
// SPECIES_SHINY_PAL(GOLDEEN, gMonShinyPalette_Goldeen),
// SPECIES_SHINY_PAL(SEAKING, gMonShinyPalette_Seaking),
// SPECIES_SHINY_PAL(STARYU, gMonShinyPalette_Staryu),
// SPECIES_SHINY_PAL(STARMIE, gMonShinyPalette_Starmie),
// SPECIES_SHINY_PAL(MR_MIME, gMonShinyPalette_Mrmime),
// SPECIES_SHINY_PAL(SCYTHER, gMonShinyPalette_Scyther),
// SPECIES_SHINY_PAL(JYNX, gMonShinyPalette_Jynx),
// SPECIES_SHINY_PAL(ELECTABUZZ, gMonShinyPalette_Electabuzz),
// SPECIES_SHINY_PAL(MAGMAR, gMonShinyPalette_Magmar),
// SPECIES_SHINY_PAL(PINSIR, gMonShinyPalette_Pinsir),
// SPECIES_SHINY_PAL(TAUROS, gMonShinyPalette_Tauros),
// SPECIES_SHINY_PAL(MAGIKARP, gMonShinyPalette_Magikarp),
// SPECIES_SHINY_PAL(GYARADOS, gMonShinyPalette_Gyarados),
// SPECIES_SHINY_PAL(LAPRAS, gMonShinyPalette_Lapras),
// SPECIES_SHINY_PAL(DITTO, gMonShinyPalette_Ditto),
// SPECIES_SHINY_PAL(EEVEE, gMonShinyPalette_Eevee),
// SPECIES_SHINY_PAL(VAPOREON, gMonShinyPalette_Vaporeon),
// SPECIES_SHINY_PAL(JOLTEON, gMonShinyPalette_Jolteon),
// SPECIES_SHINY_PAL(FLAREON, gMonShinyPalette_Flareon),
// SPECIES_SHINY_PAL(PORYGON, gMonShinyPalette_Porygon),
// SPECIES_SHINY_PAL(OMANYTE, gMonShinyPalette_Omanyte),
// SPECIES_SHINY_PAL(OMASTAR, gMonShinyPalette_Omastar),
// SPECIES_SHINY_PAL(KABUTO, gMonShinyPalette_Kabuto),
// SPECIES_SHINY_PAL(KABUTOPS, gMonShinyPalette_Kabutops),
// SPECIES_SHINY_PAL(AERODACTYL, gMonShinyPalette_Aerodactyl),
// SPECIES_SHINY_PAL(SNORLAX, gMonShinyPalette_Snorlax),
// SPECIES_SHINY_PAL(ARTICUNO, gMonShinyPalette_Articuno),
// SPECIES_SHINY_PAL(ZAPDOS, gMonShinyPalette_Zapdos),
// SPECIES_SHINY_PAL(MOLTRES, gMonShinyPalette_Moltres),
// SPECIES_SHINY_PAL(DRATINI, gMonShinyPalette_Dratini),
// SPECIES_SHINY_PAL(DRAGONAIR, gMonShinyPalette_Dragonair),
// SPECIES_SHINY_PAL(DRAGONITE, gMonShinyPalette_Dragonite),
// SPECIES_SHINY_PAL(MEWTWO, gMonShinyPalette_Mewtwo),
// SPECIES_SHINY_PAL(MEW, gMonShinyPalette_Mew),
// SPECIES_SHINY_PAL(CHIKORITA, gMonShinyPalette_Chikorita),
// SPECIES_SHINY_PAL(BAYLEEF, gMonShinyPalette_Bayleef),
// SPECIES_SHINY_PAL(MEGANIUM, gMonShinyPalette_Meganium),
// SPECIES_SHINY_PAL(CYNDAQUIL, gMonShinyPalette_Cyndaquil),
// SPECIES_SHINY_PAL(QUILAVA, gMonShinyPalette_Quilava),
// SPECIES_SHINY_PAL(TYPHLOSION, gMonShinyPalette_Typhlosion),
// SPECIES_SHINY_PAL(TOTODILE, gMonShinyPalette_Totodile),
// SPECIES_SHINY_PAL(CROCONAW, gMonShinyPalette_Croconaw),
// SPECIES_SHINY_PAL(FERALIGATR, gMonShinyPalette_Feraligatr),
// SPECIES_SHINY_PAL(SENTRET, gMonShinyPalette_Sentret),
// SPECIES_SHINY_PAL(FURRET, gMonShinyPalette_Furret),
// SPECIES_SHINY_PAL(HOOTHOOT, gMonShinyPalette_Hoothoot),
// SPECIES_SHINY_PAL(NOCTOWL, gMonShinyPalette_Noctowl),
// SPECIES_SHINY_PAL(LEDYBA, gMonShinyPalette_Ledyba),
// SPECIES_SHINY_PAL(LEDIAN, gMonShinyPalette_Ledian),
// SPECIES_SHINY_PAL(SPINARAK, gMonShinyPalette_Spinarak),
// SPECIES_SHINY_PAL(ARIADOS, gMonShinyPalette_Ariados),
// SPECIES_SHINY_PAL(CROBAT, gMonShinyPalette_Crobat),
// SPECIES_SHINY_PAL(CHINCHOU, gMonShinyPalette_Chinchou),
// SPECIES_SHINY_PAL(LANTURN, gMonShinyPalette_Lanturn),
// SPECIES_SHINY_PAL(PICHU, gMonShinyPalette_Pichu),
// SPECIES_SHINY_PAL(CLEFFA, gMonShinyPalette_Cleffa),
// SPECIES_SHINY_PAL(IGGLYBUFF, gMonShinyPalette_Igglybuff),
// SPECIES_SHINY_PAL(TOGEPI, gMonShinyPalette_Togepi),
// SPECIES_SHINY_PAL(TOGETIC, gMonShinyPalette_Togetic),
// SPECIES_SHINY_PAL(NATU, gMonShinyPalette_Natu),
// SPECIES_SHINY_PAL(XATU, gMonShinyPalette_Xatu),
// SPECIES_SHINY_PAL(MAREEP, gMonShinyPalette_Mareep),
// SPECIES_SHINY_PAL(FLAAFFY, gMonShinyPalette_Flaaffy),
// SPECIES_SHINY_PAL(AMPHAROS, gMonShinyPalette_Ampharos),
// SPECIES_SHINY_PAL(BELLOSSOM, gMonShinyPalette_Bellossom),
// SPECIES_SHINY_PAL(MARILL, gMonShinyPalette_Marill),
// SPECIES_SHINY_PAL(AZUMARILL, gMonShinyPalette_Azumarill),
// SPECIES_SHINY_PAL(SUDOWOODO, gMonShinyPalette_Sudowoodo),
// SPECIES_SHINY_PAL(POLITOED, gMonShinyPalette_Politoed),
// SPECIES_SHINY_PAL(HOPPIP, gMonShinyPalette_Hoppip),
// SPECIES_SHINY_PAL(SKIPLOOM, gMonShinyPalette_Skiploom),
// SPECIES_SHINY_PAL(JUMPLUFF, gMonShinyPalette_Jumpluff),
// SPECIES_SHINY_PAL(AIPOM, gMonShinyPalette_Aipom),
// SPECIES_SHINY_PAL(SUNKERN, gMonShinyPalette_Sunkern),
// SPECIES_SHINY_PAL(SUNFLORA, gMonShinyPalette_Sunflora),
// SPECIES_SHINY_PAL(YANMA, gMonShinyPalette_Yanma),
// SPECIES_SHINY_PAL(WOOPER, gMonShinyPalette_Wooper),
// SPECIES_SHINY_PAL(QUAGSIRE, gMonShinyPalette_Quagsire),
// SPECIES_SHINY_PAL(ESPEON, gMonShinyPalette_Espeon),
// SPECIES_SHINY_PAL(UMBREON, gMonShinyPalette_Umbreon),
// SPECIES_SHINY_PAL(MURKROW, gMonShinyPalette_Murkrow),
// SPECIES_SHINY_PAL(SLOWKING, gMonShinyPalette_Slowking),
// SPECIES_SHINY_PAL(MISDREAVUS, gMonShinyPalette_Misdreavus),
// SPECIES_SHINY_PAL(UNOWN, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(WOBBUFFET, gMonShinyPalette_Wobbuffet),
// SPECIES_SHINY_PAL(GIRAFARIG, gMonShinyPalette_Girafarig),
// SPECIES_SHINY_PAL(PINECO, gMonShinyPalette_Pineco),
// SPECIES_SHINY_PAL(FORRETRESS, gMonShinyPalette_Forretress),
// SPECIES_SHINY_PAL(DUNSPARCE, gMonShinyPalette_Dunsparce),
// SPECIES_SHINY_PAL(GLIGAR, gMonShinyPalette_Gligar),
// SPECIES_SHINY_PAL(STEELIX, gMonShinyPalette_Steelix),
// SPECIES_SHINY_PAL(SNUBBULL, gMonShinyPalette_Snubbull),
// SPECIES_SHINY_PAL(GRANBULL, gMonShinyPalette_Granbull),
// SPECIES_SHINY_PAL(QWILFISH, gMonShinyPalette_Qwilfish),
// SPECIES_SHINY_PAL(SCIZOR, gMonShinyPalette_Scizor),
// SPECIES_SHINY_PAL(SHUCKLE, gMonShinyPalette_Shuckle),
// SPECIES_SHINY_PAL(HERACROSS, gMonShinyPalette_Heracross),
// SPECIES_SHINY_PAL(SNEASEL, gMonShinyPalette_Sneasel),
// SPECIES_SHINY_PAL(TEDDIURSA, gMonShinyPalette_Teddiursa),
// SPECIES_SHINY_PAL(URSARING, gMonShinyPalette_Ursaring),
// SPECIES_SHINY_PAL(SLUGMA, gMonShinyPalette_Slugma),
// SPECIES_SHINY_PAL(MAGCARGO, gMonShinyPalette_Magcargo),
// SPECIES_SHINY_PAL(SWINUB, gMonShinyPalette_Swinub),
// SPECIES_SHINY_PAL(PILOSWINE, gMonShinyPalette_Piloswine),
// SPECIES_SHINY_PAL(CORSOLA, gMonShinyPalette_Corsola),
// SPECIES_SHINY_PAL(REMORAID, gMonShinyPalette_Remoraid),
// SPECIES_SHINY_PAL(OCTILLERY, gMonShinyPalette_Octillery),
// SPECIES_SHINY_PAL(DELIBIRD, gMonShinyPalette_Delibird),
// SPECIES_SHINY_PAL(MANTINE, gMonShinyPalette_Mantine),
// SPECIES_SHINY_PAL(SKARMORY, gMonShinyPalette_Skarmory),
// SPECIES_SHINY_PAL(HOUNDOUR, gMonShinyPalette_Houndour),
// SPECIES_SHINY_PAL(HOUNDOOM, gMonShinyPalette_Houndoom),
// SPECIES_SHINY_PAL(KINGDRA, gMonShinyPalette_Kingdra),
// SPECIES_SHINY_PAL(PHANPY, gMonShinyPalette_Phanpy),
// SPECIES_SHINY_PAL(DONPHAN, gMonShinyPalette_Donphan),
// SPECIES_SHINY_PAL(PORYGON2, gMonShinyPalette_Porygon2),
// SPECIES_SHINY_PAL(STANTLER, gMonShinyPalette_Stantler),
// SPECIES_SHINY_PAL(SMEARGLE, gMonShinyPalette_Smeargle),
// SPECIES_SHINY_PAL(TYROGUE, gMonShinyPalette_Tyrogue),
// SPECIES_SHINY_PAL(HITMONTOP, gMonShinyPalette_Hitmontop),
// SPECIES_SHINY_PAL(SMOOCHUM, gMonShinyPalette_Smoochum),
// SPECIES_SHINY_PAL(ELEKID, gMonShinyPalette_Elekid),
// SPECIES_SHINY_PAL(MAGBY, gMonShinyPalette_Magby),
// SPECIES_SHINY_PAL(MILTANK, gMonShinyPalette_Miltank),
// SPECIES_SHINY_PAL(BLISSEY, gMonShinyPalette_Blissey),
// SPECIES_SHINY_PAL(RAIKOU, gMonShinyPalette_Raikou),
// SPECIES_SHINY_PAL(ENTEI, gMonShinyPalette_Entei),
// SPECIES_SHINY_PAL(SUICUNE, gMonShinyPalette_Suicune),
// SPECIES_SHINY_PAL(LARVITAR, gMonShinyPalette_Larvitar),
// SPECIES_SHINY_PAL(PUPITAR, gMonShinyPalette_Pupitar),
// SPECIES_SHINY_PAL(TYRANITAR, gMonShinyPalette_Tyranitar),
// SPECIES_SHINY_PAL(LUGIA, gMonShinyPalette_Lugia),
// SPECIES_SHINY_PAL(HO_OH, gMonShinyPalette_HoOh),
// SPECIES_SHINY_PAL(CELEBI, gMonShinyPalette_Celebi),
// SPECIES_SHINY_PAL(OLD_UNOWN_B, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_C, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_D, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_E, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_F, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_G, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_H, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_I, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_J, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_K, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_L, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_M, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_N, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_O, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_P, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_Q, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_R, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_S, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_T, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_U, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_V, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_W, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_X, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_Y, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(OLD_UNOWN_Z, gMonShinyPalette_DoubleQuestionMark),
// SPECIES_SHINY_PAL(TREECKO, gMonShinyPalette_Treecko),
// SPECIES_SHINY_PAL(GROVYLE, gMonShinyPalette_Grovyle),
// SPECIES_SHINY_PAL(SCEPTILE, gMonShinyPalette_Sceptile),
// SPECIES_SHINY_PAL(TORCHIC, gMonShinyPalette_Torchic),
// SPECIES_SHINY_PAL(COMBUSKEN, gMonShinyPalette_Combusken),
// SPECIES_SHINY_PAL(BLAZIKEN, gMonShinyPalette_Blaziken),
// SPECIES_SHINY_PAL(MUDKIP, gMonShinyPalette_Mudkip),
// SPECIES_SHINY_PAL(MARSHTOMP, gMonShinyPalette_Marshtomp),
// SPECIES_SHINY_PAL(SWAMPERT, gMonShinyPalette_Swampert),
// SPECIES_SHINY_PAL(POOCHYENA, gMonShinyPalette_Poochyena),
// SPECIES_SHINY_PAL(MIGHTYENA, gMonShinyPalette_Mightyena),
// SPECIES_SHINY_PAL(ZIGZAGOON, gMonShinyPalette_Zigzagoon),
// SPECIES_SHINY_PAL(LINOONE, gMonShinyPalette_Linoone),
// SPECIES_SHINY_PAL(WURMPLE, gMonShinyPalette_Wurmple),
// SPECIES_SHINY_PAL(SILCOON, gMonShinyPalette_Silcoon),
// SPECIES_SHINY_PAL(BEAUTIFLY, gMonShinyPalette_Beautifly),
// SPECIES_SHINY_PAL(CASCOON, gMonShinyPalette_Cascoon),
// SPECIES_SHINY_PAL(DUSTOX, gMonShinyPalette_Dustox),
// SPECIES_SHINY_PAL(LOTAD, gMonShinyPalette_Lotad),
// SPECIES_SHINY_PAL(LOMBRE, gMonShinyPalette_Lombre),
// SPECIES_SHINY_PAL(LUDICOLO, gMonShinyPalette_Ludicolo),
// SPECIES_SHINY_PAL(SEEDOT, gMonShinyPalette_Seedot),
// SPECIES_SHINY_PAL(NUZLEAF, gMonShinyPalette_Nuzleaf),
// SPECIES_SHINY_PAL(SHIFTRY, gMonShinyPalette_Shiftry),
// SPECIES_SHINY_PAL(NINCADA, gMonShinyPalette_Nincada),
// SPECIES_SHINY_PAL(NINJASK, gMonShinyPalette_Ninjask),
// SPECIES_SHINY_PAL(SHEDINJA, gMonShinyPalette_Shedinja),
// SPECIES_SHINY_PAL(TAILLOW, gMonShinyPalette_Taillow),
// SPECIES_SHINY_PAL(SWELLOW, gMonShinyPalette_Swellow),
// SPECIES_SHINY_PAL(SHROOMISH, gMonShinyPalette_Shroomish),
// SPECIES_SHINY_PAL(BRELOOM, gMonShinyPalette_Breloom),
// SPECIES_SHINY_PAL(SPINDA, gMonShinyPalette_Spinda),
// SPECIES_SHINY_PAL(WINGULL, gMonShinyPalette_Wingull),
// SPECIES_SHINY_PAL(PELIPPER, gMonShinyPalette_Pelipper),
// SPECIES_SHINY_PAL(SURSKIT, gMonShinyPalette_Surskit),
// SPECIES_SHINY_PAL(MASQUERAIN, gMonShinyPalette_Masquerain),
// SPECIES_SHINY_PAL(WAILMER, gMonShinyPalette_Wailmer),
// SPECIES_SHINY_PAL(WAILORD, gMonShinyPalette_Wailord),
// SPECIES_SHINY_PAL(SKITTY, gMonShinyPalette_Skitty),
// SPECIES_SHINY_PAL(DELCATTY, gMonShinyPalette_Delcatty),
// SPECIES_SHINY_PAL(KECLEON, gMonShinyPalette_Kecleon),
// SPECIES_SHINY_PAL(BALTOY, gMonShinyPalette_Baltoy),
// SPECIES_SHINY_PAL(CLAYDOL, gMonShinyPalette_Claydol),
// SPECIES_SHINY_PAL(NOSEPASS, gMonShinyPalette_Nosepass),
// SPECIES_SHINY_PAL(TORKOAL, gMonShinyPalette_Torkoal),
// SPECIES_SHINY_PAL(SABLEYE, gMonShinyPalette_Sableye),
// SPECIES_SHINY_PAL(BARBOACH, gMonShinyPalette_Barboach),
// SPECIES_SHINY_PAL(WHISCASH, gMonShinyPalette_Whiscash),
// SPECIES_SHINY_PAL(LUVDISC, gMonShinyPalette_Luvdisc),
// SPECIES_SHINY_PAL(CORPHISH, gMonShinyPalette_Corphish),
// SPECIES_SHINY_PAL(CRAWDAUNT, gMonShinyPalette_Crawdaunt),
// SPECIES_SHINY_PAL(FEEBAS, gMonShinyPalette_Feebas),
// SPECIES_SHINY_PAL(MILOTIC, gMonShinyPalette_Milotic),
// SPECIES_SHINY_PAL(CARVANHA, gMonShinyPalette_Carvanha),
// SPECIES_SHINY_PAL(SHARPEDO, gMonShinyPalette_Sharpedo),
// SPECIES_SHINY_PAL(TRAPINCH, gMonShinyPalette_Trapinch),
// SPECIES_SHINY_PAL(VIBRAVA, gMonShinyPalette_Vibrava),
// SPECIES_SHINY_PAL(FLYGON, gMonShinyPalette_Flygon),
// SPECIES_SHINY_PAL(MAKUHITA, gMonShinyPalette_Makuhita),
// SPECIES_SHINY_PAL(HARIYAMA, gMonShinyPalette_Hariyama),
// SPECIES_SHINY_PAL(ELECTRIKE, gMonShinyPalette_Electrike),
// SPECIES_SHINY_PAL(MANECTRIC, gMonShinyPalette_Manectric),
// SPECIES_SHINY_PAL(NUMEL, gMonShinyPalette_Numel),
// SPECIES_SHINY_PAL(CAMERUPT, gMonShinyPalette_Camerupt),
// SPECIES_SHINY_PAL(SPHEAL, gMonShinyPalette_Spheal),
// SPECIES_SHINY_PAL(SEALEO, gMonShinyPalette_Sealeo),
// SPECIES_SHINY_PAL(WALREIN, gMonShinyPalette_Walrein),
// SPECIES_SHINY_PAL(CACNEA, gMonShinyPalette_Cacnea),
// SPECIES_SHINY_PAL(CACTURNE, gMonShinyPalette_Cacturne),
// SPECIES_SHINY_PAL(SNORUNT, gMonShinyPalette_Snorunt),
// SPECIES_SHINY_PAL(GLALIE, gMonShinyPalette_Glalie),
// SPECIES_SHINY_PAL(LUNATONE, gMonShinyPalette_Lunatone),
// SPECIES_SHINY_PAL(SOLROCK, gMonShinyPalette_Solrock),
// SPECIES_SHINY_PAL(AZURILL, gMonShinyPalette_Azurill),
// SPECIES_SHINY_PAL(SPOINK, gMonShinyPalette_Spoink),
// SPECIES_SHINY_PAL(GRUMPIG, gMonShinyPalette_Grumpig),
// SPECIES_SHINY_PAL(PLUSLE, gMonShinyPalette_Plusle),
// SPECIES_SHINY_PAL(MINUN, gMonShinyPalette_Minun),
// SPECIES_SHINY_PAL(MAWILE, gMonShinyPalette_Mawile),
// SPECIES_SHINY_PAL(MEDITITE, gMonShinyPalette_Meditite),
// SPECIES_SHINY_PAL(MEDICHAM, gMonShinyPalette_Medicham),
// SPECIES_SHINY_PAL(SWABLU, gMonShinyPalette_Swablu),
// SPECIES_SHINY_PAL(ALTARIA, gMonShinyPalette_Altaria),
// SPECIES_SHINY_PAL(WYNAUT, gMonShinyPalette_Wynaut),
// SPECIES_SHINY_PAL(DUSKULL, gMonShinyPalette_Duskull),
// SPECIES_SHINY_PAL(DUSCLOPS, gMonShinyPalette_Dusclops),
// SPECIES_SHINY_PAL(ROSELIA, gMonShinyPalette_Roselia),
// SPECIES_SHINY_PAL(SLAKOTH, gMonShinyPalette_Slakoth),
// SPECIES_SHINY_PAL(VIGOROTH, gMonShinyPalette_Vigoroth),
// SPECIES_SHINY_PAL(SLAKING, gMonShinyPalette_Slaking),
// SPECIES_SHINY_PAL(GULPIN, gMonShinyPalette_Gulpin),
// SPECIES_SHINY_PAL(SWALOT, gMonShinyPalette_Swalot),
// SPECIES_SHINY_PAL(TROPIUS, gMonShinyPalette_Tropius),
// SPECIES_SHINY_PAL(WHISMUR, gMonShinyPalette_Whismur),
// SPECIES_SHINY_PAL(LOUDRED, gMonShinyPalette_Loudred),
// SPECIES_SHINY_PAL(EXPLOUD, gMonShinyPalette_Exploud),
// SPECIES_SHINY_PAL(CLAMPERL, gMonShinyPalette_Clamperl),
// SPECIES_SHINY_PAL(HUNTAIL, gMonShinyPalette_Huntail),
// SPECIES_SHINY_PAL(GOREBYSS, gMonShinyPalette_Gorebyss),
// SPECIES_SHINY_PAL(ABSOL, gMonShinyPalette_Absol),
// SPECIES_SHINY_PAL(SHUPPET, gMonShinyPalette_Shuppet),
// SPECIES_SHINY_PAL(BANETTE, gMonShinyPalette_Banette),
// SPECIES_SHINY_PAL(SEVIPER, gMonShinyPalette_Seviper),
// SPECIES_SHINY_PAL(ZANGOOSE, gMonShinyPalette_Zangoose),
// SPECIES_SHINY_PAL(RELICANTH, gMonShinyPalette_Relicanth),
// SPECIES_SHINY_PAL(ARON, gMonShinyPalette_Aron),
// SPECIES_SHINY_PAL(LAIRON, gMonShinyPalette_Lairon),
// SPECIES_SHINY_PAL(AGGRON, gMonShinyPalette_Aggron),
// SPECIES_SHINY_PAL(CASTFORM, gMonShinyPalette_Castform),
// SPECIES_SHINY_PAL(VOLBEAT, gMonShinyPalette_Volbeat),
// SPECIES_SHINY_PAL(ILLUMISE, gMonShinyPalette_Illumise),
// SPECIES_SHINY_PAL(LILEEP, gMonShinyPalette_Lileep),
// SPECIES_SHINY_PAL(CRADILY, gMonShinyPalette_Cradily),
// SPECIES_SHINY_PAL(ANORITH, gMonShinyPalette_Anorith),
// SPECIES_SHINY_PAL(ARMALDO, gMonShinyPalette_Armaldo),
// SPECIES_SHINY_PAL(RALTS, gMonShinyPalette_Ralts),
// SPECIES_SHINY_PAL(KIRLIA, gMonShinyPalette_Kirlia),
// SPECIES_SHINY_PAL(GARDEVOIR, gMonShinyPalette_Gardevoir),
// SPECIES_SHINY_PAL(BAGON, gMonShinyPalette_Bagon),
// SPECIES_SHINY_PAL(SHELGON, gMonShinyPalette_Shelgon),
// SPECIES_SHINY_PAL(SALAMENCE, gMonShinyPalette_Salamence),
// SPECIES_SHINY_PAL(BELDUM, gMonShinyPalette_Beldum),
// SPECIES_SHINY_PAL(METANG, gMonShinyPalette_Metang),
// SPECIES_SHINY_PAL(METAGROSS, gMonShinyPalette_Metagross),
// SPECIES_SHINY_PAL(REGIROCK, gMonShinyPalette_Regirock),
// SPECIES_SHINY_PAL(REGICE, gMonShinyPalette_Regice),
// SPECIES_SHINY_PAL(REGISTEEL, gMonShinyPalette_Registeel),
// SPECIES_SHINY_PAL(KYOGRE, gMonShinyPalette_Kyogre),
// SPECIES_SHINY_PAL(GROUDON, gMonShinyPalette_Groudon),
// SPECIES_SHINY_PAL(RAYQUAZA, gMonShinyPalette_Rayquaza),
// SPECIES_SHINY_PAL(LATIAS, gMonShinyPalette_Latias),
// SPECIES_SHINY_PAL(LATIOS, gMonShinyPalette_Latios),
// SPECIES_SHINY_PAL(JIRACHI, gMonShinyPalette_Jirachi),
// SPECIES_SHINY_PAL(DEOXYS, gMonShinyPalette_Deoxys),
// SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho),
// SPECIES_SHINY_PAL(EGG, gMonPalette_Egg),
// SPECIES_SHINY_PAL(UNOWN_B, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_C, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_D, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_E, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_F, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_G, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_H, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_I, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_J, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_K, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_L, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_M, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_N, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_O, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_P, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_Q, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_R, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_S, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_T, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_U, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_V, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_W, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_X, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_Y, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_Z, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_EMARK, gMonShinyPalette_Unown),
// SPECIES_SHINY_PAL(UNOWN_QMARK, gMonShinyPalette_Unown),
// };

File diff suppressed because it is too large Load Diff

View File

@ -1,414 +0,0 @@
// const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = {
// [SPECIES_NONE] = _("??????????"),
// [SPECIES_BULBASAUR] = _("BULBASAUR"),
// [SPECIES_IVYSAUR] = _("IVYSAUR"),
// [SPECIES_VENUSAUR] = _("VENUSAUR"),
// [SPECIES_CHARMANDER] = _("CHARMANDER"),
// [SPECIES_CHARMELEON] = _("CHARMELEON"),
// [SPECIES_CHARIZARD] = _("CHARIZARD"),
// [SPECIES_SQUIRTLE] = _("SQUIRTLE"),
// [SPECIES_WARTORTLE] = _("WARTORTLE"),
// [SPECIES_BLASTOISE] = _("BLASTOISE"),
// [SPECIES_CATERPIE] = _("CATERPIE"),
// [SPECIES_METAPOD] = _("METAPOD"),
// [SPECIES_BUTTERFREE] = _("BUTTERFREE"),
// [SPECIES_WEEDLE] = _("WEEDLE"),
// [SPECIES_KAKUNA] = _("KAKUNA"),
// [SPECIES_BEEDRILL] = _("BEEDRILL"),
// [SPECIES_PIDGEY] = _("PIDGEY"),
// [SPECIES_PIDGEOTTO] = _("PIDGEOTTO"),
// [SPECIES_PIDGEOT] = _("PIDGEOT"),
// [SPECIES_RATTATA] = _("RATTATA"),
// [SPECIES_RATICATE] = _("RATICATE"),
// [SPECIES_SPEAROW] = _("SPEAROW"),
// [SPECIES_FEAROW] = _("FEAROW"),
// [SPECIES_EKANS] = _("EKANS"),
// [SPECIES_ARBOK] = _("ARBOK"),
// [SPECIES_PIKACHU] = _("PIKACHU"),
// [SPECIES_RAICHU] = _("RAICHU"),
// [SPECIES_SANDSHREW] = _("SANDSHREW"),
// [SPECIES_SANDSLASH] = _("SANDSLASH"),
// [SPECIES_NIDORAN_F] = _("NIDORAN♀"),
// [SPECIES_NIDORINA] = _("NIDORINA"),
// [SPECIES_NIDOQUEEN] = _("NIDOQUEEN"),
// [SPECIES_NIDORAN_M] = _("NIDORAN♂"),
// [SPECIES_NIDORINO] = _("NIDORINO"),
// [SPECIES_NIDOKING] = _("NIDOKING"),
// [SPECIES_CLEFAIRY] = _("CLEFAIRY"),
// [SPECIES_CLEFABLE] = _("CLEFABLE"),
// [SPECIES_VULPIX] = _("VULPIX"),
// [SPECIES_NINETALES] = _("NINETALES"),
// [SPECIES_JIGGLYPUFF] = _("JIGGLYPUFF"),
// [SPECIES_WIGGLYTUFF] = _("WIGGLYTUFF"),
// [SPECIES_ZUBAT] = _("ZUBAT"),
// [SPECIES_GOLBAT] = _("GOLBAT"),
// [SPECIES_ODDISH] = _("ODDISH"),
// [SPECIES_GLOOM] = _("GLOOM"),
// [SPECIES_VILEPLUME] = _("VILEPLUME"),
// [SPECIES_PARAS] = _("PARAS"),
// [SPECIES_PARASECT] = _("PARASECT"),
// [SPECIES_VENONAT] = _("VENONAT"),
// [SPECIES_VENOMOTH] = _("VENOMOTH"),
// [SPECIES_DIGLETT] = _("DIGLETT"),
// [SPECIES_DUGTRIO] = _("DUGTRIO"),
// [SPECIES_MEOWTH] = _("MEOWTH"),
// [SPECIES_PERSIAN] = _("PERSIAN"),
// [SPECIES_PSYDUCK] = _("PSYDUCK"),
// [SPECIES_GOLDUCK] = _("GOLDUCK"),
// [SPECIES_MANKEY] = _("MANKEY"),
// [SPECIES_PRIMEAPE] = _("PRIMEAPE"),
// [SPECIES_GROWLITHE] = _("GROWLITHE"),
// [SPECIES_ARCANINE] = _("ARCANINE"),
// [SPECIES_POLIWAG] = _("POLIWAG"),
// [SPECIES_POLIWHIRL] = _("POLIWHIRL"),
// [SPECIES_POLIWRATH] = _("POLIWRATH"),
// [SPECIES_ABRA] = _("ABRA"),
// [SPECIES_KADABRA] = _("KADABRA"),
// [SPECIES_ALAKAZAM] = _("ALAKAZAM"),
// [SPECIES_MACHOP] = _("MACHOP"),
// [SPECIES_MACHOKE] = _("MACHOKE"),
// [SPECIES_MACHAMP] = _("MACHAMP"),
// [SPECIES_BELLSPROUT] = _("BELLSPROUT"),
// [SPECIES_WEEPINBELL] = _("WEEPINBELL"),
// [SPECIES_VICTREEBEL] = _("VICTREEBEL"),
// [SPECIES_TENTACOOL] = _("TENTACOOL"),
// [SPECIES_TENTACRUEL] = _("TENTACRUEL"),
// [SPECIES_GEODUDE] = _("GEODUDE"),
// [SPECIES_GRAVELER] = _("GRAVELER"),
// [SPECIES_GOLEM] = _("GOLEM"),
// [SPECIES_PONYTA] = _("PONYTA"),
// [SPECIES_RAPIDASH] = _("RAPIDASH"),
// [SPECIES_SLOWPOKE] = _("SLOWPOKE"),
// [SPECIES_SLOWBRO] = _("SLOWBRO"),
// [SPECIES_MAGNEMITE] = _("MAGNEMITE"),
// [SPECIES_MAGNETON] = _("MAGNETON"),
// [SPECIES_FARFETCHD] = _("FARFETCH'D"),
// [SPECIES_DODUO] = _("DODUO"),
// [SPECIES_DODRIO] = _("DODRIO"),
// [SPECIES_SEEL] = _("SEEL"),
// [SPECIES_DEWGONG] = _("DEWGONG"),
// [SPECIES_GRIMER] = _("GRIMER"),
// [SPECIES_MUK] = _("MUK"),
// [SPECIES_SHELLDER] = _("SHELLDER"),
// [SPECIES_CLOYSTER] = _("CLOYSTER"),
// [SPECIES_GASTLY] = _("GASTLY"),
// [SPECIES_HAUNTER] = _("HAUNTER"),
// [SPECIES_GENGAR] = _("GENGAR"),
// [SPECIES_ONIX] = _("ONIX"),
// [SPECIES_DROWZEE] = _("DROWZEE"),
// [SPECIES_HYPNO] = _("HYPNO"),
// [SPECIES_KRABBY] = _("KRABBY"),
// [SPECIES_KINGLER] = _("KINGLER"),
// [SPECIES_VOLTORB] = _("VOLTORB"),
// [SPECIES_ELECTRODE] = _("ELECTRODE"),
// [SPECIES_EXEGGCUTE] = _("EXEGGCUTE"),
// [SPECIES_EXEGGUTOR] = _("EXEGGUTOR"),
// [SPECIES_CUBONE] = _("CUBONE"),
// [SPECIES_MAROWAK] = _("MAROWAK"),
// [SPECIES_HITMONLEE] = _("HITMONLEE"),
// [SPECIES_HITMONCHAN] = _("HITMONCHAN"),
// [SPECIES_LICKITUNG] = _("LICKITUNG"),
// [SPECIES_KOFFING] = _("KOFFING"),
// [SPECIES_WEEZING] = _("WEEZING"),
// [SPECIES_RHYHORN] = _("RHYHORN"),
// [SPECIES_RHYDON] = _("RHYDON"),
// [SPECIES_CHANSEY] = _("CHANSEY"),
// [SPECIES_TANGELA] = _("TANGELA"),
// [SPECIES_KANGASKHAN] = _("KANGASKHAN"),
// [SPECIES_HORSEA] = _("HORSEA"),
// [SPECIES_SEADRA] = _("SEADRA"),
// [SPECIES_GOLDEEN] = _("GOLDEEN"),
// [SPECIES_SEAKING] = _("SEAKING"),
// [SPECIES_STARYU] = _("STARYU"),
// [SPECIES_STARMIE] = _("STARMIE"),
// [SPECIES_MR_MIME] = _("MR. MIME"),
// [SPECIES_SCYTHER] = _("SCYTHER"),
// [SPECIES_JYNX] = _("JYNX"),
// [SPECIES_ELECTABUZZ] = _("ELECTABUZZ"),
// [SPECIES_MAGMAR] = _("MAGMAR"),
// [SPECIES_PINSIR] = _("PINSIR"),
// [SPECIES_TAUROS] = _("TAUROS"),
// [SPECIES_MAGIKARP] = _("MAGIKARP"),
// [SPECIES_GYARADOS] = _("GYARADOS"),
// [SPECIES_LAPRAS] = _("LAPRAS"),
// [SPECIES_DITTO] = _("DITTO"),
// [SPECIES_EEVEE] = _("EEVEE"),
// [SPECIES_VAPOREON] = _("VAPOREON"),
// [SPECIES_JOLTEON] = _("JOLTEON"),
// [SPECIES_FLAREON] = _("FLAREON"),
// [SPECIES_PORYGON] = _("PORYGON"),
// [SPECIES_OMANYTE] = _("OMANYTE"),
// [SPECIES_OMASTAR] = _("OMASTAR"),
// [SPECIES_KABUTO] = _("KABUTO"),
// [SPECIES_KABUTOPS] = _("KABUTOPS"),
// [SPECIES_AERODACTYL] = _("AERODACTYL"),
// [SPECIES_SNORLAX] = _("SNORLAX"),
// [SPECIES_ARTICUNO] = _("ARTICUNO"),
// [SPECIES_ZAPDOS] = _("ZAPDOS"),
// [SPECIES_MOLTRES] = _("MOLTRES"),
// [SPECIES_DRATINI] = _("DRATINI"),
// [SPECIES_DRAGONAIR] = _("DRAGONAIR"),
// [SPECIES_DRAGONITE] = _("DRAGONITE"),
// [SPECIES_MEWTWO] = _("MEWTWO"),
// [SPECIES_MEW] = _("MEW"),
// [SPECIES_CHIKORITA] = _("CHIKORITA"),
// [SPECIES_BAYLEEF] = _("BAYLEEF"),
// [SPECIES_MEGANIUM] = _("MEGANIUM"),
// [SPECIES_CYNDAQUIL] = _("CYNDAQUIL"),
// [SPECIES_QUILAVA] = _("QUILAVA"),
// [SPECIES_TYPHLOSION] = _("TYPHLOSION"),
// [SPECIES_TOTODILE] = _("TOTODILE"),
// [SPECIES_CROCONAW] = _("CROCONAW"),
// [SPECIES_FERALIGATR] = _("FERALIGATR"),
// [SPECIES_SENTRET] = _("SENTRET"),
// [SPECIES_FURRET] = _("FURRET"),
// [SPECIES_HOOTHOOT] = _("HOOTHOOT"),
// [SPECIES_NOCTOWL] = _("NOCTOWL"),
// [SPECIES_LEDYBA] = _("LEDYBA"),
// [SPECIES_LEDIAN] = _("LEDIAN"),
// [SPECIES_SPINARAK] = _("SPINARAK"),
// [SPECIES_ARIADOS] = _("ARIADOS"),
// [SPECIES_CROBAT] = _("CROBAT"),
// [SPECIES_CHINCHOU] = _("CHINCHOU"),
// [SPECIES_LANTURN] = _("LANTURN"),
// [SPECIES_PICHU] = _("PICHU"),
// [SPECIES_CLEFFA] = _("CLEFFA"),
// [SPECIES_IGGLYBUFF] = _("IGGLYBUFF"),
// [SPECIES_TOGEPI] = _("TOGEPI"),
// [SPECIES_TOGETIC] = _("TOGETIC"),
// [SPECIES_NATU] = _("NATU"),
// [SPECIES_XATU] = _("XATU"),
// [SPECIES_MAREEP] = _("MAREEP"),
// [SPECIES_FLAAFFY] = _("FLAAFFY"),
// [SPECIES_AMPHAROS] = _("AMPHAROS"),
// [SPECIES_BELLOSSOM] = _("BELLOSSOM"),
// [SPECIES_MARILL] = _("MARILL"),
// [SPECIES_AZUMARILL] = _("AZUMARILL"),
// [SPECIES_SUDOWOODO] = _("SUDOWOODO"),
// [SPECIES_POLITOED] = _("POLITOED"),
// [SPECIES_HOPPIP] = _("HOPPIP"),
// [SPECIES_SKIPLOOM] = _("SKIPLOOM"),
// [SPECIES_JUMPLUFF] = _("JUMPLUFF"),
// [SPECIES_AIPOM] = _("AIPOM"),
// [SPECIES_SUNKERN] = _("SUNKERN"),
// [SPECIES_SUNFLORA] = _("SUNFLORA"),
// [SPECIES_YANMA] = _("YANMA"),
// [SPECIES_WOOPER] = _("WOOPER"),
// [SPECIES_QUAGSIRE] = _("QUAGSIRE"),
// [SPECIES_ESPEON] = _("ESPEON"),
// [SPECIES_UMBREON] = _("UMBREON"),
// [SPECIES_MURKROW] = _("MURKROW"),
// [SPECIES_SLOWKING] = _("SLOWKING"),
// [SPECIES_MISDREAVUS] = _("MISDREAVUS"),
// [SPECIES_UNOWN] = _("UNOWN"),
// [SPECIES_WOBBUFFET] = _("WOBBUFFET"),
// [SPECIES_GIRAFARIG] = _("GIRAFARIG"),
// [SPECIES_PINECO] = _("PINECO"),
// [SPECIES_FORRETRESS] = _("FORRETRESS"),
// [SPECIES_DUNSPARCE] = _("DUNSPARCE"),
// [SPECIES_GLIGAR] = _("GLIGAR"),
// [SPECIES_STEELIX] = _("STEELIX"),
// [SPECIES_SNUBBULL] = _("SNUBBULL"),
// [SPECIES_GRANBULL] = _("GRANBULL"),
// [SPECIES_QWILFISH] = _("QWILFISH"),
// [SPECIES_SCIZOR] = _("SCIZOR"),
// [SPECIES_SHUCKLE] = _("SHUCKLE"),
// [SPECIES_HERACROSS] = _("HERACROSS"),
// [SPECIES_SNEASEL] = _("SNEASEL"),
// [SPECIES_TEDDIURSA] = _("TEDDIURSA"),
// [SPECIES_URSARING] = _("URSARING"),
// [SPECIES_SLUGMA] = _("SLUGMA"),
// [SPECIES_MAGCARGO] = _("MAGCARGO"),
// [SPECIES_SWINUB] = _("SWINUB"),
// [SPECIES_PILOSWINE] = _("PILOSWINE"),
// [SPECIES_CORSOLA] = _("CORSOLA"),
// [SPECIES_REMORAID] = _("REMORAID"),
// [SPECIES_OCTILLERY] = _("OCTILLERY"),
// [SPECIES_DELIBIRD] = _("DELIBIRD"),
// [SPECIES_MANTINE] = _("MANTINE"),
// [SPECIES_SKARMORY] = _("SKARMORY"),
// [SPECIES_HOUNDOUR] = _("HOUNDOUR"),
// [SPECIES_HOUNDOOM] = _("HOUNDOOM"),
// [SPECIES_KINGDRA] = _("KINGDRA"),
// [SPECIES_PHANPY] = _("PHANPY"),
// [SPECIES_DONPHAN] = _("DONPHAN"),
// [SPECIES_PORYGON2] = _("PORYGON2"),
// [SPECIES_STANTLER] = _("STANTLER"),
// [SPECIES_SMEARGLE] = _("SMEARGLE"),
// [SPECIES_TYROGUE] = _("TYROGUE"),
// [SPECIES_HITMONTOP] = _("HITMONTOP"),
// [SPECIES_SMOOCHUM] = _("SMOOCHUM"),
// [SPECIES_ELEKID] = _("ELEKID"),
// [SPECIES_MAGBY] = _("MAGBY"),
// [SPECIES_MILTANK] = _("MILTANK"),
// [SPECIES_BLISSEY] = _("BLISSEY"),
// [SPECIES_RAIKOU] = _("RAIKOU"),
// [SPECIES_ENTEI] = _("ENTEI"),
// [SPECIES_SUICUNE] = _("SUICUNE"),
// [SPECIES_LARVITAR] = _("LARVITAR"),
// [SPECIES_PUPITAR] = _("PUPITAR"),
// [SPECIES_TYRANITAR] = _("TYRANITAR"),
// [SPECIES_LUGIA] = _("LUGIA"),
// [SPECIES_HO_OH] = _("HO-OH"),
// [SPECIES_CELEBI] = _("CELEBI"),
// [SPECIES_OLD_UNOWN_B] = _("?"),
// [SPECIES_OLD_UNOWN_C] = _("?"),
// [SPECIES_OLD_UNOWN_D] = _("?"),
// [SPECIES_OLD_UNOWN_E] = _("?"),
// [SPECIES_OLD_UNOWN_F] = _("?"),
// [SPECIES_OLD_UNOWN_G] = _("?"),
// [SPECIES_OLD_UNOWN_H] = _("?"),
// [SPECIES_OLD_UNOWN_I] = _("?"),
// [SPECIES_OLD_UNOWN_J] = _("?"),
// [SPECIES_OLD_UNOWN_K] = _("?"),
// [SPECIES_OLD_UNOWN_L] = _("?"),
// [SPECIES_OLD_UNOWN_M] = _("?"),
// [SPECIES_OLD_UNOWN_N] = _("?"),
// [SPECIES_OLD_UNOWN_O] = _("?"),
// [SPECIES_OLD_UNOWN_P] = _("?"),
// [SPECIES_OLD_UNOWN_Q] = _("?"),
// [SPECIES_OLD_UNOWN_R] = _("?"),
// [SPECIES_OLD_UNOWN_S] = _("?"),
// [SPECIES_OLD_UNOWN_T] = _("?"),
// [SPECIES_OLD_UNOWN_U] = _("?"),
// [SPECIES_OLD_UNOWN_V] = _("?"),
// [SPECIES_OLD_UNOWN_W] = _("?"),
// [SPECIES_OLD_UNOWN_X] = _("?"),
// [SPECIES_OLD_UNOWN_Y] = _("?"),
// [SPECIES_OLD_UNOWN_Z] = _("?"),
// [SPECIES_TREECKO] = _("TREECKO"),
// [SPECIES_GROVYLE] = _("GROVYLE"),
// [SPECIES_SCEPTILE] = _("SCEPTILE"),
// [SPECIES_TORCHIC] = _("TORCHIC"),
// [SPECIES_COMBUSKEN] = _("COMBUSKEN"),
// [SPECIES_BLAZIKEN] = _("BLAZIKEN"),
// [SPECIES_MUDKIP] = _("MUDKIP"),
// [SPECIES_MARSHTOMP] = _("MARSHTOMP"),
// [SPECIES_SWAMPERT] = _("SWAMPERT"),
// [SPECIES_POOCHYENA] = _("POOCHYENA"),
// [SPECIES_MIGHTYENA] = _("MIGHTYENA"),
// [SPECIES_ZIGZAGOON] = _("ZIGZAGOON"),
// [SPECIES_LINOONE] = _("LINOONE"),
// [SPECIES_WURMPLE] = _("WURMPLE"),
// [SPECIES_SILCOON] = _("SILCOON"),
// [SPECIES_BEAUTIFLY] = _("BEAUTIFLY"),
// [SPECIES_CASCOON] = _("CASCOON"),
// [SPECIES_DUSTOX] = _("DUSTOX"),
// [SPECIES_LOTAD] = _("LOTAD"),
// [SPECIES_LOMBRE] = _("LOMBRE"),
// [SPECIES_LUDICOLO] = _("LUDICOLO"),
// [SPECIES_SEEDOT] = _("SEEDOT"),
// [SPECIES_NUZLEAF] = _("NUZLEAF"),
// [SPECIES_SHIFTRY] = _("SHIFTRY"),
// [SPECIES_NINCADA] = _("NINCADA"),
// [SPECIES_NINJASK] = _("NINJASK"),
// [SPECIES_SHEDINJA] = _("SHEDINJA"),
// [SPECIES_TAILLOW] = _("TAILLOW"),
// [SPECIES_SWELLOW] = _("SWELLOW"),
// [SPECIES_SHROOMISH] = _("SHROOMISH"),
// [SPECIES_BRELOOM] = _("BRELOOM"),
// [SPECIES_SPINDA] = _("SPINDA"),
// [SPECIES_WINGULL] = _("WINGULL"),
// [SPECIES_PELIPPER] = _("PELIPPER"),
// [SPECIES_SURSKIT] = _("SURSKIT"),
// [SPECIES_MASQUERAIN] = _("MASQUERAIN"),
// [SPECIES_WAILMER] = _("WAILMER"),
// [SPECIES_WAILORD] = _("WAILORD"),
// [SPECIES_SKITTY] = _("SKITTY"),
// [SPECIES_DELCATTY] = _("DELCATTY"),
// [SPECIES_KECLEON] = _("KECLEON"),
// [SPECIES_BALTOY] = _("BALTOY"),
// [SPECIES_CLAYDOL] = _("CLAYDOL"),
// [SPECIES_NOSEPASS] = _("NOSEPASS"),
// [SPECIES_TORKOAL] = _("TORKOAL"),
// [SPECIES_SABLEYE] = _("SABLEYE"),
// [SPECIES_BARBOACH] = _("BARBOACH"),
// [SPECIES_WHISCASH] = _("WHISCASH"),
// [SPECIES_LUVDISC] = _("LUVDISC"),
// [SPECIES_CORPHISH] = _("CORPHISH"),
// [SPECIES_CRAWDAUNT] = _("CRAWDAUNT"),
// [SPECIES_FEEBAS] = _("FEEBAS"),
// [SPECIES_MILOTIC] = _("MILOTIC"),
// [SPECIES_CARVANHA] = _("CARVANHA"),
// [SPECIES_SHARPEDO] = _("SHARPEDO"),
// [SPECIES_TRAPINCH] = _("TRAPINCH"),
// [SPECIES_VIBRAVA] = _("VIBRAVA"),
// [SPECIES_FLYGON] = _("FLYGON"),
// [SPECIES_MAKUHITA] = _("MAKUHITA"),
// [SPECIES_HARIYAMA] = _("HARIYAMA"),
// [SPECIES_ELECTRIKE] = _("ELECTRIKE"),
// [SPECIES_MANECTRIC] = _("MANECTRIC"),
// [SPECIES_NUMEL] = _("NUMEL"),
// [SPECIES_CAMERUPT] = _("CAMERUPT"),
// [SPECIES_SPHEAL] = _("SPHEAL"),
// [SPECIES_SEALEO] = _("SEALEO"),
// [SPECIES_WALREIN] = _("WALREIN"),
// [SPECIES_CACNEA] = _("CACNEA"),
// [SPECIES_CACTURNE] = _("CACTURNE"),
// [SPECIES_SNORUNT] = _("SNORUNT"),
// [SPECIES_GLALIE] = _("GLALIE"),
// [SPECIES_LUNATONE] = _("LUNATONE"),
// [SPECIES_SOLROCK] = _("SOLROCK"),
// [SPECIES_AZURILL] = _("AZURILL"),
// [SPECIES_SPOINK] = _("SPOINK"),
// [SPECIES_GRUMPIG] = _("GRUMPIG"),
// [SPECIES_PLUSLE] = _("PLUSLE"),
// [SPECIES_MINUN] = _("MINUN"),
// [SPECIES_MAWILE] = _("MAWILE"),
// [SPECIES_MEDITITE] = _("MEDITITE"),
// [SPECIES_MEDICHAM] = _("MEDICHAM"),
// [SPECIES_SWABLU] = _("SWABLU"),
// [SPECIES_ALTARIA] = _("ALTARIA"),
// [SPECIES_WYNAUT] = _("WYNAUT"),
// [SPECIES_DUSKULL] = _("DUSKULL"),
// [SPECIES_DUSCLOPS] = _("DUSCLOPS"),
// [SPECIES_ROSELIA] = _("ROSELIA"),
// [SPECIES_SLAKOTH] = _("SLAKOTH"),
// [SPECIES_VIGOROTH] = _("VIGOROTH"),
// [SPECIES_SLAKING] = _("SLAKING"),
// [SPECIES_GULPIN] = _("GULPIN"),
// [SPECIES_SWALOT] = _("SWALOT"),
// [SPECIES_TROPIUS] = _("TROPIUS"),
// [SPECIES_WHISMUR] = _("WHISMUR"),
// [SPECIES_LOUDRED] = _("LOUDRED"),
// [SPECIES_EXPLOUD] = _("EXPLOUD"),
// [SPECIES_CLAMPERL] = _("CLAMPERL"),
// [SPECIES_HUNTAIL] = _("HUNTAIL"),
// [SPECIES_GOREBYSS] = _("GOREBYSS"),
// [SPECIES_ABSOL] = _("ABSOL"),
// [SPECIES_SHUPPET] = _("SHUPPET"),
// [SPECIES_BANETTE] = _("BANETTE"),
// [SPECIES_SEVIPER] = _("SEVIPER"),
// [SPECIES_ZANGOOSE] = _("ZANGOOSE"),
// [SPECIES_RELICANTH] = _("RELICANTH"),
// [SPECIES_ARON] = _("ARON"),
// [SPECIES_LAIRON] = _("LAIRON"),
// [SPECIES_AGGRON] = _("AGGRON"),
// [SPECIES_CASTFORM] = _("CASTFORM"),
// [SPECIES_VOLBEAT] = _("VOLBEAT"),
// [SPECIES_ILLUMISE] = _("ILLUMISE"),
// [SPECIES_LILEEP] = _("LILEEP"),
// [SPECIES_CRADILY] = _("CRADILY"),
// [SPECIES_ANORITH] = _("ANORITH"),
// [SPECIES_ARMALDO] = _("ARMALDO"),
// [SPECIES_RALTS] = _("RALTS"),
// [SPECIES_KIRLIA] = _("KIRLIA"),
// [SPECIES_GARDEVOIR] = _("GARDEVOIR"),
// [SPECIES_BAGON] = _("BAGON"),
// [SPECIES_SHELGON] = _("SHELGON"),
// [SPECIES_SALAMENCE] = _("SALAMENCE"),
// [SPECIES_BELDUM] = _("BELDUM"),
// [SPECIES_METANG] = _("METANG"),
// [SPECIES_METAGROSS] = _("METAGROSS"),
// [SPECIES_REGIROCK] = _("REGIROCK"),
// [SPECIES_REGICE] = _("REGICE"),
// [SPECIES_REGISTEEL] = _("REGISTEEL"),
// [SPECIES_KYOGRE] = _("KYOGRE"),
// [SPECIES_GROUDON] = _("GROUDON"),
// [SPECIES_RAYQUAZA] = _("RAYQUAZA"),
// [SPECIES_LATIAS] = _("LATIAS"),
// [SPECIES_LATIOS] = _("LATIOS"),
// [SPECIES_JIRACHI] = _("JIRACHI"),
// [SPECIES_DEOXYS] = _("DEOXYS"),
// [SPECIES_CHIMECHO] = _("CHIMECHO"),
// };

View File

@ -8263,62 +8263,62 @@
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SQUIRTLE"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SQUIRTLE"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SQUIRTLE"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SQUIRTLE"
"species": "SPECIES_CLEFAIRY"
},
{
"min_level": 2,
"max_level": 2,
"species": "SPECIES_SQUIRTLE"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 2,
"max_level": 2,
"species": "SPECIES_SQUIRTLE"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 3,
"max_level": 3,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 4,
"max_level": 4,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 4,
"max_level": 4,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 5,
"max_level": 5,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
},
{
"min_level": 4,
"max_level": 4,
"species": "SPECIES_SCYTHER"
"species": "SPECIES_MIMIKYU"
}
]
}

View File

@ -987,7 +987,7 @@ static void Task_EvolutionScene(u8 taskId)
{
// Selected move to forget
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
if (IsMoveHM(move))
{
// Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START]);
@ -1388,7 +1388,7 @@ static void Task_TradeEvolutionScene(u8 taskId)
{
// Selected move to forget
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
if (IsMoveHM(move))
{
// Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START]);

View File

@ -693,6 +693,11 @@ u8 ItemId_GetSecondaryId(u16 itemId)
return gItems[SanitizeItemId(itemId)].secondaryId;
}
u32 ItemId_GetFlingPower(u32 itemId)
{
return gItems[SanitizeItemId(itemId)].flingPower;
}
const u8 *ItemId_GetEffect(u32 itemId)
{
if (itemId == ITEM_ENIGMA_BERRY)

View File

@ -816,30 +816,30 @@ static void MoveLearnerInitListMenu(void)
static void PrintMoveInfo(u16 move)
{
u8 buffer[50];
BlitMenuInfoIcon(2, gBattleMoves[move].type + 1, 1, 4);
BlitMenuInfoIcon(2, gMovesInfo[move].type + 1, 1, 4);
if (gBattleMoves[move].power < 2)
if (gMovesInfo[move].power < 2)
{
PrintTextOnWindow(3, gText_ThreeHyphens, 1, 4, 0, 0);
}
else
{
ConvertIntToDecimalStringN(buffer, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(buffer, gMovesInfo[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
PrintTextOnWindow(3, buffer, 1, 4, 0, 0);
}
if (gBattleMoves[move].accuracy == 0)
if (gMovesInfo[move].accuracy == 0)
{
PrintTextOnWindow(3, gText_ThreeHyphens, 1, 18, 0, 1);
}
else
{
ConvertIntToDecimalStringN(buffer, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(buffer, gMovesInfo[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
PrintTextOnWindow(3, buffer, 1, 18, 0, 1);
}
ConvertIntToDecimalStringN(buffer, gBattleMoves[move].pp, STR_CONV_MODE_LEFT_ALIGN, 2);
ConvertIntToDecimalStringN(buffer, gMovesInfo[move].pp, STR_CONV_MODE_LEFT_ALIGN, 2);
PrintTextOnWindow(4, buffer, 2, 2, 0, 0);
PrintTextOnWindow(5, gMoveDescriptionPointers[move - 1], 1, 0, 0, 0);
PrintTextOnWindow(5, gMovesInfo[move].description, 1, 0, 0, 0);
}
static void LoadMoveInfoUI(void)

View File

@ -733,7 +733,7 @@ void ListMenu_LoadMonIconPalette(u8 palOffset, u16 speciesId)
void ListMenu_DrawMonIconGraphics(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
{
BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32);
BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality), x, y, 32, 32);
}
void ListMenuLoadStdPalAt(u8 palOffset, u8 palId)

View File

@ -5111,26 +5111,14 @@ void ItemUseCB_PPUp(u8 taskId, TaskFunc func)
u16 ItemIdToBattleMoveId(u16 item)
{
u16 tmNumber = item - ITEM_TM01;
return gTMHMMoves[tmNumber];
}
bool8 IsMoveHm(u16 move)
{
u8 i;
for (i = 0; i < NUM_HIDDEN_MACHINES - 1; ++i) // no dive
if (gTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move)
return TRUE;
return FALSE;
return (ItemId_GetPocket(item) == POCKET_TM_CASE) ? gItems[item].secondaryId : MOVE_NONE;
}
bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
{
u8 i;
for (i = 0; i < MAX_MON_MOVES; ++i)
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (GetMonData(mon, MON_DATA_MOVE1 + i) == move)
return TRUE;
@ -5138,6 +5126,18 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move)
return FALSE;
}
bool8 BoxMonKnowsMove(struct BoxPokemon *boxMon, u16 move)
{
u8 i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (GetBoxMonData(boxMon, MON_DATA_MOVE1 + i) == move)
return TRUE;
}
return FALSE;
}
static void DisplayLearnMoveMessage(const u8 *str)
{
StringExpandPlaceholders(gStringVar4, str);

View File

@ -138,8 +138,6 @@ static void ItemPrintFunc_OrderedListMenu(u8 windowId, u32 itemId, u8 y);
static void Task_DexScreen_RegisterNonKantoMonBeforeNationalDex(u8 taskId);
static void Task_DexScreen_RegisterMonToPokedex(u8 taskId);
#include "data/pokemon_graphics/footprint_table.h"
const u32 sCategoryMonInfoBgTiles[] = INCBIN_U32("graphics/pokedex/mini_page.4bpp.lz");
const u32 sKantoDexTiles[] = INCBIN_U32("graphics/pokedex/kanto_dex_bgtiles.4bpp.lz");
const u32 sNatDexTiles[] = INCBIN_U32("graphics/pokedex/national_dex_bgtiles.4bpp.lz");
@ -201,7 +199,6 @@ const u16 sBlitTiles_WideEllipse[] = INCBIN_U16("graphics/pokedex/blit_wide_elli
static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
#include "data/pokemon/pokedex_text.h"
#include "data/pokemon/pokedex_entries.h"
static const struct BgTemplate sBgTemplates[] = {
{

View File

@ -30,6 +30,7 @@
#include "constants/items.h"
#include "constants/item_effects.h"
#include "constants/cries.h"
#include "constants/form_change_types.h"
#include "constants/pokemon.h"
#include "constants/abilities.h"
#include "constants/moves.h"
@ -72,7 +73,7 @@ static u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex);
static u8 GetNatureFromPersonality(u32 personality);
static bool8 PartyMonHasStatus(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
static bool8 IsPokemonStorageFull(void);
static u8 SendMonToPC(struct Pokemon* mon);
static u8 CopyMonToPC(struct Pokemon *mon);
static void EncryptBoxMon(struct BoxPokemon *boxMon);
static void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
static void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
@ -83,7 +84,7 @@ static u16 SpeciesToHoennPokedexNum(u16 species);
static bool8 ShouldSkipFriendshipChange(void);
static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv);
#include "data/battle_moves.h"
#include "data/moves_info.h"
#include "data/abilities.h"
// Used in an unreferenced function in RS.
@ -667,7 +668,6 @@ static const s8 sNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] =
#include "data/pokemon/experience_tables.h"
#include "data/pokemon/teachable_learnsets.h"
#include "data/pokemon/level_up_learnsets.h"
#include "data/pokemon/level_up_learnset_pointers.h"
#include "data/pokemon/form_species_tables.h"
#include "data/pokemon/form_change_tables.h"
#include "data/pokemon/species_info.h"
@ -1520,22 +1520,25 @@ 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);
s32 level = GetLevelFromMonExp(mon);
s32 newMaxHP;
u8 nature = GetMonData(mon, MON_DATA_HIDDEN_NATURE, NULL);
SetMonData(mon, MON_DATA_LEVEL, &level);
if (species == SPECIES_SHEDINJA)
@ -1571,13 +1574,14 @@ void CalculateMonStats(struct Pokemon *mon)
{
if (currentHP == 0 && oldMaxHP == 0)
currentHP = newMaxHP;
else if (currentHP != 0) {
// BUG: currentHP is unintentionally able to become <= 0 after the instruction below.
currentHP += newMaxHP - oldMaxHP;
#ifdef BUGFIX
else if (currentHP != 0)
{
if (newMaxHP > oldMaxHP)
currentHP += newMaxHP - oldMaxHP;
if (currentHP <= 0)
currentHP = 1;
#endif
if (currentHP > newMaxHP)
currentHP = newMaxHP;
}
else
return;
@ -1636,7 +1640,7 @@ static u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move)
if (!existingMove)
{
SetBoxMonData(boxMon, MON_DATA_MOVE1 + i, &move);
SetBoxMonData(boxMon, MON_DATA_PP1 + i, &gBattleMoves[move].pp);
SetBoxMonData(boxMon, MON_DATA_PP1 + i, &gMovesInfo[move].pp);
return move;
}
if (existingMove == move)
@ -1654,7 +1658,7 @@ u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move)
if (!mon->moves[i])
{
mon->moves[i] = move;
mon->pp[i] = gBattleMoves[move].pp;
mon->pp[i] = gMovesInfo[move].pp;
return move;
}
}
@ -1665,13 +1669,24 @@ u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move)
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot)
{
SetMonData(mon, MON_DATA_MOVE1 + slot, &move);
SetMonData(mon, MON_DATA_PP1 + slot, &gBattleMoves[move].pp);
SetMonData(mon, MON_DATA_PP1 + slot, &gMovesInfo[move].pp);
}
static void SetMonMoveSlot_KeepPP(struct Pokemon *mon, u16 move, u8 slot)
{
u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
u8 currPP = GetMonData(mon, MON_DATA_PP1 + slot, NULL);
u8 newPP = CalculatePPWithBonus(move, ppBonuses, slot);
u16 finalPP = min(currPP, newPP);
SetMonData(mon, MON_DATA_MOVE1 + slot, &move);
SetMonData(mon, MON_DATA_PP1 + slot, &finalPP);
}
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot)
{
mon->moves[slot] = move;
mon->pp[slot] = gBattleMoves[move].pp;
mon->pp[slot] = gMovesInfo[move].pp;
}
static void GiveMonInitialMoveset(struct Pokemon *mon)
@ -1750,7 +1765,7 @@ void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move)
ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL);
ppBonuses >>= 2;
moves[MAX_MON_MOVES - 1] = move;
pp[MAX_MON_MOVES - 1] = gBattleMoves[move].pp;
pp[MAX_MON_MOVES - 1] = gMovesInfo[move].pp;
for (i = 0; i < MAX_MON_MOVES; i++)
{
@ -1777,7 +1792,7 @@ static void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 mo
ppBonuses = GetBoxMonData(boxMon, MON_DATA_PP_BONUSES, NULL);
ppBonuses >>= 2;
moves[MAX_MON_MOVES - 1] = move;
pp[MAX_MON_MOVES - 1] = gBattleMoves[move].pp;
pp[MAX_MON_MOVES - 1] = gMovesInfo[move].pp;
for (i = 0; i < MAX_MON_MOVES; i++)
{
@ -1799,7 +1814,7 @@ static void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 mo
(!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER)) && FlagGet(flag) && GetBattlerSide(battler) == B_SIDE_PLAYER)
s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef)
s32 CalculateBaseDamageOld(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u32 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef)
{
u32 i;
s32 damage = 0;
@ -1813,12 +1828,12 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
u8 attackerHoldEffectParam;
if (!powerOverride)
gBattleMovePower = gBattleMoves[move].power;
gBattleMovePower = gMovesInfo[move].power;
else
gBattleMovePower = powerOverride;
if (!typeOverride)
type = gBattleMoves[move].type;
type = gMovesInfo[move].type;
else
type = typeOverride & DYNAMIC_TYPE_MASK;
@ -1920,7 +1935,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
gBattleMovePower = (150 * gBattleMovePower) / 100;
// Self-destruct / Explosion cut defense in half
if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION)
if (gMovesInfo[gCurrentMove].effect == EFFECT_EXPLOSION)
defense /= 2;
if (IS_TYPE_PHYSICAL(type))
@ -1960,14 +1975,14 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
// Apply Reflect
if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, gBattlerTarget) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
// Moves hitting both targets do half damage in double battles
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == MOVE_TARGET_BOTH && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gMovesInfo[move].target == MOVE_TARGET_BOTH && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, gBattlerTarget) == 2)
damage /= 2;
// Moves always do at least 1 damage.
@ -2011,14 +2026,14 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
// Apply Lightscreen
if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, gBattlerTarget) == 2)
damage = 2 * (damage / 3);
else
damage /= 2;
}
// Moves hitting both targets do half damage in double battles
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == MOVE_TARGET_BOTH && CountAliveMonsInBattle(BATTLE_ALIVE_DEF_SIDE) == 2)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gMovesInfo[move].target == MOVE_TARGET_BOTH && CountAliveMonsInBattle(BATTLE_ALIVE_SIDE, gBattlerTarget) == 2)
damage /= 2;
// Are effects of weather negated with cloud nine or air lock
@ -2065,36 +2080,28 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
return damage + 2;
}
u8 CountAliveMonsInBattle(u8 caseId)
u8 CountAliveMonsInBattle(u8 caseId, u32 battler)
{
s32 i;
u8 retVal = 0;
switch (caseId)
{
case BATTLE_ALIVE_EXCEPT_ACTIVE:
case BATTLE_ALIVE_EXCEPT_BATTLER:
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
if (i != battler && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_ATK_SIDE:
case BATTLE_ALIVE_SIDE:
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_DEF_SIDE:
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
if (GetBattlerSide(i) == GetBattlerSide(battler) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
}
return retVal;
}
@ -2104,7 +2111,7 @@ u8 GetDefaultMoveTarget(u8 battlerId)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
return GetBattlerAtPosition(opposing);
if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1)
if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_BATTLER, gActiveBattler) > 1)
{
u8 position;
@ -3312,14 +3319,14 @@ u8 GiveMonToPlayer(struct Pokemon *mon)
}
if (i >= PARTY_SIZE)
return SendMonToPC(mon);
return CopyMonToPC(mon);
CopyMon(&gPlayerParty[i], mon, sizeof(*mon));
gPlayerPartyCount = i + 1;
return MON_GIVEN_TO_PARTY;
}
static u8 SendMonToPC(struct Pokemon* mon)
static u8 CopyMonToPC(struct Pokemon *mon)
{
s32 boxNo, boxPos;
@ -3402,7 +3409,7 @@ u8 GetMonsStateToDoubles(void)
return (aliveCount > 1) ? PLAYER_HAS_TWO_USABLE_MONS : PLAYER_HAS_ONE_USABLE_MON;
}
u16 GetAbilityBySpecies(u16 species, bool8 abilityNum)
u16 GetAbilityBySpecies(u16 species, u8 abilityNum)
{
int i;
@ -3462,7 +3469,7 @@ static void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord
for (j = 0; j < MAX_MON_MOVES; j++)
{
SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->party.moves[i * MAX_MON_MOVES + j]);
SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->party.moves[i * MAX_MON_MOVES + j]].pp);
SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gMovesInfo[gBattleResources->secretBase->party.moves[i * MAX_MON_MOVES + j]].pp);
}
}
}
@ -3581,7 +3588,7 @@ const struct FormChange *GetSpeciesFormChanges(u16 species)
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex)
{
u8 basePP = gBattleMoves[move].pp;
u8 basePP = gMovesInfo[move].pp;
return basePP + ((basePP * 20 * ((gPPUpGetMask[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100);
}
@ -3631,7 +3638,7 @@ static void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex)
gBattleMons[battlerId].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED, NULL);
gBattleMons[battlerId].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL);
gBattleMons[battlerId].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL);
gBattleMons[battlerId].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL);
// gBattleMons[battlerId].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL);
gBattleMons[battlerId].abilityNum = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ABILITY_NUM, NULL);
gBattleMons[battlerId].otId = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_ID, NULL);
gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].types[0];
@ -4491,7 +4498,7 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s
{
for (j = 0; j < MAX_MON_MOVES; j++)
{
if (gBattleMoves[GetMonData(mon, MON_DATA_MOVE1 + j, NULL)].type == evolutions[i].param)
if (gMovesInfo[GetMonData(mon, MON_DATA_MOVE1 + j, NULL)].type == evolutions[i].param)
{
targetSpecies = evolutions[i].targetSpecies;
break;
@ -5598,7 +5605,7 @@ const u32 *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32
}
}
bool32 IsHMMove2(u16 move)
bool32 IsMoveHM(u16 move)
{
int i = 0;
while (sHMMoves[i] != HM_MOVES_END)
@ -5607,6 +5614,12 @@ bool32 IsHMMove2(u16 move)
return TRUE;
}
return FALSE;
// u8 i;
// for (i = 0; i < NUM_HIDDEN_MACHINES - 1; ++i) // no dive
// if (gTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move)
// return TRUE;
// return FALSE;
}
bool8 IsMonSpriteNotFlipped(u16 species)
@ -6165,3 +6178,226 @@ static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv)
ivs[j++] = temp[i];
}
}
u16 GetFormSpeciesId(u16 speciesId, u8 formId)
{
if (GetSpeciesFormTable(speciesId) != NULL)
return GetSpeciesFormTable(speciesId)[formId];
else
return speciesId;
}
u8 GetFormIdFromFormSpeciesId(u16 formSpeciesId)
{
u8 targetFormId = 0;
if (GetSpeciesFormTable(formSpeciesId) != NULL)
{
for (targetFormId = 0; GetSpeciesFormTable(formSpeciesId)[targetFormId] != FORM_SPECIES_END; targetFormId++)
{
if (formSpeciesId == GetSpeciesFormTable(formSpeciesId)[targetFormId])
break;
}
}
return targetFormId;
}
u16 GetFormChangeTargetSpecies(struct Pokemon *mon, u16 method, u32 arg)
{
return GetFormChangeTargetSpeciesBoxMon(&mon->box, method, arg);
}
// Returns SPECIES_NONE if no form change is possible
u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32 arg)
{
u32 i;
u16 targetSpecies = SPECIES_NONE;
u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL);
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
u16 heldItem;
u32 ability;
if (formChanges != NULL)
{
heldItem = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM, NULL);
ability = GetAbilityBySpecies(species, GetBoxMonData(boxMon, MON_DATA_ABILITY_NUM, NULL));
for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++)
{
if (method == formChanges[i].method && species != formChanges[i].targetSpecies)
{
switch (method)
{
case FORM_CHANGE_ITEM_HOLD:
if ((heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE)
&& (ability == formChanges[i].param2 || formChanges[i].param2 == ABILITY_NONE))
targetSpecies = formChanges[i].targetSpecies;
break;
case FORM_CHANGE_ITEM_USE:
if (arg == formChanges[i].param1)
{
// TODO: time
switch (formChanges[i].param2)
{
case DAY:
// if (GetTimeOfDay() != TIME_NIGHT)
// targetSpecies = formChanges[i].targetSpecies;
targetSpecies = SPECIES_NONE;
break;
case NIGHT:
// if (GetTimeOfDay() == TIME_NIGHT)
// targetSpecies = formChanges[i].targetSpecies;
targetSpecies = SPECIES_NONE;
break;
default:
targetSpecies = formChanges[i].targetSpecies;
break;
}
}
break;
case FORM_CHANGE_ITEM_USE_MULTICHOICE:
if (arg == formChanges[i].param1)
{
if (formChanges[i].param2 == gSpecialVar_Result)
targetSpecies = formChanges[i].targetSpecies;
}
break;
case FORM_CHANGE_MOVE:
if (BoxMonKnowsMove(boxMon, formChanges[i].param1) != formChanges[i].param2)
targetSpecies = formChanges[i].targetSpecies;
break;
case FORM_CHANGE_BEGIN_BATTLE:
case FORM_CHANGE_END_BATTLE:
if (heldItem == formChanges[i].param1 || formChanges[i].param1 == ITEM_NONE)
targetSpecies = formChanges[i].targetSpecies;
break;
case FORM_CHANGE_END_BATTLE_TERRAIN:
if (gBattleTerrain == formChanges[i].param1)
targetSpecies = formChanges[i].targetSpecies;
break;
case FORM_CHANGE_WITHDRAW:
case FORM_CHANGE_FAINT:
case FORM_CHANGE_STATUS:
targetSpecies = formChanges[i].targetSpecies;
break;
case FORM_CHANGE_TIME_OF_DAY:
// TODO: time
// switch (formChanges[i].param1)
// {
// case DAY:
// if (GetTimeOfDay() != TIME_NIGHT)
// targetSpecies = formChanges[i].targetSpecies;
// break;
// case NIGHT:
// if (GetTimeOfDay() == TIME_NIGHT)
// targetSpecies = formChanges[i].targetSpecies;
// break;
// }
// break;
targetSpecies = SPECIES_NONE;
break;
}
}
}
}
return targetSpecies;
}
bool32 DoesSpeciesHaveFormChangeMethod(u16 species, u16 method)
{
u32 i;
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
if (formChanges != NULL)
{
for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++)
{
if (method == formChanges[i].method && species != formChanges[i].targetSpecies)
return TRUE;
}
}
return FALSE;
}
u32 GetMonAffectionHearts(struct Pokemon *pokemon)
{
u32 friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL);
if (friendship == MAX_FRIENDSHIP)
return AFFECTION_FIVE_HEARTS;
if (friendship >= 220)
return AFFECTION_FOUR_HEARTS;
if (friendship >= 180)
return AFFECTION_THREE_HEARTS;
if (friendship >= 130)
return AFFECTION_TWO_HEARTS;
if (friendship >= 80)
return AFFECTION_ONE_HEART;
return AFFECTION_NO_HEARTS;
}
void TryToSetBattleFormChangeMoves(struct Pokemon *mon, u16 method)
{
int i, j;
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
if (formChanges == NULL
|| (method != FORM_CHANGE_BEGIN_BATTLE && method != FORM_CHANGE_END_BATTLE))
return;
for (i = 0; formChanges[i].method != FORM_CHANGE_TERMINATOR; i++)
{
if (formChanges[i].method == method
&& formChanges[i].param2
&& formChanges[i].param3
&& formChanges[i].targetSpecies != species)
{
u16 originalMove = formChanges[i].param2;
u16 newMove = formChanges[i].param3;
for (j = 0; j < MAX_MON_MOVES; j++)
{
u16 currMove = GetMonData(mon, MON_DATA_MOVE1 + j, NULL);
if (currMove == originalMove)
SetMonMoveSlot_KeepPP(mon, newMove, j);
}
break;
}
}
}
bool8 IsMonPastEvolutionLevel(struct Pokemon *mon)
{
int i;
u16 species = GetMonData(mon, MON_DATA_SPECIES, 0);
u8 level = GetMonData(mon, MON_DATA_LEVEL, 0);
const struct Evolution *evolutions = GetSpeciesEvolutions(species);
if (evolutions == NULL)
return FALSE;
for (i = 0; evolutions[i].method != EVOLUTIONS_END; i++)
{
if (SanitizeSpeciesId(evolutions[i].targetSpecies) == SPECIES_NONE)
continue;
switch (evolutions[i].method)
{
case EVO_LEVEL:
if (evolutions[i].param <= level)
return TRUE;
break;
}
}
return FALSE;
}
bool32 IsPersonalityFemale(u16 species, u32 personality)
{
return GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE;
}

View File

@ -28,892 +28,6 @@ const u16 gMonIconPalettes[][16] = {
INCBIN_U16("graphics/pokemon/icon_palettes/pal5.gbapal")
};
// const u8 *const gMonIconTable[] = {
// [SPECIES_NONE] = gMonIcon_QuestionMark,
// [SPECIES_BULBASAUR] = gMonIcon_Bulbasaur,
// [SPECIES_IVYSAUR] = gMonIcon_Ivysaur,
// [SPECIES_VENUSAUR] = gMonIcon_Venusaur,
// [SPECIES_CHARMANDER] = gMonIcon_Charmander,
// [SPECIES_CHARMELEON] = gMonIcon_Charmeleon,
// [SPECIES_CHARIZARD] = gMonIcon_Charizard,
// [SPECIES_SQUIRTLE] = gMonIcon_Squirtle,
// [SPECIES_WARTORTLE] = gMonIcon_Wartortle,
// [SPECIES_BLASTOISE] = gMonIcon_Blastoise,
// [SPECIES_CATERPIE] = gMonIcon_Caterpie,
// [SPECIES_METAPOD] = gMonIcon_Metapod,
// [SPECIES_BUTTERFREE] = gMonIcon_Butterfree,
// [SPECIES_WEEDLE] = gMonIcon_Weedle,
// [SPECIES_KAKUNA] = gMonIcon_Kakuna,
// [SPECIES_BEEDRILL] = gMonIcon_Beedrill,
// [SPECIES_PIDGEY] = gMonIcon_Pidgey,
// [SPECIES_PIDGEOTTO] = gMonIcon_Pidgeotto,
// [SPECIES_PIDGEOT] = gMonIcon_Pidgeot,
// [SPECIES_RATTATA] = gMonIcon_Rattata,
// [SPECIES_RATICATE] = gMonIcon_Raticate,
// [SPECIES_SPEAROW] = gMonIcon_Spearow,
// [SPECIES_FEAROW] = gMonIcon_Fearow,
// [SPECIES_EKANS] = gMonIcon_Ekans,
// [SPECIES_ARBOK] = gMonIcon_Arbok,
// [SPECIES_PIKACHU] = gMonIcon_Pikachu,
// [SPECIES_RAICHU] = gMonIcon_Raichu,
// [SPECIES_SANDSHREW] = gMonIcon_Sandshrew,
// [SPECIES_SANDSLASH] = gMonIcon_Sandslash,
// [SPECIES_NIDORAN_F] = gMonIcon_NidoranF,
// [SPECIES_NIDORINA] = gMonIcon_Nidorina,
// [SPECIES_NIDOQUEEN] = gMonIcon_Nidoqueen,
// [SPECIES_NIDORAN_M] = gMonIcon_NidoranM,
// [SPECIES_NIDORINO] = gMonIcon_Nidorino,
// [SPECIES_NIDOKING] = gMonIcon_Nidoking,
// [SPECIES_CLEFAIRY] = gMonIcon_Clefairy,
// [SPECIES_CLEFABLE] = gMonIcon_Clefable,
// [SPECIES_VULPIX] = gMonIcon_Vulpix,
// [SPECIES_NINETALES] = gMonIcon_Ninetales,
// [SPECIES_JIGGLYPUFF] = gMonIcon_Jigglypuff,
// [SPECIES_WIGGLYTUFF] = gMonIcon_Wigglytuff,
// [SPECIES_ZUBAT] = gMonIcon_Zubat,
// [SPECIES_GOLBAT] = gMonIcon_Golbat,
// [SPECIES_ODDISH] = gMonIcon_Oddish,
// [SPECIES_GLOOM] = gMonIcon_Gloom,
// [SPECIES_VILEPLUME] = gMonIcon_Vileplume,
// [SPECIES_PARAS] = gMonIcon_Paras,
// [SPECIES_PARASECT] = gMonIcon_Parasect,
// [SPECIES_VENONAT] = gMonIcon_Venonat,
// [SPECIES_VENOMOTH] = gMonIcon_Venomoth,
// [SPECIES_DIGLETT] = gMonIcon_Diglett,
// [SPECIES_DUGTRIO] = gMonIcon_Dugtrio,
// [SPECIES_MEOWTH] = gMonIcon_Meowth,
// [SPECIES_PERSIAN] = gMonIcon_Persian,
// [SPECIES_PSYDUCK] = gMonIcon_Psyduck,
// [SPECIES_GOLDUCK] = gMonIcon_Golduck,
// [SPECIES_MANKEY] = gMonIcon_Mankey,
// [SPECIES_PRIMEAPE] = gMonIcon_Primeape,
// [SPECIES_GROWLITHE] = gMonIcon_Growlithe,
// [SPECIES_ARCANINE] = gMonIcon_Arcanine,
// [SPECIES_POLIWAG] = gMonIcon_Poliwag,
// [SPECIES_POLIWHIRL] = gMonIcon_Poliwhirl,
// [SPECIES_POLIWRATH] = gMonIcon_Poliwrath,
// [SPECIES_ABRA] = gMonIcon_Abra,
// [SPECIES_KADABRA] = gMonIcon_Kadabra,
// [SPECIES_ALAKAZAM] = gMonIcon_Alakazam,
// [SPECIES_MACHOP] = gMonIcon_Machop,
// [SPECIES_MACHOKE] = gMonIcon_Machoke,
// [SPECIES_MACHAMP] = gMonIcon_Machamp,
// [SPECIES_BELLSPROUT] = gMonIcon_Bellsprout,
// [SPECIES_WEEPINBELL] = gMonIcon_Weepinbell,
// [SPECIES_VICTREEBEL] = gMonIcon_Victreebel,
// [SPECIES_TENTACOOL] = gMonIcon_Tentacool,
// [SPECIES_TENTACRUEL] = gMonIcon_Tentacruel,
// [SPECIES_GEODUDE] = gMonIcon_Geodude,
// [SPECIES_GRAVELER] = gMonIcon_Graveler,
// [SPECIES_GOLEM] = gMonIcon_Golem,
// [SPECIES_PONYTA] = gMonIcon_Ponyta,
// [SPECIES_RAPIDASH] = gMonIcon_Rapidash,
// [SPECIES_SLOWPOKE] = gMonIcon_Slowpoke,
// [SPECIES_SLOWBRO] = gMonIcon_Slowbro,
// [SPECIES_MAGNEMITE] = gMonIcon_Magnemite,
// [SPECIES_MAGNETON] = gMonIcon_Magneton,
// [SPECIES_FARFETCHD] = gMonIcon_Farfetchd,
// [SPECIES_DODUO] = gMonIcon_Doduo,
// [SPECIES_DODRIO] = gMonIcon_Dodrio,
// [SPECIES_SEEL] = gMonIcon_Seel,
// [SPECIES_DEWGONG] = gMonIcon_Dewgong,
// [SPECIES_GRIMER] = gMonIcon_Grimer,
// [SPECIES_MUK] = gMonIcon_Muk,
// [SPECIES_SHELLDER] = gMonIcon_Shellder,
// [SPECIES_CLOYSTER] = gMonIcon_Cloyster,
// [SPECIES_GASTLY] = gMonIcon_Gastly,
// [SPECIES_HAUNTER] = gMonIcon_Haunter,
// [SPECIES_GENGAR] = gMonIcon_Gengar,
// [SPECIES_ONIX] = gMonIcon_Onix,
// [SPECIES_DROWZEE] = gMonIcon_Drowzee,
// [SPECIES_HYPNO] = gMonIcon_Hypno,
// [SPECIES_KRABBY] = gMonIcon_Krabby,
// [SPECIES_KINGLER] = gMonIcon_Kingler,
// [SPECIES_VOLTORB] = gMonIcon_Voltorb,
// [SPECIES_ELECTRODE] = gMonIcon_Electrode,
// [SPECIES_EXEGGCUTE] = gMonIcon_Exeggcute,
// [SPECIES_EXEGGUTOR] = gMonIcon_Exeggutor,
// [SPECIES_CUBONE] = gMonIcon_Cubone,
// [SPECIES_MAROWAK] = gMonIcon_Marowak,
// [SPECIES_HITMONLEE] = gMonIcon_Hitmonlee,
// [SPECIES_HITMONCHAN] = gMonIcon_Hitmonchan,
// [SPECIES_LICKITUNG] = gMonIcon_Lickitung,
// [SPECIES_KOFFING] = gMonIcon_Koffing,
// [SPECIES_WEEZING] = gMonIcon_Weezing,
// [SPECIES_RHYHORN] = gMonIcon_Rhyhorn,
// [SPECIES_RHYDON] = gMonIcon_Rhydon,
// [SPECIES_CHANSEY] = gMonIcon_Chansey,
// [SPECIES_TANGELA] = gMonIcon_Tangela,
// [SPECIES_KANGASKHAN] = gMonIcon_Kangaskhan,
// [SPECIES_HORSEA] = gMonIcon_Horsea,
// [SPECIES_SEADRA] = gMonIcon_Seadra,
// [SPECIES_GOLDEEN] = gMonIcon_Goldeen,
// [SPECIES_SEAKING] = gMonIcon_Seaking,
// [SPECIES_STARYU] = gMonIcon_Staryu,
// [SPECIES_STARMIE] = gMonIcon_Starmie,
// [SPECIES_MR_MIME] = gMonIcon_Mrmime,
// [SPECIES_SCYTHER] = gMonIcon_Scyther,
// [SPECIES_JYNX] = gMonIcon_Jynx,
// [SPECIES_ELECTABUZZ] = gMonIcon_Electabuzz,
// [SPECIES_MAGMAR] = gMonIcon_Magmar,
// [SPECIES_PINSIR] = gMonIcon_Pinsir,
// [SPECIES_TAUROS] = gMonIcon_Tauros,
// [SPECIES_MAGIKARP] = gMonIcon_Magikarp,
// [SPECIES_GYARADOS] = gMonIcon_Gyarados,
// [SPECIES_LAPRAS] = gMonIcon_Lapras,
// [SPECIES_DITTO] = gMonIcon_Ditto,
// [SPECIES_EEVEE] = gMonIcon_Eevee,
// [SPECIES_VAPOREON] = gMonIcon_Vaporeon,
// [SPECIES_JOLTEON] = gMonIcon_Jolteon,
// [SPECIES_FLAREON] = gMonIcon_Flareon,
// [SPECIES_PORYGON] = gMonIcon_Porygon,
// [SPECIES_OMANYTE] = gMonIcon_Omanyte,
// [SPECIES_OMASTAR] = gMonIcon_Omastar,
// [SPECIES_KABUTO] = gMonIcon_Kabuto,
// [SPECIES_KABUTOPS] = gMonIcon_Kabutops,
// [SPECIES_AERODACTYL] = gMonIcon_Aerodactyl,
// [SPECIES_SNORLAX] = gMonIcon_Snorlax,
// [SPECIES_ARTICUNO] = gMonIcon_Articuno,
// [SPECIES_ZAPDOS] = gMonIcon_Zapdos,
// [SPECIES_MOLTRES] = gMonIcon_Moltres,
// [SPECIES_DRATINI] = gMonIcon_Dratini,
// [SPECIES_DRAGONAIR] = gMonIcon_Dragonair,
// [SPECIES_DRAGONITE] = gMonIcon_Dragonite,
// [SPECIES_MEWTWO] = gMonIcon_Mewtwo,
// [SPECIES_MEW] = gMonIcon_Mew,
// [SPECIES_CHIKORITA] = gMonIcon_Chikorita,
// [SPECIES_BAYLEEF] = gMonIcon_Bayleef,
// [SPECIES_MEGANIUM] = gMonIcon_Meganium,
// [SPECIES_CYNDAQUIL] = gMonIcon_Cyndaquil,
// [SPECIES_QUILAVA] = gMonIcon_Quilava,
// [SPECIES_TYPHLOSION] = gMonIcon_Typhlosion,
// [SPECIES_TOTODILE] = gMonIcon_Totodile,
// [SPECIES_CROCONAW] = gMonIcon_Croconaw,
// [SPECIES_FERALIGATR] = gMonIcon_Feraligatr,
// [SPECIES_SENTRET] = gMonIcon_Sentret,
// [SPECIES_FURRET] = gMonIcon_Furret,
// [SPECIES_HOOTHOOT] = gMonIcon_Hoothoot,
// [SPECIES_NOCTOWL] = gMonIcon_Noctowl,
// [SPECIES_LEDYBA] = gMonIcon_Ledyba,
// [SPECIES_LEDIAN] = gMonIcon_Ledian,
// [SPECIES_SPINARAK] = gMonIcon_Spinarak,
// [SPECIES_ARIADOS] = gMonIcon_Ariados,
// [SPECIES_CROBAT] = gMonIcon_Crobat,
// [SPECIES_CHINCHOU] = gMonIcon_Chinchou,
// [SPECIES_LANTURN] = gMonIcon_Lanturn,
// [SPECIES_PICHU] = gMonIcon_Pichu,
// [SPECIES_CLEFFA] = gMonIcon_Cleffa,
// [SPECIES_IGGLYBUFF] = gMonIcon_Igglybuff,
// [SPECIES_TOGEPI] = gMonIcon_Togepi,
// [SPECIES_TOGETIC] = gMonIcon_Togetic,
// [SPECIES_NATU] = gMonIcon_Natu,
// [SPECIES_XATU] = gMonIcon_Xatu,
// [SPECIES_MAREEP] = gMonIcon_Mareep,
// [SPECIES_FLAAFFY] = gMonIcon_Flaaffy,
// [SPECIES_AMPHAROS] = gMonIcon_Ampharos,
// [SPECIES_BELLOSSOM] = gMonIcon_Bellossom,
// [SPECIES_MARILL] = gMonIcon_Marill,
// [SPECIES_AZUMARILL] = gMonIcon_Azumarill,
// [SPECIES_SUDOWOODO] = gMonIcon_Sudowoodo,
// [SPECIES_POLITOED] = gMonIcon_Politoed,
// [SPECIES_HOPPIP] = gMonIcon_Hoppip,
// [SPECIES_SKIPLOOM] = gMonIcon_Skiploom,
// [SPECIES_JUMPLUFF] = gMonIcon_Jumpluff,
// [SPECIES_AIPOM] = gMonIcon_Aipom,
// [SPECIES_SUNKERN] = gMonIcon_Sunkern,
// [SPECIES_SUNFLORA] = gMonIcon_Sunflora,
// [SPECIES_YANMA] = gMonIcon_Yanma,
// [SPECIES_WOOPER] = gMonIcon_Wooper,
// [SPECIES_QUAGSIRE] = gMonIcon_Quagsire,
// [SPECIES_ESPEON] = gMonIcon_Espeon,
// [SPECIES_UMBREON] = gMonIcon_Umbreon,
// [SPECIES_MURKROW] = gMonIcon_Murkrow,
// [SPECIES_SLOWKING] = gMonIcon_Slowking,
// [SPECIES_MISDREAVUS] = gMonIcon_Misdreavus,
// [SPECIES_UNOWN] = gMonIcon_UnownA,
// [SPECIES_WOBBUFFET] = gMonIcon_Wobbuffet,
// [SPECIES_GIRAFARIG] = gMonIcon_Girafarig,
// [SPECIES_PINECO] = gMonIcon_Pineco,
// [SPECIES_FORRETRESS] = gMonIcon_Forretress,
// [SPECIES_DUNSPARCE] = gMonIcon_Dunsparce,
// [SPECIES_GLIGAR] = gMonIcon_Gligar,
// [SPECIES_STEELIX] = gMonIcon_Steelix,
// [SPECIES_SNUBBULL] = gMonIcon_Snubbull,
// [SPECIES_GRANBULL] = gMonIcon_Granbull,
// [SPECIES_QWILFISH] = gMonIcon_Qwilfish,
// [SPECIES_SCIZOR] = gMonIcon_Scizor,
// [SPECIES_SHUCKLE] = gMonIcon_Shuckle,
// [SPECIES_HERACROSS] = gMonIcon_Heracross,
// [SPECIES_SNEASEL] = gMonIcon_Sneasel,
// [SPECIES_TEDDIURSA] = gMonIcon_Teddiursa,
// [SPECIES_URSARING] = gMonIcon_Ursaring,
// [SPECIES_SLUGMA] = gMonIcon_Slugma,
// [SPECIES_MAGCARGO] = gMonIcon_Magcargo,
// [SPECIES_SWINUB] = gMonIcon_Swinub,
// [SPECIES_PILOSWINE] = gMonIcon_Piloswine,
// [SPECIES_CORSOLA] = gMonIcon_Corsola,
// [SPECIES_REMORAID] = gMonIcon_Remoraid,
// [SPECIES_OCTILLERY] = gMonIcon_Octillery,
// [SPECIES_DELIBIRD] = gMonIcon_Delibird,
// [SPECIES_MANTINE] = gMonIcon_Mantine,
// [SPECIES_SKARMORY] = gMonIcon_Skarmory,
// [SPECIES_HOUNDOUR] = gMonIcon_Houndour,
// [SPECIES_HOUNDOOM] = gMonIcon_Houndoom,
// [SPECIES_KINGDRA] = gMonIcon_Kingdra,
// [SPECIES_PHANPY] = gMonIcon_Phanpy,
// [SPECIES_DONPHAN] = gMonIcon_Donphan,
// [SPECIES_PORYGON2] = gMonIcon_Porygon2,
// [SPECIES_STANTLER] = gMonIcon_Stantler,
// [SPECIES_SMEARGLE] = gMonIcon_Smeargle,
// [SPECIES_TYROGUE] = gMonIcon_Tyrogue,
// [SPECIES_HITMONTOP] = gMonIcon_Hitmontop,
// [SPECIES_SMOOCHUM] = gMonIcon_Smoochum,
// [SPECIES_ELEKID] = gMonIcon_Elekid,
// [SPECIES_MAGBY] = gMonIcon_Magby,
// [SPECIES_MILTANK] = gMonIcon_Miltank,
// [SPECIES_BLISSEY] = gMonIcon_Blissey,
// [SPECIES_RAIKOU] = gMonIcon_Raikou,
// [SPECIES_ENTEI] = gMonIcon_Entei,
// [SPECIES_SUICUNE] = gMonIcon_Suicune,
// [SPECIES_LARVITAR] = gMonIcon_Larvitar,
// [SPECIES_PUPITAR] = gMonIcon_Pupitar,
// [SPECIES_TYRANITAR] = gMonIcon_Tyranitar,
// [SPECIES_LUGIA] = gMonIcon_Lugia,
// [SPECIES_HO_OH] = gMonIcon_HoOh,
// [SPECIES_CELEBI] = gMonIcon_Celebi,
// [SPECIES_OLD_UNOWN_B] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_C] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_D] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_E] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_F] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_G] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_H] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_I] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_J] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_K] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_L] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_M] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_N] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_O] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_P] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_Q] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_R] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_S] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_T] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_U] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_V] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_W] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_X] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_Y] = gMonIcon_QuestionMark,
// [SPECIES_OLD_UNOWN_Z] = gMonIcon_QuestionMark,
// [SPECIES_TREECKO] = gMonIcon_Treecko,
// [SPECIES_GROVYLE] = gMonIcon_Grovyle,
// [SPECIES_SCEPTILE] = gMonIcon_Sceptile,
// [SPECIES_TORCHIC] = gMonIcon_Torchic,
// [SPECIES_COMBUSKEN] = gMonIcon_Combusken,
// [SPECIES_BLAZIKEN] = gMonIcon_Blaziken,
// [SPECIES_MUDKIP] = gMonIcon_Mudkip,
// [SPECIES_MARSHTOMP] = gMonIcon_Marshtomp,
// [SPECIES_SWAMPERT] = gMonIcon_Swampert,
// [SPECIES_POOCHYENA] = gMonIcon_Poochyena,
// [SPECIES_MIGHTYENA] = gMonIcon_Mightyena,
// [SPECIES_ZIGZAGOON] = gMonIcon_Zigzagoon,
// [SPECIES_LINOONE] = gMonIcon_Linoone,
// [SPECIES_WURMPLE] = gMonIcon_Wurmple,
// [SPECIES_SILCOON] = gMonIcon_Silcoon,
// [SPECIES_BEAUTIFLY] = gMonIcon_Beautifly,
// [SPECIES_CASCOON] = gMonIcon_Cascoon,
// [SPECIES_DUSTOX] = gMonIcon_Dustox,
// [SPECIES_LOTAD] = gMonIcon_Lotad,
// [SPECIES_LOMBRE] = gMonIcon_Lombre,
// [SPECIES_LUDICOLO] = gMonIcon_Ludicolo,
// [SPECIES_SEEDOT] = gMonIcon_Seedot,
// [SPECIES_NUZLEAF] = gMonIcon_Nuzleaf,
// [SPECIES_SHIFTRY] = gMonIcon_Shiftry,
// [SPECIES_NINCADA] = gMonIcon_Nincada,
// [SPECIES_NINJASK] = gMonIcon_Ninjask,
// [SPECIES_SHEDINJA] = gMonIcon_Shedinja,
// [SPECIES_TAILLOW] = gMonIcon_Taillow,
// [SPECIES_SWELLOW] = gMonIcon_Swellow,
// [SPECIES_SHROOMISH] = gMonIcon_Shroomish,
// [SPECIES_BRELOOM] = gMonIcon_Breloom,
// [SPECIES_SPINDA] = gMonIcon_Spinda,
// [SPECIES_WINGULL] = gMonIcon_Wingull,
// [SPECIES_PELIPPER] = gMonIcon_Pelipper,
// [SPECIES_SURSKIT] = gMonIcon_Surskit,
// [SPECIES_MASQUERAIN] = gMonIcon_Masquerain,
// [SPECIES_WAILMER] = gMonIcon_Wailmer,
// [SPECIES_WAILORD] = gMonIcon_Wailord,
// [SPECIES_SKITTY] = gMonIcon_Skitty,
// [SPECIES_DELCATTY] = gMonIcon_Delcatty,
// [SPECIES_KECLEON] = gMonIcon_Kecleon,
// [SPECIES_BALTOY] = gMonIcon_Baltoy,
// [SPECIES_CLAYDOL] = gMonIcon_Claydol,
// [SPECIES_NOSEPASS] = gMonIcon_Nosepass,
// [SPECIES_TORKOAL] = gMonIcon_Torkoal,
// [SPECIES_SABLEYE] = gMonIcon_Sableye,
// [SPECIES_BARBOACH] = gMonIcon_Barboach,
// [SPECIES_WHISCASH] = gMonIcon_Whiscash,
// [SPECIES_LUVDISC] = gMonIcon_Luvdisc,
// [SPECIES_CORPHISH] = gMonIcon_Corphish,
// [SPECIES_CRAWDAUNT] = gMonIcon_Crawdaunt,
// [SPECIES_FEEBAS] = gMonIcon_Feebas,
// [SPECIES_MILOTIC] = gMonIcon_Milotic,
// [SPECIES_CARVANHA] = gMonIcon_Carvanha,
// [SPECIES_SHARPEDO] = gMonIcon_Sharpedo,
// [SPECIES_TRAPINCH] = gMonIcon_Trapinch,
// [SPECIES_VIBRAVA] = gMonIcon_Vibrava,
// [SPECIES_FLYGON] = gMonIcon_Flygon,
// [SPECIES_MAKUHITA] = gMonIcon_Makuhita,
// [SPECIES_HARIYAMA] = gMonIcon_Hariyama,
// [SPECIES_ELECTRIKE] = gMonIcon_Electrike,
// [SPECIES_MANECTRIC] = gMonIcon_Manectric,
// [SPECIES_NUMEL] = gMonIcon_Numel,
// [SPECIES_CAMERUPT] = gMonIcon_Camerupt,
// [SPECIES_SPHEAL] = gMonIcon_Spheal,
// [SPECIES_SEALEO] = gMonIcon_Sealeo,
// [SPECIES_WALREIN] = gMonIcon_Walrein,
// [SPECIES_CACNEA] = gMonIcon_Cacnea,
// [SPECIES_CACTURNE] = gMonIcon_Cacturne,
// [SPECIES_SNORUNT] = gMonIcon_Snorunt,
// [SPECIES_GLALIE] = gMonIcon_Glalie,
// [SPECIES_LUNATONE] = gMonIcon_Lunatone,
// [SPECIES_SOLROCK] = gMonIcon_Solrock,
// [SPECIES_AZURILL] = gMonIcon_Azurill,
// [SPECIES_SPOINK] = gMonIcon_Spoink,
// [SPECIES_GRUMPIG] = gMonIcon_Grumpig,
// [SPECIES_PLUSLE] = gMonIcon_Plusle,
// [SPECIES_MINUN] = gMonIcon_Minun,
// [SPECIES_MAWILE] = gMonIcon_Mawile,
// [SPECIES_MEDITITE] = gMonIcon_Meditite,
// [SPECIES_MEDICHAM] = gMonIcon_Medicham,
// [SPECIES_SWABLU] = gMonIcon_Swablu,
// [SPECIES_ALTARIA] = gMonIcon_Altaria,
// [SPECIES_WYNAUT] = gMonIcon_Wynaut,
// [SPECIES_DUSKULL] = gMonIcon_Duskull,
// [SPECIES_DUSCLOPS] = gMonIcon_Dusclops,
// [SPECIES_ROSELIA] = gMonIcon_Roselia,
// [SPECIES_SLAKOTH] = gMonIcon_Slakoth,
// [SPECIES_VIGOROTH] = gMonIcon_Vigoroth,
// [SPECIES_SLAKING] = gMonIcon_Slaking,
// [SPECIES_GULPIN] = gMonIcon_Gulpin,
// [SPECIES_SWALOT] = gMonIcon_Swalot,
// [SPECIES_TROPIUS] = gMonIcon_Tropius,
// [SPECIES_WHISMUR] = gMonIcon_Whismur,
// [SPECIES_LOUDRED] = gMonIcon_Loudred,
// [SPECIES_EXPLOUD] = gMonIcon_Exploud,
// [SPECIES_CLAMPERL] = gMonIcon_Clamperl,
// [SPECIES_HUNTAIL] = gMonIcon_Huntail,
// [SPECIES_GOREBYSS] = gMonIcon_Gorebyss,
// [SPECIES_ABSOL] = gMonIcon_Absol,
// [SPECIES_SHUPPET] = gMonIcon_Shuppet,
// [SPECIES_BANETTE] = gMonIcon_Banette,
// [SPECIES_SEVIPER] = gMonIcon_Seviper,
// [SPECIES_ZANGOOSE] = gMonIcon_Zangoose,
// [SPECIES_RELICANTH] = gMonIcon_Relicanth,
// [SPECIES_ARON] = gMonIcon_Aron,
// [SPECIES_LAIRON] = gMonIcon_Lairon,
// [SPECIES_AGGRON] = gMonIcon_Aggron,
// [SPECIES_CASTFORM] = gMonIcon_Castform,
// [SPECIES_VOLBEAT] = gMonIcon_Volbeat,
// [SPECIES_ILLUMISE] = gMonIcon_Illumise,
// [SPECIES_LILEEP] = gMonIcon_Lileep,
// [SPECIES_CRADILY] = gMonIcon_Cradily,
// [SPECIES_ANORITH] = gMonIcon_Anorith,
// [SPECIES_ARMALDO] = gMonIcon_Armaldo,
// [SPECIES_RALTS] = gMonIcon_Ralts,
// [SPECIES_KIRLIA] = gMonIcon_Kirlia,
// [SPECIES_GARDEVOIR] = gMonIcon_Gardevoir,
// [SPECIES_BAGON] = gMonIcon_Bagon,
// [SPECIES_SHELGON] = gMonIcon_Shelgon,
// [SPECIES_SALAMENCE] = gMonIcon_Salamence,
// [SPECIES_BELDUM] = gMonIcon_Beldum,
// [SPECIES_METANG] = gMonIcon_Metang,
// [SPECIES_METAGROSS] = gMonIcon_Metagross,
// [SPECIES_REGIROCK] = gMonIcon_Regirock,
// [SPECIES_REGICE] = gMonIcon_Regice,
// [SPECIES_REGISTEEL] = gMonIcon_Registeel,
// [SPECIES_KYOGRE] = gMonIcon_Kyogre,
// [SPECIES_GROUDON] = gMonIcon_Groudon,
// [SPECIES_RAYQUAZA] = gMonIcon_Rayquaza,
// [SPECIES_LATIAS] = gMonIcon_Latias,
// [SPECIES_LATIOS] = gMonIcon_Latios,
// [SPECIES_JIRACHI] = gMonIcon_Jirachi,
// [SPECIES_DEOXYS] = gMonIcon_Deoxys,
// [SPECIES_CHIMECHO] = gMonIcon_Chimecho,
// [SPECIES_EGG] = gMonIcon_Egg,
// [SPECIES_UNOWN_B] = gMonIcon_UnownB,
// [SPECIES_UNOWN_C] = gMonIcon_UnownC,
// [SPECIES_UNOWN_D] = gMonIcon_UnownD,
// [SPECIES_UNOWN_E] = gMonIcon_UnownE,
// [SPECIES_UNOWN_F] = gMonIcon_UnownF,
// [SPECIES_UNOWN_G] = gMonIcon_UnownG,
// [SPECIES_UNOWN_H] = gMonIcon_UnownH,
// [SPECIES_UNOWN_I] = gMonIcon_UnownI,
// [SPECIES_UNOWN_J] = gMonIcon_UnownJ,
// [SPECIES_UNOWN_K] = gMonIcon_UnownK,
// [SPECIES_UNOWN_L] = gMonIcon_UnownL,
// [SPECIES_UNOWN_M] = gMonIcon_UnownM,
// [SPECIES_UNOWN_N] = gMonIcon_UnownN,
// [SPECIES_UNOWN_O] = gMonIcon_UnownO,
// [SPECIES_UNOWN_P] = gMonIcon_UnownP,
// [SPECIES_UNOWN_Q] = gMonIcon_UnownQ,
// [SPECIES_UNOWN_R] = gMonIcon_UnownR,
// [SPECIES_UNOWN_S] = gMonIcon_UnownS,
// [SPECIES_UNOWN_T] = gMonIcon_UnownT,
// [SPECIES_UNOWN_U] = gMonIcon_UnownU,
// [SPECIES_UNOWN_V] = gMonIcon_UnownV,
// [SPECIES_UNOWN_W] = gMonIcon_UnownW,
// [SPECIES_UNOWN_X] = gMonIcon_UnownX,
// [SPECIES_UNOWN_Y] = gMonIcon_UnownY,
// [SPECIES_UNOWN_Z] = gMonIcon_UnownZ,
// [SPECIES_UNOWN_EMARK] = gMonIcon_UnownExclamationMark,
// [SPECIES_UNOWN_QMARK] = gMonIcon_UnownQuestionMark
// };
// const u8 gMonIconPaletteIndices[] = {
// [SPECIES_NONE] = 0,
// [SPECIES_BULBASAUR] = 1,
// [SPECIES_IVYSAUR] = 1,
// [SPECIES_VENUSAUR] = 1,
// [SPECIES_CHARMANDER] = 0,
// [SPECIES_CHARMELEON] = 0,
// [SPECIES_CHARIZARD] = 0,
// [SPECIES_SQUIRTLE] = 0,
// [SPECIES_WARTORTLE] = 2,
// [SPECIES_BLASTOISE] = 2,
// [SPECIES_CATERPIE] = 1,
// [SPECIES_METAPOD] = 1,
// [SPECIES_BUTTERFREE] = 0,
// [SPECIES_WEEDLE] = 1,
// [SPECIES_KAKUNA] = 2,
// [SPECIES_BEEDRILL] = 2,
// [SPECIES_PIDGEY] = 0,
// [SPECIES_PIDGEOTTO] = 0,
// [SPECIES_PIDGEOT] = 0,
// [SPECIES_RATTATA] = 2,
// [SPECIES_RATICATE] = 1,
// [SPECIES_SPEAROW] = 0,
// [SPECIES_FEAROW] = 0,
// [SPECIES_EKANS] = 2,
// [SPECIES_ARBOK] = 2,
// [SPECIES_PIKACHU] = 2,
// [SPECIES_RAICHU] = 0,
// [SPECIES_SANDSHREW] = 2,
// [SPECIES_SANDSLASH] = 2,
// [SPECIES_NIDORAN_F] = 2,
// [SPECIES_NIDORINA] = 2,
// [SPECIES_NIDOQUEEN] = 2,
// [SPECIES_NIDORAN_M] = 2,
// [SPECIES_NIDORINO] = 2,
// [SPECIES_NIDOKING] = 2,
// [SPECIES_CLEFAIRY] = 0,
// [SPECIES_CLEFABLE] = 0,
// [SPECIES_VULPIX] = 2,
// [SPECIES_NINETALES] = 1,
// [SPECIES_JIGGLYPUFF] = 0,
// [SPECIES_WIGGLYTUFF] = 0,
// [SPECIES_ZUBAT] = 2,
// [SPECIES_GOLBAT] = 2,
// [SPECIES_ODDISH] = 1,
// [SPECIES_GLOOM] = 0,
// [SPECIES_VILEPLUME] = 0,
// [SPECIES_PARAS] = 0,
// [SPECIES_PARASECT] = 0,
// [SPECIES_VENONAT] = 0,
// [SPECIES_VENOMOTH] = 2,
// [SPECIES_DIGLETT] = 2,
// [SPECIES_DUGTRIO] = 2,
// [SPECIES_MEOWTH] = 1,
// [SPECIES_PERSIAN] = 1,
// [SPECIES_PSYDUCK] = 1,
// [SPECIES_GOLDUCK] = 2,
// [SPECIES_MANKEY] = 1,
// [SPECIES_PRIMEAPE] = 2,
// [SPECIES_GROWLITHE] = 0,
// [SPECIES_ARCANINE] = 0,
// [SPECIES_POLIWAG] = 0,
// [SPECIES_POLIWHIRL] = 0,
// [SPECIES_POLIWRATH] = 0,
// [SPECIES_ABRA] = 2,
// [SPECIES_KADABRA] = 2,
// [SPECIES_ALAKAZAM] = 2,
// [SPECIES_MACHOP] = 0,
// [SPECIES_MACHOKE] = 2,
// [SPECIES_MACHAMP] = 0,
// [SPECIES_BELLSPROUT] = 1,
// [SPECIES_WEEPINBELL] = 1,
// [SPECIES_VICTREEBEL] = 1,
// [SPECIES_TENTACOOL] = 2,
// [SPECIES_TENTACRUEL] = 2,
// [SPECIES_GEODUDE] = 1,
// [SPECIES_GRAVELER] = 1,
// [SPECIES_GOLEM] = 1,
// [SPECIES_PONYTA] = 0,
// [SPECIES_RAPIDASH] = 0,
// [SPECIES_SLOWPOKE] = 0,
// [SPECIES_SLOWBRO] = 0,
// [SPECIES_MAGNEMITE] = 0,
// [SPECIES_MAGNETON] = 0,
// [SPECIES_FARFETCHD] = 1,
// [SPECIES_DODUO] = 2,
// [SPECIES_DODRIO] = 2,
// [SPECIES_SEEL] = 2,
// [SPECIES_DEWGONG] = 2,
// [SPECIES_GRIMER] = 2,
// [SPECIES_MUK] = 2,
// [SPECIES_SHELLDER] = 2,
// [SPECIES_CLOYSTER] = 2,
// [SPECIES_GASTLY] = 2,
// [SPECIES_HAUNTER] = 2,
// [SPECIES_GENGAR] = 2,
// [SPECIES_ONIX] = 2,
// [SPECIES_DROWZEE] = 2,
// [SPECIES_HYPNO] = 1,
// [SPECIES_KRABBY] = 2,
// [SPECIES_KINGLER] = 2,
// [SPECIES_VOLTORB] = 0,
// [SPECIES_ELECTRODE] = 0,
// [SPECIES_EXEGGCUTE] = 0,
// [SPECIES_EXEGGUTOR] = 1,
// [SPECIES_CUBONE] = 1,
// [SPECIES_MAROWAK] = 1,
// [SPECIES_HITMONLEE] = 2,
// [SPECIES_HITMONCHAN] = 2,
// [SPECIES_LICKITUNG] = 1,
// [SPECIES_KOFFING] = 2,
// [SPECIES_WEEZING] = 2,
// [SPECIES_RHYHORN] = 1,
// [SPECIES_RHYDON] = 1,
// [SPECIES_CHANSEY] = 0,
// [SPECIES_TANGELA] = 0,
// [SPECIES_KANGASKHAN] = 1,
// [SPECIES_HORSEA] = 0,
// [SPECIES_SEADRA] = 0,
// [SPECIES_GOLDEEN] = 0,
// [SPECIES_SEAKING] = 0,
// [SPECIES_STARYU] = 2,
// [SPECIES_STARMIE] = 2,
// [SPECIES_MR_MIME] = 0,
// [SPECIES_SCYTHER] = 1,
// [SPECIES_JYNX] = 2,
// [SPECIES_ELECTABUZZ] = 1,
// [SPECIES_MAGMAR] = 0,
// [SPECIES_PINSIR] = 2,
// [SPECIES_TAUROS] = 2,
// [SPECIES_MAGIKARP] = 0,
// [SPECIES_GYARADOS] = 0,
// [SPECIES_LAPRAS] = 2,
// [SPECIES_DITTO] = 2,
// [SPECIES_EEVEE] = 2,
// [SPECIES_VAPOREON] = 0,
// [SPECIES_JOLTEON] = 0,
// [SPECIES_FLAREON] = 0,
// [SPECIES_PORYGON] = 0,
// [SPECIES_OMANYTE] = 0,
// [SPECIES_OMASTAR] = 0,
// [SPECIES_KABUTO] = 2,
// [SPECIES_KABUTOPS] = 2,
// [SPECIES_AERODACTYL] = 0,
// [SPECIES_SNORLAX] = 1,
// [SPECIES_ARTICUNO] = 0,
// [SPECIES_ZAPDOS] = 0,
// [SPECIES_MOLTRES] = 0,
// [SPECIES_DRATINI] = 0,
// [SPECIES_DRAGONAIR] = 0,
// [SPECIES_DRAGONITE] = 2,
// [SPECIES_MEWTWO] = 2,
// [SPECIES_MEW] = 0,
// [SPECIES_CHIKORITA] = 1,
// [SPECIES_BAYLEEF] = 1,
// [SPECIES_MEGANIUM] = 1,
// [SPECIES_CYNDAQUIL] = 1,
// [SPECIES_QUILAVA] = 1,
// [SPECIES_TYPHLOSION] = 1,
// [SPECIES_TOTODILE] = 2,
// [SPECIES_CROCONAW] = 2,
// [SPECIES_FERALIGATR] = 2,
// [SPECIES_SENTRET] = 2,
// [SPECIES_FURRET] = 2,
// [SPECIES_HOOTHOOT] = 2,
// [SPECIES_NOCTOWL] = 2,
// [SPECIES_LEDYBA] = 0,
// [SPECIES_LEDIAN] = 0,
// [SPECIES_SPINARAK] = 1,
// [SPECIES_ARIADOS] = 0,
// [SPECIES_CROBAT] = 2,
// [SPECIES_CHINCHOU] = 2,
// [SPECIES_LANTURN] = 0,
// [SPECIES_PICHU] = 0,
// [SPECIES_CLEFFA] = 0,
// [SPECIES_IGGLYBUFF] = 1,
// [SPECIES_TOGEPI] = 2,
// [SPECIES_TOGETIC] = 2,
// [SPECIES_NATU] = 0,
// [SPECIES_XATU] = 0,
// [SPECIES_MAREEP] = 2,
// [SPECIES_FLAAFFY] = 0,
// [SPECIES_AMPHAROS] = 0,
// [SPECIES_BELLOSSOM] = 1,
// [SPECIES_MARILL] = 2,
// [SPECIES_AZUMARILL] = 2,
// [SPECIES_SUDOWOODO] = 1,
// [SPECIES_POLITOED] = 1,
// [SPECIES_HOPPIP] = 1,
// [SPECIES_SKIPLOOM] = 1,
// [SPECIES_JUMPLUFF] = 2,
// [SPECIES_AIPOM] = 2,
// [SPECIES_SUNKERN] = 1,
// [SPECIES_SUNFLORA] = 1,
// [SPECIES_YANMA] = 1,
// [SPECIES_WOOPER] = 0,
// [SPECIES_QUAGSIRE] = 0,
// [SPECIES_ESPEON] = 2,
// [SPECIES_UMBREON] = 2,
// [SPECIES_MURKROW] = 2,
// [SPECIES_SLOWKING] = 0,
// [SPECIES_MISDREAVUS] = 0,
// [SPECIES_UNOWN] = 0,
// [SPECIES_WOBBUFFET] = 0,
// [SPECIES_GIRAFARIG] = 1,
// [SPECIES_PINECO] = 0,
// [SPECIES_FORRETRESS] = 2,
// [SPECIES_DUNSPARCE] = 2,
// [SPECIES_GLIGAR] = 2,
// [SPECIES_STEELIX] = 0,
// [SPECIES_SNUBBULL] = 0,
// [SPECIES_GRANBULL] = 2,
// [SPECIES_QWILFISH] = 0,
// [SPECIES_SCIZOR] = 0,
// [SPECIES_SHUCKLE] = 1,
// [SPECIES_HERACROSS] = 2,
// [SPECIES_SNEASEL] = 0,
// [SPECIES_TEDDIURSA] = 0,
// [SPECIES_URSARING] = 2,
// [SPECIES_SLUGMA] = 0,
// [SPECIES_MAGCARGO] = 0,
// [SPECIES_SWINUB] = 2,
// [SPECIES_PILOSWINE] = 2,
// [SPECIES_CORSOLA] = 0,
// [SPECIES_REMORAID] = 0,
// [SPECIES_OCTILLERY] = 0,
// [SPECIES_DELIBIRD] = 0,
// [SPECIES_MANTINE] = 2,
// [SPECIES_SKARMORY] = 0,
// [SPECIES_HOUNDOUR] = 0,
// [SPECIES_HOUNDOOM] = 0,
// [SPECIES_KINGDRA] = 0,
// [SPECIES_PHANPY] = 0,
// [SPECIES_DONPHAN] = 0,
// [SPECIES_PORYGON2] = 0,
// [SPECIES_STANTLER] = 2,
// [SPECIES_SMEARGLE] = 1,
// [SPECIES_TYROGUE] = 2,
// [SPECIES_HITMONTOP] = 2,
// [SPECIES_SMOOCHUM] = 1,
// [SPECIES_ELEKID] = 1,
// [SPECIES_MAGBY] = 1,
// [SPECIES_MILTANK] = 1,
// [SPECIES_BLISSEY] = 1,
// [SPECIES_RAIKOU] = 0,
// [SPECIES_ENTEI] = 2,
// [SPECIES_SUICUNE] = 0,
// [SPECIES_LARVITAR] = 1,
// [SPECIES_PUPITAR] = 0,
// [SPECIES_TYRANITAR] = 1,
// [SPECIES_LUGIA] = 0,
// [SPECIES_HO_OH] = 1,
// [SPECIES_CELEBI] = 1,
// [SPECIES_OLD_UNOWN_B] = 0,
// [SPECIES_OLD_UNOWN_C] = 0,
// [SPECIES_OLD_UNOWN_D] = 0,
// [SPECIES_OLD_UNOWN_E] = 0,
// [SPECIES_OLD_UNOWN_F] = 0,
// [SPECIES_OLD_UNOWN_G] = 0,
// [SPECIES_OLD_UNOWN_H] = 0,
// [SPECIES_OLD_UNOWN_I] = 0,
// [SPECIES_OLD_UNOWN_J] = 0,
// [SPECIES_OLD_UNOWN_K] = 0,
// [SPECIES_OLD_UNOWN_L] = 0,
// [SPECIES_OLD_UNOWN_M] = 0,
// [SPECIES_OLD_UNOWN_N] = 0,
// [SPECIES_OLD_UNOWN_O] = 0,
// [SPECIES_OLD_UNOWN_P] = 0,
// [SPECIES_OLD_UNOWN_Q] = 0,
// [SPECIES_OLD_UNOWN_R] = 0,
// [SPECIES_OLD_UNOWN_S] = 0,
// [SPECIES_OLD_UNOWN_T] = 0,
// [SPECIES_OLD_UNOWN_U] = 0,
// [SPECIES_OLD_UNOWN_V] = 0,
// [SPECIES_OLD_UNOWN_W] = 0,
// [SPECIES_OLD_UNOWN_X] = 0,
// [SPECIES_OLD_UNOWN_Y] = 0,
// [SPECIES_OLD_UNOWN_Z] = 0,
// [SPECIES_TREECKO] = 1,
// [SPECIES_GROVYLE] = 0,
// [SPECIES_SCEPTILE] = 1,
// [SPECIES_TORCHIC] = 0,
// [SPECIES_COMBUSKEN] = 0,
// [SPECIES_BLAZIKEN] = 0,
// [SPECIES_MUDKIP] = 0,
// [SPECIES_MARSHTOMP] = 0,
// [SPECIES_SWAMPERT] = 0,
// [SPECIES_POOCHYENA] = 2,
// [SPECIES_MIGHTYENA] = 2,
// [SPECIES_ZIGZAGOON] = 2,
// [SPECIES_LINOONE] = 2,
// [SPECIES_WURMPLE] = 0,
// [SPECIES_SILCOON] = 2,
// [SPECIES_BEAUTIFLY] = 0,
// [SPECIES_CASCOON] = 2,
// [SPECIES_DUSTOX] = 1,
// [SPECIES_LOTAD] = 1,
// [SPECIES_LOMBRE] = 1,
// [SPECIES_LUDICOLO] = 1,
// [SPECIES_SEEDOT] = 1,
// [SPECIES_NUZLEAF] = 1,
// [SPECIES_SHIFTRY] = 0,
// [SPECIES_NINCADA] = 1,
// [SPECIES_NINJASK] = 1,
// [SPECIES_SHEDINJA] = 1,
// [SPECIES_TAILLOW] = 2,
// [SPECIES_SWELLOW] = 2,
// [SPECIES_SHROOMISH] = 1,
// [SPECIES_BRELOOM] = 1,
// [SPECIES_SPINDA] = 1,
// [SPECIES_WINGULL] = 0,
// [SPECIES_PELIPPER] = 0,
// [SPECIES_SURSKIT] = 2,
// [SPECIES_MASQUERAIN] = 0,
// [SPECIES_WAILMER] = 2,
// [SPECIES_WAILORD] = 0,
// [SPECIES_SKITTY] = 0,
// [SPECIES_DELCATTY] = 2,
// [SPECIES_KECLEON] = 1,
// [SPECIES_BALTOY] = 1,
// [SPECIES_CLAYDOL] = 0,
// [SPECIES_NOSEPASS] = 0,
// [SPECIES_TORKOAL] = 1,
// [SPECIES_SABLEYE] = 2,
// [SPECIES_BARBOACH] = 0,
// [SPECIES_WHISCASH] = 0,
// [SPECIES_LUVDISC] = 0,
// [SPECIES_CORPHISH] = 0,
// [SPECIES_CRAWDAUNT] = 0,
// [SPECIES_FEEBAS] = 2,
// [SPECIES_MILOTIC] = 0,
// [SPECIES_CARVANHA] = 0,
// [SPECIES_SHARPEDO] = 0,
// [SPECIES_TRAPINCH] = 1,
// [SPECIES_VIBRAVA] = 1,
// [SPECIES_FLYGON] = 1,
// [SPECIES_MAKUHITA] = 2,
// [SPECIES_HARIYAMA] = 1,
// [SPECIES_ELECTRIKE] = 1,
// [SPECIES_MANECTRIC] = 0,
// [SPECIES_NUMEL] = 1,
// [SPECIES_CAMERUPT] = 0,
// [SPECIES_SPHEAL] = 2,
// [SPECIES_SEALEO] = 2,
// [SPECIES_WALREIN] = 0,
// [SPECIES_CACNEA] = 1,
// [SPECIES_CACTURNE] = 1,
// [SPECIES_SNORUNT] = 2,
// [SPECIES_GLALIE] = 0,
// [SPECIES_LUNATONE] = 1,
// [SPECIES_SOLROCK] = 0,
// [SPECIES_AZURILL] = 2,
// [SPECIES_SPOINK] = 0,
// [SPECIES_GRUMPIG] = 2,
// [SPECIES_PLUSLE] = 0,
// [SPECIES_MINUN] = 0,
// [SPECIES_MAWILE] = 2,
// [SPECIES_MEDITITE] = 0,
// [SPECIES_MEDICHAM] = 0,
// [SPECIES_SWABLU] = 0,
// [SPECIES_ALTARIA] = 0,
// [SPECIES_WYNAUT] = 0,
// [SPECIES_DUSKULL] = 0,
// [SPECIES_DUSCLOPS] = 0,
// [SPECIES_ROSELIA] = 0,
// [SPECIES_SLAKOTH] = 2,
// [SPECIES_VIGOROTH] = 2,
// [SPECIES_SLAKING] = 1,
// [SPECIES_GULPIN] = 1,
// [SPECIES_SWALOT] = 2,
// [SPECIES_TROPIUS] = 1,
// [SPECIES_WHISMUR] = 0,
// [SPECIES_LOUDRED] = 2,
// [SPECIES_EXPLOUD] = 2,
// [SPECIES_CLAMPERL] = 0,
// [SPECIES_HUNTAIL] = 0,
// [SPECIES_GOREBYSS] = 0,
// [SPECIES_ABSOL] = 0,
// [SPECIES_SHUPPET] = 0,
// [SPECIES_BANETTE] = 0,
// [SPECIES_SEVIPER] = 2,
// [SPECIES_ZANGOOSE] = 0,
// [SPECIES_RELICANTH] = 1,
// [SPECIES_ARON] = 2,
// [SPECIES_LAIRON] = 2,
// [SPECIES_AGGRON] = 2,
// [SPECIES_CASTFORM] = 0,
// [SPECIES_VOLBEAT] = 0,
// [SPECIES_ILLUMISE] = 2,
// [SPECIES_LILEEP] = 2,
// [SPECIES_CRADILY] = 0,
// [SPECIES_ANORITH] = 0,
// [SPECIES_ARMALDO] = 0,
// [SPECIES_RALTS] = 1,
// [SPECIES_KIRLIA] = 1,
// [SPECIES_GARDEVOIR] = 1,
// [SPECIES_BAGON] = 2,
// [SPECIES_SHELGON] = 2,
// [SPECIES_SALAMENCE] = 0,
// [SPECIES_BELDUM] = 0,
// [SPECIES_METANG] = 0,
// [SPECIES_METAGROSS] = 0,
// [SPECIES_REGIROCK] = 2,
// [SPECIES_REGICE] = 2,
// [SPECIES_REGISTEEL] = 2,
// [SPECIES_KYOGRE] = 2,
// [SPECIES_GROUDON] = 0,
// [SPECIES_RAYQUAZA] = 1,
// [SPECIES_LATIAS] = 0,
// [SPECIES_LATIOS] = 2,
// [SPECIES_JIRACHI] = 0,
// [SPECIES_DEOXYS] = 0,
// [SPECIES_CHIMECHO] = 0,
// [SPECIES_EGG] = 1,
// [SPECIES_UNOWN_B] = 0,
// [SPECIES_UNOWN_C] = 0,
// [SPECIES_UNOWN_D] = 0,
// [SPECIES_UNOWN_E] = 0,
// [SPECIES_UNOWN_F] = 0,
// [SPECIES_UNOWN_G] = 0,
// [SPECIES_UNOWN_H] = 0,
// [SPECIES_UNOWN_I] = 0,
// [SPECIES_UNOWN_J] = 0,
// [SPECIES_UNOWN_K] = 0,
// [SPECIES_UNOWN_L] = 0,
// [SPECIES_UNOWN_M] = 0,
// [SPECIES_UNOWN_N] = 0,
// [SPECIES_UNOWN_O] = 0,
// [SPECIES_UNOWN_P] = 0,
// [SPECIES_UNOWN_Q] = 0,
// [SPECIES_UNOWN_R] = 0,
// [SPECIES_UNOWN_S] = 0,
// [SPECIES_UNOWN_T] = 0,
// [SPECIES_UNOWN_U] = 0,
// [SPECIES_UNOWN_V] = 0,
// [SPECIES_UNOWN_W] = 0,
// [SPECIES_UNOWN_X] = 0,
// [SPECIES_UNOWN_Y] = 0,
// [SPECIES_UNOWN_Z] = 0,
// [SPECIES_UNOWN_EMARK] = 0,
// [SPECIES_UNOWN_QMARK] = 0
// };
const struct SpritePalette gMonIconPaletteTable[] = {
{ gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 },
{ gMonIconPalettes[1], POKE_ICON_BASE_PAL_TAG + 1 },
@ -1018,7 +132,7 @@ u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subprior
struct MonIconSpriteTemplate iconTemplate =
{
.oam = &sMonIconOamData,
.image = GetMonIconPtr(species, personality, extra),
.image = GetMonIconPtr(species, personality),
.anims = sMonIconAnims,
.affineAnims = sMonIconAffineAnims,
.callback = callback,
@ -1048,7 +162,7 @@ u8 CreateMonIcon_HandleDeoxys(u16 species, SpriteCallback callback, s16 x, s16 y
.paletteTag = POKE_ICON_BASE_PAL_TAG + gSpeciesInfo[species].iconPalIndex,
};
iconTemplate.image = GetMonIconTiles(species, extra);
iconTemplate.image = GetMonIconTiles(species, 0);
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
UpdateMonIconFrame(&gSprites[spriteId]);
@ -1108,17 +222,26 @@ u16 MailSpeciesToIconSpecies(u16 species)
}
}
const u8 *GetMonIconTiles(u16 species, bool32 extra)
const u8 *GetMonIconTiles(u16 species, u32 personality)
{
const u8 *iconSprite = gSpeciesInfo[species].iconSprite;
if (species == SPECIES_DEOXYS && extra == TRUE)
iconSprite += 0x400;
const u8 *iconSprite;
if (species > NUM_SPECIES)
species = SPECIES_NONE;
if (gSpeciesInfo[species].iconSpriteFemale != NULL && IsPersonalityFemale(species, personality))
iconSprite = gSpeciesInfo[species].iconSpriteFemale;
else if (gSpeciesInfo[species].iconSprite != NULL)
iconSprite = gSpeciesInfo[species].iconSprite;
else
iconSprite = gSpeciesInfo[SPECIES_NONE].iconSprite;
return iconSprite;
}
const u8 *GetMonIconPtr(u16 species, u32 personality, bool32 extra)
const u8 *GetMonIconPtr(u16 species, u32 personality)
{
return GetMonIconTiles(GetIconSpecies(species, personality), extra);
return GetMonIconTiles(GetIconSpecies(species, personality), personality);
}
void DestroyMonIcon(struct Sprite *sprite)

View File

@ -938,7 +938,7 @@ static void SpriteCB_HeldMon(struct Sprite *sprite)
sprite->y = gStorage->cursorSprite->y + gStorage->cursorSprite->y2 + 4;
}
static u16 TryLoadMonIconTiles(u16 species)
static u16 TryLoadMonIconTiles(u16 species, u32 personality)
{
u16 i, offset;
@ -964,7 +964,7 @@ static u16 TryLoadMonIconTiles(u16 species)
gStorage->iconSpeciesList[i] = species;
gStorage->numIconsPerSpecies[i]++;
offset = 16 * i;
CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + offset * 32, 0x200);
CpuCopy32(GetMonIconTiles(species, personality), (void *)(OBJ_VRAM0) + offset * 32, 0x200);
return offset;
}
@ -992,7 +992,7 @@ struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u
species = GetIconSpecies(species, personality);
template.paletteTag = PALTAG_MON_ICON_0 + gSpeciesInfo[species].iconPalIndex;
tileNum = TryLoadMonIconTiles(species);
tileNum = TryLoadMonIconTiles(species, personality);
if (tileNum == 0xFFFF)
return NULL;

View File

@ -405,7 +405,7 @@ static void MultiMove_SetIconToBg(u8 x, u8 y)
if (species != SPECIES_NONE)
{
const u8 *iconGfx = GetMonIconPtr(species, personality, 1);
const u8 *iconGfx = GetMonIconPtr(species, personality);
u8 palNum = GetValidMonIconPalIndex(species) + 8;
BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum);
}

View File

@ -623,7 +623,6 @@ static const u32 sStarObjTiles[] = INCBIN_U32( "graphics/summary_screen/shiny_st
static const u32 sBgTilemap_MovesInfoPage[] = INCBIN_U32( "graphics/summary_screen/moves_info_page.bin.lz");
static const u32 sBgTilemap_MovesPage[] = INCBIN_U32( "graphics/summary_screen/moves_page.bin.lz");
#include "data/text/move_descriptions.h"
#include "data/text/nature_names.h"
static const u8 *const sEggHatchTimeTexts[] = {
@ -2270,15 +2269,15 @@ static void BufferMonMoveI(u8 i)
}
sMonSummaryScreen->numMoves++;
sMonSummaryScreen->moveTypes[i] = gBattleMoves[sMonSummaryScreen->moveIds[i]].type;
sMonSummaryScreen->moveTypes[i] = gMovesInfo[sMonSummaryScreen->moveIds[i]].type;
StringCopy(sMonSummaryScreen->summary.moveNameStrBufs[i], gMoveNames[sMonSummaryScreen->moveIds[i]]);
if (i >= 4 && sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE)
{
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveCurPpStrBufs[i],
gBattleMoves[sMonSummaryScreen->moveIds[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3);
gMovesInfo[sMonSummaryScreen->moveIds[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveMaxPpStrBufs[i],
gBattleMoves[sMonSummaryScreen->moveIds[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3);
gMovesInfo[sMonSummaryScreen->moveIds[i]].pp, STR_CONV_MODE_LEFT_ALIGN, 3);
}
else
{
@ -2292,15 +2291,15 @@ static void BufferMonMoveI(u8 i)
sMonSkillsPrinterXpos->curPp[i] = GetRightAlignXpos_NDigits(2, sMonSummaryScreen->summary.moveCurPpStrBufs[i]);
sMonSkillsPrinterXpos->maxPp[i] = GetRightAlignXpos_NDigits(2, sMonSummaryScreen->summary.moveMaxPpStrBufs[i]);
if (gBattleMoves[sMonSummaryScreen->moveIds[i]].power <= 1)
if (gMovesInfo[sMonSummaryScreen->moveIds[i]].power <= 1)
StringCopy(sMonSummaryScreen->summary.movePowerStrBufs[i], gText_ThreeHyphens);
else
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.movePowerStrBufs[i], gBattleMoves[sMonSummaryScreen->moveIds[i]].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.movePowerStrBufs[i], gMovesInfo[sMonSummaryScreen->moveIds[i]].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
if (gBattleMoves[sMonSummaryScreen->moveIds[i]].accuracy == 0)
if (gMovesInfo[sMonSummaryScreen->moveIds[i]].accuracy == 0)
StringCopy(sMonSummaryScreen->summary.moveAccuracyStrBufs[i], gText_ThreeHyphens);
else
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveAccuracyStrBufs[i], gBattleMoves[sMonSummaryScreen->moveIds[i]].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(sMonSummaryScreen->summary.moveAccuracyStrBufs[i], gMovesInfo[sMonSummaryScreen->moveIds[i]].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
}
static u8 PokeSum_HandleCreateSprites(void)
@ -2874,7 +2873,7 @@ static void PokeSum_PrintSelectedMoveStats(void)
7, 42,
0, 0,
sLevelNickTextColors[0], TEXT_SKIP_DRAW,
gMoveDescriptionPointers[sMonSummaryScreen->moveIds[sMoveSelectionCursorPos] - 1]);
gMovesInfo[sMonSummaryScreen->moveIds[sMoveSelectionCursorPos]].description);
}
}
@ -3770,7 +3769,7 @@ static u8 PokeSum_CanForgetSelectedMove(void)
move = GetMonMoveBySlotId(&sMonSummaryScreen->currentMon, sMoveSelectionCursorPos);
if (IsMoveHm(move) == TRUE && sMonSummaryScreen->mode != PSS_MODE_FORGET_MOVE)
if (IsMoveHM(move) == TRUE && sMonSummaryScreen->mode != PSS_MODE_FORGET_MOVE)
return FALSE;
return TRUE;

View File

@ -1,14 +1,124 @@
#include "global.h"
#include "random.h"
#if MODERN
#include <alloca.h>
#endif
// The number 1103515245 comes from the example implementation
// of rand and srand in the ISO C standard.
// IWRAM common
rng_value_t gRngValue;
rng_value_t gRng2Value;
u32 gRngValue;
#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, u32 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.
* In addition, it's extremely non-portable. */
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\
@ result = a + b + (d+=STREAM1)\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) + result\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(u32 seed)
{
struct Sfc32State state;
SFC32_Seed(&state, seed, STREAM1);
sRngLoopUnlocked = FALSE;
gRngValue = state;
sRngLoopUnlocked = TRUE;
}
void SeedRng2(u32 seed)
{
SFC32_Seed(&gRng2Value, seed, STREAM2);
}
rng_value_t LocalRandomSeed(u32 seed)
{
rng_value_t result;
SFC32_Seed(&result, seed, STREAM1);
return result;
}
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)
{
gRngValue = ISO_RANDOMIZE1(gRngValue);
sRandCount++;
return gRngValue >> 16;
}
@ -16,3 +126,139 @@ void SeedRng(u16 seed)
{
gRngValue = seed;
}
void SeedRng2(u16 seed)
{
gRng2Value = seed;
}
u16 Random2(void)
{
gRng2Value = ISO_RANDOMIZE1(gRng2Value);
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 = (LOOP_RANDOM * (n+1)) >> 16; \
SWAP(data[n], data[j], tmp); \
--n; \
} \
LOOP_RANDOM_END
void Shuffle8(void *data_, size_t n)
{
u8 *data = data_;
SHUFFLE_IMPL;
}
void Shuffle16(void *data_, size_t n)
{
u16 *data = data_;
SHUFFLE_IMPL;
}
void Shuffle32(void *data_, size_t n)
{
u32 *data = data_;
SHUFFLE_IMPL;
}
void ShuffleN(void *data, size_t n, size_t size)
{
void *tmp = alloca(size);
LOOP_RANDOM_START;
--n;
while (n > 1)
{
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")))
u32 RandomUniform(enum RandomTag tag, u32 lo, u32 hi);
__attribute__((weak, alias("RandomUniformExceptDefault")))
u32 RandomUniformExcept(enum RandomTag, u32 lo, u32 hi, bool32 (*reject)(u32));
__attribute__((weak, alias("RandomWeightedArrayDefault")))
u32 RandomWeightedArray(enum RandomTag tag, u32 sum, u32 n, const u8 *weights);
__attribute__((weak, alias("RandomElementArrayDefault")))
const void *RandomElementArray(enum RandomTag tag, const void *array, size_t size, size_t count);
u32 RandomUniformDefault(enum RandomTag tag, u32 lo, u32 hi)
{
return lo + (((hi - lo + 1) * Random()) >> 16);
}
u32 RandomUniformExceptDefault(enum RandomTag tag, u32 lo, u32 hi, bool32 (*reject)(u32))
{
LOOP_RANDOM_START;
while (TRUE)
{
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)
{
s32 i, targetSum;
targetSum = (sum * Random()) >> 16;
for (i = 0; i < n - 1; i++)
{
targetSum -= weights[i];
if (targetSum < 0)
return i;
}
return n - 1;
}
const void *RandomElementArrayDefault(enum RandomTag tag, const void *array, size_t size, size_t count)
{
return (const u8 *)array + size * RandomUniformDefault(tag, 0, count - 1);
}
// OLD
// The number 1103515245 comes from the example implementation
// of rand and srand in the ISO C standard.
// u32 gRngValue;
// u16 Random(void)
// {
// gRngValue = ISO_RANDOMIZE1(gRngValue);
// return gRngValue >> 16;
// }
// void SeedRng(u16 seed)
// {
// gRngValue = seed;
// }

View File

@ -150,7 +150,7 @@ static const struct GFRomHeader sGFRomHeader = {
// .abilityNames = gAbilityNames,
// .abilityDescriptions = gAbilityDescriptionPointers,
.items = gItems,
.moves = gBattleMoves,
// .moves = gBattleMoves,
.ballGfx = gBallSpriteSheets,
.ballPalettes = gBallSpritePalettes,
.gcnLinkFlagsOffset = offsetof(struct SaveBlock2, gcnLinkFlags),

View File

@ -1555,30 +1555,30 @@ static void PrintMoveInfo(u16 itemId)
{
// Draw type icon
move = ItemIdToBattleMoveId(itemId);
BlitMenuInfoIcon(WIN_MOVE_INFO, gBattleMoves[move].type + 1, 0, 0);
BlitMenuInfoIcon(WIN_MOVE_INFO, gMovesInfo[move].type + 1, 0, 0);
// Print power
if (gBattleMoves[move].power < 2)
if (gMovesInfo[move].power < 2)
str = gText_ThreeHyphens;
else
{
ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(gStringVar1, gMovesInfo[move].power, STR_CONV_MODE_RIGHT_ALIGN, 3);
str = gStringVar1;
}
TMCase_Print(WIN_MOVE_INFO, FONT_NORMAL_COPY_2, str, 7, 12, 0, 0, TEXT_SKIP_DRAW, COLOR_MOVE_INFO);
// Print accuracy
if (gBattleMoves[move].accuracy == 0)
if (gMovesInfo[move].accuracy == 0)
str = gText_ThreeHyphens;
else
{
ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(gStringVar1, gMovesInfo[move].accuracy, STR_CONV_MODE_RIGHT_ALIGN, 3);
str = gStringVar1;
}
TMCase_Print(WIN_MOVE_INFO, FONT_NORMAL_COPY_2, str, 7, 24, 0, 0, TEXT_SKIP_DRAW, COLOR_MOVE_INFO);
// Print PP
ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3);
ConvertIntToDecimalStringN(gStringVar1, gMovesInfo[move].pp, STR_CONV_MODE_RIGHT_ALIGN, 3);
TMCase_Print(WIN_MOVE_INFO, FONT_NORMAL_COPY_2, gStringVar1, 7, 36, 0, 0, TEXT_SKIP_DRAW, COLOR_MOVE_INFO);
CopyWindowToVram(WIN_MOVE_INFO, COPYWIN_GFX);
@ -1633,7 +1633,7 @@ static u8 CreateDiscSprite(u16 itemId)
{
tmIdx = itemId - ITEM_TM01;
SetDiscSpriteAnim(&gSprites[spriteId], tmIdx);
TintDiscpriteByType(gBattleMoves[ItemIdToBattleMoveId(itemId)].type);
TintDiscpriteByType(gMovesInfo[ItemIdToBattleMoveId(itemId)].type);
SetDiscSpritePosition(&gSprites[spriteId], tmIdx);
return spriteId;
}
@ -1700,7 +1700,7 @@ static void SpriteCB_SwapDisc(struct Sprite *sprite)
if (sprite->sItemId != ITEM_NONE)
{
sprite->sState++;
TintDiscpriteByType(gBattleMoves[ItemIdToBattleMoveId(sprite->sItemId)].type);
TintDiscpriteByType(gMovesInfo[ItemIdToBattleMoveId(sprite->sItemId)].type);
sprite->sItemId -= ITEM_TM01;
SetDiscSpriteAnim(sprite, sprite->sItemId);
SetDiscSpritePosition(sprite, sprite->sItemId);