Freeze/frostbite causing moves
Added move effect FREEZE_OR_FROSTBITE macro so that we only need that if statement once...
This commit is contained in:
parent
5eae07e4b9
commit
98b2c93b3f
10 changed files with 38 additions and 74 deletions
|
@ -27,7 +27,7 @@ gBattleScriptsForMoveEffects::
|
|||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_2
|
||||
.4byte BattleScript_EffectAbsorb @ EFFECT_ABSORB
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_4
|
||||
.4byte BattleScript_EffectFreezeHit @ EFFECT_FREEZE_HIT
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_5
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_6
|
||||
.4byte BattleScript_EffectExplosion @ EFFECT_EXPLOSION
|
||||
.4byte BattleScript_EffectDreamEater @ EFFECT_DREAM_EATER
|
||||
|
@ -283,11 +283,7 @@ gBattleScriptsForMoveEffects::
|
|||
.4byte BattleScript_EffectHealPulse @ EFFECT_HEAL_PULSE
|
||||
.4byte BattleScript_EffectQuash @ EFFECT_QUASH
|
||||
.4byte BattleScript_EffectIonDeluge @ EFFECT_ION_DELUGE
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
.4byte BattleScript_EffectFrostbiteHit @ EFFECT_FREEZE_DRY
|
||||
#else
|
||||
.4byte BattleScript_EffectFreezeHit @ EFFECT_FREEZE_DRY
|
||||
#endif
|
||||
.4byte BattleScript_EffectHit @ EFFECT_FREEZE_DRY
|
||||
.4byte BattleScript_EffectTopsyTurvy @ EFFECT_TOPSY_TURVY
|
||||
.4byte BattleScript_EffectMistyTerrain @ EFFECT_MISTY_TERRAIN
|
||||
.4byte BattleScript_EffectGrassyTerrain @ EFFECT_GRASSY_TERRAIN
|
||||
|
@ -423,7 +419,7 @@ gBattleScriptsForMoveEffects::
|
|||
.4byte BattleScript_EffectDireClaw @ EFFECT_DIRE_CLAW
|
||||
.4byte BattleScript_EffectHit @ EFFECT_BARB_BARRAGE
|
||||
.4byte BattleScript_EffectRevivalBlessing @ EFFECT_REVIVAL_BLESSING
|
||||
.4byte BattleScript_EffectFrostbiteHit @ EFFECT_FROSTBITE_HIT
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_397
|
||||
.4byte BattleScript_EffectSnow @ EFFECT_SNOWSCAPE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_UNUSED_399
|
||||
.4byte BattleScript_EffectHit @ EFFECT_INFERNAL_PARADE
|
||||
|
@ -3347,18 +3343,10 @@ BattleScript_AbsorbHealBlock::
|
|||
tryfaintmon BS_TARGET
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectFrostbiteHit::
|
||||
setmoveeffect MOVE_EFFECT_FROSTBITE
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectSleepHit::
|
||||
setmoveeffect MOVE_EFFECT_SLEEP
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectFreezeHit::
|
||||
setmoveeffect MOVE_EFFECT_FREEZE
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectExplosion_AnimDmgRet:
|
||||
jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionAnimRet
|
||||
call BattleScript_PreserveMissedBitDoMoveAnim
|
||||
|
|
|
@ -316,6 +316,7 @@
|
|||
#define MOVE_EFFECT_TOXIC 6
|
||||
#define MOVE_EFFECT_FROSTBITE 7
|
||||
#define PRIMARY_STATUS_MOVE_EFFECT MOVE_EFFECT_FROSTBITE // All above move effects apply primary status
|
||||
#define MOVE_EFFECT_FREEZE_OR_FROSTBITE (B_USE_FROSTBITE == TRUE ? MOVE_EFFECT_FROSTBITE : MOVE_EFFECT_FREEZE)
|
||||
#define MOVE_EFFECT_CONFUSION 8
|
||||
#define MOVE_EFFECT_FLINCH 9
|
||||
#define MOVE_EFFECT_TRI_ATTACK 10
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#define EFFECT_UNUSED_2 2
|
||||
#define EFFECT_ABSORB 3
|
||||
#define EFFECT_UNUSED_4 4
|
||||
#define EFFECT_FREEZE_HIT 5
|
||||
#define EFFECT_UNUSED_5 5
|
||||
#define EFFECT_UNUSED_6 6
|
||||
#define EFFECT_EXPLOSION 7
|
||||
#define EFFECT_DREAM_EATER 8
|
||||
|
@ -400,7 +400,7 @@
|
|||
#define EFFECT_DIRE_CLAW 394
|
||||
#define EFFECT_BARB_BARRAGE 395
|
||||
#define EFFECT_REVIVAL_BLESSING 396
|
||||
#define EFFECT_FROSTBITE_HIT 397
|
||||
#define EFFECT_UNUSED_397 397
|
||||
#define EFFECT_SNOWSCAPE 398
|
||||
#define EFFECT_UNUSED_399 399
|
||||
#define EFFECT_INFERNAL_PARADE 400
|
||||
|
|
|
@ -850,10 +850,6 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3
|
|||
if (AI_CanPoison(battlerAtk, battlerDef, abilityDef, move, MOVE_NONE))
|
||||
return TRUE;
|
||||
break;
|
||||
case EFFECT_FREEZE_HIT:
|
||||
if (AI_CanGetFrostbite(battlerDef, abilityDef))
|
||||
return TRUE;
|
||||
break;
|
||||
case EFFECT_HIT_ESCAPE:
|
||||
if (CountUsablePartyMons(battlerAtk) != 0 && ShouldPivot(battlerAtk, battlerDef, abilityDef, move, AI_THINKING_STRUCT->movesetIndex))
|
||||
return TRUE;
|
||||
|
@ -932,8 +928,7 @@ static bool32 AI_IsMoveEffectInPlus(u32 battlerAtk, u32 battlerDef, u32 move, s3
|
|||
if (AI_CanBurn(battlerAtk, battlerDef, abilityDef, BATTLE_PARTNER(battlerAtk), move, MOVE_NONE))
|
||||
return TRUE;
|
||||
break;
|
||||
case MOVE_EFFECT_FREEZE:
|
||||
case MOVE_EFFECT_FROSTBITE:
|
||||
case MOVE_EFFECT_FREEZE_OR_FROSTBITE:
|
||||
if (AI_CanGetFrostbite(battlerDef, abilityDef))
|
||||
return TRUE;
|
||||
break;
|
||||
|
|
|
@ -89,7 +89,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
|
|||
[EFFECT_HIT] = 1,
|
||||
[EFFECT_SLEEP] = 1,
|
||||
[EFFECT_ABSORB] = 4,
|
||||
[EFFECT_FREEZE_HIT] = 1,
|
||||
[EFFECT_EXPLOSION] = 0,
|
||||
[EFFECT_DREAM_EATER] = 5,
|
||||
[EFFECT_MIRROR_MOVE] = 1,
|
||||
|
@ -468,7 +467,6 @@ static const u16 sPoints_MoveEffect[NUM_BATTLE_MOVE_EFFECTS] =
|
|||
[EFFECT_DOUBLE_SHOCK] = 0, // TODO: Assign points
|
||||
[EFFECT_SPECIAL_ATTACK_UP_HIT] = 1,
|
||||
[EFFECT_VICTORY_DANCE] = 0, // TODO: Assign points
|
||||
[EFFECT_FROSTBITE_HIT] = 1,
|
||||
};
|
||||
|
||||
static const u16 sPoints_Effectiveness[] =
|
||||
|
|
|
@ -79,7 +79,7 @@ static const u16 sBurningMoves[] = {
|
|||
MOVE_BLAZING_TORQUE,
|
||||
};
|
||||
|
||||
// EFFECT_FREEZE, EFFECT_FREEZE_HIT
|
||||
// EFFECT_FREEZE, MOVE_EFFECT_FREEZE_OR_FROSTBITE
|
||||
static const u16 sFrostbiteMoves[] = {
|
||||
MOVE_ICE_PUNCH,
|
||||
MOVE_ICE_BEAM,
|
||||
|
|
|
@ -129,16 +129,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
|
||||
[MOVE_ICE_PUNCH] =
|
||||
{
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
.effect = EFFECT_FROSTBITE_HIT,
|
||||
#else
|
||||
.effect = EFFECT_FREEZE_HIT,
|
||||
#endif
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 75,
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 100,
|
||||
.pp = 15,
|
||||
.secondaryEffectChance = 10,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
|
@ -146,6 +141,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.makesContact = TRUE,
|
||||
.punchingMove = TRUE,
|
||||
.sheerForceBoost = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT(MOVE_EFFECT_FREEZE_OR_FROSTBITE, 10)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_THUNDER_PUNCH] =
|
||||
|
@ -1041,20 +1039,18 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
#endif
|
||||
// The following effect is also relevant in battle_pike.c
|
||||
// If you cherry-pick this to use something other than the config, make sure to update it there too
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
.effect = EFFECT_FROSTBITE_HIT,
|
||||
#else
|
||||
.effect = EFFECT_FREEZE_HIT,
|
||||
#endif
|
||||
.effect = EFFECT_HIT,
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 10,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = Z_EFFECT_NONE,
|
||||
.sheerForceBoost = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT(MOVE_EFFECT_FREEZE_OR_FROSTBITE, 10)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_BLIZZARD] =
|
||||
|
@ -1064,21 +1060,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
#else
|
||||
.power = 120,
|
||||
#endif
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
.effect = EFFECT_FROSTBITE_HIT,
|
||||
#else
|
||||
.effect = EFFECT_FREEZE_HIT,
|
||||
#endif
|
||||
.effect = EFFECT_HIT,
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 70,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 10,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = Z_EFFECT_NONE,
|
||||
.sheerForceBoost = TRUE,
|
||||
.windMove = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT(MOVE_EFFECT_FREEZE_OR_FROSTBITE, 10)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_PSYBEAM] =
|
||||
|
@ -3274,21 +3268,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
|
||||
[MOVE_POWDER_SNOW] =
|
||||
{
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
.effect = EFFECT_FROSTBITE_HIT,
|
||||
#else
|
||||
.effect = EFFECT_FREEZE_HIT,
|
||||
#endif
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 40,
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 100,
|
||||
.pp = 25,
|
||||
.secondaryEffectChance = 10,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = Z_EFFECT_NONE,
|
||||
.sheerForceBoost = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT(MOVE_EFFECT_FREEZE_OR_FROSTBITE, 10)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_PROTECT] =
|
||||
|
@ -12184,9 +12176,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
.zMoveEffect = Z_EFFECT_NONE,
|
||||
.makesContact = TRUE,
|
||||
.bitingMove = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
PRIMARY_EFFECT(MOVE_EFFECT_TRAP_BOTH)
|
||||
)
|
||||
// ADDITIONAL_EFFECTS( // broke it oops
|
||||
// PRIMARY_EFFECT(MOVE_EFFECT_TRAP_BOTH),
|
||||
// )
|
||||
},
|
||||
|
||||
[MOVE_STUFF_CHEEKS] =
|
||||
|
@ -13112,21 +13104,19 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
|||
[MOVE_FREEZING_GLARE] =
|
||||
{
|
||||
.power = 90,
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
.effect = EFFECT_FROSTBITE_HIT,
|
||||
#else
|
||||
.effect = EFFECT_FREEZE_HIT,
|
||||
#endif
|
||||
.effect = EFFECT_HIT,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 10,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = Z_EFFECT_NONE,
|
||||
.sheerForceBoost = TRUE,
|
||||
.metronomeBanned = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT(MOVE_EFFECT_FREEZE_OR_FROSTBITE, 10)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_FIERY_WRATH] =
|
||||
|
|
|
@ -9,29 +9,21 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents non-volatile status conditions in sun")
|
|||
PARAMETRIZE { move = MOVE_HYPNOSIS; status = STATUS1_SLEEP; }
|
||||
PARAMETRIZE { move = MOVE_THUNDER_WAVE; status = STATUS1_PARALYSIS; }
|
||||
PARAMETRIZE { move = MOVE_TOXIC; status = STATUS1_TOXIC_POISON; }
|
||||
PARAMETRIZE { move = MOVE_POWDER_SNOW; status = STATUS1_FREEZE; }
|
||||
// PARAMETRIZE { move = MOVE_POWDER_SNOW; status = STATUS1_FREEZE; } // Pointless since you can't freeze in sunlight anyway
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_WILL_O_WISP].effect == EFFECT_WILL_O_WISP);
|
||||
ASSUME(gBattleMoves[MOVE_HYPNOSIS].effect == EFFECT_SLEEP);
|
||||
ASSUME(gBattleMoves[MOVE_THUNDER_WAVE].effect == EFFECT_PARALYZE);
|
||||
ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC);
|
||||
ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT);
|
||||
PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUNNY_DAY); MOVE(opponent, move); }
|
||||
} SCENE {
|
||||
if (move != MOVE_POWDER_SNOW) {
|
||||
NOT ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
ABILITY_POPUP(player, ABILITY_LEAF_GUARD);
|
||||
MESSAGE("It doesn't affect Leafeon…");
|
||||
NOT STATUS_ICON(player, status);
|
||||
} else {
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(player, ABILITY_LEAF_GUARD);
|
||||
STATUS_ICON(player, status);
|
||||
}
|
||||
}
|
||||
NOT ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
ABILITY_POPUP(player, ABILITY_LEAF_GUARD);
|
||||
MESSAGE("It doesn't affect Leafeon…");
|
||||
NOT STATUS_ICON(player, status);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Purifying Salt grants immunity to status effects")
|
|||
ASSUME(gBattleMoves[MOVE_HYPNOSIS].effect == EFFECT_SLEEP);
|
||||
ASSUME(gBattleMoves[MOVE_THUNDER_WAVE].effect == EFFECT_PARALYZE);
|
||||
ASSUME(gBattleMoves[MOVE_TOXIC].effect == EFFECT_TOXIC);
|
||||
ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT);
|
||||
ASSUME(gBattleMoves[MOVE_POWDER_SNOW].additionalEffects[0].moveEffect == MOVE_EFFECT_FREEZE_OR_FROSTBITE);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_PURIFYING_SALT); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gBattleMoves[MOVE_POWDER_SNOW].effect == EFFECT_FREEZE_HIT);
|
||||
ASSUME(gBattleMoves[MOVE_POWDER_SNOW].additionalEffects[0].moveEffect == MOVE_EFFECT_FREEZE_OR_FROSTBITE);
|
||||
ASSUME(gBattleMoves[MOVE_BLIZZARD].accuracy == 70);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue