Secret Power effect config

This commit is contained in:
Eduardo Quezada D'Ottone 2021-11-06 17:05:13 -03:00
parent 62b6accbcc
commit 328976bf81
3 changed files with 71 additions and 14 deletions

View File

@ -364,16 +364,29 @@
#define MOVE_EFFECT_CERTAIN 0x8000
// Battle terrain defines for gBattleTerrain.
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// New battle terrains are used for Secret Power but not fully implemented.
#define BATTLE_TERRAIN_SOARING 10
#define BATTLE_TERRAIN_SKY_PILLAR 11
#define BATTLE_TERRAIN_BURIAL_GROUND 12
#define BATTLE_TERRAIN_PUDDLE 13
#define BATTLE_TERRAIN_MARSH 14
#define BATTLE_TERRAIN_SWAMP 15
#define BATTLE_TERRAIN_SNOW 16
#define BATTLE_TERRAIN_ICE 17
#define BATTLE_TERRAIN_VOLCANO 18
#define BATTLE_TERRAIN_DISTORTION_WORLD 19
#define BATTLE_TERRAIN_SPACE 20
#define BATTLE_TERRAIN_ULTRA_SPACE 21
#define B_WAIT_TIME_LONG 64
#define B_WAIT_TIME_MED 48

View File

@ -153,6 +153,7 @@
#define B_MEMENTO_FAIL GEN_7 // In Gen4+, Memento fails if there is no target or if the target is protected or behind substitute. But not if Atk/Sp. Atk are at -6.
#define B_GLARE_GHOST GEN_7 // In Gen4+, Glare can hit Ghost-type Pokémon normally.
#define B_SKILL_SWAP GEN_7 // In Gen4+, Skill Swap triggers switch-in abilities after use.
#define B_SECRET_POWER_EFFECT GEN_7 // Secret Power's effects change depending on the generation. See GetSecretPowerMoveEffect.
// Ability settings
#define B_ABILITY_WEATHER GEN_7 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability.

View File

@ -12483,7 +12483,11 @@ u16 GetSecretPowerMoveEffect(void)
switch (gBattleTerrain)
{
case BATTLE_TERRAIN_GRASS:
moveEffect = MOVE_EFFECT_SLEEP;
#if B_SECRET_POWER_EFFECT >= GEN_4
moveEffect = MOVE_EFFECT_SLEEP;
#else
moveEffect = MOVE_EFFECT_POISON;
#endif
break;
case BATTLE_TERRAIN_LONG_GRASS:
moveEffect = MOVE_EFFECT_SLEEP;
@ -12492,20 +12496,59 @@ u16 GetSecretPowerMoveEffect(void)
moveEffect = MOVE_EFFECT_ACC_MINUS_1;
break;
case BATTLE_TERRAIN_UNDERWATER:
moveEffect = MOVE_EFFECT_ATK_MINUS_1;
#if B_SECRET_POWER_EFFECT >= GEN_6
moveEffect = MOVE_EFFECT_ATK_MINUS_1;
#else
moveEffect = MOVE_EFFECT_DEF_MINUS_1;
#endif
break;
case BATTLE_TERRAIN_WATER:
moveEffect = MOVE_EFFECT_ATK_MINUS_1;
break;
case BATTLE_TERRAIN_POND:
moveEffect = MOVE_EFFECT_ATK_MINUS_1;
#if B_SECRET_POWER_EFFECT >= GEN_4
moveEffect = MOVE_EFFECT_ATK_MINUS_1;
#else
moveEffect = MOVE_EFFECT_SPD_MINUS_1;
#endif
break;
case BATTLE_TERRAIN_MOUNTAIN:
moveEffect = MOVE_EFFECT_ACC_MINUS_1;
#if B_SECRET_POWER_EFFECT >= GEN_5
moveEffect = MOVE_EFFECT_ACC_MINUS_1;
#elif B_SECRET_POWER_EFFECT == GEN_4
moveEffect = MOVE_EFFECT_FLINCH;
#else
moveEffect = MOVE_EFFECT_CONFUSION;
#endif
break;
case BATTLE_TERRAIN_CAVE:
case BATTLE_TERRAIN_BURIAL_GROUND:
case BATTLE_TERRAIN_SPACE:
moveEffect = MOVE_EFFECT_FLINCH;
break;
case BATTLE_TERRAIN_SOARING:
case BATTLE_TERRAIN_SKY_PILLAR:
case BATTLE_TERRAIN_MARSH:
case BATTLE_TERRAIN_SWAMP:
moveEffect = MOVE_EFFECT_SPD_MINUS_1;
break;
case BATTLE_TERRAIN_PUDDLE:
#if B_SECRET_POWER_EFFECT >= GEN_5
moveEffect = MOVE_EFFECT_SPD_MINUS_1;
#else
moveEffect = MOVE_EFFECT_ACC_MINUS_1;
#endif
break;
case BATTLE_TERRAIN_SNOW:
case BATTLE_TERRAIN_ICE:
moveEffect = MOVE_EFFECT_FREEZE;
break;
case BATTLE_TERRAIN_VOLCANO:
moveEffect = MOVE_EFFECT_BURN;
break;
case BATTLE_TERRAIN_ULTRA_SPACE:
moveEffect = MOVE_EFFECT_DEF_MINUS_1;
break;
default:
moveEffect = MOVE_EFFECT_PARALYSIS;
break;