Updated remaining moves which use secondaryEffectChance
secondaryEffectChance is no longer considered anywhere in the code; tidied up scripts and more
This commit is contained in:
parent
76b4e08e5e
commit
c5061f0161
@ -1808,10 +1808,6 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro argumentstatuseffect
|
||||
various BS_ATTACKER, VARIOUS_ARGUMENT_STATUS_EFFECT
|
||||
.endm
|
||||
|
||||
.macro tryhitswitchtarget failInstr:req
|
||||
various BS_ATTACKER, VARIOUS_TRY_HIT_SWITCH_TARGET
|
||||
.4byte \failInstr
|
||||
|
||||
@ -146,7 +146,7 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectPsychUp @ EFFECT_PSYCH_UP
|
||||
.4byte BattleScript_EffectMirrorCoat @ EFFECT_MIRROR_COAT
|
||||
.4byte BattleScript_EffectSkullBash @ EFFECT_SKULL_BASH
|
||||
.4byte BattleScript_EffectEarthquake @ EFFECT_EARTHQUAKE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_EARTHQUAKE
|
||||
.4byte BattleScript_EffectFutureSight @ EFFECT_FUTURE_SIGHT
|
||||
.4byte BattleScript_EffectGust @ EFFECT_GUST
|
||||
.4byte BattleScript_EffectSolarBeam @ EFFECT_SOLAR_BEAM
|
||||
@ -228,7 +228,7 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectHit @ EFFECT_BRINE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_VENOSHOCK
|
||||
.4byte BattleScript_EffectHit @ EFFECT_RETALIATE
|
||||
.4byte BattleScript_EffectBulldoze @ EFFECT_BULLDOZE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_BULLDOZE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_FOUL_PLAY
|
||||
.4byte BattleScript_EffectHit @ EFFECT_PSYSHOCK
|
||||
.4byte BattleScript_EffectRoost @ EFFECT_ROOST
|
||||
@ -305,7 +305,7 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectHit @ EFFECT_REVELATION_DANCE
|
||||
.4byte BattleScript_EffectAuroraVeil @ EFFECT_AURORA_VEIL
|
||||
.4byte BattleScript_EffectThirdType @ EFFECT_THIRD_TYPE
|
||||
.4byte BattleScript_EffectFeint @ EFFECT_FEINT
|
||||
.4byte BattleScript_EffectHit @ EFFECT_FEINT
|
||||
.4byte BattleScript_EffectSparklingAria @ EFFECT_SPARKLING_ARIA
|
||||
.4byte BattleScript_EffectAcupressure @ EFFECT_ACUPRESSURE
|
||||
.4byte BattleScript_EffectAromaticMist @ EFFECT_AROMATIC_MIST
|
||||
@ -319,8 +319,8 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectLaserFocus @ EFFECT_LASER_FOCUS
|
||||
.4byte BattleScript_EffectMagneticFlux @ EFFECT_MAGNETIC_FLUX
|
||||
.4byte BattleScript_EffectGearUp @ EFFECT_GEAR_UP
|
||||
.4byte BattleScript_EffectIncinerate @ EFFECT_INCINERATE
|
||||
.4byte BattleScript_EffectBugBite @ EFFECT_BUG_BITE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_INCINERATE
|
||||
.4byte BattleScript_EffectHit @ EFFECT_BUG_BITE
|
||||
.4byte BattleScript_EffectStrengthSap @ EFFECT_STRENGTH_SAP
|
||||
.4byte BattleScript_EffectMindBlown @ EFFECT_MIND_BLOWN
|
||||
.4byte BattleScript_EffectPurify @ EFFECT_PURIFY
|
||||
@ -369,7 +369,6 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectExtremeEvoboost @ EFFECT_EXTREME_EVOBOOST
|
||||
.4byte BattleScript_EffectHitSetRemoveTerrain @ EFFECT_HIT_SET_REMOVE_TERRAIN
|
||||
.4byte BattleScript_EffectDarkVoid @ EFFECT_DARK_VOID
|
||||
.4byte BattleScript_EffectHit @ EFFET_UNUSED_384
|
||||
.4byte BattleScript_EffectDoubleShock @ EFFECT_DOUBLE_SHOCK
|
||||
.4byte BattleScript_EffectVictoryDance @ EFFECT_VICTORY_DANCE
|
||||
.4byte BattleScript_EffectTeatime @ EFFECT_TEATIME
|
||||
@ -572,23 +571,7 @@ BattleScript_EffectHit_Pledge::
|
||||
pause B_WAIT_TIME_MED
|
||||
printstring STRINGID_THETWOMOVESBECOMEONE
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
ppreduce
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
call BattleScript_EffectHit_RetFromAccCheck
|
||||
tryfaintmon BS_TARGET
|
||||
return
|
||||
|
||||
@ -643,7 +626,7 @@ BattleScript_CorrosiveGasFail:
|
||||
BattleScript_EffectMakeItRain:
|
||||
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_MakeItRainDoubles
|
||||
BattleScript_MakeItRainContinuous:
|
||||
setmoveeffect MOVE_EFFECT_PAYDAY
|
||||
setmoveeffect MOVE_EFFECT_PAYDAY | MOVE_EFFECT_CERTAIN
|
||||
call BattleScript_EffectHit_Ret
|
||||
tryfaintmon BS_TARGET
|
||||
setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
@ -873,21 +856,7 @@ BattleScript_EffectSteelBeam::
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_SteelBeamMiss, ACC_CURR_MOVE
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
call BattleScript_EffectHit_RetFromCritCalc
|
||||
jumpifability BS_ATTACKER, ABILITY_MAGIC_GUARD, BattleScript_SteelBeamAfterSelfDamage
|
||||
call BattleScript_SteelBeamSelfDamage
|
||||
BattleScript_SteelBeamAfterSelfDamage::
|
||||
@ -1129,24 +1098,11 @@ BattleScript_EffectPhotonGeyser:
|
||||
damagecalc
|
||||
adjustdamage
|
||||
photongeysercheck BS_ATTACKER
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
tryfaintmon BS_TARGET
|
||||
goto BattleScript_MoveEnd
|
||||
goto BattleScript_HitFromAtkAnimation
|
||||
|
||||
BattleScript_EffectAuraWheel: @ Aura Wheel can only be used by Morpeko
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectSpeedUpHit
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectSpeedUpHit
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_FULL_BELLY, BattleScript_EffectHit
|
||||
jumpifspecies BS_ATTACKER, SPECIES_MORPEKO_HANGRY, BattleScript_EffectHit
|
||||
goto BattleScript_PokemonCantUseTheMove
|
||||
|
||||
BattleScript_EffectClangorousSoul:
|
||||
@ -1254,8 +1210,7 @@ BattleScript_EffectHyperspaceFuryUnbound::
|
||||
pause B_WAIT_TIME_LONG
|
||||
ppreduce
|
||||
setmoveeffect MOVE_EFFECT_FEINT
|
||||
seteffectwithchance
|
||||
setmoveeffect MOVE_EFFECT_DEF_MINUS_1 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
seteffectprimary
|
||||
goto BattleScript_HitFromCritCalc
|
||||
|
||||
BattleScript_ButHoopaCantUseIt:
|
||||
@ -1578,14 +1533,6 @@ BattleScript_StrengthSapMustLower:
|
||||
waitanimation
|
||||
goto BattleScript_StrengthSapLower
|
||||
|
||||
BattleScript_EffectBugBite:
|
||||
setmoveeffect MOVE_EFFECT_BUG_BITE | MOVE_EFFECT_CERTAIN
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectIncinerate:
|
||||
setmoveeffect MOVE_EFFECT_INCINERATE | MOVE_EFFECT_CERTAIN
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_MoveEffectIncinerate::
|
||||
printstring STRINGID_INCINERATEBURN
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
@ -1827,10 +1774,6 @@ BattleScript_MoveEffectFeint::
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_EffectFeint:
|
||||
setmoveeffect MOVE_EFFECT_FEINT
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectThirdType:
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
@ -2546,10 +2489,6 @@ BattleScript_VictoryDanceTrySpeed::
|
||||
BattleScript_VictoryDanceEnd::
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectSpeedUpHit:
|
||||
setmoveeffect MOVE_EFFECT_SPD_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectMeFirst:
|
||||
attackcanceler
|
||||
attackstring
|
||||
@ -3133,7 +3072,6 @@ BattleScript_EffectHitEscape:
|
||||
call BattleScript_EffectHit_Ret
|
||||
jumpifmovehadnoeffect BattleScript_MoveEnd
|
||||
jumpifability BS_TARGET, ABILITY_GUARD_DOG, BattleScript_MoveEnd
|
||||
seteffectwithchance
|
||||
tryfaintmon BS_TARGET
|
||||
moveendto MOVEEND_ATTACKER_VISIBLE
|
||||
moveendfrom MOVEEND_TARGET_VISIBLE
|
||||
@ -3165,18 +3103,7 @@ BattleScript_HitFromCritCalc::
|
||||
damagecalc
|
||||
adjustdamage
|
||||
BattleScript_HitFromAtkAnimation::
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
call BattleScript_Hit_RetFromAtkAnimation
|
||||
BattleScript_TryFaintMon::
|
||||
tryfaintmon BS_TARGET
|
||||
BattleScript_MoveEnd::
|
||||
@ -3185,12 +3112,15 @@ BattleScript_MoveEnd::
|
||||
|
||||
BattleScript_EffectHit_Ret::
|
||||
attackcanceler
|
||||
BattleScript_EffectHit_RetFromAccCheck::
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
ppreduce
|
||||
BattleScript_EffectHit_RetFromCritCalc::
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
BattleScript_Hit_RetFromAtkAnimation::
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
@ -3214,21 +3144,7 @@ BattleScript_EffectNaturalGift:
|
||||
jumpifability BS_ATTACKER, ABILITY_KLUTZ, BattleScript_ButItFailed
|
||||
jumpifstatus3 BS_ATTACKER, STATUS3_EMBARGO, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
|
||||
critcalc
|
||||
damagecalc
|
||||
adjustdamage
|
||||
attackanimation
|
||||
waitanimation
|
||||
effectivenesssound
|
||||
hitanimation BS_TARGET
|
||||
waitstate
|
||||
healthbarupdate BS_TARGET
|
||||
datahpupdate BS_TARGET
|
||||
critmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
seteffectwithchance
|
||||
call BattleScript_EffectHit_RetFromCritCalc
|
||||
jumpifmovehadnoeffect BattleScript_EffectNaturalGiftEnd
|
||||
checkparentalbondcounter 2, BattleScript_EffectNaturalGiftEnd
|
||||
removeitem BS_ATTACKER
|
||||
@ -4972,7 +4888,7 @@ BattleScript_EffectRapidSpin::
|
||||
call BattleScript_EffectHit_Ret
|
||||
jumpifhalfword CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
|
||||
setmoveeffect MOVE_EFFECT_RAPIDSPIN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
seteffectwithchance
|
||||
seteffectsecondary
|
||||
setstatchanger STAT_SPEED, 1, FALSE
|
||||
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_CHANGE_ALLOW_PTR, BattleScript_EffectRapidSpinEnd
|
||||
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_STAT_WONT_INCREASE, BattleScript_EffectRapidSpinEnd
|
||||
@ -8198,8 +8114,6 @@ BattleScript_MoveEffectConfusion::
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
BattleScript_MoveEffectRecoilWithStatus::
|
||||
argumentstatuseffect
|
||||
BattleScript_MoveEffectRecoil::
|
||||
jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil
|
||||
jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_RecoilEnd
|
||||
@ -8213,10 +8127,6 @@ BattleScript_DoRecoil::
|
||||
BattleScript_RecoilEnd::
|
||||
return
|
||||
|
||||
BattleScript_EffectWithChance::
|
||||
seteffectwithchance
|
||||
return
|
||||
|
||||
BattleScript_ItemSteal::
|
||||
playanimation BS_TARGET, B_ANIM_ITEM_STEAL
|
||||
printstring STRINGID_PKMNSTOLEITEM
|
||||
|
||||
@ -303,8 +303,6 @@ extern const u8 BattleScript_StickyWebDefog[];
|
||||
extern const u8 BattleScript_StealthRockDefog[];
|
||||
extern const u8 BattleScript_MegaEvolution[];
|
||||
extern const u8 BattleScript_WishMegaEvolution[];
|
||||
extern const u8 BattleScript_MoveEffectRecoilWithStatus[];
|
||||
extern const u8 BattleScript_EffectWithChance[];
|
||||
extern const u8 BattleScript_MoveEffectClearSmog[];
|
||||
extern const u8 BattleScript_SideStatusWoreOffReturn[];
|
||||
extern const u8 BattleScript_MoveEffectSmackDown[];
|
||||
|
||||
@ -348,32 +348,31 @@
|
||||
#define EFFECT_EXTREME_EVOBOOST 344
|
||||
#define EFFECT_HIT_SET_REMOVE_TERRAIN 345
|
||||
#define EFFECT_DARK_VOID 346
|
||||
#define EFFET_UNUSED_384 347
|
||||
#define EFFECT_DOUBLE_SHOCK 348
|
||||
#define EFFECT_VICTORY_DANCE 349
|
||||
#define EFFECT_TEATIME 350
|
||||
#define EFFECT_ATTACK_UP_USER_ALLY 351
|
||||
#define EFFECT_SHELL_TRAP 352
|
||||
#define EFFECT_PSYBLADE 353
|
||||
#define EFFECT_HYDRO_STEAM 354
|
||||
#define EFFECT_HIT_SET_ENTRY_HAZARD 355
|
||||
#define EFFECT_BARB_BARRAGE 356
|
||||
#define EFFECT_REVIVAL_BLESSING 357
|
||||
#define EFFECT_SNOWSCAPE 358
|
||||
#define EFFECT_INFERNAL_PARADE 359
|
||||
#define EFFECT_TAKE_HEART 360
|
||||
#define EFFECT_COLLISION_COURSE 361
|
||||
#define EFFECT_MAKE_IT_RAIN 362
|
||||
#define EFFECT_CORROSIVE_GAS 363
|
||||
#define EFFECT_POPULATION_BOMB 364
|
||||
#define EFFECT_SALT_CURE 365
|
||||
#define EFFECT_CHILLY_RECEPTION 366
|
||||
#define EFFECT_MAX_MOVE 367
|
||||
#define EFFECT_GLAIVE_RUSH 368
|
||||
#define EFFECT_RAGING_BULL 369
|
||||
#define EFFECT_RAGE_FIST 370
|
||||
#define EFFECT_DOODLE 371
|
||||
#define EFFECT_DOUBLE_SHOCK 347
|
||||
#define EFFECT_VICTORY_DANCE 348
|
||||
#define EFFECT_TEATIME 349
|
||||
#define EFFECT_ATTACK_UP_USER_ALLY 350
|
||||
#define EFFECT_SHELL_TRAP 351
|
||||
#define EFFECT_PSYBLADE 352
|
||||
#define EFFECT_HYDRO_STEAM 353
|
||||
#define EFFECT_HIT_SET_ENTRY_HAZARD 354
|
||||
#define EFFECT_BARB_BARRAGE 355
|
||||
#define EFFECT_REVIVAL_BLESSING 356
|
||||
#define EFFECT_SNOWSCAPE 357
|
||||
#define EFFECT_INFERNAL_PARADE 358
|
||||
#define EFFECT_TAKE_HEART 359
|
||||
#define EFFECT_COLLISION_COURSE 360
|
||||
#define EFFECT_MAKE_IT_RAIN 361
|
||||
#define EFFECT_CORROSIVE_GAS 362
|
||||
#define EFFECT_POPULATION_BOMB 363
|
||||
#define EFFECT_SALT_CURE 364
|
||||
#define EFFECT_CHILLY_RECEPTION 365
|
||||
#define EFFECT_MAX_MOVE 366
|
||||
#define EFFECT_GLAIVE_RUSH 367
|
||||
#define EFFECT_RAGING_BULL 368
|
||||
#define EFFECT_RAGE_FIST 369
|
||||
#define EFFECT_DOODLE 370
|
||||
|
||||
#define NUM_BATTLE_MOVE_EFFECTS 372
|
||||
#define NUM_BATTLE_MOVE_EFFECTS 371
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||
|
||||
@ -140,7 +140,7 @@
|
||||
#define VARIOUS_TRY_SOAK 48
|
||||
#define VARIOUS_HANDLE_MEGA_EVO 49
|
||||
#define VARIOUS_TRY_LAST_RESORT 50
|
||||
#define VARIOUS_ARGUMENT_STATUS_EFFECT 51
|
||||
#define VARIOUS_UNUSED_51 51
|
||||
#define VARIOUS_TRY_HIT_SWITCH_TARGET 52
|
||||
#define VARIOUS_TRY_AUTOTOMIZE 53
|
||||
#define VARIOUS_ABILITY_POPUP 54
|
||||
|
||||
@ -3755,58 +3755,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
if (ShouldUseWishAromatherapy(battlerAtk, battlerDef, move))
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case EFFECT_THIEF:
|
||||
{
|
||||
bool32 canSteal = FALSE;
|
||||
|
||||
if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE)
|
||||
canSteal = TRUE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || GetBattlerSide(battlerAtk) == B_SIDE_PLAYER)
|
||||
canSteal = TRUE;
|
||||
|
||||
if (canSteal && aiData->items[battlerAtk] == ITEM_NONE
|
||||
&& aiData->items[battlerDef] != ITEM_NONE
|
||||
&& CanBattlerGetOrLoseItem(battlerDef, aiData->items[battlerDef])
|
||||
&& CanBattlerGetOrLoseItem(battlerAtk, aiData->items[battlerDef])
|
||||
&& !HasMoveEffect(battlerAtk, EFFECT_ACROBATICS)
|
||||
&& aiData->abilities[battlerDef] != ABILITY_STICKY_HOLD)
|
||||
{
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
{
|
||||
case HOLD_EFFECT_NONE:
|
||||
break;
|
||||
case HOLD_EFFECT_CHOICE_BAND:
|
||||
case HOLD_EFFECT_CHOICE_SCARF:
|
||||
case HOLD_EFFECT_CHOICE_SPECS:
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_TOXIC_ORB:
|
||||
if (ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk]))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_FLAME_ORB:
|
||||
if (ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk]))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_BLACK_SLUDGE:
|
||||
if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_FLING))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
case HOLD_EFFECT_STICKY_BARB:
|
||||
break;
|
||||
default:
|
||||
ADJUST_SCORE(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EFFECT_NIGHTMARE:
|
||||
if (aiData->abilities[battlerDef] != ABILITY_MAGIC_GUARD
|
||||
&& !(gBattleMons[battlerDef].status2 & STATUS2_NIGHTMARE)
|
||||
@ -4107,8 +4055,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
ADJUST_SCORE(3);*/
|
||||
break;
|
||||
case EFFECT_RAPID_SPIN:
|
||||
IncreaseStatUpScore(battlerAtk, battlerDef, STAT_SPEED, &score); // Gen 8 increases speed
|
||||
//fallthrough
|
||||
case EFFECT_DEFOG:
|
||||
if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_HAZARDS_ANY && CountUsablePartyMons(battlerAtk) != 0)
|
||||
{
|
||||
@ -4319,24 +4265,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
if (gSideStatuses[GetBattlerSide(battlerDef)] & SIDE_STATUS_AURORA_VEIL)
|
||||
ADJUST_SCORE(1);
|
||||
break;
|
||||
case EFFECT_KNOCK_OFF:
|
||||
if (CanKnockOffItem(battlerDef, aiData->items[battlerDef]))
|
||||
{
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
{
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerDef, EFFECT_FLING))
|
||||
ADJUST_SCORE(4);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
case HOLD_EFFECT_STICKY_BARB:
|
||||
break;
|
||||
default:
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EFFECT_SKILL_SWAP:
|
||||
if (GetAbilityRating(aiData->abilities[battlerDef]) > GetAbilityRating(aiData->abilities[battlerAtk]))
|
||||
ADJUST_SCORE(1);
|
||||
@ -4511,22 +4439,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
ADJUST_SCORE(1);
|
||||
}
|
||||
break;
|
||||
case EFFECT_BUG_BITE: // And pluck
|
||||
if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD)
|
||||
break;
|
||||
else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES)
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case EFFECT_INCINERATE:
|
||||
if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD)
|
||||
break;
|
||||
else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES || aiData->holdEffects[battlerDef] == HOLD_EFFECT_GEMS)
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case EFFECT_SMACK_DOWN:
|
||||
if (!IsBattlerGrounded(battlerDef))
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case EFFECT_RELIC_SONG:
|
||||
if (!(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) // Don't try to change form if it's transformed.
|
||||
{
|
||||
@ -4802,9 +4714,9 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
if (!MoveEffectIsGuaranteed(AI_CalcSecondaryEffectChance(battlerAtk, gBattleMoves[move].additionalEffects[i].chance)))
|
||||
continue;
|
||||
|
||||
// Consider move effects that target self
|
||||
if (gBattleMoves[move].additionalEffects[i].self)
|
||||
{
|
||||
// Consider move effects that target self
|
||||
switch (gBattleMoves[move].additionalEffects[i].moveEffect)
|
||||
{
|
||||
case MOVE_EFFECT_SPD_PLUS_2:
|
||||
@ -4835,7 +4747,6 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
}
|
||||
else // consider move effects that hinder the target
|
||||
{
|
||||
// Only consider the below if they're certain to happen
|
||||
switch (gBattleMoves[move].additionalEffects[i].moveEffect)
|
||||
{
|
||||
case MOVE_EFFECT_FLINCH:
|
||||
@ -4862,6 +4773,92 @@ static s32 AI_CheckViability(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
case MOVE_EFFECT_SPECTRAL_THIEF:
|
||||
score += AI_ShouldCopyStatChanges(battlerAtk, battlerDef);
|
||||
break;
|
||||
case MOVE_EFFECT_BUG_BITE: // And pluck
|
||||
if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD)
|
||||
break;
|
||||
else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES)
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case MOVE_EFFECT_INCINERATE:
|
||||
if (gBattleMons[battlerDef].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_STICKY_HOLD)
|
||||
break;
|
||||
else if (ItemId_GetPocket(aiData->items[battlerDef]) == POCKET_BERRIES || aiData->holdEffects[battlerDef] == HOLD_EFFECT_GEMS)
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case MOVE_EFFECT_SMACK_DOWN:
|
||||
if (!IsBattlerGrounded(battlerDef))
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
case MOVE_EFFECT_KNOCK_OFF:
|
||||
if (CanKnockOffItem(battlerDef, aiData->items[battlerDef]))
|
||||
{
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
{
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerDef, EFFECT_FLING))
|
||||
ADJUST_SCORE(4);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
case HOLD_EFFECT_STICKY_BARB:
|
||||
break;
|
||||
default:
|
||||
ADJUST_SCORE(3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_STEAL_ITEM:
|
||||
{
|
||||
bool32 canSteal = FALSE;
|
||||
|
||||
if (B_TRAINERS_KNOCK_OFF_ITEMS == TRUE)
|
||||
canSteal = TRUE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER || GetBattlerSide(battlerAtk) == B_SIDE_PLAYER)
|
||||
canSteal = TRUE;
|
||||
|
||||
if (canSteal && aiData->items[battlerAtk] == ITEM_NONE
|
||||
&& aiData->items[battlerDef] != ITEM_NONE
|
||||
&& CanBattlerGetOrLoseItem(battlerDef, aiData->items[battlerDef])
|
||||
&& CanBattlerGetOrLoseItem(battlerAtk, aiData->items[battlerDef])
|
||||
&& !HasMoveEffect(battlerAtk, EFFECT_ACROBATICS)
|
||||
&& aiData->abilities[battlerDef] != ABILITY_STICKY_HOLD)
|
||||
{
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
{
|
||||
case HOLD_EFFECT_NONE:
|
||||
break;
|
||||
case HOLD_EFFECT_CHOICE_BAND:
|
||||
case HOLD_EFFECT_CHOICE_SCARF:
|
||||
case HOLD_EFFECT_CHOICE_SPECS:
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_TOXIC_ORB:
|
||||
if (ShouldPoisonSelf(battlerAtk, aiData->abilities[battlerAtk]))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_FLAME_ORB:
|
||||
if (ShouldBurnSelf(battlerAtk, aiData->abilities[battlerAtk]))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_BLACK_SLUDGE:
|
||||
if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_FLING))
|
||||
ADJUST_SCORE(2);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
case HOLD_EFFECT_STICKY_BARB:
|
||||
break;
|
||||
default:
|
||||
ADJUST_SCORE(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4392,7 +4392,7 @@ static void DisplayTrainerInfoOnCard(u8 flags, u8 trainerTourneyId)
|
||||
allocatedArray[k] = (gBattleMoves[move].pp <= 5) ? 1 : 0;
|
||||
break;
|
||||
case MOVE_POINTS_EFFECT:
|
||||
allocatedArray[k] = (gBattleMoves[move].secondaryEffectChance > 0) ? 1 : 0;
|
||||
allocatedArray[k] = gBattleMoves[move].sheerForceBoost;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3716,20 +3716,14 @@ static void Cmd_seteffectwithchance(void)
|
||||
{
|
||||
if (gBattleScripting.moveEffect &= ~(MOVE_EFFECT_CONTINUE))
|
||||
{
|
||||
u32 percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance; // CalcSecondaryEffectChance(gBattlerAttacker, gBattleMoves[gCurrentMove].secondaryEffectChance, gCurrentMove);
|
||||
if (gBattleScripting.moveEffect & MOVE_EFFECT_CERTAIN
|
||||
|| percentChance >= 100)
|
||||
if (gBattleScripting.moveEffect & MOVE_EFFECT_CERTAIN)
|
||||
{
|
||||
gBattleScripting.moveEffect &= ~MOVE_EFFECT_CERTAIN;
|
||||
SetMoveEffect(FALSE, MOVE_EFFECT_CERTAIN);
|
||||
}
|
||||
else if (RandomPercentage(RNG_SECONDARY_EFFECT, percentChance))
|
||||
{
|
||||
SetMoveEffect(FALSE, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||
SetMoveEffect(FALSE, 0);
|
||||
}
|
||||
gBattleScripting.moveEffect = 0;
|
||||
}
|
||||
@ -5424,10 +5418,7 @@ static void Cmd_moveend(void)
|
||||
case EFFECT_RECOIL:
|
||||
gBattleMoveDamage = max(1, gBattleScripting.savedDmg * max(1, gBattleMoves[gCurrentMove].recoil) / 100);
|
||||
BattleScriptPushCursor();
|
||||
if (gBattleMoves[gCurrentMove].argument) // Flare Blitz - can burn, Volt Tackle - can paralyze
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEffectRecoilWithStatus;
|
||||
else
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil;
|
||||
gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil;
|
||||
effect = TRUE;
|
||||
break;
|
||||
}
|
||||
@ -9522,44 +9513,6 @@ static void Cmd_various(void)
|
||||
gBattlescriptCurrInstr = cmd->failInstr;
|
||||
return;
|
||||
}
|
||||
case VARIOUS_ARGUMENT_STATUS_EFFECT:
|
||||
{
|
||||
VARIOUS_ARGS();
|
||||
switch (gBattleMoves[gCurrentMove].argument)
|
||||
{
|
||||
case STATUS1_SLEEP:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_SLEEP;
|
||||
break;
|
||||
case STATUS1_BURN:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_BURN;
|
||||
break;
|
||||
case STATUS1_FREEZE:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_FREEZE;
|
||||
break;
|
||||
case STATUS1_PARALYSIS:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_PARALYSIS;
|
||||
break;
|
||||
case STATUS1_POISON:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_POISON;
|
||||
break;
|
||||
case STATUS1_TOXIC_POISON:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_TOXIC;
|
||||
break;
|
||||
case STATUS1_FROSTBITE:
|
||||
gBattleScripting.moveEffect = MOVE_EFFECT_FROSTBITE;
|
||||
break;
|
||||
default:
|
||||
gBattleScripting.moveEffect = 0;
|
||||
break;
|
||||
}
|
||||
if (gBattleScripting.moveEffect != 0)
|
||||
{
|
||||
BattleScriptPush(cmd->nextInstr);
|
||||
gBattlescriptCurrInstr = BattleScript_EffectWithChance;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case VARIOUS_TRY_HIT_SWITCH_TARGET:
|
||||
{
|
||||
VARIOUS_ARGS(const u8 *failInstr);
|
||||
|
||||
@ -6032,7 +6032,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_FIGHTING,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
@ -6113,16 +6112,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
|
||||
[MOVE_FEINT] =
|
||||
{
|
||||
#if B_UPDATED_MOVE_DATA >= GEN_5
|
||||
.power = 30,
|
||||
#else
|
||||
.power = 50,
|
||||
#endif
|
||||
.effect = EFFECT_FEINT,
|
||||
.power = B_UPDATED_MOVE_DATA >= GEN_5 ? 30 : 50,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 2,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
@ -6131,6 +6125,9 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.metronomeBanned = TRUE,
|
||||
.copycatBanned = TRUE,
|
||||
.assistBanned = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
PRIMARY_EFFECT(MOVE_EFFECT_FEINT)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_PLUCK] =
|
||||
@ -6140,11 +6137,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_FLYING,
|
||||
.accuracy = 100,
|
||||
.pp = 20,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
.makesContact = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
PRIMARY_EFFECT(MOVE_EFFECT_BUG_BITE)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_TAILWIND] =
|
||||
@ -7506,11 +7505,13 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_BUG,
|
||||
.accuracy = 100,
|
||||
.pp = 20,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
.makesContact = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
PRIMARY_EFFECT(MOVE_EFFECT_BUG_BITE)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_CHARGE_BEAM] =
|
||||
@ -8468,10 +8469,12 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_FIRE,
|
||||
.accuracy = 100,
|
||||
.pp = 15,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_SPECIAL,
|
||||
ADDITIONAL_EFFECTS(
|
||||
PRIMARY_EFFECT(MOVE_EFFECT_INCINERATE)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_QUASH] =
|
||||
@ -8667,12 +8670,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_GROUND,
|
||||
.accuracy = 100,
|
||||
.pp = 20,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_FOES_AND_ALLY,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
.sheerForceBoost = TRUE,
|
||||
.skyBattleBanned = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT(MOVE_EFFECT_SPD_MINUS_1, 100)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_FROST_BREATH] =
|
||||
@ -10255,13 +10260,16 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_DARK,
|
||||
.accuracy = 0,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
.ignoresProtect = TRUE,
|
||||
.ignoresSubstitute = TRUE,
|
||||
.metronomeBanned = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
// Feint move effect handled in script as it goes before animation
|
||||
PRIMARY_EFFECT_SELF(MOVE_EFFECT_DEF_MINUS_1)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_SHORE_UP] =
|
||||
@ -10354,7 +10362,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_WATER,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_FOES_AND_ALLY,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_SPECIAL,
|
||||
@ -10633,7 +10640,6 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_FIRE,
|
||||
.accuracy = 100,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_SPECIAL,
|
||||
@ -11710,11 +11716,14 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 100,
|
||||
.pp = 10,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_PHYSICAL,
|
||||
.sheerForceBoost = TRUE,
|
||||
.metronomeBanned = TRUE,
|
||||
ADDITIONAL_EFFECTS(
|
||||
SECONDARY_EFFECT_SELF(MOVE_EFFECT_SPD_PLUS_1, 100)
|
||||
),
|
||||
},
|
||||
|
||||
[MOVE_BREAKING_SWIPE] =
|
||||
@ -13165,11 +13174,11 @@ const struct BattleMove gBattleMoves[MOVES_COUNT_DYNAMAX] =
|
||||
.type = TYPE_STEEL,
|
||||
.accuracy = 100,
|
||||
.pp = 5,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.category = BATTLE_CATEGORY_SPECIAL,
|
||||
.metronomeBanned = TRUE,
|
||||
// additional effects handled in script due to weird behaviour in doubles
|
||||
},
|
||||
|
||||
[MOVE_RUINATION] =
|
||||
|
||||
@ -8,7 +8,7 @@ SINGLE_BATTLE_TEST("Sheer Force boosts power, but removes secondary effects of m
|
||||
|
||||
for (j = 1; j < MOVES_COUNT; j++)
|
||||
{
|
||||
if (gBattleMoves[j].sheerForceBoost && j != MOVE_ORDER_UP)
|
||||
if (gBattleMoves[j].sheerForceBoost && j != MOVE_ORDER_UP && j != MOVE_AURA_WHEEL)
|
||||
{
|
||||
PARAMETRIZE { ability = ABILITY_ANGER_POINT; move = j; }
|
||||
PARAMETRIZE { ability = ABILITY_SHEER_FORCE; move = j; }
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gBattleMoves[MOVE_BUG_BITE].effect == EFFECT_BUG_BITE);
|
||||
ASSUME(MoveHasMoveEffect(MOVE_BUG_BITE, MOVE_EFFECT_BUG_BITE, FALSE));
|
||||
ASSUME(gBattleMoves[MOVE_BUG_BITE].pp == 20);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user