mirror of https://github.com/pret/pokeemerald.git
battle 4 is all done
This commit is contained in:
parent
14fcc9ec20
commit
7273b8f262
|
@ -1,30 +0,0 @@
|
||||||
@ the second big chunk of data
|
|
||||||
|
|
||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.section .rodata
|
|
||||||
|
|
||||||
|
|
||||||
gUnknown_0831C494:: @ 831C494
|
|
||||||
.byte 0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c
|
|
||||||
.byte 0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55
|
|
||||||
.byte 0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a
|
|
||||||
.byte 0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a
|
|
||||||
.byte 0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23
|
|
||||||
.byte 0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e
|
|
||||||
.byte 0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f
|
|
||||||
.byte 0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e
|
|
||||||
.byte 0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e
|
|
||||||
.byte 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21
|
|
||||||
.byte 0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f
|
|
||||||
.byte 0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f
|
|
||||||
.byte 0x38, 0x4e, 0x38, 0x4e
|
|
||||||
|
|
||||||
.align 2
|
|
||||||
gUnknown_0831C4F8:: @ 831C4F8
|
|
||||||
.byte 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00
|
|
||||||
.byte 0x01, 0x02, 0x02, 0x00, 0x03, 0x01, 0x03, 0x01
|
|
||||||
.byte 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x02, 0x02
|
|
||||||
.byte 0x03, 0x00, 0x00, 0x00
|
|
||||||
|
|
|
@ -910,6 +910,8 @@ void BufferMoveToLearnIntoBattleTextBuff2(void);
|
||||||
void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
|
void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
|
||||||
bool8 UproarWakeUpCheck(u8 bank);
|
bool8 UproarWakeUpCheck(u8 bank);
|
||||||
|
|
||||||
|
extern const u8 gUnknown_0831C494[];
|
||||||
|
|
||||||
// battle_5
|
// battle_5
|
||||||
void AdjustFriendshipOnBattleFaint(u8 bank);
|
void AdjustFriendshipOnBattleFaint(u8 bank);
|
||||||
void sub_80571DC(u8 bank, u8 arg1);
|
void sub_80571DC(u8 bank, u8 arg1);
|
||||||
|
|
|
@ -330,7 +330,6 @@ SECTIONS {
|
||||||
src/rtc.o(.rodata);
|
src/rtc.o(.rodata);
|
||||||
data/data2b.o(.rodata);
|
data/data2b.o(.rodata);
|
||||||
src/battle_4.o(.rodata);
|
src/battle_4.o(.rodata);
|
||||||
data/battle_4.o(.rodata);
|
|
||||||
data/battle_controller_player.o(.rodata);
|
data/battle_controller_player.o(.rodata);
|
||||||
data/data2b_2.o(.rodata);
|
data/data2b_2.o(.rodata);
|
||||||
data/battle_controller_opponent.o(.rodata);
|
data/battle_controller_opponent.o(.rodata);
|
||||||
|
|
120
src/battle_4.c
120
src/battle_4.c
|
@ -773,7 +773,7 @@ struct StatFractions
|
||||||
u8 divisor;
|
u8 divisor;
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct StatFractions gAccuracyStageRatios[] =
|
static const struct StatFractions sAccuracyStageRatios[] =
|
||||||
{
|
{
|
||||||
{ 33, 100}, // -6
|
{ 33, 100}, // -6
|
||||||
{ 36, 100}, // -5
|
{ 36, 100}, // -5
|
||||||
|
@ -791,9 +791,9 @@ const struct StatFractions gAccuracyStageRatios[] =
|
||||||
};
|
};
|
||||||
|
|
||||||
// The chance is 1/N for each stage.
|
// The chance is 1/N for each stage.
|
||||||
const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2};
|
static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2};
|
||||||
|
|
||||||
const u32 gStatusFlagsForMoveEffects[] =
|
static const u32 sStatusFlagsForMoveEffects[] =
|
||||||
{
|
{
|
||||||
0x00000000,
|
0x00000000,
|
||||||
STATUS_SLEEP,
|
STATUS_SLEEP,
|
||||||
|
@ -857,7 +857,7 @@ const u32 gStatusFlagsForMoveEffects[] =
|
||||||
0x00000000
|
0x00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
const u8* const gMoveEffectBS_Ptrs[] =
|
static const u8* const sMoveEffectBS_Ptrs[] =
|
||||||
{
|
{
|
||||||
BattleScript_MoveEffectSleep, // 0
|
BattleScript_MoveEffectSleep, // 0
|
||||||
BattleScript_MoveEffectSleep, // MOVE_EFFECT_SLEEP
|
BattleScript_MoveEffectSleep, // MOVE_EFFECT_SLEEP
|
||||||
|
@ -902,8 +902,8 @@ const u8* const gMoveEffectBS_Ptrs[] =
|
||||||
|
|
||||||
static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
|
static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
|
||||||
|
|
||||||
const u16 gUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
|
static const u16 sUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
|
||||||
const u8 gUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_battlebox.4bpp.lz");
|
static const u8 sUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_battlebox.4bpp.lz");
|
||||||
|
|
||||||
// unused
|
// unused
|
||||||
static const u8 sRubyLevelUpStatBoxStats[] =
|
static const u8 sRubyLevelUpStatBoxStats[] =
|
||||||
|
@ -914,7 +914,7 @@ static const u8 sRubyLevelUpStatBoxStats[] =
|
||||||
|
|
||||||
#define MON_ICON_LVLUP_BOX_TAG 0xD75A
|
#define MON_ICON_LVLUP_BOX_TAG 0xD75A
|
||||||
|
|
||||||
const struct OamData gUnknown_0831C3B8 =
|
static const struct OamData sOamData_MonIconOnLvlUpBox =
|
||||||
{
|
{
|
||||||
.y = 0,
|
.y = 0,
|
||||||
.affineMode = 0,
|
.affineMode = 0,
|
||||||
|
@ -931,24 +931,24 @@ const struct OamData gUnknown_0831C3B8 =
|
||||||
.affineParam = 0,
|
.affineParam = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct SpriteTemplate SpriteTemplate_MonIconOnLvlUpBox =
|
static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
|
||||||
{
|
{
|
||||||
.tileTag = MON_ICON_LVLUP_BOX_TAG,
|
.tileTag = MON_ICON_LVLUP_BOX_TAG,
|
||||||
.paletteTag = MON_ICON_LVLUP_BOX_TAG,
|
.paletteTag = MON_ICON_LVLUP_BOX_TAG,
|
||||||
.oam = &gUnknown_0831C3B8,
|
.oam = &sOamData_MonIconOnLvlUpBox,
|
||||||
.anims = gDummySpriteAnimTable,
|
.anims = gDummySpriteAnimTable,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.callback = SpriteCB_MonIconOnLvlUpBox
|
.callback = SpriteCB_MonIconOnLvlUpBox
|
||||||
};
|
};
|
||||||
|
|
||||||
const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF};
|
static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / 4, USHRT_MAX / 8};
|
||||||
|
|
||||||
#define MIMIC_FORBIDDEN_END 0xFFFE
|
#define MIMIC_FORBIDDEN_END 0xFFFE
|
||||||
#define METRONOME_FORBIDDEN_END 0xFFFF
|
#define METRONOME_FORBIDDEN_END 0xFFFF
|
||||||
#define ASSIST_FORBIDDEN_END 0xFFFF
|
#define ASSIST_FORBIDDEN_END 0xFFFF
|
||||||
|
|
||||||
static const u16 gMovesForbiddenToCopy[] =
|
static const u16 sMovesForbiddenToCopy[] =
|
||||||
{
|
{
|
||||||
MOVE_METRONOME,
|
MOVE_METRONOME,
|
||||||
MOVE_STRUGGLE,
|
MOVE_STRUGGLE,
|
||||||
|
@ -1007,7 +1007,7 @@ static const u16 sWeightToDamageTable[] =
|
||||||
0xFFFF, 0xFFFF
|
0xFFFF, 0xFFFF
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u16 gPickupItems[] =
|
static const u16 sPickupItems[] =
|
||||||
{
|
{
|
||||||
ITEM_POTION,
|
ITEM_POTION,
|
||||||
ITEM_ANTIDOTE,
|
ITEM_ANTIDOTE,
|
||||||
|
@ -1029,7 +1029,7 @@ static const u16 gPickupItems[] =
|
||||||
ITEM_MAX_ELIXIR,
|
ITEM_MAX_ELIXIR,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u16 gRarePickupItems[] =
|
static const u16 sRarePickupItems[] =
|
||||||
{
|
{
|
||||||
ITEM_HYPER_POTION,
|
ITEM_HYPER_POTION,
|
||||||
ITEM_NUGGET,
|
ITEM_NUGGET,
|
||||||
|
@ -1044,7 +1044,7 @@ static const u16 gRarePickupItems[] =
|
||||||
ITEM_TM26,
|
ITEM_TM26,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 gPickupProbabilities[] =
|
static const u8 sPickupProbabilities[] =
|
||||||
{
|
{
|
||||||
30, 40, 50, 60, 70, 80, 90, 94, 98
|
30, 40, 50, 60, 70, 80, 90, 94, 98
|
||||||
};
|
};
|
||||||
|
@ -1057,8 +1057,8 @@ static const u8 sTerrainToType[] =
|
||||||
TYPE_WATER, // underwater
|
TYPE_WATER, // underwater
|
||||||
TYPE_WATER, // water
|
TYPE_WATER, // water
|
||||||
TYPE_WATER, // pond water
|
TYPE_WATER, // pond water
|
||||||
TYPE_ROCK , // rock
|
TYPE_ROCK, // rock
|
||||||
TYPE_ROCK , // cave
|
TYPE_ROCK, // cave
|
||||||
TYPE_NORMAL, // building
|
TYPE_NORMAL, // building
|
||||||
TYPE_NORMAL, // plain
|
TYPE_NORMAL, // plain
|
||||||
};
|
};
|
||||||
|
@ -1068,7 +1068,31 @@ static const u8 sBallCatchBonuses[] =
|
||||||
20, 15, 10, 15 // Ultra, Great, Poke, Safari
|
20, 15, 10, 15 // Ultra, Great, Poke, Safari
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const u8 gUnknown_0831C4F8[];
|
// could be a 2d array or a struct
|
||||||
|
const ALIGNED(4) u8 gUnknown_0831C494[] =
|
||||||
|
{
|
||||||
|
0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c,
|
||||||
|
0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55,
|
||||||
|
0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a,
|
||||||
|
0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a,
|
||||||
|
0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23,
|
||||||
|
0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e,
|
||||||
|
0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f,
|
||||||
|
0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e,
|
||||||
|
0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e,
|
||||||
|
0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21,
|
||||||
|
0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f,
|
||||||
|
0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f,
|
||||||
|
0x38, 0x4e, 0x38, 0x4e
|
||||||
|
};
|
||||||
|
|
||||||
|
static const u8 sUnknown_0831C4F8[] =
|
||||||
|
{
|
||||||
|
0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00,
|
||||||
|
0x01, 0x02, 0x02, 0x00, 0x03, 0x01, 0x03, 0x01,
|
||||||
|
0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x02, 0x02,
|
||||||
|
0x03, 0x00, 0x00, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
static void atk00_attackcanceler(void)
|
static void atk00_attackcanceler(void)
|
||||||
{
|
{
|
||||||
|
@ -1304,8 +1328,8 @@ static void atk01_accuracycheck(void)
|
||||||
if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER)
|
if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER)
|
||||||
moveAcc = 50;
|
moveAcc = 50;
|
||||||
|
|
||||||
calc = gAccuracyStageRatios[buff].dividend * moveAcc;
|
calc = sAccuracyStageRatios[buff].dividend * moveAcc;
|
||||||
calc /= gAccuracyStageRatios[buff].divisor;
|
calc /= sAccuracyStageRatios[buff].divisor;
|
||||||
|
|
||||||
if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES)
|
if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES)
|
||||||
calc = (calc * 130) / 100; // 1.3 compound eyes boost
|
calc = (calc * 130) / 100; // 1.3 compound eyes boost
|
||||||
|
@ -1435,7 +1459,7 @@ static void atk04_critcalc(void)
|
||||||
if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR)
|
if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR)
|
||||||
&& !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT)
|
&& !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT)
|
||||||
&& !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE))
|
&& !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE))
|
||||||
&& !(Random() % gCriticalHitChance[critChance]))
|
&& !(Random() % sCriticalHitChance[critChance]))
|
||||||
gCritMultiplier = 2;
|
gCritMultiplier = 2;
|
||||||
else
|
else
|
||||||
gCritMultiplier = 1;
|
gCritMultiplier = 1;
|
||||||
|
@ -2411,7 +2435,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
|
|
||||||
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change
|
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change
|
||||||
{
|
{
|
||||||
switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
|
switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
|
||||||
{
|
{
|
||||||
case STATUS_SLEEP:
|
case STATUS_SLEEP:
|
||||||
// check active uproar
|
// check active uproar
|
||||||
|
@ -2630,12 +2654,12 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
{
|
{
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
|
|
||||||
if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP)
|
if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP)
|
||||||
gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
|
gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
|
||||||
else
|
else
|
||||||
gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
|
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
|
|
||||||
gActiveBank = gEffectBank;
|
gActiveBank = gEffectBank;
|
||||||
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
|
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
|
||||||
|
@ -2674,7 +2698,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
|
if (gBattleMons[gEffectBank].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
|
||||||
{
|
{
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
}
|
}
|
||||||
|
@ -2694,7 +2718,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2;
|
gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2;
|
||||||
|
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MOVE_EFFECT_FLINCH:
|
case MOVE_EFFECT_FLINCH:
|
||||||
|
@ -2714,7 +2738,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn)
|
if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn)
|
||||||
gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
gBattlescriptCurrInstr++;
|
gBattlescriptCurrInstr++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -2727,7 +2751,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
|
gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
|
||||||
|
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2743,7 +2767,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
gPaydayMoney = 0xFFFF;
|
gPaydayMoney = 0xFFFF;
|
||||||
}
|
}
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
break;
|
break;
|
||||||
case MOVE_EFFECT_TRI_ATTACK:
|
case MOVE_EFFECT_TRI_ATTACK:
|
||||||
if (gBattleMons[gEffectBank].status1)
|
if (gBattleMons[gEffectBank].status1)
|
||||||
|
@ -2776,7 +2800,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
*(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker;
|
*(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker;
|
||||||
|
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
|
|
||||||
for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++)
|
for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++)
|
||||||
{
|
{
|
||||||
|
@ -2793,7 +2817,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
gBattleMoveDamage = 1;
|
gBattleMoveDamage = 1;
|
||||||
|
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
break;
|
break;
|
||||||
case MOVE_EFFECT_ATK_PLUS_1:
|
case MOVE_EFFECT_ATK_PLUS_1:
|
||||||
case MOVE_EFFECT_DEF_PLUS_1:
|
case MOVE_EFFECT_DEF_PLUS_1:
|
||||||
|
@ -3001,7 +3025,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||||
gBattleMoveDamage = 1;
|
gBattleMoveDamage = 1;
|
||||||
|
|
||||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||||
gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
|
||||||
break;
|
break;
|
||||||
case MOVE_EFFECT_THRASH:
|
case MOVE_EFFECT_THRASH:
|
||||||
if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)
|
if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)
|
||||||
|
@ -3108,9 +3132,9 @@ static void atk18_status_effect_clear(void)
|
||||||
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
|
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
|
||||||
|
|
||||||
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC)
|
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC)
|
||||||
gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
|
gBattleMons[gActiveBank].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
|
||||||
else
|
else
|
||||||
gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
|
gBattleMons[gActiveBank].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
|
||||||
|
|
||||||
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
|
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
|
||||||
gBattlescriptCurrInstr += 2;
|
gBattlescriptCurrInstr += 2;
|
||||||
|
@ -6733,8 +6757,8 @@ static void sub_804F17C(void)
|
||||||
gBattle_BG2_Y = 0;
|
gBattle_BG2_Y = 0;
|
||||||
gBattle_BG2_X = 0x1A0;
|
gBattle_BG2_X = 0x1A0;
|
||||||
|
|
||||||
LoadPalette(gUnknown_0831C2C8, 0x60, 0x20);
|
LoadPalette(sUnknown_0831C2C8, 0x60, 0x20);
|
||||||
CopyToWindowPixelBuffer(14, gUnknown_0831C2E8, 0, 0);
|
CopyToWindowPixelBuffer(14, sUnknown_0831C2E8, 0, 0);
|
||||||
PutWindowTilemap(14);
|
PutWindowTilemap(14);
|
||||||
CopyWindowToVram(14, 3);
|
CopyWindowToVram(14, 3);
|
||||||
|
|
||||||
|
@ -6860,7 +6884,7 @@ static void PutMonIconOnLvlUpBox(void)
|
||||||
LoadSpriteSheet(&iconSheet);
|
LoadSpriteSheet(&iconSheet);
|
||||||
LoadSpritePalette(&iconPalSheet);
|
LoadSpritePalette(&iconPalSheet);
|
||||||
|
|
||||||
spriteId = CreateSprite(&SpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0);
|
spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0);
|
||||||
gSprites[spriteId].sDestroy = FALSE;
|
gSprites[spriteId].sDestroy = FALSE;
|
||||||
gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X;
|
gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X;
|
||||||
}
|
}
|
||||||
|
@ -7078,7 +7102,7 @@ static void atk76_various(void)
|
||||||
{
|
{
|
||||||
gBattleStruct->field_92 |= gBitTable[gActiveBank];
|
gBattleStruct->field_92 |= gBitTable[gActiveBank];
|
||||||
gBattleCommunication[0] = 1;
|
gBattleCommunication[0] = 1;
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = gUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)];
|
gBattleCommunication[MULTISTRING_CHOOSER] = sUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
|
@ -8475,10 +8499,10 @@ static void atk9C_set_substitute(void)
|
||||||
static bool8 IsMoveUncopyableByMimic(u16 move)
|
static bool8 IsMoveUncopyableByMimic(u16 move)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
for (i = 0; gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END
|
for (i = 0; sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END
|
||||||
&& gMovesForbiddenToCopy[i] != move; i++);
|
&& sMovesForbiddenToCopy[i] != move; i++);
|
||||||
|
|
||||||
return (gMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END);
|
return (sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void atk9D_mimicattackcopy(void)
|
static void atk9D_mimicattackcopy(void)
|
||||||
|
@ -8537,7 +8561,7 @@ static void atk9E_metronome(void)
|
||||||
|
|
||||||
for (i = 0; i < 4; i++); // ?
|
for (i = 0; i < 4; i++); // ?
|
||||||
|
|
||||||
for (move = gMovesForbiddenToCopy; ; move++)
|
for (move = sMovesForbiddenToCopy; ; move++)
|
||||||
{
|
{
|
||||||
if (*move == gCurrentMove)
|
if (*move == gCurrentMove)
|
||||||
break;
|
break;
|
||||||
|
@ -8567,7 +8591,7 @@ static void atk9E_metronome(void)
|
||||||
ldr r7, =gCurrentMove\n\
|
ldr r7, =gCurrentMove\n\
|
||||||
movs r6, 0xB1\n\
|
movs r6, 0xB1\n\
|
||||||
lsls r6, 1\n\
|
lsls r6, 1\n\
|
||||||
ldr r5, =gMovesForbiddenToCopy\n\
|
ldr r5, =sMovesForbiddenToCopy\n\
|
||||||
ldr r0, =gBattlescriptCurrInstr\n\
|
ldr r0, =gBattlescriptCurrInstr\n\
|
||||||
mov r8, r0\n\
|
mov r8, r0\n\
|
||||||
_080524EE:\n\
|
_080524EE:\n\
|
||||||
|
@ -10580,9 +10604,9 @@ static void atkDE_asistattackselect(void)
|
||||||
if (IsInvalidForSleepTalkOrAssist(move))
|
if (IsInvalidForSleepTalkOrAssist(move))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (; gMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != gMovesForbiddenToCopy[i]; i++);
|
for (; sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != sMovesForbiddenToCopy[i]; i++);
|
||||||
|
|
||||||
if (gMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END)
|
if (sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END)
|
||||||
continue;
|
continue;
|
||||||
if (move == MOVE_NONE)
|
if (move == MOVE_NONE)
|
||||||
continue;
|
continue;
|
||||||
|
@ -10774,14 +10798,14 @@ static void atkE5_pickup(void)
|
||||||
|
|
||||||
for (j = 0; j < 9; j++)
|
for (j = 0; j < 9; j++)
|
||||||
{
|
{
|
||||||
if (gPickupProbabilities[j] > rand)
|
if (sPickupProbabilities[j] > rand)
|
||||||
{
|
{
|
||||||
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gPickupItems[lvlDivBy10 + j]);
|
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (rand == 99 || rand == 98)
|
else if (rand == 99 || rand == 98)
|
||||||
{
|
{
|
||||||
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &gRarePickupItems[lvlDivBy10 + (99 - rand)]);
|
SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue