Overheat (and clones)

Also, Syrup Bomb (really weird script)
This commit is contained in:
Nephrite 2023-12-24 23:27:21 +09:00
parent a244d7b8b6
commit a8967da1c5
7 changed files with 57 additions and 68 deletions

View File

@ -221,7 +221,7 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectMudSport @ EFFECT_MUD_SPORT
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_197
.4byte BattleScript_EffectHit @ EFFECT_WEATHER_BALL
.4byte BattleScript_EffectOverheat @ EFFECT_OVERHEAT
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_199
.4byte BattleScript_EffectTickle @ EFFECT_TICKLE
.4byte BattleScript_EffectCosmicPower @ EFFECT_COSMIC_POWER
.4byte BattleScript_EffectSkyUppercut @ EFFECT_SKY_UPPERCUT
@ -432,7 +432,6 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_408
.4byte BattleScript_EffectSaltCure @ EFFECT_SALT_CURE
.4byte BattleScript_EffectSyrupBomb @ EFFECT_SYRUP_BOMB
.4byte BattleScript_EffectHit @ EFFECT_IVY_CUDGEL
.4byte BattleScript_EffectMaxMove @ EFFECT_MAX_MOVE
.4byte BattleScript_EffectGlaiveRush @ EFFECT_GLAIVE_RUSH
@ -443,12 +442,6 @@ BattleScript_EffectGlaiveRush::
setglaiverush
goto BattleScript_TryFaintMon
BattleScript_EffectSyrupBomb::
setmoveeffect MOVE_EFFECT_SYRUP_BOMB
call BattleScript_EffectHit_Ret
tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_SyrupBombActivates::
printstring STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP
waitmessage B_WAIT_TIME_LONG
@ -5891,10 +5884,6 @@ BattleScript_EffectWaterSport::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_EffectOverheat::
setmoveeffect MOVE_EFFECT_SP_ATK_TWO_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectHammerArm::
setmoveeffect MOVE_EFFECT_SPD_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit

View File

@ -200,7 +200,7 @@
#define EFFECT_MUD_SPORT 196
#define EFFECT_UNUSED_197 197
#define EFFECT_WEATHER_BALL 198
#define EFFECT_OVERHEAT 199
#define EFFECT_UNUSED_199 199
#define EFFECT_TICKLE 200
#define EFFECT_COSMIC_POWER 201
#define EFFECT_SKY_UPPERCUT 202
@ -413,11 +413,10 @@
#define EFFECT_POPULATION_BOMB 407
#define EFFECT_UNUSED_408 408
#define EFFECT_SALT_CURE 409
#define EFFECT_SYRUP_BOMB 410
#define EFFECT_IVY_CUDGEL 411
#define EFFECT_MAX_MOVE 412
#define EFFECT_GLAIVE_RUSH 413
#define EFFECT_IVY_CUDGEL 410
#define EFFECT_MAX_MOVE 411
#define EFFECT_GLAIVE_RUSH 412
#define NUM_BATTLE_MOVE_EFFECTS 414
#define NUM_BATTLE_MOVE_EFFECTS 413
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H

View File

@ -4340,7 +4340,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
ADJUST_SCORE(1);
break;
case EFFECT_SUPERPOWER:
case EFFECT_OVERHEAT:
case EFFECT_MAKE_IT_RAIN:
if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY)
ADJUST_SCORE(3);
@ -4871,6 +4870,11 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
if (sereneGraceBoost)
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPATK, &score);
break;
// case EFFECT_SUPERPOWER:
case MOVE_EFFECT_SP_ATK_TWO_DOWN:
if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY)
ADJUST_SCORE(3);
break;
}
}
else // consider move effects that hinder the target

View File

