summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h87
-rw-r--r--include/battle_message.h17
-rw-r--r--include/mail.h19
3 files changed, 58 insertions, 65 deletions
diff --git a/include/battle.h b/include/battle.h
index f84a75cba..a0a50faf7 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -112,7 +112,7 @@
#define STATUS3_ROOTED 0x400
#define STATUS3_CHARGED_UP 0x200
#define STATUS3_YAWN 0x1800 //two bits
-#define STATUS3_IMPRISIONED 0x2000
+#define STATUS3_IMPRISONED_OTHERS 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
@@ -172,7 +172,7 @@
#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD
#define ABILITYEFFECT_FIELD_SPORT 0xE
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF
-#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10
+#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
@@ -206,6 +206,15 @@
#define WEATHER_HAIL (1 << 7)
#define WEATHER_HAIL_ANY ((WEATHER_HAIL))
+#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_ROCK 6
+#define BATTLE_TERRAIN_CAVE 7
+
// array entries for battle communication
#define CURSOR_POSITION 0x1
#define MOVE_EFFECT_BYTE 0x3
@@ -554,46 +563,7 @@ struct BattleStruct
u8 wildVictorySong;
u8 dynamicMoveType;
u8 wrappedBy[4];
- u8 field_18;
- u8 field_19;
- u8 field_1A;
- u8 field_1B;
- u8 field_1C;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
- u8 field_20;
- u8 field_21;
- u8 field_22;
- u8 field_23;
- u8 field_24;
- u8 field_25;
- u8 field_26;
- u8 field_27;
- u8 field_28;
- u8 field_29;
- u8 field_2A;
- u8 field_2B;
- u8 field_2C;
- u8 field_2D;
- u8 field_2E;
- u8 field_2F;
- u8 field_30;
- u8 field_31;
- u8 field_32;
- u8 field_33;
- u8 field_34;
- u8 field_35;
- u8 field_36;
- u8 field_37;
- u8 field_38;
- u8 field_39;
- u8 field_3A;
- u8 field_3B;
- u8 field_3C;
- u8 field_3D;
- u8 field_3E;
- u8 field_3F;
+ u16 assistPossibleMoves[5 * 4]; // 5 mons, each of them knowing 4 moves
u8 field_40;
u8 field_41;
u8 field_42;
@@ -710,28 +680,6 @@ extern struct BattleStruct* gBattleStruct;
var2[offsetof(struct structName, offsetField)] = value; \
}
-// This is a leftover from R/S direct use of ewram addresses
-#define GET_CHANGED_ITEM_PTR_VIA_MEME_ACCESS(bank, varName) \
-{ \
- void** memes1 = (void**)(&gBattleStruct); \
- void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, changedItems))); \
- varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \
-}
-
-#define GET_USED_ITEM_PTR_VIA_MEME_ACCESS(bank, varName) \
-{ \
- void** memes1 = (void**)(&gBattleStruct); \
- void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, usedHeldItems))); \
- varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \
-}
-
-#define GET_HP_SWITCHOUT_PTR_VIA_MEME_ACCESS(bank, varName) \
-{ \
- void** memes1 = (void**)(&gBattleStruct); \
- void* memes2 = (void*)((u32)(bank * 2 + offsetof(struct BattleStruct, hpOnSwitchout))); \
- varName = (u16*)(((void*)(*memes1) + (u32)(memes2))); \
-}
-
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -917,15 +865,24 @@ void BattleMainCB2(void);
void ResetSentPokesToOpponentValue(void);
bool8 CanRunFromBattle(u8 bank);
bool8 IsRunningFromBattleImpossible(void);
+void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
+void PressurePPLoseOnUsingImprision(u8 bankAtk);
// battle_3
+#define MOVE_LIMITATION_ZEROMOVE (1 << 0)
+#define MOVE_LIMITATION_PP (1 << 1)
+#define MOVE_LIMITATION_DISABLED (1 << 2)
+#define MOVE_LIMITATION_TORMENTED (1 << 3)
+#define MOVE_LIMITATION_TAUNT (1 << 4)
+#define MOVE_LIMITATION_IMPRISION (1 << 5)
+
void BattleScriptPush(const u8* bsPtr);
void BattleScriptPushCursor(void);
void BattleScriptPop(void);
u8 sub_803FB4C(void); // msg, can't select a move
u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
bool8 AreAllMovesUnusable(void);
-u8 IsImprisoned(u8 bank, u16 move);
+u8 GetImprisonedMovesCount(u8 bank, u16 move);
u8 UpdateTurnCounters(void);
u8 TurnBasedEffects(void);
bool8 sub_8041364(void);
diff --git a/include/battle_message.h b/include/battle_message.h
index 3e28fa5e5..6e6616cf0 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -82,6 +82,14 @@
textVar[3] = B_BUFF_EOS; \
}
+#define PREPARE_ABILITY_BUFFER(textVar, abilityId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_ABILITY; \
+ textVar[2] = abilityId; \
+ textVar[3] = B_BUFF_EOS; \
+}
+
#define PREPARE_TYPE_BUFFER(textVar, typeId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
@@ -142,6 +150,15 @@
textVar[4] = B_BUFF_EOS; \
}
+#define PREPARE_ITEM_BUFFER(textVar, item) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_ITEM; \
+ textVar[2] = item; \
+ textVar[3] = (item & 0xFF00) >> 8; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
#define PREPARE_SPECIES_BUFFER(textVar, species) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
diff --git a/include/mail.h b/include/mail.h
new file mode 100644
index 000000000..16ca1f676
--- /dev/null
+++ b/include/mail.h
@@ -0,0 +1,19 @@
+#ifndef GUARD_MAIL_H
+#define GUARD_MAIL_H
+
+#include "items.h"
+
+#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \
+ || itemId == ITEM_HARBOR_MAIL \
+ || itemId == ITEM_GLITTER_MAIL \
+ || itemId == ITEM_MECH_MAIL \
+ || itemId == ITEM_WOOD_MAIL \
+ || itemId == ITEM_WAVE_MAIL \
+ || itemId == ITEM_BEAD_MAIL \
+ || itemId == ITEM_SHADOW_MAIL \
+ || itemId == ITEM_TROPIC_MAIL \
+ || itemId == ITEM_DREAM_MAIL \
+ || itemId == ITEM_FAB_MAIL \
+ || itemId == ITEM_RETRO_MAIL))
+
+#endif // GUARD_MAIL_H