mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-04-26 02:14:22 -05:00
fix: (WIP) hacky solution using enum, pausing for now
This commit is contained in:
parent
578d9a33b6
commit
91c7bd875c
|
|
@ -224,9 +224,10 @@
|
|||
// Var Settings
|
||||
// To use the following features, change the 0 for a var present in include/constants/vars.h, preferably an unused one.
|
||||
// Eg: You may rename VAR_UNUSED_0x404E to a descriptive name and use it below.
|
||||
#define B_VAR_STARTING_STATUS 0 // If this var has a value, assigning a STATUS_FIELD_xx_TERRAIN to it before battle causes the battle to start with that terrain active.
|
||||
#define B_VAR_STARTING_STATUS 0 // If this var has a value, assigning a STARTING_STATUS_xx to it before battle causes the battle to start with that status active.
|
||||
// This var should never remain non-zero long enough for the player to save.
|
||||
#define B_VAR_STARTING_STATUS_TIMER 0 // If this var has a value greater or equal than 1 field terrains will last that number of turns, otherwise they will last until they're overwritten.
|
||||
#define B_VAR_STARTING_STATUS_HAZARDS 0 // Same as above, but for entry hazards. Uses STARTING_HAZARD_xx constants.
|
||||
#define B_VAR_STARTING_STATUS_TIMER 0 // If this var has a value >= 1, field effects will last that number of turns, otherwise they last until overwritten.
|
||||
#define B_VAR_WILD_AI_FLAGS 0 // If not 0, you can use this var to add to default wild AI flags. IMPORTANT: NOT usable with flags above (1 << 15)
|
||||
// This var should never remain non-zero long enough for the player to save.
|
||||
// For better wild AI handling, edit GetWildAiFlags() in src/battle_ai_main.c
|
||||
|
|
|
|||
|
|
@ -1134,6 +1134,8 @@
|
|||
#define B_VAR_DIFFICULTY TESTING_VAR_DIFFICULTY
|
||||
#undef B_VAR_STARTING_STATUS
|
||||
#define B_VAR_STARTING_STATUS TESTING_VAR_STARTING_STATUS
|
||||
#undef B_VAR_STARTING_STATUS_HAZARDS
|
||||
#define B_VAR_STARTING_STATUS_HAZARDS TESTING_VAR_STARTING_STATUS_HAZARDS
|
||||
#undef B_VAR_STARTING_STATUS_TIMER
|
||||
#define B_VAR_STARTING_STATUS_TIMER TESTING_VAR_STARTING_STATUS_TIMER
|
||||
|
||||
|
|
|
|||
|
|
@ -707,6 +707,30 @@ enum StartingStatus
|
|||
STARTING_STATUS_SHARP_STEEL_OPPONENT = (1 << 30), // Steelsurge Opponent
|
||||
};
|
||||
|
||||
// Constants for B_VAR_STARTING_STATUS_HAZARDS (shifted to fit in u16)
|
||||
// These map to the same internal bits as STARTING_STATUS_* hazards
|
||||
enum StartingHazard
|
||||
{
|
||||
STARTING_HAZARD_SPIKES_PLAYER_L1 = (1 << 0), // Spikes Player Layer 1
|
||||
STARTING_HAZARD_SPIKES_PLAYER_L2 = (1 << 1), // Spikes Player Layer 2
|
||||
STARTING_HAZARD_SPIKES_PLAYER_L3 = (1 << 2), // Spikes Player Layer 3
|
||||
STARTING_HAZARD_SPIKES_OPPONENT_L1 = (1 << 3), // Spikes Opponent Layer 1
|
||||
STARTING_HAZARD_SPIKES_OPPONENT_L2 = (1 << 4), // Spikes Opponent Layer 2
|
||||
STARTING_HAZARD_SPIKES_OPPONENT_L3 = (1 << 5), // Spikes Opponent Layer 3
|
||||
STARTING_HAZARD_TOXIC_SPIKES_PLAYER_L1 = (1 << 6), // Toxic Spikes Player Layer 1
|
||||
STARTING_HAZARD_TOXIC_SPIKES_PLAYER_L2 = (1 << 7), // Toxic Spikes Player Layer 2
|
||||
STARTING_HAZARD_TOXIC_SPIKES_OPPONENT_L1 = (1 << 8), // Toxic Spikes Opponent Layer 1
|
||||
STARTING_HAZARD_TOXIC_SPIKES_OPPONENT_L2 = (1 << 9), // Toxic Spikes Opponent Layer 2
|
||||
STARTING_HAZARD_STICKY_WEB_PLAYER = (1 << 10), // Sticky Web Player
|
||||
STARTING_HAZARD_STICKY_WEB_OPPONENT = (1 << 11), // Sticky Web Opponent
|
||||
STARTING_HAZARD_STEALTH_ROCK_PLAYER = (1 << 12), // Stealth Rock Player
|
||||
STARTING_HAZARD_STEALTH_ROCK_OPPONENT = (1 << 13), // Stealth Rock Opponent
|
||||
STARTING_HAZARD_SHARP_STEEL_PLAYER = (1 << 14), // Steelsurge Player
|
||||
STARTING_HAZARD_SHARP_STEEL_OPPONENT = (1 << 15), // Steelsurge Opponent
|
||||
};
|
||||
|
||||
#define STARTING_HAZARD_SHIFT 15 // Shift value to convert STARTING_HAZARD_* to internal STARTING_STATUS_* bits
|
||||
|
||||
enum SlideMsgStates
|
||||
{
|
||||
PRINT_SLIDE_MESSAGE,
|
||||
|
|
|
|||
|
|
@ -328,8 +328,8 @@
|
|||
#define TESTING_VARS_START 0x9000
|
||||
#define TESTING_VAR_DIFFICULTY (TESTING_VARS_START + 0x0)
|
||||
#define TESTING_VAR_STARTING_STATUS (TESTING_VARS_START + 0x1)
|
||||
#define TESTING_VAR_STARTING_STATUS_TIMER (TESTING_VARS_START + 0x2)
|
||||
#define TESTING_VAR_UNUSED_3 (TESTING_VARS_START + 0x3)
|
||||
#define TESTING_VAR_STARTING_STATUS_HAZARDS (TESTING_VARS_START + 0x2)
|
||||
#define TESTING_VAR_STARTING_STATUS_TIMER (TESTING_VARS_START + 0x3)
|
||||
#define TESTING_VAR_UNUSED_4 (TESTING_VARS_START + 0x4)
|
||||
#define TESTING_VAR_UNUSED_5 (TESTING_VARS_START + 0x5)
|
||||
#define TESTING_VAR_UNUSED_6 (TESTING_VARS_START + 0x6)
|
||||
|
|
|
|||
|
|
@ -3748,6 +3748,8 @@ static void DoBattleIntro(void)
|
|||
gBattleStruct->startingStatus |= VarGet(B_VAR_STARTING_STATUS);
|
||||
gBattleStruct->startingStatusTimer = VarGet(B_VAR_STARTING_STATUS_TIMER);
|
||||
}
|
||||
if (B_VAR_STARTING_STATUS_HAZARDS != 0)
|
||||
gBattleStruct->startingStatus |= (u32)VarGet(B_VAR_STARTING_STATUS_HAZARDS) << STARTING_HAZARD_SHIFT;
|
||||
gBattleMainFunc = TryDoEventsBeforeFirstTurn;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -422,6 +422,10 @@ void Overworld_ResetBattleFlagsAndVars(void)
|
|||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
#endif
|
||||
|
||||
#if B_VAR_STARTING_STATUS_HAZARDS != 0
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
#endif
|
||||
|
||||
#if B_VAR_STARTING_STATUS_TIMER != 0
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2,17 +2,17 @@
|
|||
#include "event_data.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
#if B_VAR_STARTING_STATUS != 0
|
||||
#if B_VAR_STARTING_STATUS_HAZARDS != 0
|
||||
|
||||
SINGLE_BATTLE_TEST("B_VAR_STARTING_STATUS can start Spikes on the opposing side", s16 damage)
|
||||
SINGLE_BATTLE_TEST("B_VAR_STARTING_STATUS_HAZARDS can start Spikes on the opposing side", s16 damage)
|
||||
{
|
||||
u16 startingStatus;
|
||||
u32 startingHazard;
|
||||
u32 divisor;
|
||||
|
||||
PARAMETRIZE { startingStatus = STARTING_STATUS_SPIKES_OPPONENT_L1; divisor = 8; }
|
||||
PARAMETRIZE { startingStatus = STARTING_STATUS_SPIKES_OPPONENT_L3; divisor = 4; }
|
||||
PARAMETRIZE { startingHazard = STARTING_HAZARD_SPIKES_OPPONENT_L1; divisor = 8; }
|
||||
PARAMETRIZE { startingHazard = STARTING_HAZARD_SPIKES_OPPONENT_L3; divisor = 4; }
|
||||
|
||||
VarSet(B_VAR_STARTING_STATUS, startingStatus);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, startingHazard);
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -27,13 +27,13 @@ SINGLE_BATTLE_TEST("B_VAR_STARTING_STATUS can start Spikes on the opposing side"
|
|||
HP_BAR(opponent, damage: maxHP / divisor);
|
||||
MESSAGE("The opposing Wynaut was hurt by the spikes!");
|
||||
} FINALLY {
|
||||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Toxic Spikes poison the opposing switch-in")
|
||||
{
|
||||
VarSet(B_VAR_STARTING_STATUS, STARTING_STATUS_TOXIC_SPIKES_OPPONENT_L1);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, STARTING_HAZARD_TOXIC_SPIKES_OPPONENT_L1);
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -48,13 +48,13 @@ SINGLE_BATTLE_TEST("Starting Toxic Spikes poison the opposing switch-in")
|
|||
STATUS_ICON(opponent, poison: TRUE);
|
||||
NOT STATUS_ICON(opponent, badPoison: TRUE);
|
||||
} THEN {
|
||||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Toxic Spikes badly poison the opposing switch-in")
|
||||
{
|
||||
VarSet(B_VAR_STARTING_STATUS, STARTING_STATUS_TOXIC_SPIKES_OPPONENT_L2);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, STARTING_HAZARD_TOXIC_SPIKES_OPPONENT_L2);
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -68,13 +68,13 @@ SINGLE_BATTLE_TEST("Starting Toxic Spikes badly poison the opposing switch-in")
|
|||
MESSAGE("The opposing Wynaut was badly poisoned!");
|
||||
STATUS_ICON(opponent, badPoison: TRUE);
|
||||
} THEN {
|
||||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Sticky Web lowers Speed on entry")
|
||||
{
|
||||
VarSet(B_VAR_STARTING_STATUS, STARTING_STATUS_STICKY_WEB_OPPONENT);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, STARTING_HAZARD_STICKY_WEB_OPPONENT);
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -88,13 +88,13 @@ SINGLE_BATTLE_TEST("Starting Sticky Web lowers Speed on entry")
|
|||
MESSAGE("The opposing Wynaut was caught in a sticky web!");
|
||||
MESSAGE("The opposing Wynaut's Speed fell!");
|
||||
} THEN {
|
||||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting Stealth Rock damages the opposing switch-in")
|
||||
{
|
||||
VarSet(B_VAR_STARTING_STATUS, STARTING_STATUS_STEALTH_ROCK_OPPONENT);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, STARTING_HAZARD_STEALTH_ROCK_OPPONENT);
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -109,13 +109,13 @@ SINGLE_BATTLE_TEST("Starting Stealth Rock damages the opposing switch-in")
|
|||
HP_BAR(opponent, damage: maxHP / 2);
|
||||
MESSAGE("Pointed stones dug into the opposing Charizard!");
|
||||
} THEN {
|
||||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Starting sharp steel damages the opposing switch-in")
|
||||
{
|
||||
VarSet(B_VAR_STARTING_STATUS, STARTING_STATUS_SHARP_STEEL_OPPONENT);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, STARTING_HAZARD_SHARP_STEEL_OPPONENT);
|
||||
VarSet(B_VAR_STARTING_STATUS_TIMER, 0);
|
||||
|
||||
GIVEN {
|
||||
|
|
@ -130,8 +130,8 @@ SINGLE_BATTLE_TEST("Starting sharp steel damages the opposing switch-in")
|
|||
HP_BAR(opponent, damage: maxHP / 4);
|
||||
MESSAGE("The sharp steel bit into the opposing Sylveon!");
|
||||
} THEN {
|
||||
VarSet(B_VAR_STARTING_STATUS, 0);
|
||||
VarSet(B_VAR_STARTING_STATUS_HAZARDS, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#endif // B_VAR_STARTING_STATUS
|
||||
#endif // B_VAR_STARTING_STATUS_HAZARDS
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user