Removed Mind Blown effect in favor of move flag (#7138)
This commit is contained in:
parent
651e87af5f
commit
5966852f8d
@ -308,7 +308,6 @@ enum BattleMoveEffects
|
||||
EFFECT_BEAK_BLAST,
|
||||
EFFECT_COURT_CHANGE,
|
||||
EFFECT_MAX_HP_50_RECOIL,
|
||||
EFFECT_MIND_BLOWN, // Same as EFFECT_MAX_HP_50_RECOIL but is cancelled by Damp
|
||||
EFFECT_CHLOROBLAST, // Same effect as EFFECT_MAX_HP_50_RECOIL but follows the same rules as EFFECT_RECOIL
|
||||
EFFECT_EXTREME_EVOBOOST,
|
||||
EFFECT_HIT_SET_REMOVE_TERRAIN,
|
||||
|
||||
@ -131,9 +131,10 @@ struct MoveInfo
|
||||
bool32 parentalBondBanned:1;
|
||||
bool32 skyBattleBanned:1;
|
||||
bool32 sketchBanned:1;
|
||||
bool32 dampBanned:1;
|
||||
//Other
|
||||
bool32 validApprenticeMove:1;
|
||||
u32 padding:7;
|
||||
u32 padding:6;
|
||||
// end of word
|
||||
|
||||
union {
|
||||
@ -474,6 +475,11 @@ static inline bool32 IsMoveSketchBanned(u32 moveId)
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].sketchBanned;
|
||||
}
|
||||
|
||||
static inline bool32 IsMoveDampBanned(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].dampBanned;
|
||||
}
|
||||
|
||||
static inline bool32 IsValidApprenticeMove(u32 moveId)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].validApprenticeMove;
|
||||
|
||||
@ -2746,17 +2746,14 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
}
|
||||
else
|
||||
{
|
||||
enum BattleMoveEffects instructedEffect = GetMoveEffect(instructedMove);
|
||||
if (GetBattlerMoveTargetType(battlerDef, instructedMove) & (MOVE_TARGET_SELECTED
|
||||
| MOVE_TARGET_DEPENDS
|
||||
| MOVE_TARGET_RANDOM
|
||||
| MOVE_TARGET_BOTH
|
||||
| MOVE_TARGET_FOES_AND_ALLY
|
||||
| MOVE_TARGET_OPPONENTS_FIELD)
|
||||
&& instructedEffect != EFFECT_MIND_BLOWN && instructedEffect != EFFECT_MAX_HP_50_RECOIL)
|
||||
&& GetMoveEffect(instructedMove) != EFFECT_MAX_HP_50_RECOIL)
|
||||
ADJUST_SCORE(-10); //Don't force the enemy to attack you again unless it can kill itself with Mind Blown
|
||||
else if (instructedEffect != EFFECT_MIND_BLOWN)
|
||||
ADJUST_SCORE(-5); //Do something better
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -5496,7 +5493,6 @@ static s32 AI_Risky(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
ADJUST_SCORE(AVERAGE_RISKY_EFFECT);
|
||||
break;
|
||||
case EFFECT_MAX_HP_50_RECOIL:
|
||||
case EFFECT_MIND_BLOWN:
|
||||
case EFFECT_CHLOROBLAST:
|
||||
case EFFECT_SWAGGER:
|
||||
case EFFECT_FLATTER:
|
||||
|
||||
@ -535,6 +535,9 @@ bool32 IsDamageMoveUnusable(struct DamageContext *ctx)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (IsMoveDampBanned(ctx->move) && (battlerDefAbility == ABILITY_DAMP || partnerDefAbility == ABILITY_DAMP))
|
||||
return TRUE;
|
||||
|
||||
switch (GetMoveEffect(ctx->move))
|
||||
{
|
||||
case EFFECT_DREAM_EATER:
|
||||
@ -570,12 +573,6 @@ bool32 IsDamageMoveUnusable(struct DamageContext *ctx)
|
||||
if (!gDisableStructs[ctx->battlerAtk].isFirstTurn)
|
||||
return TRUE;
|
||||
break;
|
||||
case EFFECT_EXPLOSION:
|
||||
case EFFECT_MISTY_EXPLOSION:
|
||||
case EFFECT_MIND_BLOWN:
|
||||
if (battlerDefAbility == ABILITY_DAMP || partnerDefAbility == ABILITY_DAMP)
|
||||
return TRUE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1007,7 +1004,6 @@ static bool32 AI_IsMoveEffectInMinus(u32 battlerAtk, u32 battlerDef, u32 move, s
|
||||
switch (GetMoveEffect(move))
|
||||
{
|
||||
case EFFECT_MAX_HP_50_RECOIL:
|
||||
case EFFECT_MIND_BLOWN:
|
||||
case EFFECT_CHLOROBLAST:
|
||||
case EFFECT_EXPLOSION:
|
||||
case EFFECT_MISTY_EXPLOSION:
|
||||
|
||||
@ -6982,7 +6982,6 @@ static void Cmd_moveend(void)
|
||||
effect = TRUE;
|
||||
break;
|
||||
case EFFECT_MAX_HP_50_RECOIL:
|
||||
case EFFECT_MIND_BLOWN:
|
||||
if (IsBattlerAlive(gBattlerAttacker)
|
||||
&& !(gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_FAILED)
|
||||
&& GetBattlerAbility(gBattlerAttacker) != ABILITY_MAGIC_GUARD)
|
||||
|
||||
@ -2354,11 +2354,8 @@ static void CancellerPsychicTerrain(u32 *effect)
|
||||
|
||||
static void CancellerExplodingDamp(u32 *effect)
|
||||
{
|
||||
enum BattleMoveEffects moveEffect = GetMoveEffect(gCurrentMove);
|
||||
u32 dampBattler = IsAbilityOnField(ABILITY_DAMP);
|
||||
if (dampBattler && (moveEffect == EFFECT_EXPLOSION
|
||||
|| moveEffect == EFFECT_MISTY_EXPLOSION
|
||||
|| moveEffect == EFFECT_MIND_BLOWN))
|
||||
if (dampBattler && IsMoveDampBanned(gCurrentMove))
|
||||
{
|
||||
gBattleScripting.battler = dampBattler - 1;
|
||||
gBattlescriptCurrInstr = BattleScript_DampStopsExplosion;
|
||||
|
||||
@ -1966,12 +1966,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
||||
.battleTvScore = 0, // TODO: Assign points
|
||||
},
|
||||
|
||||
[EFFECT_MIND_BLOWN] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectHit,
|
||||
.battleTvScore = 0, // TODO: Assign points
|
||||
},
|
||||
|
||||
[EFFECT_CHLOROBLAST] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectHit,
|
||||
|
||||
@ -3221,6 +3221,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_PHYSICAL,
|
||||
.parentalBondBanned = TRUE,
|
||||
.dampBanned = TRUE,
|
||||
.contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
|
||||
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
||||
.contestComboStarterId = 0,
|
||||
@ -4082,6 +4083,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_PHYSICAL,
|
||||
.parentalBondBanned = TRUE,
|
||||
.dampBanned = TRUE,
|
||||
.contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
|
||||
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
||||
.contestComboStarterId = 0,
|
||||
@ -17135,7 +17137,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.description = COMPOUND_STRING(
|
||||
"It explodes the user's head\n"
|
||||
"to damage everything around."),
|
||||
.effect = EFFECT_MIND_BLOWN,
|
||||
.effect = EFFECT_MAX_HP_50_RECOIL,
|
||||
.power = 150,
|
||||
.type = TYPE_FIRE,
|
||||
.accuracy = 100,
|
||||
@ -17144,6 +17146,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_SPECIAL,
|
||||
.metronomeBanned = TRUE,
|
||||
.dampBanned = TRUE,
|
||||
.contestEffect = CONTEST_EFFECT_USER_MORE_EASILY_STARTLED,
|
||||
.contestCategory = CONTEST_CATEGORY_BEAUTY,
|
||||
.contestComboStarterId = 0,
|
||||
@ -18552,6 +18555,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
||||
.target = MOVE_TARGET_FOES_AND_ALLY,
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_SPECIAL,
|
||||
.dampBanned = TRUE,
|
||||
.contestEffect = CONTEST_EFFECT_GREAT_APPEAL_BUT_NO_MORE_MOVES,
|
||||
.contestCategory = CONTEST_CATEGORY_CUTE,
|
||||
.contestComboStarterId = 0,
|
||||
|
||||
@ -3,7 +3,8 @@
|
||||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_MIND_BLOWN) == EFFECT_MIND_BLOWN);
|
||||
ASSUME(GetMoveEffect(MOVE_MIND_BLOWN) == EFFECT_MAX_HP_50_RECOIL);
|
||||
ASSUME(IsMoveDampBanned(MOVE_MIND_BLOWN));
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Mind Blown makes the user lose 1/2 of its Max HP")
|
||||
Loading…
x
Reference in New Issue
Block a user