mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
Fixes Secret Power Terrain effects not being applied (#9492)
This commit is contained in:
parent
552be6d7e7
commit
df81e254ab
|
|
@ -2991,30 +2991,31 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
|
|||
}
|
||||
break;
|
||||
case MOVE_EFFECT_SECRET_POWER:
|
||||
if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
|
||||
if (IsBattlerAlive(battlerAtk))
|
||||
{
|
||||
switch (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
|
||||
moveEffect = gBattleEnvironmentInfo[gBattleEnvironment].secretPowerEffect;
|
||||
if (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
|
||||
{
|
||||
case STATUS_FIELD_MISTY_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1;
|
||||
break;
|
||||
case STATUS_FIELD_GRASSY_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_SLEEP;
|
||||
break;
|
||||
case STATUS_FIELD_ELECTRIC_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_PARALYSIS;
|
||||
break;
|
||||
case STATUS_FIELD_PSYCHIC_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_SPD_MINUS_1;
|
||||
break;
|
||||
default:
|
||||
moveEffect = MOVE_EFFECT_PARALYSIS;
|
||||
break;
|
||||
switch (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
|
||||
{
|
||||
case STATUS_FIELD_MISTY_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_SP_ATK_MINUS_1;
|
||||
break;
|
||||
case STATUS_FIELD_GRASSY_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_SLEEP;
|
||||
break;
|
||||
case STATUS_FIELD_ELECTRIC_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_PARALYSIS;
|
||||
break;
|
||||
case STATUS_FIELD_PSYCHIC_TERRAIN:
|
||||
moveEffect = MOVE_EFFECT_SPD_MINUS_1;
|
||||
break;
|
||||
default:
|
||||
moveEffect = MOVE_EFFECT_PARALYSIS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetMoveEffect(battlerAtk, effectBattler, gBattleEnvironmentInfo[gBattleEnvironment].secretPowerEffect, battleScript, effectFlags);
|
||||
SetMoveEffect(battlerAtk, effectBattler, moveEffect, battleScript, effectFlags);
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_PSYCHIC_NOISE:
|
||||
|
|
|
|||
73
test/battle/move_effect_secondary/secret_power.c
Normal file
73
test/battle/move_effect_secondary/secret_power.c
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_SECRET_POWER, MOVE_EFFECT_SECRET_POWER) == TRUE);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Secret Power inflicts paralysis in Electric Terrain")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_ELECTRIC_TERRAIN) == EFFECT_ELECTRIC_TERRAIN);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_ELECTRIC_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
|
||||
STATUS_ICON(opponent, paralysis: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Secret Power inflicts sleep in Grassy Terrain")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_GRASSY_TERRAIN) == EFFECT_GRASSY_TERRAIN);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_GRASSY_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
|
||||
STATUS_ICON(opponent, sleep: TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Secret Power lowers Speed in Psychic Terrain")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_PSYCHIC_TERRAIN) == EFFECT_PSYCHIC_TERRAIN);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_PSYCHIC_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC_TERRAIN, opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
} THEN {
|
||||
EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 1);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Secret Power lowers Sp. Atk in Misty Terrain")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_MISTY_TERRAIN) == EFFECT_MISTY_TERRAIN);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_MISTY_TERRAIN); MOVE(player, MOVE_SECRET_POWER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_MISTY_TERRAIN, opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SECRET_POWER, player);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
} THEN {
|
||||
EXPECT_EQ(opponent->statStages[STAT_SPATK], DEFAULT_STAT_STAGE - 1);
|
||||
}
|
||||
}
|
||||
|
||||
TO_DO_BATTLE_TEST("Secret Power doesn't inflict secondary effects when user fainted");
|
||||
Loading…
Reference in New Issue
Block a user