mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-04-25 16:28:25 -05:00
reviewer feedback + additional tests
This commit is contained in:
parent
fc2242cd68
commit
efbbd4130f
|
|
@ -713,12 +713,12 @@ enum FaintedActions
|
|||
F(STARTING_STATUS_TOXIC_SPIKES_PLAYER_L2, toxicSpikesPlayerL2, (u32, 1)) /* Toxic Spikes Player Layer 2 */ \
|
||||
F(STARTING_STATUS_TOXIC_SPIKES_OPPONENT_L1, toxicSpikesOpponentL1, (u32, 1)) /* Toxic Spikes Opponent Layer 1 */ \
|
||||
F(STARTING_STATUS_TOXIC_SPIKES_OPPONENT_L2, toxicSpikesOpponentL2, (u32, 1)) /* Toxic Spikes Opponent Layer 2 */ \
|
||||
F(STARTING_STATUS_STICKY_WEB_PLAYER, stickyWebPlayer, (u32, 1)) /* Sticky Web Player */ \
|
||||
F(STARTING_STATUS_STICKY_WEB_OPPONENT, stickyWebOpponent, (u32, 1)) /* Sticky Web Opponent */ \
|
||||
F(STARTING_STATUS_STEALTH_ROCK_PLAYER, stealthRockPlayer, (u32, 1)) /* Stealth Rock Player */ \
|
||||
F(STARTING_STATUS_STEALTH_ROCK_OPPONENT, stealthRockOpponent, (u32, 1)) /* Stealth Rock Opponent */ \
|
||||
F(STARTING_STATUS_SHARP_STEEL_PLAYER, sharpSteelPlayer, (u32, 1)) /* Sharp Steel Player */ \
|
||||
F(STARTING_STATUS_SHARP_STEEL_OPPONENT, sharpSteelOpponent, (u32, 1)) /* Sharp Steel Opponent */ \
|
||||
F(STARTING_STATUS_STICKY_WEB_PLAYER, stickyWebPlayer, (u32, 1)) /* Sticky Web Player */ \
|
||||
F(STARTING_STATUS_STICKY_WEB_OPPONENT, stickyWebOpponent, (u32, 1)) /* Sticky Web Opponent */ \
|
||||
F(STARTING_STATUS_STEALTH_ROCK_PLAYER, stealthRockPlayer, (u32, 1)) /* Stealth Rock Player */ \
|
||||
F(STARTING_STATUS_STEALTH_ROCK_OPPONENT, stealthRockOpponent, (u32, 1)) /* Stealth Rock Opponent */ \
|
||||
F(STARTING_STATUS_SHARP_STEEL_PLAYER, sharpSteelPlayer, (u32, 1)) /* Sharp Steel Player */ \
|
||||
F(STARTING_STATUS_SHARP_STEEL_OPPONENT, sharpSteelOpponent, (u32, 1)) /* Sharp Steel Opponent */ \
|
||||
|
||||
#define UNPACK_STARTING_STATUS_ENUMS(_enum, ...) _enum,
|
||||
|
||||
|
|
|
|||
|
|
@ -3607,9 +3607,7 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, enum Ability ability
|
|||
|
||||
static u32 GetFirstBattlerOnSide(u32 side)
|
||||
{
|
||||
u32 battler;
|
||||
|
||||
for (battler = 0; battler < gBattlersCount; battler++)
|
||||
for (u32 battler = 0; battler < gBattlersCount; battler++)
|
||||
{
|
||||
if (GetBattlerSide(battler) == side && !(gAbsentBattlerFlags & (1u << battler)))
|
||||
return battler;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ SINGLE_BATTLE_TEST("SetStartingStatus can start Spikes on the opposing side", s1
|
|||
u32 divisor;
|
||||
|
||||
PARAMETRIZE { startingHazard = STARTING_STATUS_SPIKES_OPPONENT_L1; divisor = 8; }
|
||||
PARAMETRIZE { startingHazard = STARTING_STATUS_SPIKES_OPPONENT_L2; divisor = 6; }
|
||||
PARAMETRIZE { startingHazard = STARTING_STATUS_SPIKES_OPPONENT_L3; divisor = 4; }
|
||||
|
||||
SetStartingStatus(startingHazard);
|
||||
|
|
@ -88,6 +89,8 @@ SINGLE_BATTLE_TEST("Starting Sticky Web lowers Speed on entry")
|
|||
|
||||
SINGLE_BATTLE_TEST("Starting Stealth Rock damages the opposing switch-in")
|
||||
{
|
||||
ASSUME(gSpeciesInfo[SPECIES_CHARIZARD].types[0] == TYPE_FIRE);
|
||||
ASSUME(gSpeciesInfo[SPECIES_CHARIZARD].types[1] == TYPE_FLYING);
|
||||
SetStartingStatus(STARTING_STATUS_STEALTH_ROCK_OPPONENT);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -108,6 +111,7 @@ SINGLE_BATTLE_TEST("Starting Stealth Rock damages the opposing switch-in")
|
|||
|
||||
SINGLE_BATTLE_TEST("Starting sharp steel damages the opposing switch-in")
|
||||
{
|
||||
ASSUME(gSpeciesInfo[SPECIES_SYLVEON].types[0] == TYPE_FAIRY);
|
||||
SetStartingStatus(STARTING_STATUS_SHARP_STEEL_OPPONENT);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -125,3 +129,133 @@ SINGLE_BATTLE_TEST("Starting sharp steel damages the opposing switch-in")
|
|||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
// Player-side hazard tests
|
||||
|
||||
SINGLE_BATTLE_TEST("SetStartingStatus can start Spikes on the player side", s16 damage)
|
||||
{
|
||||
u16 startingHazard;
|
||||
u32 divisor;
|
||||
|
||||
PARAMETRIZE { startingHazard = STARTING_STATUS_SPIKES_PLAYER_L1; divisor = 8; }
|
||||
PARAMETRIZE { startingHazard = STARTING_STATUS_SPIKES_PLAYER_L2; divisor = 6; }
|
||||
PARAMETRIZE { startingHazard = STARTING_STATUS_SPIKES_PLAYER_L3; divisor = 4; }
|
||||
|
||||
SetStartingStatus(startingHazard);
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Go! Wynaut!");
|
||||
s32 maxHP = GetMonData(&PLAYER_PARTY[1], MON_DATA_MAX_HP);
|
||||
HP_BAR(player, damage: maxHP / divisor);
|
||||
MESSAGE("Wynaut was hurt by the spikes!");
|
||||
} FINALLY {
|
||||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Toxic Spikes poison the player's switch-in")
|
||||
{
|
||||
SetStartingStatus(STARTING_STATUS_TOXIC_SPIKES_PLAYER_L1);
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Go! Wynaut!");
|
||||
MESSAGE("Wynaut was poisoned!");
|
||||
STATUS_ICON(player, poison: TRUE);
|
||||
NOT STATUS_ICON(player, badPoison: TRUE);
|
||||
} THEN {
|
||||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Toxic Spikes badly poison the player's switch-in")
|
||||
{
|
||||
SetStartingStatus(STARTING_STATUS_TOXIC_SPIKES_PLAYER_L2);
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Go! Wynaut!");
|
||||
MESSAGE("Wynaut was badly poisoned!");
|
||||
STATUS_ICON(player, badPoison: TRUE);
|
||||
} THEN {
|
||||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Sticky Web lowers Speed on player's entry")
|
||||
{
|
||||
SetStartingStatus(STARTING_STATUS_STICKY_WEB_PLAYER);
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Go! Wynaut!");
|
||||
MESSAGE("Wynaut was caught in a sticky web!");
|
||||
MESSAGE("Wynaut's Speed fell!");
|
||||
} THEN {
|
||||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Stealth Rock damages the player's switch-in")
|
||||
{
|
||||
ASSUME(gSpeciesInfo[SPECIES_CHARIZARD].types[0] == TYPE_FIRE);
|
||||
ASSUME(gSpeciesInfo[SPECIES_CHARIZARD].types[1] == TYPE_FLYING);
|
||||
SetStartingStatus(STARTING_STATUS_STEALTH_ROCK_PLAYER);
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_CHARIZARD);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Go! Charizard!");
|
||||
s32 maxHP = GetMonData(&PLAYER_PARTY[1], MON_DATA_MAX_HP);
|
||||
HP_BAR(player, damage: maxHP / 2);
|
||||
MESSAGE("Pointed stones dug into Charizard!");
|
||||
} THEN {
|
||||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting sharp steel damages the player's switch-in")
|
||||
{
|
||||
ASSUME(gSpeciesInfo[SPECIES_SYLVEON].types[0] == TYPE_FAIRY);
|
||||
SetStartingStatus(STARTING_STATUS_SHARP_STEEL_PLAYER);
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_SYLVEON);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Go! Sylveon!");
|
||||
s32 maxHP = GetMonData(&PLAYER_PARTY[1], MON_DATA_MAX_HP);
|
||||
HP_BAR(player, damage: maxHP / 4);
|
||||
MESSAGE("The sharp steel bit into Sylveon!");
|
||||
} THEN {
|
||||
ResetStartingStatuses();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -237,7 +237,6 @@ static u32 BattleTest_EstimateCost(void *data)
|
|||
STATE->runRandomly = TRUE;
|
||||
ResetStartingStatuses();
|
||||
InvokeTestFunction(test);
|
||||
ResetStartingStatuses();
|
||||
cost = 1;
|
||||
if (STATE->parametersCount != 0)
|
||||
cost *= STATE->parametersCount;
|
||||
|
|
|
|||
|
|
@ -1681,9 +1681,7 @@ static void fprint_symbol(FILE *f, struct String s)
|
|||
}
|
||||
fputc(c + 'a' - 'A', f);
|
||||
}
|
||||
else if ('a' <= c && c <= 'z')
|
||||
fputc(c, f);
|
||||
else if ('0' <= c && c <= '9')
|
||||
else if (('a' <= c && c <= 'z') || ('0' <= c && c <= '9'))
|
||||
fputc(c, f);
|
||||
else if (c == '\'')
|
||||
;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user