mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-06-02 22:15:20 -05:00
Add Spicy Spray (#9769)
Some checks are pending
CI / build-emerald (push) Waiting to run
CI / build-firered (push) Waiting to run
CI / build-leafgreen (push) Waiting to run
CI / release (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Blocked by required conditions
CI / docs_validate (push) Waiting to run
CI / allcontributors (push) Waiting to run
Some checks are pending
CI / build-emerald (push) Waiting to run
CI / build-firered (push) Waiting to run
CI / build-leafgreen (push) Waiting to run
CI / release (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Blocked by required conditions
CI / docs_validate (push) Waiting to run
CI / allcontributors (push) Waiting to run
Co-authored-by: LinathanZel <linathan@DESKTOP-RVGNQ5E.localdomain>
This commit is contained in:
parent
09c06ca859
commit
bc09176a03
|
|
@ -4256,6 +4256,20 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, enum BattlerId battler, enum
|
|||
effect++;
|
||||
}
|
||||
break;
|
||||
case ABILITY_SPICY_SPRAY:
|
||||
if (IsBattlerAlive(gBattlerAttacker)
|
||||
&& !gBattleStruct->unableToUseMove
|
||||
&& IsBattlerTurnDamaged(gBattlerTarget, EXCLUDING_SUBSTITUTES)
|
||||
&& CanBeBurned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)))
|
||||
{
|
||||
gEffectBattler = gBattlerAttacker;
|
||||
gBattleScripting.battler = gBattlerTarget;
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_BURN;
|
||||
PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gLastUsedAbility);
|
||||
BattleScriptCall(BattleScript_AbilityStatusEffect);
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2478,6 +2478,6 @@ const struct AbilityInfo gAbilitiesInfo[ABILITIES_COUNT] =
|
|||
[ABILITY_SPICY_SPRAY] =
|
||||
{
|
||||
.name = _("Spicy Spray"),
|
||||
.description = COMPOUND_STRING("Unimplemented."),
|
||||
.description = COMPOUND_STRING("Burns the foe when damaged."),
|
||||
},
|
||||
};
|
||||
|
|
|
|||
114
test/battle/ability/spicy_spray.c
Normal file
114
test/battle/ability/spicy_spray.c
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("Spicy Spray burns the attacker")
|
||||
{
|
||||
enum Move move;
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_SWIFT; }
|
||||
GIVEN {
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(!MoveMakesContact(MOVE_SWIFT));
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SCOVILLAIN) { Item(ITEM_SCOVILLAINITE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(player, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_SPICY_SPRAY);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
|
||||
STATUS_ICON(player, burn: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Spicy Spray burns the attacker even if the attacker is behind a Substitute")
|
||||
{
|
||||
enum Move move;
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_SWIFT; }
|
||||
GIVEN {
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(!MoveMakesContact(MOVE_SWIFT));
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SCOVILLAIN) { Item(ITEM_SCOVILLAINITE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(player, MOVE_SUBSTITUTE); }
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_SPICY_SPRAY);
|
||||
STATUS_ICON(player, burn: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Spicy Spray does not burn the attacker if the defender is behind a Substitute")
|
||||
{
|
||||
enum Move move;
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_SWIFT; }
|
||||
GIVEN {
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(!MoveMakesContact(MOVE_SWIFT));
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SCOVILLAIN) { Item(ITEM_SCOVILLAINITE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SUBSTITUTE, gimmick: GIMMICK_MEGA); MOVE(player, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent);
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(opponent, ABILITY_SPICY_SPRAY);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
|
||||
STATUS_ICON(player, burn: TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Spicy Spray burns the attacker even if the attacker has Sheer Force")
|
||||
{
|
||||
enum Move move;
|
||||
PARAMETRIZE { move = MOVE_CRUNCH; }
|
||||
PARAMETRIZE { move = MOVE_ICE_BEAM; }
|
||||
GIVEN {
|
||||
ASSUME(MoveMakesContact(MOVE_CRUNCH));
|
||||
ASSUME(!MoveMakesContact(MOVE_ICE_BEAM));
|
||||
PLAYER(SPECIES_FERALIGATR) { Ability(ABILITY_SHEER_FORCE); }
|
||||
OPPONENT(SPECIES_SCOVILLAIN) { Item(ITEM_SCOVILLAINITE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(player, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_SPICY_SPRAY);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
|
||||
STATUS_ICON(player, burn: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Spicy Spray burns the attacker even if the defender faints")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SCOVILLAIN) { Item(ITEM_SCOVILLAINITE); HP(1); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(player, MOVE_SCRATCH); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_SPICY_SPRAY);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
|
||||
STATUS_ICON(player, burn: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Spicy Spray burns the attacker even if the defender behind a Substitute takes damage")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(IsSoundMove(MOVE_HYPER_VOICE));
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SCOVILLAIN) { Item(ITEM_SCOVILLAINITE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SUBSTITUTE, gimmick: GIMMICK_MEGA); MOVE(player, MOVE_HYPER_VOICE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_MEGA_EVOLUTION, opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_SPICY_SPRAY);
|
||||
STATUS_ICON(player, burn: TRUE);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user