@ -956,7 +956,6 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s
{
case EFFECT_RECHARGE:
case EFFECT_SUPERPOWER:
case EFFECT_OVERHEAT:
case EFFECT_MAKE_IT_RAIN:
case EFFECT_MIND_BLOWN:
case EFFECT_STEEL_BEAM:
@ -978,6 +977,7 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s
case MOVE_EFFECT_DEF_MINUS_1:
case MOVE_EFFECT_SPD_MINUS_1:
case MOVE_EFFECT_SP_ATK_MINUS_1:
case MOVE_EFFECT_SP_ATK_TWO_DOWN:
case MOVE_EFFECT_SP_DEF_MINUS_1:
case MOVE_EFFECT_SP_DEF_MINUS_2:
if ((gBattleMoves[move].additionalEffects[i].self && GetBattlerAbility(battlerAtk) != ABILITY_CONTRARY)

View File

@ -267,7 +267,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
// [EFFECT_BLAZE_KICK] = 1,
[EFFECT_MUD_SPORT] = 4,
[EFFECT_WEATHER_BALL] = 1,
[EFFECT_OVERHEAT] = 3,
[EFFECT_TICKLE] = 1,
[EFFECT_COSMIC_POWER] = 1,
[EFFECT_SKY_UPPERCUT] = 1,

View File

@ -1145,7 +1145,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.zMoveEffect = Z_EFFECT_NONE,
.ignoresKingsRock = B_UPDATED_MOVE_FLAGS < GEN_3,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -3884,7 +3884,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.makesContact = TRUE,
.sheerForceBoost = TRUE,
ADDITIONAL_EFFECTS(
SECONDARY_EFFECT_SELF(MOVE_EFFECT_DEF_PLUS_1, 10),
SECONDARY_EFFECT_SELF(MOVE_EFFECT_DEF_PLUS_1, 10)
),
},
@ -5607,7 +5607,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -5623,7 +5623,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -5740,23 +5740,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
[MOVE_OVERHEAT] =
{
#if B_UPDATED_MOVE_DATA >= GEN_6
.power = 130,
#elif B_UPDATED_MOVE_DATA >= GEN_4
.power = 140,
#else
.power = 140,
.makesContact = TRUE,
#endif
.effect = EFFECT_OVERHEAT,
.effect = EFFECT_HIT,
.power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140,
.type = TYPE_FIRE,
.accuracy = 90,
.pp = 5,
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
.makesContact = B_UPDATED_MOVE_DATA < GEN_4,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_SP_ATK_TWO_DOWN)
),
},
[MOVE_ODOR_SLEUTH] =
@ -6161,7 +6157,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -6456,16 +6452,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
[MOVE_PSYCHO_BOOST] =
{
.effect = EFFECT_OVERHEAT,
.effect = EFFECT_HIT,
.power = 140,
.type = TYPE_PSYCHIC,
.accuracy = 90,
.pp = 5,
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_SP_ATK_TWO_DOWN)
),
},
[MOVE_ROOST] =
@ -7537,7 +7535,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.zMoveEffect = Z_EFFECT_NONE,
.makesContact = TRUE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -7655,9 +7653,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.sheerForceBoost = TRUE,
.bitingMove = TRUE,
ADDITIONAL_EFFECTS(
SECONDARY_EFFECT(B_USE_FROSTBITE ? MOVE_EFFECT_FROSTBITE : MOVE_EFFECT_FREEZE, 10),
SECONDARY_EFFECT(MOVE_EFFECT_FREEZE_OR_FROSTBITE, 10),
SECONDARY_EFFECT(MOVE_EFFECT_FLINCH, 10)
)
),
},
[MOVE_FIRE_FANG] =
@ -7833,20 +7831,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
[MOVE_DRACO_METEOR] =
{
#if B_UPDATED_MOVE_DATA >= GEN_6
.power = 130,
#else
.power = 140,
#endif
.effect = EFFECT_OVERHEAT,
.effect = EFFECT_HIT,
.power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140,
.type = TYPE_DRAGON,
.accuracy = 90,
.pp = 5,
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_SP_ATK_TWO_DOWN)
),
},
[MOVE_DISCHARGE] =
@ -7885,20 +7881,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
[MOVE_LEAF_STORM] =
{
#if B_UPDATED_MOVE_DATA >= GEN_6
.power = 130,
#else
.power = 140,
#endif
.effect = EFFECT_OVERHEAT,
.effect = EFFECT_HIT,
.power = B_UPDATED_MOVE_DATA >= GEN_6 ? 130 : 140,
.type = TYPE_GRASS,
.accuracy = 90,
.pp = 5,
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_SP_ATK_TWO_DOWN)
),
},
[MOVE_POWER_WHIP] =
@ -7929,7 +7923,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.zMoveEffect = Z_EFFECT_NONE,
.ballisticMove = TRUE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -8274,7 +8268,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -10566,7 +10560,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.sheerForceBoost = TRUE,
.metronomeBanned = TRUE,
ADDITIONAL_EFFECTS(
SECONDARY_EFFECT_SELF(B_UPDATED_MOVE_DATA >= GEN_7 ? MOVE_EFFECT_DEF_PLUS_2: MOVE_EFFECT_DEF_PLUS_1, 50),
SECONDARY_EFFECT_SELF(B_UPDATED_MOVE_DATA >= GEN_7 ? MOVE_EFFECT_DEF_PLUS_2: MOVE_EFFECT_DEF_PLUS_1, 50)
),
},
@ -11707,17 +11701,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
[MOVE_FLEUR_CANNON] =
{
.effect = EFFECT_OVERHEAT,
.effect = EFFECT_HIT,
.power = 130,
.type = TYPE_FAIRY,
.accuracy = 90,
.pp = 5,
.secondaryEffectChance = 100,
.target = MOVE_TARGET_SELECTED,
.priority = 0,
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
.metronomeBanned = TRUE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_SP_ATK_TWO_DOWN)
),
},
[MOVE_PSYCHIC_FANGS] =
@ -11813,7 +11809,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -12335,7 +12331,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.makesContact = TRUE,
.bitingMove = TRUE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT(MOVE_EFFECT_TRAP_BOTH),
PRIMARY_EFFECT(MOVE_EFFECT_TRAP_BOTH)
),
},
@ -12853,7 +12849,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.metronomeBanned = TRUE,
.instructBanned = TRUE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -12870,7 +12866,7 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.zMoveEffect = Z_EFFECT_NONE,
.metronomeBanned = TRUE,
ADDITIONAL_EFFECTS(
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE),
PRIMARY_EFFECT_SELF(MOVE_EFFECT_RECHARGE)
),
},
@ -14766,23 +14762,25 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
.healBlockBanned = B_EXTRAPOLATED_MOVE_FLAGS,
ADDITIONAL_EFFECTS(
SECONDARY_EFFECT(MOVE_EFFECT_BURN, 20)
)
),
},
[MOVE_SYRUP_BOMB] =
{
.effect = EFFECT_SYRUP_BOMB,
.effect = EFFECT_HIT,
.power = 60,
.type = TYPE_GRASS,
.accuracy = 85,
.pp = 10,
.secondaryEffectChance = 100, // syrup bomb volatile status
.target = MOVE_TARGET_SELECTED,
.priority = 0,
.split = SPLIT_SPECIAL,
.zMoveEffect = Z_EFFECT_NONE,
.ballisticMove = TRUE,
.metronomeBanned = TRUE,
ADDITIONAL_EFFECTS(
SECONDARY_EFFECT(MOVE_EFFECT_SYRUP_BOMB, 100)
),
},
[MOVE_IVY_CUDGEL] =

View File

@ -82,7 +82,7 @@ SINGLE_BATTLE_TEST("Contrary raises stats after using a move which would normall
PARAMETRIZE { ability = ABILITY_CONTRARY; }
PARAMETRIZE { ability = ABILITY_TANGLED_FEET; }
GIVEN {
ASSUME(gBattleMoves[MOVE_OVERHEAT].effect == EFFECT_OVERHEAT);
ASSUME(gBattleMoves[MOVE_OVERHEAT].additionalEffects[0].moveEffect == MOVE_EFFECT_SP_ATK_TWO_DOWN);
ASSUME(gBattleMoves[MOVE_OVERHEAT].split == SPLIT_SPECIAL);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_SPINDA) { Ability(ability); }