Synced src/battle_script_commands.c
This commit is contained in:
+33
-28
@@ -4,6 +4,7 @@
|
||||
#include <limits.h>
|
||||
#include "global.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/battle_script_commands.h"
|
||||
#include "battle_util.h"
|
||||
#include "battle_script_commands.h"
|
||||
#include "battle_main.h"
|
||||
@@ -23,18 +24,25 @@
|
||||
#define GET_BATTLER_SIDE(battler)((GetBattlerPosition(battler) & BIT_SIDE))
|
||||
#define GET_BATTLER_SIDE2(battler)((GET_BATTLER_POSITION(battler) & BIT_SIDE))
|
||||
|
||||
// Used to exclude moves learned temporarily by Transform or Mimic
|
||||
#define MOVE_IS_PERMANENT(battler, moveSlot) \
|
||||
(!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \
|
||||
&& !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot]))
|
||||
|
||||
#define TRAINER_OPPONENT_3FE 0x3FE
|
||||
#define TRAINER_OPPONENT_C00 0xC00
|
||||
#define TRAINER_LINK_OPPONENT 0x800
|
||||
#define SECRET_BASE_OPPONENT 0x400
|
||||
|
||||
// Battle Actions
|
||||
// These determine what each battler will do in a turn
|
||||
#define B_ACTION_USE_MOVE 0
|
||||
#define B_ACTION_USE_ITEM 1
|
||||
#define B_ACTION_SWITCH 2
|
||||
#define B_ACTION_RUN 3
|
||||
#define B_ACTION_SAFARI_WATCH_CAREFULLY 4
|
||||
#define B_ACTION_SAFARI_BALL 5
|
||||
#define B_ACTION_SAFARI_BAIT 6
|
||||
#define B_ACTION_SAFARI_BAIT 6
|
||||
#define B_ACTION_SAFARI_GO_NEAR 7
|
||||
#define B_ACTION_SAFARI_RUN 8
|
||||
#define B_ACTION_OLDMAN_THROW 9
|
||||
@@ -47,26 +55,17 @@
|
||||
|
||||
#define MAX_TRAINER_ITEMS 4
|
||||
|
||||
// array entries for battle communication
|
||||
#define MULTIUSE_STATE 0x0
|
||||
#define CURSOR_POSITION 0x1
|
||||
#define TASK_ID 0x1 // task Id and cursor position share the same field
|
||||
#define SPRITES_INIT_STATE1 0x1 // shares the Id as well
|
||||
#define SPRITES_INIT_STATE2 0x2
|
||||
#define MOVE_EFFECT_BYTE 0x3
|
||||
#define ACTIONS_CONFIRMED_COUNT 0x4
|
||||
#define MULTISTRING_CHOOSER 0x5
|
||||
#define MSG_DISPLAY 0x7
|
||||
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
|
||||
#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_SELECTED 0x0
|
||||
#define MOVE_TARGET_DEPENDS 0x1
|
||||
#define MOVE_TARGET_USER_OR_SELECTED 0x2
|
||||
#define MOVE_TARGET_RANDOM 0x4
|
||||
#define MOVE_TARGET_BOTH 0x8
|
||||
#define MOVE_TARGET_USER 0x10
|
||||
#define MOVE_TARGET_FOES_AND_ALLY 0x20
|
||||
#define MOVE_TARGET_OPPONENTS_FIELD 0x40
|
||||
// For the second argument of GetMoveTarget, when no target override is needed
|
||||
#define NO_TARGET_OVERRIDE 0
|
||||
|
||||
struct TrainerMonNoItemDefaultMoves
|
||||
{
|
||||
@@ -159,7 +158,7 @@ struct DisableStruct
|
||||
/*0x16*/ u8 isFirstTurn;
|
||||
/*0x17*/ u8 unk17;
|
||||
/*0x18*/ u8 truantCounter : 1;
|
||||
/*0x18*/ u8 truantSwitchInHack : 1; // unused?
|
||||
/*0x18*/ u8 truantSwitchInHack : 1; // Unused here, but used in pokeemerald
|
||||
/*0x18*/ u8 unk18_a_2 : 2;
|
||||
/*0x18*/ u8 mimickedMoves : 4;
|
||||
/*0x19*/ u8 rechargeTimer;
|
||||
@@ -455,17 +454,23 @@ struct BattleStruct
|
||||
|
||||
extern struct BattleStruct *gBattleStruct;
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
{ \
|
||||
if (gBattleStruct->dynamicMoveType) \
|
||||
typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
|
||||
else \
|
||||
typeArg = gBattleMoves[move].type; \
|
||||
#define F_DYNAMIC_TYPE_1 (1 << 6)
|
||||
#define F_DYNAMIC_TYPE_2 (1 << 7)
|
||||
#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
{ \
|
||||
if (gBattleStruct->dynamicMoveType) \
|
||||
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
|
||||
else \
|
||||
typeArg = gBattleMoves[move].type; \
|
||||
}
|
||||
|
||||
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
|
||||
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
|
||||
|
||||
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
|
||||
|
||||
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
|
||||
#define SET_BATTLER_TYPE(battlerId, type) \
|
||||
{ \
|
||||
@@ -504,7 +509,7 @@ struct BattleScripting
|
||||
u8 battleStyle;
|
||||
u8 drawlvlupboxState;
|
||||
u8 learnMoveState;
|
||||
u8 field_20;
|
||||
u8 pursuitDoublesAttacker;
|
||||
u8 reshowMainState;
|
||||
u8 reshowHelperState;
|
||||
u8 field_23;
|
||||
|
||||
@@ -165,8 +165,8 @@ extern const union AnimCmd *const gMusicNotesAnimTable[];
|
||||
extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate;
|
||||
void AnimMovePowderParticle(struct Sprite *);
|
||||
void AnimPowerAbsorptionOrb(struct Sprite *);
|
||||
void AnimSolarbeamBigOrb(struct Sprite *);
|
||||
void AnimSolarbeamSmallOrb(struct Sprite *);
|
||||
void AnimSolarBeamBigOrb(struct Sprite *);
|
||||
void AnimSolarBeamSmallOrb(struct Sprite *);
|
||||
void AnimAbsorptionOrb(struct Sprite *);
|
||||
void AnimHyperBeamOrb(struct Sprite *);
|
||||
void AnimSporeParticle(struct Sprite *);
|
||||
|
||||
@@ -3,23 +3,21 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#define STAT_CHANGE_WORKED 0
|
||||
#define STAT_CHANGE_DIDNT_WORK 1
|
||||
// Arguments for 'flags' in HandleBattleWindow
|
||||
#define WINDOW_CLEAR (1 << 0)
|
||||
#define WINDOW_BG1 (1 << 7)
|
||||
|
||||
#define WINDOW_CLEAR 0x1
|
||||
#define WINDOW_x80 0x80
|
||||
|
||||
void SetMoveEffect(bool8 primary, u8 certain);
|
||||
bool8 UproarWakeUpCheck(u8 battlerId);
|
||||
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
|
||||
u8 TypeCalc(u16 move, u8 attacker, u8 defender);
|
||||
void AI_CalcDmg(u8 attacker, u8 defender);
|
||||
bool32 IsMonGettingExpSentOut(void);
|
||||
void BattleCreateYesNoCursorAt(void);
|
||||
void BattleDestroyYesNoCursorAt(void);
|
||||
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
|
||||
u8 TypeCalc(u16 move, u8 attacker, u8 defender);
|
||||
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
|
||||
u8 GetBattlerTurnOrderNum(u8 battlerId);
|
||||
void SetMoveEffect(bool8 primary, u8 certain);
|
||||
bool32 IsMonGettingExpSentOut(void);
|
||||
void BattleDestroyYesNoCursorAt(void);
|
||||
void BattleCreateYesNoCursorAt(void);
|
||||
void BufferMoveToLearnIntoBattleTextBuff2(void);
|
||||
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
|
||||
bool8 UproarWakeUpCheck(u8 battlerId);
|
||||
|
||||
extern void (* const gBattleScriptingCommandsTable[])(void);
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ extern const u8 BattleScript_BerryPPHealEnd2[];
|
||||
extern const u8 BattleScript_ItemHealHP_End2[];
|
||||
extern const u8 BattleScript_ItemHealHP_Ret[];
|
||||
extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[];
|
||||
extern const u8 BattleScript_HangedOnMsg[];
|
||||
extern const u8 BattleScript_FocusBandActivates[];
|
||||
extern const u8 BattleScript_BerryConfuseHealEnd2[];
|
||||
extern const u8 BattleScript_BerryStatRaiseEnd2[];
|
||||
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
|
||||
|
||||
+203
-5
@@ -211,10 +211,10 @@
|
||||
#define STRINGID_STATROSE 210
|
||||
#define STRINGID_STATHARSHLY 211
|
||||
#define STRINGID_STATFELL 212
|
||||
#define STRINGID_PKMNSSTATCHANGED 213
|
||||
#define STRINGID_PKMNSSTATCHANGED2 214
|
||||
#define STRINGID_PKMNSSTATCHANGED3 215
|
||||
#define STRINGID_PKMNSSTATCHANGED4 216
|
||||
#define STRINGID_ATTACKERSSTATROSE 213
|
||||
#define STRINGID_DEFENDERSSTATROSE 214
|
||||
#define STRINGID_ATTACKERSSTATFELL 215
|
||||
#define STRINGID_DEFENDERSSTATFELL 216
|
||||
#define STRINGID_CRITICALHIT 217
|
||||
#define STRINGID_ONEHITKO 218
|
||||
#define STRINGID_123POOF 219
|
||||
@@ -323,7 +323,7 @@
|
||||
#define STRINGID_SOOTHINGAROMA 322
|
||||
#define STRINGID_ITEMSCANTBEUSEDNOW 323
|
||||
#define STRINGID_FORXCOMMAYZ 324
|
||||
#define STRINGID_USINGXTHEYOFZN 325
|
||||
#define STRINGID_USINGITEMSTATOFPKMNROSE 325
|
||||
#define STRINGID_PKMNUSEDXTOGETPUMPED 326
|
||||
#define STRINGID_PKMNSXMADEYUSELESS 327
|
||||
#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328
|
||||
@@ -392,4 +392,202 @@
|
||||
// and are instead handled explicitly by BufferStringBattle.
|
||||
#define BATTLESTRINGS_TABLE_START STRINGID_TRAINER1LOSETEXT
|
||||
|
||||
// The below IDs are all indexes into battle message tables,
|
||||
// used to determine which of a set of messages to print.
|
||||
// They are assigned to the MULTISTRING_CHOOSER byte of gBattleCommunication
|
||||
// and read when e.g. the command printfromtable is used.
|
||||
|
||||
// gStatUpStringIds
|
||||
#define B_MSG_ATTACKER_STAT_ROSE 0
|
||||
#define B_MSG_DEFENDER_STAT_ROSE 1
|
||||
#define B_MSG_STAT_WONT_INCREASE 2
|
||||
#define B_MSG_STAT_ROSE_EMPTY 3
|
||||
#define B_MSG_STAT_ROSE_ITEM 4
|
||||
#define B_MSG_USED_DIRE_HIT 5
|
||||
|
||||
// gStatDownStringIds
|
||||
#define B_MSG_ATTACKER_STAT_FELL 0
|
||||
#define B_MSG_DEFENDER_STAT_FELL 1
|
||||
#define B_MSG_STAT_WONT_DECREASE 2
|
||||
#define B_MSG_STAT_FELL_EMPTY 3
|
||||
|
||||
// gMissStringIds
|
||||
#define B_MSG_MISSED 0
|
||||
#define B_MSG_PROTECTED 1
|
||||
#define B_MSG_AVOIDED_ATK 2
|
||||
#define B_MSG_AVOIDED_DMG 3
|
||||
#define B_MSG_GROUND_MISS 4
|
||||
|
||||
// gAbsorbDrainStringIds
|
||||
#define B_MSG_ABSORB 0
|
||||
#define B_MSG_ABSORB_OOZE 1
|
||||
|
||||
// gLeechSeedStringIds
|
||||
#define B_MSG_LEECH_SEED_SET 0
|
||||
#define B_MSG_LEECH_SEED_MISS 1
|
||||
#define B_MSG_LEECH_SEED_FAIL 2
|
||||
#define B_MSG_LEECH_SEED_DRAIN 3
|
||||
#define B_MSG_LEECH_SEED_OOZE 4
|
||||
|
||||
// gFirstTurnOfTwoStringIds
|
||||
#define B_MSG_TURN1_RAZOR_WIND 0
|
||||
#define B_MSG_TURN1_SOLAR_BEAM 1
|
||||
#define B_MSG_TURN1_SKULL_BASH 2
|
||||
#define B_MSG_TURN1_SKY_ATTACK 3
|
||||
#define B_MSG_TURN1_FLY 4
|
||||
#define B_MSG_TURN1_DIG 5
|
||||
#define B_MSG_TURN1_DIVE 6
|
||||
#define B_MSG_TURN1_BOUNCE 7
|
||||
|
||||
// gMoveWeatherChangeStringIds
|
||||
#define B_MSG_STARTED_RAIN 0
|
||||
#define B_MSG_STARTED_DOWNPOUR 1
|
||||
#define B_MSG_WEATHER_FAILED 2
|
||||
#define B_MSG_STARTED_SANDSTORM 3
|
||||
#define B_MSG_STARTED_SUNLIGHT 4
|
||||
#define B_MSG_STARTED_HAIL 5
|
||||
|
||||
// gRainContinuesStringIds
|
||||
#define B_MSG_RAIN_CONTINUES 0
|
||||
#define B_MSG_DOWNPOUR_CONTINUES 1
|
||||
#define B_MSG_RAIN_STOPPED 2
|
||||
|
||||
// gSandStormHailContinuesStringIds / gSandStormHailDmgStringIds/ gSandStormHailEndStringIds
|
||||
#define B_MSG_SANDSTORM 0
|
||||
#define B_MSG_HAIL 1
|
||||
|
||||
// gReflectLightScreenSafeguardStringIds
|
||||
#define B_MSG_SIDE_STATUS_FAILED 0
|
||||
#define B_MSG_SET_REFLECT_SINGLE 1
|
||||
#define B_MSG_SET_REFLECT_DOUBLE 2
|
||||
#define B_MSG_SET_LIGHTSCREEN_SINGLE 3
|
||||
#define B_MSG_SET_LIGHTSCREEN_DOUBLE 4
|
||||
#define B_MSG_SET_SAFEGUARD 5
|
||||
|
||||
// gProtectLikeUsedStringIds
|
||||
#define B_MSG_PROTECTED_ITSELF 0
|
||||
#define B_MSG_BRACED_ITSELF 1
|
||||
#define B_MSG_PROTECT_FAILED 2
|
||||
|
||||
// gRestUsedStringIds
|
||||
#define B_MSG_REST 0
|
||||
#define B_MSG_REST_STATUSED 1
|
||||
|
||||
// gWokeUpStringIds
|
||||
#define B_MSG_WOKE_UP 0
|
||||
#define B_MSG_WOKE_UP_UPROAR 1
|
||||
|
||||
// gUproarAwakeStringIds
|
||||
#define B_MSG_CANT_SLEEP_UPROAR 0
|
||||
#define B_MSG_UPROAR_KEPT_AWAKE 1
|
||||
#define B_MSG_STAYED_AWAKE_USING 2
|
||||
|
||||
// gUproarOverTurnStringIds
|
||||
#define B_MSG_UPROAR_CONTINUES 0
|
||||
#define B_MSG_UPROAR_ENDS 1
|
||||
|
||||
// gStockpileUsedStringIds
|
||||
#define B_MSG_STOCKPILED 0
|
||||
#define B_MSG_CANT_STOCKPILE 1
|
||||
|
||||
// gSwallowFailStringIds
|
||||
#define B_MSG_SWALLOW_FAILED 0
|
||||
#define B_MSG_SWALLOW_FULL_HP 1
|
||||
|
||||
// gKOFailedStringIds
|
||||
#define B_MSG_KO_MISS 0
|
||||
#define B_MSG_KO_UNAFFECTED 1
|
||||
|
||||
// gMistUsedStringIds
|
||||
#define B_MSG_SET_MIST 0
|
||||
#define B_MSG_MIST_FAILED 1
|
||||
|
||||
// gFocusEnergyUsedStringIds
|
||||
#define B_MSG_GETTING_PUMPED 0
|
||||
#define B_MSG_FOCUS_ENERGY_FAILED 1
|
||||
|
||||
// gTransformUsedStringIds
|
||||
#define B_MSG_TRANSFORMED 0
|
||||
#define B_MSG_TRANSFORM_FAILED 1
|
||||
|
||||
// gSubstituteUsedStringIds
|
||||
#define B_MSG_SET_SUBSTITUTE 0
|
||||
#define B_MSG_SUBSTITUTE_FAILED 1
|
||||
|
||||
// gPartyStatusHealStringIds
|
||||
#define B_MSG_BELL 0
|
||||
#define B_MSG_BELL_SOUNDPROOF_ATTACKER 1
|
||||
#define B_MSG_BELL_SOUNDPROOF_PARTNER 2
|
||||
#define B_MSG_BELL_BOTH_SOUNDPROOF 3
|
||||
#define B_MSG_SOOTHING_AROMA 4
|
||||
|
||||
// gFutureMoveUsedStringIds
|
||||
#define B_MSG_FUTURE_SIGHT 0
|
||||
#define B_MSG_DOOM_DESIRE 1
|
||||
|
||||
// gItemSwapStringIds
|
||||
#define B_MSG_ITEM_SWAP_TAKEN 0
|
||||
#define B_MSG_ITEM_SWAP_GIVEN 1
|
||||
#define B_MSG_ITEM_SWAP_BOTH 2
|
||||
|
||||
// gSportsUsedStringIds
|
||||
#define B_MSG_WEAKEN_ELECTRIC 0
|
||||
#define B_MSG_WEAKEN_FIRE 1
|
||||
|
||||
// gCaughtMonStringIds
|
||||
#define B_MSG_SENT_SOMEONES_PC 0
|
||||
#define B_MSG_SENT_BILLS_PC 1
|
||||
#define B_MSG_SOMEONES_BOX_FULL 2
|
||||
#define B_MSG_BILLS_BOX_FULL 3
|
||||
|
||||
// gInobedientStringIds
|
||||
#define B_MSG_LOAFING 0
|
||||
#define B_MSG_WONT_OBEY 1
|
||||
#define B_MSG_TURNED_AWAY 2
|
||||
#define B_MSG_PRETEND_NOT_NOTICE 3
|
||||
#define B_MSG_INCAPABLE_OF_POWER 4
|
||||
// For randomly selecting a disobey string
|
||||
// Skips the one used for Battle Palace
|
||||
#define NUM_LOAF_STRINGS 4
|
||||
|
||||
// gSafariGetNearStringIds
|
||||
#define B_MSG_CREPT_CLOSER 0
|
||||
#define B_MSG_CANT_GET_CLOSER 1
|
||||
|
||||
// gSafariPokeblockResultStringIds
|
||||
#define B_MSG_MON_CURIOUS 0
|
||||
#define B_MSG_MON_ENTHRALLED 1
|
||||
#define B_MSG_MON_IGNORED 2
|
||||
|
||||
// gFlashFireStringIds
|
||||
#define B_MSG_FLASH_FIRE_BOOST 0
|
||||
#define B_MSG_FLASH_FIRE_NO_BOOST 1
|
||||
|
||||
// gBerryEffectStringIds
|
||||
#define B_MSG_CURED_PROBLEM 0
|
||||
#define B_MSG_NORMALIZED_STATUS 1
|
||||
|
||||
// gNoEscapeStringIds
|
||||
#define B_MSG_CANT_ESCAPE 0
|
||||
#define B_MSG_DONT_LEAVE_BIRCH 1
|
||||
#define B_MSG_PREVENTS_ESCAPE 2
|
||||
#define B_MSG_CANT_ESCAPE_2 3
|
||||
#define B_MSG_ATTACKER_CANT_ESCAPE 4
|
||||
|
||||
// gGotPoisonedStringIds / gGotParalyzedStringIds / gFellAsleepStringIds
|
||||
// gGotBurnedStringIds / gGotFrozenStringIds / gAttractUsedStringIds
|
||||
#define B_MSG_STATUSED 0
|
||||
#define B_MSG_STATUSED_BY_ABILITY 1
|
||||
|
||||
// gBRNPreventionStringIds / gPRLZPreventionStringIds / gPSNPreventionStringIds
|
||||
#define B_MSG_ABILITY_PREVENTS_MOVE_STATUS 0
|
||||
#define B_MSG_ABILITY_PREVENTS_ABILITY_STATUS 1
|
||||
#define B_MSG_STATUS_HAD_NO_EFFECT 2
|
||||
|
||||
// gGotDefrostedStringIds
|
||||
#define B_MSG_DEFROSTED 0
|
||||
#define B_MSG_DEFROSTED_BY_MOVE 1
|
||||
|
||||
#define NUM_TRAPPING_MOVES 6
|
||||
|
||||
#endif // GUARD_BATTLE_STRING_IDS_H
|
||||
|
||||
+23
-21
@@ -10,27 +10,29 @@
|
||||
#define MOVE_LIMITATION_TAUNT (1 << 4)
|
||||
#define MOVE_LIMITATION_IMPRISON (1 << 5)
|
||||
|
||||
#define ABILITYEFFECT_ON_SWITCHIN 0x0
|
||||
#define ABILITYEFFECT_ENDTURN 0x1
|
||||
#define ABILITYEFFECT_MOVES_BLOCK 0x2
|
||||
#define ABILITYEFFECT_ABSORBING 0x3
|
||||
#define ABILITYEFFECT_MOVE_END 0x4
|
||||
#define ABILITYEFFECT_IMMUNITY 0x5
|
||||
#define ABILITYEFFECT_FORECAST 0x6
|
||||
#define ABILITYEFFECT_SYNCHRONIZE 0x7
|
||||
#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
|
||||
#define ABILITYEFFECT_INTIMIDATE1 0x9
|
||||
#define ABILITYEFFECT_INTIMIDATE2 0xA
|
||||
#define ABILITYEFFECT_TRACE 0xB
|
||||
#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
|
||||
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD
|
||||
#define ABILITYEFFECT_FIELD_SPORT 0xE
|
||||
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF // TODO: Is it correct?
|
||||
#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
|
||||
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11
|
||||
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
|
||||
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
|
||||
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
|
||||
#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_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 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))
|
||||
|
||||
+114
-99
@@ -44,39 +44,39 @@
|
||||
#define BIT_FLANK 2
|
||||
|
||||
// Battle Type Flags
|
||||
#define BATTLE_TYPE_DOUBLE 0x0001
|
||||
#define BATTLE_TYPE_LINK 0x0002
|
||||
#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set.
|
||||
#define BATTLE_TYPE_TRAINER 0x0008
|
||||
#define BATTLE_TYPE_FIRST_BATTLE 0x0010
|
||||
#define BATTLE_TYPE_LINK_ESTABLISHED 0x0020 // Set when the link battle setup callback finishes.
|
||||
#define BATTLE_TYPE_MULTI 0x0040
|
||||
#define BATTLE_TYPE_SAFARI 0x0080
|
||||
#define BATTLE_TYPE_BATTLE_TOWER 0x0100
|
||||
#define BATTLE_TYPE_OLD_MAN_TUTORIAL 0x0200
|
||||
#define BATTLE_TYPE_ROAMER 0x0400
|
||||
#define BATTLE_TYPE_EREADER_TRAINER 0x0800
|
||||
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
|
||||
#define BATTLE_TYPE_LEGENDARY 0x2000
|
||||
#define BATTLE_TYPE_GHOST_UNVEILED 0x2000 // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST
|
||||
#define BATTLE_TYPE_REGI 0x4000
|
||||
#define BATTLE_TYPE_GHOST 0x8000
|
||||
#define BATTLE_TYPE_POKEDUDE 0x10000
|
||||
#define BATTLE_TYPE_WILD_SCRIPTED 0x20000
|
||||
#define BATTLE_TYPE_LEGENDARY_FRLG 0x40000
|
||||
#define BATTLE_TYPE_TRAINER_TOWER 0x80000
|
||||
#define BATTLE_TYPE_x100000 0x100000
|
||||
#define BATTLE_TYPE_x200000 0x200000
|
||||
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
|
||||
#define BATTLE_TYPE_x800000 0x800000
|
||||
#define BATTLE_TYPE_RECORDED 0x1000000
|
||||
#define BATTLE_TYPE_x2000000 0x2000000
|
||||
#define BATTLE_TYPE_x4000000 0x4000000
|
||||
#define BATTLE_TYPE_SECRET_BASE 0x8000000
|
||||
#define BATTLE_TYPE_GROUDON 0x10000000
|
||||
#define BATTLE_TYPE_KYOGRE 0x20000000
|
||||
#define BATTLE_TYPE_RAYQUAZA 0x40000000
|
||||
#define BATTLE_TYPE_x80000000 0x80000000
|
||||
#define BATTLE_TYPE_DOUBLE (1 << 0)
|
||||
#define BATTLE_TYPE_LINK (1 << 1)
|
||||
#define BATTLE_TYPE_IS_MASTER (1 << 2) // In not-link battles, it's always set.
|
||||
#define BATTLE_TYPE_TRAINER (1 << 3)
|
||||
#define BATTLE_TYPE_FIRST_BATTLE (1 << 4)
|
||||
#define BATTLE_TYPE_LINK_IN_BATTLE (1 << 5) // Set on battle entry, cleared on exit. Checked rarely
|
||||
#define BATTLE_TYPE_MULTI (1 << 6)
|
||||
#define BATTLE_TYPE_SAFARI (1 << 7)
|
||||
#define BATTLE_TYPE_BATTLE_TOWER (1 << 8)
|
||||
#define BATTLE_TYPE_OLD_MAN_TUTORIAL (1 << 9) // Used in pokeemerald as BATTLE_TYPE_WALLY_TUTORIAL.
|
||||
#define BATTLE_TYPE_ROAMER (1 << 10)
|
||||
#define BATTLE_TYPE_EREADER_TRAINER (1 << 11)
|
||||
#define BATTLE_TYPE_KYOGRE_GROUDON (1 << 12)
|
||||
#define BATTLE_TYPE_LEGENDARY (1 << 13)
|
||||
#define BATTLE_TYPE_GHOST_UNVEILED (1 << 13) // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST
|
||||
#define BATTLE_TYPE_REGI (1 << 14)
|
||||
#define BATTLE_TYPE_GHOST (1 << 15) // Used in pokeemerald as BATTLE_TYPE_TWO_OPPONENTS.
|
||||
#define BATTLE_TYPE_POKEDUDE (1 << 16) // Used in pokeemerald as BATTLE_TYPE_DOME.
|
||||
#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.
|
||||
#define BATTLE_TYPE_PIKE (1 << 20) // Used in pokeemerald.
|
||||
#define BATTLE_TYPE_PYRAMID (1 << 21) // Used in pokeemerald.
|
||||
#define BATTLE_TYPE_INGAME_PARTNER (1 << 22)
|
||||
#define BATTLE_TYPE_TOWER_LINK_MULTI (1 << 23) // Used in pokeemerald.
|
||||
#define BATTLE_TYPE_RECORDED (1 << 24)
|
||||
#define BATTLE_TYPE_RECORDED_LINK (1 << 25) // Used in pokeemerald.
|
||||
#define BATTLE_TYPE_TRAINER_HILL (1 << 26) // Used in pokeemerald.
|
||||
#define BATTLE_TYPE_SECRET_BASE (1 << 27)
|
||||
#define BATTLE_TYPE_GROUDON (1 << 28)
|
||||
#define BATTLE_TYPE_KYOGRE (1 << 29)
|
||||
#define BATTLE_TYPE_RAYQUAZA (1 << 30)
|
||||
#define BATTLE_TYPE_RECORDED_IS_MASTER (1 << 31) // Used in pokeemerald.
|
||||
|
||||
#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)
|
||||
@@ -85,54 +85,62 @@
|
||||
#define RIVAL_BATTLE_TUTORIAL 3
|
||||
|
||||
// Battle Outcome defines
|
||||
#define B_OUTCOME_WON 0x1
|
||||
#define B_OUTCOME_LOST 0x2
|
||||
#define B_OUTCOME_DREW 0x3
|
||||
#define B_OUTCOME_RAN 0x4
|
||||
#define B_OUTCOME_PLAYER_TELEPORTED 0x5
|
||||
#define B_OUTCOME_MON_FLED 0x6
|
||||
#define B_OUTCOME_CAUGHT 0x7
|
||||
#define B_OUTCOME_NO_SAFARI_BALLS 0x8
|
||||
#define B_OUTCOME_FORFEITED 0x9
|
||||
#define B_OUTCOME_MON_TELEPORTED 0xA
|
||||
#define B_OUTCOME_LINK_BATTLE_RAN 0x80
|
||||
#define B_OUTCOME_WON 1
|
||||
#define B_OUTCOME_LOST 2
|
||||
#define B_OUTCOME_DREW 3
|
||||
#define B_OUTCOME_RAN 4
|
||||
#define B_OUTCOME_PLAYER_TELEPORTED 5
|
||||
#define B_OUTCOME_MON_FLED 6
|
||||
#define B_OUTCOME_CAUGHT 7
|
||||
#define B_OUTCOME_NO_SAFARI_BALLS 8
|
||||
#define B_OUTCOME_FORFEITED 9
|
||||
#define B_OUTCOME_MON_TELEPORTED 10
|
||||
#define B_OUTCOME_LINK_BATTLE_RAN (1 << 7) // 128
|
||||
|
||||
// Non-volatile status conditions
|
||||
// These persist remain outside of battle and after switching out
|
||||
#define STATUS1_NONE 0x0
|
||||
#define STATUS1_SLEEP 0x7
|
||||
#define STATUS1_POISON 0x8
|
||||
#define STATUS1_BURN 0x10
|
||||
#define STATUS1_FREEZE 0x20
|
||||
#define STATUS1_PARALYSIS 0x40
|
||||
#define STATUS1_TOXIC_POISON 0x80
|
||||
#define STATUS1_TOXIC_COUNTER 0xF00
|
||||
#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)
|
||||
#define STATUS1_POISON (1 << 3)
|
||||
#define STATUS1_BURN (1 << 4)
|
||||
#define STATUS1_FREEZE (1 << 5)
|
||||
#define STATUS1_PARALYSIS (1 << 6)
|
||||
#define STATUS1_TOXIC_POISON (1 << 7)
|
||||
#define STATUS1_TOXIC_COUNTER (1 << 8 | 1 << 9 | 1 << 10 | 1 << 11)
|
||||
#define STATUS1_TOXIC_TURN(num) ((num) << 8)
|
||||
#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
|
||||
#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)
|
||||
|
||||
// Volatile status ailments
|
||||
// These are removed after exiting the battle or switching out
|
||||
#define STATUS2_CONFUSION 0x00000007
|
||||
#define STATUS2_FLINCHED 0x00000008
|
||||
#define STATUS2_UPROAR 0x00000070
|
||||
#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
|
||||
#define STATUS2_LOCK_CONFUSE 0x00000C00
|
||||
#define STATUS2_MULTIPLETURNS 0x00001000
|
||||
#define STATUS2_WRAPPED 0x0000E000
|
||||
#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
|
||||
#define STATUS2_CONFUSION (1 << 0 | 1 << 1 | 1 << 2)
|
||||
#define STATUS2_CONFUSION_TURN(num) ((num) << 0)
|
||||
#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_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
|
||||
#define STATUS2_LOCK_CONFUSE_TURN(num)((num) << 10)
|
||||
#define STATUS2_MULTIPLETURNS (1 << 12)
|
||||
#define STATUS2_WRAPPED (1 << 13 | 1 << 14 | 1 << 15)
|
||||
#define STATUS2_WRAPPED_TURN(num) ((num) << 13)
|
||||
#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 0x00100000
|
||||
#define STATUS2_TRANSFORMED 0x00200000
|
||||
#define STATUS2_RECHARGE 0x00400000
|
||||
#define STATUS2_RAGE 0x00800000
|
||||
#define STATUS2_SUBSTITUTE 0x01000000
|
||||
#define STATUS2_DESTINY_BOND 0x02000000
|
||||
#define STATUS2_ESCAPE_PREVENTION 0x04000000
|
||||
#define STATUS2_NIGHTMARE 0x08000000
|
||||
#define STATUS2_CURSED 0x10000000
|
||||
#define STATUS2_FORESIGHT 0x20000000
|
||||
#define STATUS2_DEFENSE_CURL 0x40000000
|
||||
#define STATUS2_TORMENT 0x80000000
|
||||
#define STATUS2_FOCUS_ENERGY (1 << 20)
|
||||
#define STATUS2_TRANSFORMED (1 << 21)
|
||||
#define STATUS2_RECHARGE (1 << 22)
|
||||
#define STATUS2_RAGE (1 << 23)
|
||||
#define STATUS2_SUBSTITUTE (1 << 24)
|
||||
#define STATUS2_DESTINY_BOND (1 << 25)
|
||||
#define STATUS2_ESCAPE_PREVENTION (1 << 26)
|
||||
#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)
|
||||
|
||||
// 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
|
||||
@@ -158,32 +166,32 @@
|
||||
#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
|
||||
|
||||
// Not really sure what a "hitmarker" is.
|
||||
#define HITMARKER_x10 0x00000010
|
||||
#define HITMARKER_x20 0x00000020
|
||||
#define HITMARKER_DESTINYBOND 0x00000040
|
||||
#define HITMARKER_NO_ANIMATIONS 0x00000080
|
||||
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
|
||||
#define HITMARKER_NO_ATTACKSTRING 0x00000200
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
|
||||
#define HITMARKER_NO_PPDEDUCT 0x00000800
|
||||
#define HITMARKER_SWAP_ATTACKER_TARGET 0x00001000
|
||||
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
|
||||
#define HITMARKER_RUN 0x00008000
|
||||
#define HITMARKER_IGNORE_ON_AIR 0x00010000
|
||||
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
|
||||
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
|
||||
#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
|
||||
#define HITMARKER_PASSIVE_DAMAGE 0x00100000
|
||||
#define HITMARKER_x200000 0x00200000
|
||||
#define HITMARKER_PLAYER_FAINTED 0x00400000
|
||||
#define HITMARKER_ALLOW_NO_PP 0x00800000
|
||||
#define HITMARKER_GRUDGE 0x01000000
|
||||
#define HITMARKER_OBEYS 0x02000000
|
||||
#define HITMARKER_x4000000 0x04000000
|
||||
#define HITMARKER_CHARGING 0x08000000
|
||||
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
|
||||
#define HITMARKER_FAINTED2(battler) (0x10000000 << battler)
|
||||
#define HITMARKER_WAKE_UP_CLEAR (1 << 4) // Cleared when waking up. Never set or checked.
|
||||
#define HITMARKER_SKIP_DMG_TRACK (1 << 5)
|
||||
#define HITMARKER_DESTINYBOND (1 << 6)
|
||||
#define HITMARKER_NO_ANIMATIONS (1 << 7)
|
||||
#define HITMARKER_IGNORE_SUBSTITUTE (1 << 8)
|
||||
#define HITMARKER_NO_ATTACKSTRING (1 << 9)
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED (1 << 10)
|
||||
#define HITMARKER_NO_PPDEDUCT (1 << 11)
|
||||
#define HITMARKER_SWAP_ATTACKER_TARGET (1 << 12)
|
||||
#define HITMARKER_IGNORE_SAFEGUARD (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_UNABLE_TO_USE_MOVE (1 << 19)
|
||||
#define HITMARKER_PASSIVE_DAMAGE (1 << 20)
|
||||
#define HITMARKER_DISOBEDIENT_MOVE (1 << 21)
|
||||
#define HITMARKER_PLAYER_FAINTED (1 << 22)
|
||||
#define HITMARKER_ALLOW_NO_PP (1 << 23)
|
||||
#define HITMARKER_GRUDGE (1 << 24)
|
||||
#define HITMARKER_OBEYS (1 << 25)
|
||||
#define HITMARKER_NEVER_SET (1 << 26) // Cleared as part of a large group. Never set or checked
|
||||
#define HITMARKER_CHARGING (1 << 27)
|
||||
#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 28)
|
||||
#define HITMARKER_FAINTED2(battler) ((1 << 28) << battler)
|
||||
|
||||
// Per-side statuses that affect an entire party
|
||||
#define SIDE_STATUS_REFLECT (1 << 0)
|
||||
@@ -219,7 +227,7 @@
|
||||
#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 WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL)
|
||||
#define B_WEATHER_ANY (B_WEATHER_RAIN | B_WEATHER_SANDSTORM | B_WEATHER_SUN | B_WEATHER_HAIL)
|
||||
|
||||
// Move Effects
|
||||
#define MOVE_EFFECT_SLEEP 1
|
||||
@@ -309,6 +317,13 @@
|
||||
#define BATTLE_TERRAIN_LANCE 18
|
||||
#define BATTLE_TERRAIN_CHAMPION 19
|
||||
|
||||
#define CASTFORM_NORMAL 0
|
||||
#define CASTFORM_FIRE 1
|
||||
#define CASTFORM_WATER 2
|
||||
#define CASTFORM_ICE 3
|
||||
#define NUM_CASTFORM_FORMS 4
|
||||
#define CASTFORM_SUBSTITUTE (1 << 7)
|
||||
|
||||
// Return value for IsRunningFromBattleImpossible.
|
||||
#define BATTLE_RUN_SUCCESS 0
|
||||
#define BATTLE_RUN_FORBIDDEN 1
|
||||
|
||||
@@ -342,9 +342,9 @@
|
||||
#define BG_FISSURE 21
|
||||
#define BG_BUG_OPPONENT 22
|
||||
#define BG_BUG_PLAYER 23
|
||||
#define BG_SOLARBEAM_OPPONENT 24
|
||||
#define BG_SOLARBEAM_PLAYER 25
|
||||
#define BG_SOLARBEAM_CONTESTS 26
|
||||
#define BG_SOLAR_BEAM_OPPONENT 24
|
||||
#define BG_SOLAR_BEAM_PLAYER 25
|
||||
#define BG_SOLAR_BEAM_CONTESTS 26
|
||||
|
||||
// table ids for general animations
|
||||
#define B_ANIM_CASTFORM_CHANGE 0x0
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
#define EFFECT_FUTURE_SIGHT 148
|
||||
#define EFFECT_GUST 149
|
||||
#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
|
||||
#define EFFECT_SOLARBEAM 151
|
||||
#define EFFECT_SOLAR_BEAM 151
|
||||
#define EFFECT_THUNDER 152
|
||||
#define EFFECT_TELEPORT 153
|
||||
#define EFFECT_BEAT_UP 154
|
||||
|
||||
@@ -30,8 +30,22 @@
|
||||
#define sMULTIPLAYER_ID gBattleScripting + 0x25
|
||||
#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26
|
||||
|
||||
#define cEFFECT_CHOOSER gBattleCommunication + 3
|
||||
#define cMULTISTRING_CHOOSER gBattleCommunication + 5
|
||||
// Array entries for battle communication
|
||||
#define MULTIUSE_STATE 0
|
||||
#define CURSOR_POSITION 1
|
||||
#define TASK_ID 1 // task Id and cursor position share the same field
|
||||
#define SPRITES_INIT_STATE1 1 // shares the Id as well
|
||||
#define SPRITES_INIT_STATE2 2
|
||||
#define MOVE_EFFECT_BYTE 3
|
||||
#define ACTIONS_CONFIRMED_COUNT 4
|
||||
#define MULTISTRING_CHOOSER 5
|
||||
#define MISS_TYPE 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)
|
||||
|
||||
// Battle Script defines for getting the wanted battler
|
||||
#define BS_TARGET 0
|
||||
@@ -39,8 +53,8 @@
|
||||
#define BS_EFFECT_BATTLER 2
|
||||
#define BS_FAINTED 3
|
||||
#define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon
|
||||
#define BS_UNKNOWN_5 5 // for openpartyscreen
|
||||
#define BS_UNKNOWN_6 6 // for openpartyscreen
|
||||
#define BS_FAINTED_LINK_MULTIPLE_1 5 // for openpartyscreen
|
||||
#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
|
||||
@@ -50,9 +64,6 @@
|
||||
#define BS_PLAYER2 13 // for Cmd_updatestatusicon
|
||||
#define BS_OPPONENT2 14
|
||||
|
||||
// used for openpartyscreen
|
||||
#define OPEN_PARTY_ALLOW_CANCEL 0x80
|
||||
|
||||
// atk 01, accuracy calc
|
||||
#define NO_ACC_CALC 0xFFFE
|
||||
#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
|
||||
@@ -72,23 +83,23 @@
|
||||
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
|
||||
#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
|
||||
#define VARIOUS_GET_MOVE_TARGET 3
|
||||
#define VARIOUS_CASE_4 4
|
||||
#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_FLAG 7
|
||||
#define VARIOUS_RESET_PLAYER_FAINTED 7
|
||||
#define VARIOUS_CASE_8 8
|
||||
#define VARIOUS_RETURN_OPPONENT_MON1 9
|
||||
#define VARIOUS_RETURN_OPPONENT_MON2 10
|
||||
#define VARIOUS_CHECK_POKEFLUTE 11
|
||||
#define VARIOUS_WAIT_FANFARE 12
|
||||
|
||||
// atk80, dmg manipulation
|
||||
#define ATK80_DMG_CHANGE_SIGN 0
|
||||
#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
|
||||
#define ATK80_DMG_DOUBLED 2
|
||||
// Cmd_manipulatedmg
|
||||
#define DMG_CHANGE_SIGN 0
|
||||
#define DMG_RECOIL_FROM_MISS 1
|
||||
#define DMG_DOUBLED 2
|
||||
|
||||
// atk4F, a flag used for the jumpifcantswitch command
|
||||
#define ATK4F_DONT_CHECK_STATUSES 0x80
|
||||
// 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
|
||||
@@ -100,6 +111,18 @@
|
||||
#define STAT_CHANGE_MULTIPLE_STATS (1 << 2)
|
||||
#define STAT_CHANGE_CANT_PREVENT (1 << 3)
|
||||
|
||||
// stat flags for Cmd_playstatchangeanimation
|
||||
#define BIT_HP (1 << 0)
|
||||
#define BIT_ATK (1 << 1)
|
||||
#define BIT_DEF (1 << 2)
|
||||
#define BIT_SPEED (1 << 3)
|
||||
#define BIT_SPATK (1 << 4)
|
||||
#define BIT_SPDEF (1 << 5)
|
||||
#define BIT_ACC (1 << 6)
|
||||
#define BIT_EVASION (1 << 7)
|
||||
|
||||
#define PARTY_SCREEN_OPTIONAL (1 << 7) // Flag for first argument to openpartyscreen
|
||||
|
||||
// cases for Cmd_moveend
|
||||
#define MOVEEND_RAGE 0
|
||||
#define MOVEEND_DEFROST 1
|
||||
@@ -120,13 +143,4 @@
|
||||
#define MOVEEND_NEXT_TARGET 16
|
||||
#define MOVEEND_COUNT 17
|
||||
|
||||
#define BIT_HP 0x1
|
||||
#define BIT_ATK 0x2
|
||||
#define BIT_DEF 0x4
|
||||
#define BIT_SPEED 0x8
|
||||
#define BIT_SPATK 0x10
|
||||
#define BIT_SPDEF 0x20
|
||||
#define BIT_ACC 0x40
|
||||
#define BIT_EVASION 0x80
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
|
||||
#define ITEM_TM20_SAFEGUARD ITEM_TM20
|
||||
#define ITEM_TM21_FRUSTRATION ITEM_TM21
|
||||
#define ITEM_TM22_SOLARBEAM ITEM_TM22
|
||||
#define ITEM_TM22_SOLAR_BEAM ITEM_TM22
|
||||
#define ITEM_TM23_IRON_TAIL ITEM_TM23
|
||||
#define ITEM_TM24_THUNDERBOLT ITEM_TM24
|
||||
#define ITEM_TM25_THUNDER ITEM_TM25
|
||||
|
||||
+26
-25
@@ -134,31 +134,32 @@
|
||||
#define EGG_GROUPS_PER_MON 2
|
||||
|
||||
// Pokemon natures
|
||||
#define NATURE_HARDY 0
|
||||
#define NATURE_LONELY 1
|
||||
#define NATURE_BRAVE 2
|
||||
#define NATURE_ADAMANT 3
|
||||
#define NATURE_NAUGHTY 4
|
||||
#define NATURE_BOLD 5
|
||||
#define NATURE_DOCILE 6
|
||||
#define NATURE_RELAXED 7
|
||||
#define NATURE_IMPISH 8
|
||||
#define NATURE_LAX 9
|
||||
#define NATURE_TIMID 10
|
||||
#define NATURE_HASTY 11
|
||||
#define NATURE_SERIOUS 12
|
||||
#define NATURE_JOLLY 13
|
||||
#define NATURE_NAIVE 14
|
||||
#define NATURE_MODEST 15
|
||||
#define NATURE_MILD 16
|
||||
#define NATURE_QUIET 17
|
||||
#define NATURE_BASHFUL 18
|
||||
#define NATURE_RASH 19
|
||||
#define NATURE_CALM 20
|
||||
#define NATURE_GENTLE 21
|
||||
#define NATURE_SASSY 22
|
||||
#define NATURE_CAREFUL 23
|
||||
#define NATURE_QUIRKY 24
|
||||
#define NATURE_HARDY 0
|
||||
#define NATURE_LONELY 1
|
||||
#define NATURE_BRAVE 2
|
||||
#define NATURE_ADAMANT 3
|
||||
#define NATURE_NAUGHTY 4
|
||||
#define NATURE_BOLD 5
|
||||
#define NATURE_DOCILE 6
|
||||
#define NATURE_RELAXED 7
|
||||
#define NATURE_IMPISH 8
|
||||
#define NATURE_LAX 9
|
||||
#define NATURE_TIMID 10
|
||||
#define NATURE_HASTY 11
|
||||
#define NATURE_SERIOUS 12
|
||||
#define NATURE_JOLLY 13
|
||||
#define NATURE_NAIVE 14
|
||||
#define NATURE_MODEST 15
|
||||
#define NATURE_MILD 16
|
||||
#define NATURE_QUIET 17
|
||||
#define NATURE_BASHFUL 18
|
||||
#define NATURE_RASH 19
|
||||
#define NATURE_CALM 20
|
||||
#define NATURE_GENTLE 21
|
||||
#define NATURE_SASSY 22
|
||||
#define NATURE_CAREFUL 23
|
||||
#define NATURE_QUIRKY 24
|
||||
#define NUM_NATURES 25
|
||||
|
||||
// Pokemon Stats
|
||||
#define STAT_HP 0
|
||||
|
||||
+1
-1
@@ -4258,7 +4258,7 @@ extern const u32 gBattleAnimBgPalette_Sky[];
|
||||
extern const u32 gBattleAnimBgPalette_Aurora[];
|
||||
extern const u32 gBattleAnimBgPalette_Fissure[];
|
||||
extern const u32 gBattleAnimBgPalette_Bug[];
|
||||
extern const u32 gBattleAnimBgPalette_Solarbeam[];
|
||||
extern const u32 gBattleAnimBgPalette_SolarBeam[];
|
||||
extern const u32 gBattleAnimBgPalette_Surf[];
|
||||
extern const u32 gBattleAnimBgTilemap_Dark[];
|
||||
extern const u32 gBattleAnimBgTilemap_Ghost[];
|
||||
|
||||
+1
-1
@@ -188,7 +188,7 @@ extern const u8 gText_Ghost[];
|
||||
|
||||
// pokemon
|
||||
extern const u8 gBattleText_Rose[];
|
||||
extern const u8 gText_PkmnsStatChanged2[];
|
||||
extern const u8 gText_DefendersStatRose[];
|
||||
extern const u8 gBattleText_GetPumped[];
|
||||
extern const u8 gBattleText_MistShroud[];
|
||||
extern const u8 gText_BadEgg[];
|
||||
|
||||
+6
-1
@@ -85,7 +85,7 @@
|
||||
|
||||
#define CHAR_DYNAMIC_PLACEHOLDER 0xF7
|
||||
#define CHAR_KEYPAD_ICON 0xF8
|
||||
#define CHAR_EXTRA_EMOJI 0xF9
|
||||
#define CHAR_EXTRA_SYMBOL 0xF9
|
||||
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
|
||||
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
|
||||
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
|
||||
@@ -93,6 +93,9 @@
|
||||
#define CHAR_NEWLINE 0xFE
|
||||
#define EOS 0xFF // end of string
|
||||
|
||||
// CHAR_EXTRA_SYMBOL chars
|
||||
#define CHAR_LV_2 0x05
|
||||
|
||||
#define TEXT_COLOR_TRANSPARENT 0x0
|
||||
#define TEXT_COLOR_WHITE 0x1
|
||||
#define TEXT_COLOR_DARK_GRAY 0x2
|
||||
@@ -156,6 +159,8 @@
|
||||
#define TEXT_SPEED_INSTANT 0
|
||||
#define TEXT_SKIP_DRAW 0xFF
|
||||
|
||||
#define FONT_SMALL 0
|
||||
|
||||
enum
|
||||
{
|
||||
FONTATTR_MAX_LETTER_WIDTH,
|
||||
|
||||
+8
-5
@@ -17,6 +17,14 @@ enum
|
||||
WINDOW_TILE_DATA
|
||||
};
|
||||
|
||||
// Mode for CopyWindowToVram, CopyWindowRectToVram and CopyWindowToVram8Bit
|
||||
enum {
|
||||
COPYWIN_NONE,
|
||||
COPYWIN_MAP,
|
||||
COPYWIN_GFX,
|
||||
COPYWIN_FULL,
|
||||
};
|
||||
|
||||
struct WindowTemplate
|
||||
{
|
||||
u8 bg;
|
||||
@@ -57,11 +65,6 @@ int AddWindowWithoutTileMap(const struct WindowTemplate *template);
|
||||
void RemoveWindow(u8 windowId);
|
||||
void FreeAllWindowBuffers(void);
|
||||
|
||||
// Mode parameter for funcs below
|
||||
#define COPYWIN_MAP 1
|
||||
#define COPYWIN_GFX 2
|
||||
#define COPYWIN_BOTH 3
|
||||
|
||||
void CopyWindowToVram(u8 windowId, u8 mode);
|
||||
void CopyWindowToVram8Bit(u8 windowId, u8 mode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user