summaryrefslogtreecommitdiff
path: root/src/battle_script_commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_script_commands.c')
-rw-r--r--src/battle_script_commands.c99
1 files changed, 39 insertions, 60 deletions
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index ac9fb3073..c002eefbc 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -49,14 +49,13 @@
#include "field_specials.h"
#include "pokemon_summary_screen.h"
#include "pokenav.h"
+#include "menu_specialized.h"
+#include "data.h"
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern const u8* const gBattleScriptsForMoveEffects[];
-// functions
-extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
-
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
// this file's functions
@@ -68,8 +67,8 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
static void sub_804F17C(void);
static bool8 sub_804F1CC(void);
-static void sub_804F100(void);
-static void sub_804F144(void);
+static void DrawLevelUpWindow1(void);
+static void DrawLevelUpWindow2(void);
static bool8 sub_804F344(void);
static void PutMonIconOnLvlUpBox(void);
static void PutLevelAndGenderOnLvlUpBox(void);
@@ -298,7 +297,7 @@ static void atkDA_tryswapabilities(void);
static void atkDB_tryimprison(void);
static void atkDC_trysetgrudge(void);
static void atkDD_weightdamagecalculation(void);
-static void atkDE_asistattackselect(void);
+static void atkDE_assistattackselect(void);
static void atkDF_trysetmagiccoat(void);
static void atkE0_trysetsnatch(void);
static void atkE1_trygetintimidatetarget(void);
@@ -550,7 +549,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atkDB_tryimprison,
atkDC_trysetgrudge,
atkDD_weightdamagecalculation,
- atkDE_asistattackselect,
+ atkDE_assistattackselect,
atkDF_trysetmagiccoat,
atkE0_trysetsnatch,
atkE1_trygetintimidatetarget,
@@ -733,10 +732,10 @@ static const struct OamData sOamData_MonIconOnLvlUpBox =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
- .size = 2,
+ .size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
@@ -3240,9 +3239,8 @@ static void atk23_getexp(void)
s32 i; // also used as stringId
u8 holdEffect;
s32 sentIn;
-
s32 viaExpShare = 0;
- u16* exp = &gBattleStruct->expValue;
+ u16 *exp = &gBattleStruct->expValue;
gBattlerFainted = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
sentIn = gSentPokesToOpponent[(gBattlerFainted & 2) >> 1];
@@ -3393,14 +3391,14 @@ static void atk23_getexp(void)
}
}
else
+ {
gBattleStruct->expGetterBattlerId = 0;
+ }
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId)
-
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId);
// buffer 'gained' or 'gained a boosted'
- PREPARE_STRING_BUFFER(gBattleTextBuff2, i)
-
- PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, i);
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage);
PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId);
MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBattlerFainted].species);
@@ -3416,12 +3414,12 @@ static void atk23_getexp(void)
gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0;
if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != MAX_LEVEL)
{
- gBattleResources->statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
- gBattleResources->statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
- gBattleResources->statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
- gBattleResources->statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
- gBattleResources->statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
- gBattleResources->statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
+ gBattleResources->beforeLvlUp->stats[STAT_HP] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleResources->beforeLvlUp->stats[STAT_ATK] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleResources->beforeLvlUp->stats[STAT_DEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
+ gBattleResources->beforeLvlUp->stats[STAT_SPEED] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleResources->beforeLvlUp->stats[STAT_SPATK] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
+ gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
gActiveBattler = gBattleStruct->expGetterBattlerId;
BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage);
@@ -3439,9 +3437,8 @@ static void atk23_getexp(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId)
-
- PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL))
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId);
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL));
BattleScriptPushCursor();
gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId];
@@ -3489,7 +3486,9 @@ static void atk23_getexp(void)
break;
case 5: // looper increment
if (gBattleMoveDamage) // there is exp to give, goto case 3 that gives exp
+ {
gBattleScripting.atk23_state = 3;
+ }
else
{
gBattleStruct->expGetterMonId++;
@@ -4482,28 +4481,6 @@ static void atk48_playstatchangeanimation(void)
}
}
-enum
-{
- ATK49_RAGE,
- ATK49_DEFROST,
- ATK49_SYNCHRONIZE_TARGET,
- ATK49_MOVE_END_ABILITIES,
- ATK49_STATUS_IMMUNITY_ABILITIES,
- ATK49_SYNCHRONIZE_ATTACKER,
- ATK49_CHOICE_MOVE,
- ATK49_CHANGED_ITEMS,
- ATK49_ATTACKER_INVISIBLE,
- ATK49_ATTACKER_VISIBLE,
- ATK49_TARGET_VISIBLE,
- ATK49_ITEM_EFFECTS_ALL,
- ATK49_KINGSROCK_SHELLBELL,
- ATK49_SUBSTITUTE,
- ATK49_UPDATE_LAST_MOVES,
- ATK49_MIRROR_MOVE,
- ATK49_NEXT_TARGET,
- ATK49_COUNT,
-};
-
static void atk49_moveend(void)
{
s32 i;
@@ -5935,8 +5912,7 @@ static void atk5D_getmoneyreward(void)
moneyReward += GetTrainerMoneyToGive(gTrainerBattleOpponent_B);
AddMoney(&gSaveBlock1Ptr->money, moneyReward);
-
- PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward)
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward);
gBattlescriptCurrInstr++;
}
@@ -6257,7 +6233,7 @@ static void atk6C_drawlvlupbox(void)
gBattleScripting.atk6C_state = 4;
break;
case 4:
- sub_804F100();
+ DrawLevelUpWindow1();
PutWindowTilemap(13);
CopyWindowToVram(13, 3);
gBattleScripting.atk6C_state++;
@@ -6274,7 +6250,7 @@ static void atk6C_drawlvlupbox(void)
if (gMain.newKeys != 0)
{
PlaySE(SE_SELECT);
- sub_804F144();
+ DrawLevelUpWindow2();
CopyWindowToVram(13, 2);
gBattleScripting.atk6C_state++;
}
@@ -6315,20 +6291,20 @@ static void atk6C_drawlvlupbox(void)
}
}
-static void sub_804F100(void)
+static void DrawLevelUpWindow1(void)
{
- struct StatsArray currentStats;
+ u16 currStats[NUM_STATS];
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
- sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
+ DrawLevelUpWindowPg1(0xD, gBattleResources->beforeLvlUp->stats, currStats, 0xE, 0xD, 0xF);
}
-static void sub_804F144(void)
+static void DrawLevelUpWindow2(void)
{
- struct StatsArray currentStats;
+ u16 currStats[NUM_STATS];
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
- sub_81D3784(0xD, &currentStats, 0xE, 0xD, 0xF);
+ GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
+ DrawLevelUpWindowPg2(0xD, currStats, 0xE, 0xD, 0xF);
}
static void sub_804F17C(void)
@@ -7212,6 +7188,9 @@ static void atk88_negativedamage(void)
gBattlescriptCurrInstr++;
}
+#define STAT_CHANGE_WORKED 0
+#define STAT_CHANGE_DIDNT_WORK 1
+
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
{
bool8 certain = FALSE;
@@ -9681,7 +9660,7 @@ static void atkDD_weightdamagecalculation(void)
gBattlescriptCurrInstr++;
}
-static void atkDE_asistattackselect(void)
+static void atkDE_assistattackselect(void)
{
s32 chooseableMovesNo = 0;
struct Pokemon* party;