implemented G-Max Stonesurge, G-Max Steelsurge
This commit is contained in:
parent
503aad9137
commit
4d19659b0b
13 changed files with 244 additions and 58 deletions
|
@ -2213,7 +2213,7 @@
|
|||
various BS_ATTACKER, VARIOUS_TRY_SYMBIOSIS
|
||||
.endm
|
||||
|
||||
@ The next few macros are used by Max Moves.
|
||||
@ Used to active a different Max Move effects.
|
||||
.macro setmaxmoveeffect
|
||||
various 0, VARIOUS_SET_MAX_MOVE_EFFECT
|
||||
.endm
|
||||
|
@ -2228,6 +2228,11 @@
|
|||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro setsteelsurge, failInstr:req
|
||||
various 0, VARIOUS_SET_STEELSURGE
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
@ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script.
|
||||
.macro modifybattlerstatstage battler:req, stat:req, mode:req, amount:req, script:req, animation:req, customString
|
||||
|
||||
|
|
|
@ -910,6 +910,40 @@ gBattleAnims_Moves::
|
|||
.4byte Move_MAX_WYRMWIND
|
||||
.4byte Move_MAX_DARKNESS
|
||||
.4byte Move_MAX_STARFALL
|
||||
@@@@ G-MAX MOVES
|
||||
.4byte Move_G_MAX_VINE_LASH
|
||||
.4byte Move_G_MAX_WILDFIRE
|
||||
.4byte Move_G_MAX_CANNONADE
|
||||
.4byte Move_G_MAX_BEFUDDLE
|
||||
.4byte Move_G_MAX_VOLT_CRASH
|
||||
.4byte Move_G_MAX_GOLD_RUSH
|
||||
.4byte Move_G_MAX_CHI_STRIKE
|
||||
.4byte Move_G_MAX_TERROR
|
||||
.4byte Move_G_MAX_FOAM_BURST
|
||||
.4byte Move_G_MAX_RESONANCE
|
||||
.4byte Move_G_MAX_CUDDLE
|
||||
.4byte Move_G_MAX_REPLENISH
|
||||
.4byte Move_G_MAX_MALODOR
|
||||
.4byte Move_G_MAX_MELTDOWN
|
||||
.4byte Move_G_MAX_DRUM_SOLO
|
||||
.4byte Move_G_MAX_FIREBALL
|
||||
.4byte Move_G_MAX_HYDROSNIPE
|
||||
.4byte Move_G_MAX_WIND_RAGE
|
||||
.4byte Move_G_MAX_GRAVITAS
|
||||
.4byte Move_G_MAX_STONESURGE
|
||||
.4byte Move_G_MAX_VOLCALITH
|
||||
.4byte Move_G_MAX_TARTNESS
|
||||
.4byte Move_G_MAX_SWEETNESS
|
||||
.4byte Move_G_MAX_SANDBLAST
|
||||
.4byte Move_G_MAX_STUN_SHOCK
|
||||
.4byte Move_G_MAX_CENTIFERNO
|
||||
.4byte Move_G_MAX_SMITE
|
||||
.4byte Move_G_MAX_SNOOZE
|
||||
.4byte Move_G_MAX_FINALE
|
||||
.4byte Move_G_MAX_STEELSURGE
|
||||
.4byte Move_G_MAX_DEPLETION
|
||||
.4byte Move_G_MAX_ONE_BLOW
|
||||
.4byte Move_G_MAX_RAPID_FLOW
|
||||
@@@ Last Move - cannot be reached
|
||||
.4byte Move_COUNT
|
||||
|
||||
|
@ -30821,6 +30855,8 @@ Move_MAX_MINDSTORM:
|
|||
Move_MAX_WYRMWIND:
|
||||
Move_MAX_DARKNESS:
|
||||
Move_MAX_STARFALL:
|
||||
launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
Move_MAX_GUARD:
|
||||
|
@ -30870,3 +30906,40 @@ Move_MAX_LIGHTNING::
|
|||
waitforvisualfinish
|
||||
goto Move_ZAP_CANNON
|
||||
end
|
||||
|
||||
Move_G_MAX_VINE_LASH:
|
||||
Move_G_MAX_WILDFIRE:
|
||||
Move_G_MAX_CANNONADE:
|
||||
Move_G_MAX_BEFUDDLE:
|
||||
Move_G_MAX_VOLT_CRASH:
|
||||
Move_G_MAX_GOLD_RUSH:
|
||||
Move_G_MAX_CHI_STRIKE:
|
||||
Move_G_MAX_TERROR:
|
||||
Move_G_MAX_FOAM_BURST:
|
||||
Move_G_MAX_RESONANCE:
|
||||
Move_G_MAX_CUDDLE:
|
||||
Move_G_MAX_REPLENISH:
|
||||
Move_G_MAX_MALODOR:
|
||||
Move_G_MAX_MELTDOWN:
|
||||
Move_G_MAX_DRUM_SOLO:
|
||||
Move_G_MAX_FIREBALL:
|
||||
Move_G_MAX_HYDROSNIPE:
|
||||
Move_G_MAX_WIND_RAGE:
|
||||
Move_G_MAX_GRAVITAS:
|
||||
Move_G_MAX_STONESURGE:
|
||||
Move_G_MAX_VOLCALITH:
|
||||
Move_G_MAX_TARTNESS:
|
||||
Move_G_MAX_SWEETNESS:
|
||||
Move_G_MAX_SANDBLAST:
|
||||
Move_G_MAX_STUN_SHOCK:
|
||||
Move_G_MAX_CENTIFERNO:
|
||||
Move_G_MAX_SMITE:
|
||||
Move_G_MAX_SNOOZE:
|
||||
Move_G_MAX_FINALE:
|
||||
Move_G_MAX_STEELSURGE:
|
||||
Move_G_MAX_DEPLETION:
|
||||
Move_G_MAX_ONE_BLOW:
|
||||
Move_G_MAX_RAPID_FLOW:
|
||||
launchtask AnimTask_DynamaxGrowth 0x5 0x1 0x1
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
|
|
@ -420,7 +420,18 @@ gBattleScriptsForMoveEffects::
|
|||
.4byte BattleScript_EffectShellTrap @ EFFECT_SHELL_TRAP
|
||||
.4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE
|
||||
|
||||
|
||||
BattleScript_StealthRockActivates::
|
||||
setstealthrock BattleScript_MoveEnd
|
||||
printstring STRINGID_POINTEDSTONESFLOAT
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_SteelsurgeActivates::
|
||||
setsteelsurge BattleScript_MoveEnd
|
||||
printstring STRINGID_SHARPSTEELFLOATS
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectAttackUpUserAlly:
|
||||
jumpifnoally BS_ATTACKER, BattleScript_EffectAttackUp
|
||||
attackcanceler
|
||||
|
@ -7454,6 +7465,11 @@ BattleScript_StealthRockFree::
|
|||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_SteelsurgeFree::
|
||||
printstring STRINGID_PKMNBLEWAWAYSHARPSTEEL
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_MonTookFutureAttack::
|
||||
printstring STRINGID_PKMNTOOKATTACK
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
|
|
|
@ -218,6 +218,7 @@ struct SideTimer
|
|||
u8 tailwindBattlerId;
|
||||
u8 luckyChantTimer;
|
||||
u8 luckyChantBattlerId;
|
||||
u8 steelsurgeAmount;
|
||||
// Timers below this point are not swapped by Court Change
|
||||
u8 followmeTimer;
|
||||
u8 followmeTarget:3;
|
||||
|
|
|
@ -453,6 +453,9 @@ extern const u8 BattleScript_DampPreventsAftermath[];
|
|||
extern const u8 BattleScript_HealingWishActivates[];
|
||||
extern const u8 BattleScript_LunarDanceActivates[];
|
||||
extern const u8 BattleScript_ShellTrapSetUp[];
|
||||
extern const u8 BattleScript_StealthRockActivates[];
|
||||
extern const u8 BattleScript_SteelsurgeActivates[];
|
||||
extern const u8 BattleScript_SteelsurgeFree[];
|
||||
|
||||
// zmoves
|
||||
extern const u8 BattleScript_ZMoveActivateDamaging[];
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#define DEBUG_OVERWORLD_MENU TRUE // Enables a overworld debug menu for changing flags, variables, giving pokemon and more, accessed by holding R and pressing START while in the overworld by default.
|
||||
#define DEBUG_OVERWORLD_HELD_KEYS (R_BUTTON) // The keys required to be held to open the debug menu.
|
||||
#define DEBUG_OVERWORLD_TRIGGER_EVENT pressedStartButton // The event that opens the menu when holding the key(s) defined in DEBUG_OVERWORLD_HELD_KEYS.
|
||||
#define DEBUG_OVERWORLD_IN_MENU FALSE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex).
|
||||
#define DEBUG_OVERWORLD_IN_MENU TRUE // Replaces the overworld debug menu button combination with a start menu entry (above Pokédex).
|
||||
|
||||
// Debug Flags
|
||||
// To use the following debug features, replace the 0s with the flag ID you're assigning it to.
|
||||
|
|
|
@ -233,8 +233,10 @@
|
|||
#define SIDE_STATUS_WIDE_GUARD (1 << 19)
|
||||
#define SIDE_STATUS_CRAFTY_SHIELD (1 << 20)
|
||||
#define SIDE_STATUS_MAT_BLOCK (1 << 21)
|
||||
#define SIDE_STATUS_STEELSURGE (1 << 22)
|
||||
#define SIDE_STATUS_STEELSURGE_DAMAGED (1 << 23)
|
||||
|
||||
#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK)
|
||||
#define SIDE_STATUS_HAZARDS_ANY (SIDE_STATUS_SPIKES | SIDE_STATUS_STICKY_WEB | SIDE_STATUS_TOXIC_SPIKES | SIDE_STATUS_STEALTH_ROCK | SIDE_STATUS_STEELSURGE)
|
||||
#define SIDE_STATUS_SCREEN_ANY (SIDE_STATUS_REFLECT | SIDE_STATUS_LIGHTSCREEN | SIDE_STATUS_AURORA_VEIL)
|
||||
|
||||
// Field affecting statuses.
|
||||
|
@ -375,8 +377,10 @@
|
|||
#define MOVE_EFFECT_LOWER_SIDE_STATS 74
|
||||
#define MOVE_EFFECT_WEATHER 75
|
||||
#define MOVE_EFFECT_TERRAIN 76
|
||||
#define MOVE_EFFECT_STEALTH_ROCK 77
|
||||
#define MOVE_EFFECT_STEELSURGE 78
|
||||
|
||||
#define NUM_MOVE_EFFECTS 77
|
||||
#define NUM_MOVE_EFFECTS 79
|
||||
|
||||
#define MOVE_EFFECT_AFFECTS_USER 0x4000
|
||||
#define MOVE_EFFECT_CERTAIN 0x8000
|
||||
|
|
|
@ -263,6 +263,7 @@
|
|||
#define VARIOUS_JUMP_IF_NO_VALID_TARGETS 171
|
||||
#define VARIOUS_JUMP_IF_TARGET_NOT_ALLY 172
|
||||
#define VARIOUS_JUMP_IF_TARGET_ABSENT 173
|
||||
#define VARIOUS_SET_STEELSURGE 174
|
||||
|
||||
// Cmd_manipulatedamage
|
||||
#define DMG_CHANGE_SIGN 0
|
||||
|
|
|
@ -641,8 +641,11 @@
|
|||
#define STRINGID_PKMNSABILITYPREVENTSABILITY 639
|
||||
#define STRINGID_PREPARESHELLTRAP 640
|
||||
#define STRINGID_SHELLTRAPDIDNTWORK 641
|
||||
#define STRINGID_SHARPSTEELFLOATS 642
|
||||
#define STRINGID_SHARPSTEELDMG 643
|
||||
#define STRINGID_PKMNBLEWAWAYSHARPSTEEL 644
|
||||
|
||||
#define BATTLESTRINGS_COUNT 642
|
||||
#define BATTLESTRINGS_COUNT 645
|
||||
|
||||
// This is the string id that gBattleStringsTable starts with.
|
||||
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,
|
||||
|
|
|
@ -154,6 +154,7 @@ enum
|
|||
LIST_SIDE_STEALTH_ROCK,
|
||||
LIST_SIDE_TOXIC_SPIKES,
|
||||
LIST_SIDE_STICKY_WEB,
|
||||
LIST_SIDE_STEELSURGE,
|
||||
};
|
||||
|
||||
enum
|
||||
|
@ -228,6 +229,7 @@ static const u8 sText_PP[] = _("PP");
|
|||
static const u8 sText_StealthRock[] = _("Stealth Rock");
|
||||
static const u8 sText_ToxicSpikes[] = _("Toxic Spikes");
|
||||
static const u8 sText_StickyWeb[] = _("Sticky Web");
|
||||
static const u8 sText_Steelsurge[] = _("Steelsurge");
|
||||
static const u8 sText_AI[] = _("AI");
|
||||
static const u8 sText_NoBadMoves[] = _("No Bad Moves");
|
||||
static const u8 sText_Viability[] = _("Viability");
|
||||
|
@ -454,6 +456,7 @@ static const struct ListMenuItem sSideStatusListItems[] =
|
|||
{sText_StealthRock, LIST_SIDE_STEALTH_ROCK},
|
||||
{sText_ToxicSpikes, LIST_SIDE_TOXIC_SPIKES},
|
||||
{sText_StickyWeb, LIST_SIDE_STICKY_WEB},
|
||||
{sText_Steelsurge, LIST_SIDE_STEELSURGE},
|
||||
};
|
||||
|
||||
static const struct ListMenuItem sSecondaryListItems[] =
|
||||
|
@ -1744,6 +1747,15 @@ static u8 *GetSideStatusValue(struct BattleDebugMenu *data, bool32 changeStatus,
|
|||
*(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STICKY_WEB;
|
||||
}
|
||||
return &sideTimer->stickyWebAmount;
|
||||
case LIST_SIDE_STEELSURGE:
|
||||
if (changeStatus)
|
||||
{
|
||||
if (statusTrue)
|
||||
*(u32 *)(data->modifyArrows.modifiedValPtr) |= SIDE_STATUS_STEELSURGE;
|
||||
else
|
||||
*(u32 *)(data->modifyArrows.modifiedValPtr) &= ~SIDE_STATUS_STEELSURGE;
|
||||
}
|
||||
return &sideTimer->steelsurgeAmount;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -776,9 +776,15 @@ static const u8 sText_AbilityWeakenedSurroundingMonsStat[] = _("{B_ATK_NAME_WITH
|
|||
static const u8 sText_AttackerGainedStrengthFromTheFallen[] = _("{B_ATK_NAME_WITH_PREFIX} gained strength\nfrom the fallen!");
|
||||
static const u8 sText_PrepareShellTrap[] = _("{B_ATK_NAME_WITH_PREFIX} set a shell trap!");
|
||||
static const u8 sText_ShellTrapDidntWork[] = _("{B_ATK_NAME_WITH_PREFIX}'s shell trap didn't work!");
|
||||
static const u8 sText_SharpSteelFloats[] = _("Sharp-pointed steel floats\naround {B_DEF_TEAM2} team!");
|
||||
static const u8 sText_SharpSteelDmg[] = _("Sharp steel bit into {B_DEF_NAME_WITH_PREFIX}!");
|
||||
static const u8 sText_PkmnBlewAwaySharpSteel[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nsharp steel!");
|
||||
|
||||
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||||
{
|
||||
[STRINGID_PKMNBLEWAWAYSHARPSTEEL - BATTLESTRINGS_TABLE_START] = sText_PkmnBlewAwaySharpSteel,
|
||||
[STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg,
|
||||
[STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats,
|
||||
[STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen,
|
||||
[STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat,
|
||||
[STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility,
|
||||
|
@ -1460,7 +1466,7 @@ const u16 gHealingWishStringIds[] =
|
|||
|
||||
const u16 gDmgHazardsStringIds[] =
|
||||
{
|
||||
STRINGID_PKMNHURTBYSPIKES, STRINGID_STEALTHROCKDMG
|
||||
STRINGID_PKMNHURTBYSPIKES, STRINGID_STEALTHROCKDMG, STRINGID_SHARPSTEELDMG
|
||||
};
|
||||
|
||||
const u16 gSwitchInAbilityStringIds[] =
|
||||
|
|
|
@ -2868,6 +2868,7 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||
bool32 mirrorArmorReflected = (GetBattlerAbility(gBattlerTarget) == ABILITY_MIRROR_ARMOR);
|
||||
u32 flags = 0;
|
||||
u16 battlerAbility;
|
||||
bool8 activateAfterFaint = FALSE;
|
||||
|
||||
if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT
|
||||
&& gBattleMons[gBattlerTarget].hp != 0
|
||||
|
@ -2885,6 +2886,10 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||
gBattleStruct->moveEffect2 = gBattleScripting.moveEffect;
|
||||
gBattlescriptCurrInstr++;
|
||||
return;
|
||||
case MOVE_EFFECT_STEALTH_ROCK:
|
||||
case MOVE_EFFECT_STEELSURGE:
|
||||
activateAfterFaint = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (gBattleScripting.moveEffect & MOVE_EFFECT_AFFECTS_USER)
|
||||
|
@ -2926,6 +2931,7 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||
INCREMENT_RESET_RETURN
|
||||
|
||||
if (gBattleMons[gEffectBattler].hp == 0
|
||||
&& !activateAfterFaint
|
||||
&& gBattleScripting.moveEffect != MOVE_EFFECT_PAYDAY
|
||||
&& gBattleScripting.moveEffect != MOVE_EFFECT_STEAL_ITEM
|
||||
&& gBattleScripting.moveEffect != MOVE_EFFECT_BUG_BITE)
|
||||
|
@ -3825,6 +3831,20 @@ void SetMoveEffect(bool32 primary, u32 certain)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case MOVE_EFFECT_STEALTH_ROCK:
|
||||
if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEALTH_ROCK))
|
||||
{
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_StealthRockActivates;
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_STEELSURGE:
|
||||
if (!(gSideStatuses[GetBattlerSide(gEffectBattler)] & SIDE_STATUS_STEELSURGE))
|
||||
{
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_SteelsurgeActivates;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3911,7 +3931,7 @@ static void Cmd_tryfaintmon(void)
|
|||
|
||||
BattleScriptPop();
|
||||
gBattlescriptCurrInstr = instr;
|
||||
gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED);
|
||||
gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED | SIDE_STATUS_STEELSURGE_DAMAGED);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -7150,6 +7170,17 @@ static void Cmd_switchineffects(void)
|
|||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_StickyWebOnSwitchIn;
|
||||
}
|
||||
else if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_STEELSURGE_DAMAGED)
|
||||
&& (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_STEELSURGE)
|
||||
&& IsBattlerAffectedByHazards(gActiveBattler, FALSE)
|
||||
&& GetBattlerAbility(gActiveBattler) != ABILITY_MAGIC_GUARD)
|
||||
{
|
||||
gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_STEELSURGE_DAMAGED;
|
||||
gBattleMoveDamage = GetStealthHazardDamage(gBattleMoves[MOVE_G_MAX_STEELSURGE].type, gActiveBattler);
|
||||
|
||||
if (gBattleMoveDamage != 0)
|
||||
SetDmgHazardsBattlescript(gActiveBattler, 2);
|
||||
}
|
||||
else if (gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP && gBattleStruct->zmove.healReplacement)
|
||||
{
|
||||
gBattleStruct->zmove.healReplacement = FALSE;
|
||||
|
@ -7183,7 +7214,7 @@ static void Cmd_switchineffects(void)
|
|||
return;
|
||||
}
|
||||
|
||||
gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED);
|
||||
gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED | SIDE_STATUS_TOXIC_SPIKES_DAMAGED | SIDE_STATUS_STEALTH_ROCK_DAMAGED | SIDE_STATUS_STICKY_WEB_DAMAGED | SIDE_STATUS_STEELSURGE_DAMAGED);
|
||||
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
|
@ -8514,6 +8545,7 @@ static bool32 ClearDefogHazards(u8 battlerAtk, bool32 clear)
|
|||
DEFOG_CLEAR(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, BattleScript_StealthRockFree, 0);
|
||||
DEFOG_CLEAR(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, BattleScript_ToxicSpikesFree, 0);
|
||||
DEFOG_CLEAR(SIDE_STATUS_STICKY_WEB, stickyWebAmount, BattleScript_StickyWebFree, 0);
|
||||
DEFOG_CLEAR(SIDE_STATUS_STEELSURGE, steelsurgeAmount, BattleScript_SteelsurgeFree, 0);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
@ -8698,6 +8730,7 @@ static bool32 CourtChangeSwapSideStatuses(void)
|
|||
COURTCHANGE_SWAP(SIDE_STATUS_STEALTH_ROCK, stealthRockAmount, temp);
|
||||
COURTCHANGE_SWAP(SIDE_STATUS_TOXIC_SPIKES, toxicSpikesAmount, temp);
|
||||
COURTCHANGE_SWAP(SIDE_STATUS_STICKY_WEB, stickyWebAmount, temp);
|
||||
COURTCHANGE_SWAP(SIDE_STATUS_STEELSURGE, stickyWebAmount, temp);
|
||||
|
||||
// Change battler IDs of swapped effects. Needed for the correct string when they expire
|
||||
// E.g. "Foe's Reflect wore off!"
|
||||
|
@ -11206,6 +11239,22 @@ static void Cmd_various(void)
|
|||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
return;
|
||||
}
|
||||
case VARIOUS_STORE_HEALING_WISH:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
if (gCurrentMove == MOVE_LUNAR_DANCE)
|
||||
gBattleStruct->storedLunarDance |= gBitTable[gActiveBattler];
|
||||
else
|
||||
gBattleStruct->storedHealingWish |= gBitTable[gActiveBattler];
|
||||
break;
|
||||
}
|
||||
case VARIOUS_HIT_SWITCH_TARGET_FAILED:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
gBattleStruct->hitSwitchTargetFailed = TRUE;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
return;
|
||||
}
|
||||
case VARIOUS_SET_MAX_MOVE_EFFECT:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
|
@ -11237,6 +11286,12 @@ static void Cmd_various(void)
|
|||
case MAX_EFFECT_PSYCHIC_TERRAIN:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_TERRAIN;
|
||||
break;
|
||||
case MAX_EFFECT_STEALTH_ROCK:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_STEALTH_ROCK;
|
||||
break;
|
||||
case MAX_EFFECT_STEELSURGE:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_STEELSURGE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -11258,20 +11313,20 @@ static void Cmd_various(void)
|
|||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
return;
|
||||
}
|
||||
case VARIOUS_STORE_HEALING_WISH:
|
||||
case VARIOUS_SET_STEELSURGE:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
if (gCurrentMove == MOVE_LUNAR_DANCE)
|
||||
gBattleStruct->storedLunarDance |= gBitTable[gActiveBattler];
|
||||
VARIOUS_ARGS(const u8 *failInstr);
|
||||
u8 targetSide = GetBattlerSide(gBattlerTarget);
|
||||
if (gSideStatuses[targetSide] & SIDE_STATUS_STEELSURGE)
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
}
|
||||
else
|
||||
gBattleStruct->storedHealingWish |= gBitTable[gActiveBattler];
|
||||
break;
|
||||
}
|
||||
case VARIOUS_HIT_SWITCH_TARGET_FAILED:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
gBattleStruct->hitSwitchTargetFailed = TRUE;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
{
|
||||
gSideStatuses[targetSide] |= SIDE_STATUS_STEELSURGE;
|
||||
gSideTimers[targetSide].steelsurgeAmount = 1;
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} // End of switch (cmd->id)
|
||||
|
@ -14065,6 +14120,13 @@ static void Cmd_rapidspinfree(void)
|
|||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_StealthRockFree;
|
||||
}
|
||||
else if (gSideStatuses[atkSide] & SIDE_STATUS_STEELSURGE)
|
||||
{
|
||||
gSideStatuses[atkSide] &= ~SIDE_STATUS_STEELSURGE;
|
||||
gSideTimers[atkSide].steelsurgeAmount = 0;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_SteelsurgeFree;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
|
|
|
@ -15233,7 +15233,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_ROCK,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15248,7 +15248,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GROUND,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15278,7 +15278,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GRASS,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15293,7 +15293,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_STEEL,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15308,7 +15308,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GRASS,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15323,7 +15323,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FIRE,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15338,7 +15338,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15353,7 +15353,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_BUG,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15368,7 +15368,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15383,7 +15383,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_NORMAL,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15398,7 +15398,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FIGHTING,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15413,7 +15413,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GHOST,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15428,7 +15428,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15443,7 +15443,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_ICE,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15458,7 +15458,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_NORMAL,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15473,7 +15473,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_NORMAL,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15488,7 +15488,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_POISON,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15503,7 +15503,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_STEEL,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15518,7 +15518,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GRASS,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15533,7 +15533,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FIRE,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15548,7 +15548,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15563,7 +15563,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FLYING,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15578,7 +15578,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15593,7 +15593,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15608,7 +15608,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_ROCK,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15623,7 +15623,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GRASS,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15638,7 +15638,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GRASS,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15653,7 +15653,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_GROUND,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15668,7 +15668,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15683,7 +15683,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FIRE,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15698,7 +15698,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15714,7 +15714,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_DARK,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15729,7 +15729,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15744,7 +15744,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_STEEL,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15759,7 +15759,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_DRAGON,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15774,7 +15774,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_DARK,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
@ -15789,7 +15789,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 0,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
|
|
Loading…
Reference in a new issue