Removed Mind Blown effect in favor of move flag (#7138)

This commit is contained in:
Eduardo Quezada 2025-06-16 18:02:46 -04:00 committed by GitHub
parent 651e87af5f
commit 5966852f8d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 19 additions and 27 deletions

View File

@ -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,

View File

@ -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;

View File

@ -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:

View File

@ -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:

View File

@ -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)

View File

@ -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;

View File

@ -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,

View File

@ -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,

View File

@ -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")