added missing battle move effects

This commit is contained in:
cawtds 2024-05-07 20:13:27 +02:00
parent 48954cc420
commit a26ee9d55c
10 changed files with 7713 additions and 3675 deletions

View File

@ -1349,6 +1349,298 @@
.4byte \func
.endm
@ callnative macros
.macro metalburstdamagecalculator failInstr:req
callnative BS_CalcMetalBurstDmg
.4byte \failInstr
.endm
.macro jumpifcantfling battler:req, jumpInstr:req
callnative BS_JumpIfCantFling
.byte \battler
.4byte \jumpInstr
.endm
.macro itemstatchangeeffects battler:req
callnative BS_RunStatChangeItems
.byte \battler
.endm
.macro allyswitchswapbattlers
callnative BS_AllySwitchSwapBattler
.endm
.macro allyswitchfailchance jumpInstr:req
callnative BS_AllySwitchFailChance
.4byte \jumpInstr
.endm
.macro dostockpilestatchangeswearoff, battler:req, statChangeInstr:req
callnative BS_DoStockpileStatChangesWearOff
.byte \battler
.4byte \statChangeInstr
.endm
.macro jumpifmorethanhalfHP battler:req, jumpInstr:req
callnative BS_JumpIfMoreThanHalfHP
.byte \battler
.4byte \jumpInstr
.endm
.macro itemrestorehp jumpInstr:req
callnative BS_ItemRestoreHP
.4byte \jumpInstr
.endm
.macro itemcurestatus jumpInstr:req
callnative BS_ItemCureStatus
.4byte \jumpInstr
.endm
.macro itemincreasestat
callnative BS_ItemIncreaseStat
.endm
.macro itemrestorepp
callnative BS_ItemRestorePP
.endm
.macro tryrevertweatherform
callnative BS_TryRevertWeatherForm
.endm
.macro setsnow
callnative BS_SetSnow
.endm
.macro applysaltcure battler:req
callnative BS_ApplySaltCure
.byte \battler
.endm
.macro trysetoctolock battler:req, failInstr:req
callnative BS_TrySetOctolock
.byte \battler
.4byte \failInstr
.endm
.macro setglaiverush
callnative BS_SetGlaiveRush
.endm
.macro tryrelicsong
callnative BS_TryRelicSong
.endm
.macro setpledge jumpInstr:req
callnative BS_SetPledge
.4byte \jumpInstr
.endm
.macro setpledgestatus battler:req sidestatus:req
callnative BS_SetPledgeStatus
.byte \battler
.4byte \sidestatus
.endm
.macro trycopycat failInstr:req
callnative BS_TryCopycat
.4byte \failInstr
.endm
.macro setzeffect
callnative BS_SetZEffect
.endm
@ Used by effects that may proc Symbiosis but do not call removeitem.
.macro trysymbiosis
callnative BS_TrySymbiosis
.endm
@ returns B_SIDE_x to gBattleCommunication[0]
.macro getbattlerside battler:req
callnative BS_GetBattlerSide
.byte \battler
.endm
.macro checkparentalbondcounter counter:req, ptr:req
callnative BS_CheckParentalBondCounter
.byte \counter
.4byte \ptr
.endm
.macro jumpifcantloseitem battler:req, ptr:req
callnative BS_JumpIfCantLoseItem
.byte \battler
.4byte \ptr
.endm
.macro handlemegaevo battler:req, case:req
callnative BS_HandleMegaEvolution
.byte \battler
.byte \case
.endm
.macro handleprimalreversion battler:req, case:req
callnative BS_HandlePrimalReversion
.byte \battler
.byte \case
.endm
.macro handleultraburst battler:req, case:req
callnative BS_HandleUltraBurst
.byte \battler
.byte \case
.endm
.macro jumpifshelltrap battler:req, jumpInstr:req
callnative BS_JumpIfShellTrap
.byte \battler
.4byte \jumpInstr
.endm
.macro jumpifemergencyexited battler:req, jumpInstr:req
callnative BS_JumpIfEmergencyExited
.byte \battler
.4byte \jumpInstr
.endm
.macro jumpifrodaffected battler:req, jumpInstr:req
callnative BS_JumpIfRod
.4byte \jumpInstr
.endm
.macro jumpifabsorbaffected battler:req, jumpInstr:req
callnative BS_JumpIfAbsorb
.4byte \jumpInstr
.endm
.macro jumpifmotoraffected battler:req, jumpInstr:req
callnative BS_JumpIfMotor
.4byte \jumpInstr
.endm
.macro jumpifargument argument:req, jumpInstr:req
callnative BS_JumpIfArgument
.byte \argument
.4byte \jumpInstr
.endm
.macro setremoveterrain failInstr:req
callnative BS_SetRemoveTerrain
.4byte \failInstr
.endm
.macro jumpifterrainaffected battler:req, terrainFlags:req, jumpInstr:req
callnative BS_JumpIfTerrainAffected
.byte \battler
.4byte \terrainFlags
.4byte \jumpInstr
.endm
.macro tryreflecttype failInstr:req
callnative BS_TryReflectType
.4byte \failInstr
.endm
@ Used to active a different Max Move effects.
.macro setmaxmoveeffect
callnative BS_SetMaxMoveEffect
.endm
.macro setsteelsurge, failInstr:req
callnative BS_SetSteelsurge
.4byte \failInstr
.endm
.macro damagenontypes
callnative BS_DamageNonTypes
.endm
.macro trysetstatus1, ptr:req
callnative BS_TrySetStatus1
.4byte \ptr
.endm
.macro trysetstatus2, ptr:req
callnative BS_TrySetStatus2
.4byte \ptr
.endm
.macro tryhealsixthhealth, ptr:req
callnative BS_HealOneSixth
.4byte \ptr
.endm
.macro tryrecycleberry, ptr:req
callnative BS_TryRecycleBerry
.4byte \ptr
.endm
.macro updatedynamax
callnative BS_UpdateDynamax
.endm
.macro jumpiftargetdynamaxed, ptr:req
callnative BS_JumpIfDynamaxed
.4byte \ptr
.endm
.macro trytrainerslidezmovemsg
callnative BS_TryTrainerSlideZMoveMsg
.endm
.macro trytrainerslidemegaevolutionmsg
callnative BS_TryTrainerSlideMegaEvolutionMsg
.endm
.macro trytrainerslidedynamaxmsg
callnative BS_TryTrainerSlideDynamaxMsg
.endm
.macro tryhealpulse failInstr:req
callnative BS_TryHealPulse
.4byte \failInstr
.endm
.macro trydefog clear:req, failInstr:req
callnative BS_TryDefog
.byte \clear
.4byte \failInstr
.endm
.macro trytriggerstatusform
callnative BS_TryTriggerStatusForm
.endm
.macro setphotongeysercategory
callnative BS_SetPhotonGeyserCategory
.endm
.macro tryupperhand failInstr:req
callnative BS_TryUpperHand
.4byte \failInstr
.endm
.macro tryupdaterecoiltracker
callnative BS_TryUpdateRecoilTracker
.endm
.macro trytidyup clear:req, jumpInstr:req
callnative BS_TryTidyUp
.byte \clear
.4byte \jumpInstr
.endm
.macro trygulpmissile
callnative BS_TryGulpMissile
.endm
.macro tryquash failInstr:req
callnative BS_TryQuash
.4byte \failInstr
.endm
@ various command changed to more readable macros
.macro cancelmultiturnmoves battler:req
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
@ -2009,6 +2301,7 @@
.macro setmoveeffect effect:req
sethword sMOVE_EFFECT, \effect
sethword sSAVED_MOVE_EFFECT, \effect
.endm
.macro chosenstatus1animation battler:req, status:req
@ -2043,40 +2336,124 @@
copyarray \dst, \src, 0x4
.endm
.macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req
jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr
.macro jumpifbytenotequal byte1:req, byte2:req, jumpInstr:req
jumpifarraynotequal \byte1, \byte2, 0x1, \jumpInstr
.endm
.macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req
jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr
.macro jumpifbyteequal byte1:req, byte2:req, jumpInstr:req
jumpifarrayequal \byte1, \byte2, 0x1, \jumpInstr
.endm
.macro jumpifmove move:req, jumpptr:req
jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr
.macro jumpifmove move:req, jumpInstr:req
jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpInstr
.endm
.macro jumpifnotmove move:req, jumpptr:req
jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr
.macro jumpifnotmove move:req, jumpInstr:req
jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpInstr
.endm
.macro jumpifstatus3 battler:req, status:req, jumpptr:req
jumpifstatus3condition \battler, \status, 0x0, \jumpptr
.macro jumpifnotchosenmove move:req, jumpInstr:req
jumpifhalfword CMP_NOT_EQUAL, gChosenMove, \move, \jumpInstr
.endm
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req
jumpifstatus3condition \battler, \status, 0x1, \jumpptr
.macro jumpifstatus3 battler:req, flags:req, jumpInstr:req
jumpifstatus3condition \battler, \flags, FALSE, \jumpInstr
.endm
.macro jumpifmovehadnoeffect jumpptr:req
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
.macro jumpifnostatus3 battler:req, flags:req, jumpInstr:req
jumpifstatus3condition \battler, \flags, TRUE, \jumpInstr
.endm
.macro jumpifbattletype flags:req, jumpptr:req
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
.macro jumpifmovehadnoeffect jumpInstr:req
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpInstr
.endm
.macro jumpifnotbattletype flags:req, jumpptr:req
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
.macro jumpifside battler:req, side:req, equalJumpInstr:req
getbattlerside \battler
jumpifbyte CMP_EQUAL, gBattleCommunication, \side, \equalJumpInstr
.endm
.macro jumpifbattletype flags:req, jumpInstr:req
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpInstr
.endm
.macro jumpifnotbattletype flags:req, jumpInstr:req
jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpInstr
.endm
.macro dmg_1_8_targethp
manipulatedamage DMG_1_8_TARGET_HP
.endm
.macro dmgtomaxattackerhp
manipulatedamage DMG_FULL_ATTACKER_HP
.endm
.macro dmgtocurrattackerhp
manipulatedamage DMG_CURR_ATTACKER_HP
.endm
.macro dmg_1_2_attackerhp
manipulatedamage DMG_1_2_ATTACKER_HP
.endm
.macro jumpifflowerveil jumpInstr:req
jumpifnottype BS_TARGET, TYPE_GRASS, 1f
jumpifability BS_TARGET_SIDE, ABILITY_FLOWER_VEIL, \jumpInstr
1:
.endm
.macro jumpifflowerveilattacker jumpInstr:req
jumpifnottype BS_ATTACKER, TYPE_GRASS, 1f
jumpifability BS_ATTACKER_SIDE, ABILITY_FLOWER_VEIL, \jumpInstr
1:
.endm
.macro setallytonexttarget jumpInstr:req
jumpifbyte CMP_GREATER_THAN, gBattlerTarget, 0x1, 1f
addbyte gBattlerTarget, 0x2
goto \jumpInstr
1:
subbyte gBattlerTarget, 0x2
goto \jumpInstr
.endm
.macro setallytonextattacker jumpInstr:req
jumpifbyte CMP_GREATER_THAN, gBattlerAttacker, 0x1, 1f
addbyte gBattlerAttacker, 0x2
goto \jumpInstr
1:
subbyte gBattlerAttacker, 0x2
goto \jumpInstr
.endm
.macro jumpifsafeguard jumpInstr:req
jumpifability BS_ATTACKER, ABILITY_INFILTRATOR, 1f
jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, \jumpInstr
1:
.endm
@ Will jump to script pointer if the target weighs less than 200 kg, or 441 lbs.
.macro jumpifunder200 battler:req, failInstr:req
various \battler, VARIOUS_JUMP_IF_UNDER_200
.4byte \failInstr
.endm
@ Sets the sky drop status and does all other necessary operations
.macro setskydrop
various 0, VARIOUS_SET_SKY_DROP
.endm
@ Clears the sky drop status and does all other necessary operations.
@ If the target fainted in before this script is called, it goes to the given script.
.macro clearskydrop failInstr:req
various 0, VARIOUS_CLEAR_SKY_DROP
.4byte \failInstr
.endm
@ Accounts for if the target of Sky Drop was in confuse_lock when the attacker falls asleep due to Yawn.
.macro skydropyawn
various 0, VARIOUS_SKY_DROP_YAWN
.endm
@ Tries to increase or decrease a battler's stat's stat stage by a specified amount. If impossible, jumps to \script.
@ -2110,132 +2487,24 @@
waitmessage B_WAIT_TIME_LONG
.endm
.macro setallytonexttarget jumpInstr:req
jumpifbyte CMP_GREATER_THAN, gBattlerTarget, 0x1, 1f
addbyte gBattlerTarget, 0x2
goto \jumpInstr
1:
subbyte gBattlerTarget, 0x2
goto \jumpInstr
.macro hitswitchtargetfailed
various 0, VARIOUS_HIT_SWITCH_TARGET_FAILED
.endm
.macro dmg_1_8_targethp
manipulatedamage DMG_1_8_TARGET_HP
.endm
.macro jumpifsafeguard jumpInstr:req
jumpifability BS_ATTACKER, ABILITY_INFILTRATOR, 1f
jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, \jumpInstr
1:
.endm
.macro dmgtomaxattackerhp
manipulatedamage DMG_FULL_ATTACKER_HP
.endm
@ callnative macros
.macro itemrestorehp jumpInstr:req
callnative BS_ItemRestoreHP
.macro tryrevivalblessing, jumpInstr:req
various 0, VARIOUS_TRY_REVIVAL_BLESSING
.4byte \jumpInstr
.endm
.macro itemcurestatus jumpInstr:req
callnative BS_ItemCureStatus
.4byte \jumpInstr
.endm
.macro itemincreasestat
callnative BS_ItemIncreaseStat
.endm
.macro itemrestorepp
callnative BS_ItemRestorePP
.endm
@ returns B_SIDE_x to gBattleCommunication[0]
.macro getbattlerside battler:req
callnative BS_GetBattlerSide
.byte \battler
.endm
.macro flushtextbox
printstring STRINGID_EMPTYSTRING3
waitmessage 1
.endm
.macro tryrevertweatherform
callnative BS_TryRevertWeatherForm
.endm
@ Used by effects that may proc Symbiosis but do not call removeitem.
.macro trysymbiosis
callnative BS_TrySymbiosis
.endm
@ Will jump to script pointer if the specified battler has or has not fainted.
.macro jumpiffainted battler:req, value:req, ptr:req
getbattlerfainted \battler
jumpifbyte CMP_EQUAL, gBattleCommunication, \value, \ptr
.endm
.macro jumpifflowerveil jumpInstr:req
jumpifnottype BS_TARGET, TYPE_GRASS, 1f
jumpifability BS_TARGET_SIDE, ABILITY_FLOWER_VEIL, \jumpInstr
1:
.endm
.macro jumpifflowerveilattacker jumpInstr:req
jumpifnottype BS_ATTACKER, TYPE_GRASS, 1f
jumpifability BS_ATTACKER_SIDE, ABILITY_FLOWER_VEIL, \jumpInstr
1:
.endm
.macro itemstatchangeeffects battler:req
callnative BS_RunStatChangeItems
.byte \battler
.endm
.macro dostockpilestatchangeswearoff, battler:req, statChangeInstr:req
callnative BS_DoStockpileStatChangesWearOff
.byte \battler
.4byte \statChangeInstr
.endm
.macro handleprimalreversion battler:req, case:req
callnative BS_HandlePrimalReversion
.byte \battler
.byte \case
.endm
.macro jumpifterrainaffected battler:req, terrainFlags:req, jumpInstr:req
callnative BS_JumpIfTerrainAffected
.byte \battler
.4byte \terrainFlags
.4byte \jumpInstr
.endm
.macro checkparentalbondcounter counter:req, ptr:req
callnative BS_CheckParentalBondCounter
.byte \counter
.4byte \ptr
.endm
.macro damagenontypes
callnative BS_DamageNonTypes
.endm
.macro tryupdaterecoiltracker
callnative BS_TryUpdateRecoilTracker
.endm
.macro trytidyup clear:req, jumpInstr:req
callnative BS_TryTidyUp
.byte \clear
.4byte \jumpInstr
.endm
.macro trygulpmissile
callnative BS_TryGulpMissile
.macro flushtextbox
printstring STRINGID_EMPTYSTRING3
waitmessage 1
.endm

File diff suppressed because it is too large Load Diff

View File

@ -746,6 +746,8 @@ extern struct BattleStruct *gBattleStruct;
#define IS_BATTLER_OF_TYPE(battlerId, type)((GetBattlerType(battlerId, 0) == type || GetBattlerType(battlerId, 1) == type || (GetBattlerType(battlerId, 2) != TYPE_MYSTERY && GetBattlerType(battlerId, 2) == type)))
#define IS_BATTLER_TYPELESS(battlerId)(GetBattlerType(battlerId, 0) == TYPE_MYSTERY && GetBattlerType(battlerId, 1) == TYPE_MYSTERY && GetBattlerType(battlerId, 2) == TYPE_MYSTERY)
#define SET_BATTLER_TYPE(battlerId, type) \
{ \
gBattleMons[battlerId].type1 = type; \

View File

@ -18,7 +18,6 @@ extern const u8 BattleScript_MoveUsedMustRecharge[];
extern const u8 BattleScript_FaintAttacker[];
extern const u8 BattleScript_FaintTarget[];
extern const u8 BattleScript_GiveExp[];
extern const u8 BattleScript_LocalTrainerBattleWon[];
extern const u8 BattleScript_LocalTwoTrainersDefeated[];
extern const u8 BattleScript_LocalBattleWonLoseTexts[];
extern const u8 BattleScript_LocalBattleWonReward[];
@ -27,7 +26,6 @@ extern const u8 BattleScript_LocalBattleLost[];
extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[];
extern const u8 BattleScript_LocalBattleLostEnd[];
extern const u8 BattleScript_CheckDomeDrew[];
extern const u8 BattleScript_LinkBattleWonOrLost[];
extern const u8 BattleScript_BattleTowerTrainerBattleWon[];
extern const u8 BattleScript_SmokeBallEscape[];
extern const u8 BattleScript_RanAwayUsingMonAbility[];
@ -52,7 +50,6 @@ extern const u8 BattleScript_LeechSeedTurnDrain[];
extern const u8 BattleScript_BideStoringEnergy[];
extern const u8 BattleScript_BideAttack[];
extern const u8 BattleScript_BideNoEnergyToAttack[];
extern const u8 BattleScript_SuccessForceOut[];
extern const u8 BattleScript_MistProtected[];
extern const u8 BattleScript_RageIsBuilding[];
extern const u8 BattleScript_MoveUsedIsDisabled[];
@ -147,7 +144,6 @@ extern const u8 BattleScript_MoveHPDrain[];
extern const u8 BattleScript_MonMadeMoveUseless_PPLoss[];
extern const u8 BattleScript_MonMadeMoveUseless[];
extern const u8 BattleScript_FlashFireBoost_PPLoss[];
extern const u8 BattleScript_FlashFireBoost[];
extern const u8 BattleScript_AbilityNoStatLoss[];
extern const u8 BattleScript_BRNPrevention[];
extern const u8 BattleScript_PRLZPrevention[];
@ -161,7 +157,6 @@ extern const u8 BattleScript_StickyHoldActivates[];
extern const u8 BattleScript_ColorChangeActivates[];
extern const u8 BattleScript_RoughSkinActivates[];
extern const u8 BattleScript_CuteCharmActivates[];
extern const u8 BattleScript_ApplySecondaryEffect[];
extern const u8 BattleScript_SynchronizeActivates[];
extern const u8 BattleScript_NoItemSteal[];
extern const u8 BattleScript_AbilityCuredStatus[];
@ -185,12 +180,10 @@ extern const u8 BattleScript_BerryCureChosenStatusEnd2[];
extern const u8 BattleScript_BerryCureChosenStatusRet[];
extern const u8 BattleScript_WhiteHerbEnd2[];
extern const u8 BattleScript_WhiteHerbRet[];
extern const u8 BattleScript_ItemHealHP_RemoveItem[];
extern const u8 BattleScript_BerryPPHealEnd2[];
extern const u8 BattleScript_ItemHealHP_End2[];
extern const u8 BattleScript_ItemHealHP_Ret[];
extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[];
extern const u8 BattleScript_FocusBandActivates[];
extern const u8 BattleScript_BerryConfuseHealEnd2[];
extern const u8 BattleScript_BerryStatRaiseEnd2[];
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
@ -219,7 +212,6 @@ extern const u8 BattleScript_FlushMessageBox[];
extern const u8 BattleScript_GhostBallDodge[];
extern const u8 BattleScript_OldMan_Pokedude_CaughtMessage[];
extern const u8 BattleScript_SilphScopeUnveiled[];
extern const u8 BattleScript_BattleTowerTrainerBattleWon[];
extern const u8 *const gBattlescriptsForBallThrow[];
extern const u8 *const gBattlescriptsForRunningByItem[];
@ -231,18 +223,11 @@ extern const u8 BattleScript_ItemRestoreHP_Party[];
// effect scripts
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectSleep[];
extern const u8 BattleScript_EffectPoisonHit[];
extern const u8 BattleScript_EffectAbsorb[];
extern const u8 BattleScript_EffectBurnHit[];
extern const u8 BattleScript_EffectFreezeHit[];
extern const u8 BattleScript_EffectParalyzeHit[];
extern const u8 BattleScript_EffectExplosion[];
extern const u8 BattleScript_EffectDreamEater[];
extern const u8 BattleScript_EffectMirrorMove[];
extern const u8 BattleScript_EffectAttackUp[];
extern const u8 BattleScript_EffectDefenseUp[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectSpecialAttackUp[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectEvasionUp[];
@ -259,27 +244,17 @@ extern const u8 BattleScript_EffectBide[];
extern const u8 BattleScript_EffectRoar[];
extern const u8 BattleScript_EffectMultiHit[];
extern const u8 BattleScript_EffectConversion[];
extern const u8 BattleScript_EffectFlinchHit[];
extern const u8 BattleScript_EffectRestoreHp[];
extern const u8 BattleScript_EffectToxic[];
extern const u8 BattleScript_EffectPayDay[];
extern const u8 BattleScript_EffectLightScreen[];
extern const u8 BattleScript_EffectTriAttack[];
extern const u8 BattleScript_EffectRest[];
extern const u8 BattleScript_EffectOHKO[];
extern const u8 BattleScript_EffectSuperFang[];
extern const u8 BattleScript_EffectDragonRage[];
extern const u8 BattleScript_EffectTrap[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectDoubleHit[];
extern const u8 BattleScript_EffectMist[];
extern const u8 BattleScript_EffectFocusEnergy[];
extern const u8 BattleScript_EffectConfuse[];
extern const u8 BattleScript_EffectAttackUp[];
extern const u8 BattleScript_EffectDefenseUp[];
extern const u8 BattleScript_EffectSpeedUp[];
extern const u8 BattleScript_EffectSpecialAttackUp[];
extern const u8 BattleScript_EffectSpecialDefenseUp[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectTransform[];
@ -293,18 +268,9 @@ extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectReflect[];
extern const u8 BattleScript_EffectPoison[];
extern const u8 BattleScript_EffectParalyze[];
extern const u8 BattleScript_EffectAttackDownHit[];
extern const u8 BattleScript_EffectDefenseDownHit[];
extern const u8 BattleScript_EffectSpeedDownHit[];
extern const u8 BattleScript_EffectSpecialAttackDownHit[];
extern const u8 BattleScript_EffectSpecialDefenseDownHit[];
extern const u8 BattleScript_EffectAccuracyDownHit[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectConfuseHit[];
extern const u8 BattleScript_EffectTwineedle[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectSubstitute[];
extern const u8 BattleScript_EffectRecharge[];
extern const u8 BattleScript_EffectRage[];
extern const u8 BattleScript_EffectMimic[];
extern const u8 BattleScript_EffectMetronome[];
@ -327,7 +293,6 @@ extern const u8 BattleScript_EffectSpite[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectHealBell[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectThief[];
extern const u8 BattleScript_EffectMeanLook[];
extern const u8 BattleScript_EffectNightmare[];
extern const u8 BattleScript_EffectMinimize[];
@ -346,36 +311,24 @@ extern const u8 BattleScript_EffectReturn[];
extern const u8 BattleScript_EffectPresent[];
extern const u8 BattleScript_EffectFrustration[];
extern const u8 BattleScript_EffectSafeguard[];
extern const u8 BattleScript_EffectThawHit[];
extern const u8 BattleScript_EffectMagnitude[];
extern const u8 BattleScript_EffectBatonPass[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectRapidSpin[];
extern const u8 BattleScript_EffectSonicboom[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectMorningSun[];
extern const u8 BattleScript_EffectSynthesis[];
extern const u8 BattleScript_EffectMoonlight[];
extern const u8 BattleScript_EffectRainDance[];
extern const u8 BattleScript_EffectSunnyDay[];
extern const u8 BattleScript_EffectDefenseUpHit[];
extern const u8 BattleScript_EffectAttackUpHit[];
extern const u8 BattleScript_EffectAllStatsUpHit[];
extern const u8 BattleScript_EffectHit[];
extern const u8 BattleScript_EffectBellyDrum[];
extern const u8 BattleScript_EffectPsychUp[];
extern const u8 BattleScript_EffectMirrorCoat[];
extern const u8 BattleScript_EffectTwister[];
extern const u8 BattleScript_EffectEarthquake[];
extern const u8 BattleScript_EffectFutureSight[];
extern const u8 BattleScript_EffectGust[];
extern const u8 BattleScript_EffectStomp[];
extern const u8 BattleScript_EffectThunder[];
extern const u8 BattleScript_EffectTeleport[];
extern const u8 BattleScript_EffectBeatUp[];
extern const u8 BattleScript_EffectDefenseCurl[];
extern const u8 BattleScript_EffectSoftboiled[];
extern const u8 BattleScript_EffectFakeOut[];
extern const u8 BattleScript_EffectUproar[];
extern const u8 BattleScript_EffectStockpile[];
extern const u8 BattleScript_EffectSwallow[];
@ -385,9 +338,7 @@ extern const u8 BattleScript_EffectTorment[];
extern const u8 BattleScript_EffectFlatter[];
extern const u8 BattleScript_EffectWillOWisp[];
extern const u8 BattleScript_EffectMemento[];
extern const u8 BattleScript_EffectFacade[];
extern const u8 BattleScript_EffectFocusPunch[];
extern const u8 BattleScript_EffectSmellingsalt[];
extern const u8 BattleScript_EffectFollowMe[];
extern const u8 BattleScript_EffectNaturePower[];
extern const u8 BattleScript_EffectCharge[];
@ -398,30 +349,20 @@ extern const u8 BattleScript_EffectRolePlay[];
extern const u8 BattleScript_EffectWish[];
extern const u8 BattleScript_EffectAssist[];
extern const u8 BattleScript_EffectIngrain[];
extern const u8 BattleScript_EffectSuperpower[];
extern const u8 BattleScript_EffectMagicCoat[];
extern const u8 BattleScript_EffectRecycle[];
extern const u8 BattleScript_EffectRevenge[];
extern const u8 BattleScript_EffectBrickBreak[];
extern const u8 BattleScript_EffectYawn[];
extern const u8 BattleScript_EffectKnockOff[];
extern const u8 BattleScript_EffectEndeavor[];
extern const u8 BattleScript_EffectSkillSwap[];
extern const u8 BattleScript_EffectImprison[];
extern const u8 BattleScript_EffectRefresh[];
extern const u8 BattleScript_EffectGrudge[];
extern const u8 BattleScript_EffectSnatch[];
extern const u8 BattleScript_EffectDoubleEdge[];
extern const u8 BattleScript_EffectTeeterDance[];
extern const u8 BattleScript_EffectBurnHit[];
extern const u8 BattleScript_EffectMudSport[];
extern const u8 BattleScript_EffectPoisonFang[];
extern const u8 BattleScript_EffectOverheat[];
extern const u8 BattleScript_EffectTickle[];
extern const u8 BattleScript_EffectCosmicPower[];
extern const u8 BattleScript_EffectSkyUppercut[];
extern const u8 BattleScript_EffectBulkUp[];
extern const u8 BattleScript_EffectPoisonHit[];
extern const u8 BattleScript_EffectWaterSport[];
extern const u8 BattleScript_EffectCalmMind[];
extern const u8 BattleScript_EffectDragonDance[];
@ -469,7 +410,6 @@ extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_SpikesActivates[];
extern const u8 BattleScript_SyrupBombActivates[];
extern const u8 BattleScript_AromaVeilProtectsRet[];
extern const u8 BattleScript_EffectPsychicNoise[];
extern const u8 BattleScript_StatUpMsg[];
extern const u8 BattleScript_SymbiosisActivates[];
extern const u8 BattleScript_OverworldStatusStarts[];
@ -557,7 +497,6 @@ extern const u8 BattleScript_LocalTwoTrainersDefeated[];
extern const u8 BattleScript_LocalBattleWonLoseTexts[];
extern const u8 BattleScript_LocalBattleWonReward[];
extern const u8 BattleScript_PayDayMoneyAndPickUpItems[];
extern const u8 BattleScript_LocalBattleLost[];
extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[];
extern const u8 BattleScript_LocalBattleLostEnd[];
extern const u8 BattleScript_CheckDomeDrew[];
@ -568,7 +507,6 @@ extern const u8 BattleScript_SmokeBallEscape[];
extern const u8 BattleScript_RanAwayUsingMonAbility[];
extern const u8 BattleScript_GotAwaySafely[];
extern const u8 BattleScript_WildMonFled[];
extern const u8 BattleScript_PrintCantRunFromTrainer[];
extern const u8 BattleScript_PrintFailedToRunString[];
extern const u8 BattleScript_PrintCantEscapeFromBattle[];
extern const u8 BattleScript_PrintFullBox[];
@ -752,7 +690,6 @@ extern const u8 BattleScript_BerryStatRaiseRet[];
extern const u8 BattleScript_BerryFocusEnergyRet[];
extern const u8 BattleScript_BerryFocusEnergyEnd2[];
extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
extern const u8 BattleScript_ArenaTurnBeginning[];
extern const u8 BattleScript_PalacePrintFlavorText[];
extern const u8 BattleScript_ArenaDoJudgment[];
extern const u8 BattleScript_FrontierLinkBattleLost[];
@ -1058,7 +995,6 @@ extern const u8 BattleScript_EffectSleep[];
extern const u8 BattleScript_EffectAbsorb[];
extern const u8 BattleScript_EffectExplosion[];
extern const u8 BattleScript_EffectDreamEater[];
extern const u8 BattleScript_EffectMirrorMove[];
extern const u8 BattleScript_EffectAttackUp[];
extern const u8 BattleScript_EffectDefenseUp[];
extern const u8 BattleScript_EffectSpeedUp[];
@ -1159,7 +1095,6 @@ extern const u8 BattleScript_EffectBellyDrum[];
extern const u8 BattleScript_EffectPsychUp[];
extern const u8 BattleScript_EffectMirrorCoat[];
extern const u8 BattleScript_EffectFutureSight[];
extern const u8 BattleScript_EffectGust[];
extern const u8 BattleScript_EffectTeleport[];
extern const u8 BattleScript_EffectBeatUp[];
extern const u8 BattleScript_EffectDefenseCurl[];
@ -1197,7 +1132,6 @@ extern const u8 BattleScript_EffectHitEscape[];
extern const u8 BattleScript_EffectMudSport[];
extern const u8 BattleScript_EffectTickle[];
extern const u8 BattleScript_EffectCosmicPower[];
extern const u8 BattleScript_EffectSkyUppercut[];
extern const u8 BattleScript_EffectBulkUp[];
extern const u8 BattleScript_EffectPlaceholder[];
extern const u8 BattleScript_EffectWaterSport[];

View File

@ -167,6 +167,7 @@ bool32 CompareStat(u32 battler, u8 statId, u8 cmpTo, u8 cmpKind);
u32 CalcSecondaryEffectChance(u32 battler, u32 battlerAbility, const struct AdditionalEffect *additionalEffect);
bool32 MoveHasAdditionalEffect(u32 move, u32 moveEffect);
u8 GetBattleMoveCategory(u32 moveId);
bool32 CanFling(u32 battler);
u32 GetBattlerMoveTargetType(u32 battler, u32 move);
bool32 IsBattlerTerrainAffected(u32 battler, u32 terrainFlag);
bool32 IsBattlerGrounded(u32 battler);
@ -239,6 +240,7 @@ s32 GetStealthHazardDamageByTypesAndHP(u8 hazardType, u8 type1, u8 type2, u32 ma
bool32 DoBattlersShareType(u32 battler1, u32 battler2);
bool32 MoveHasChargeTurnAdditionalEffect(u32 move);
bool32 IsPartnerMonFromSameTrainer(u32 battler);
u8 GetCategoryBasedOnStats(u32 battler);
// battle_ai_util.h
bool32 IsHealingMove(u32 move);

View File

@ -1232,7 +1232,7 @@
#define STRINGID_SUNLIGHTACTIVATEDABILITY 633
#define STRINGID_STATWASHEIGHTENED 634
#define STRINGID_ELECTRICTERRAINACTIVATEDABILITY 635
#define STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT 636
#define STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT 636
#define STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN 637
#define STRINGID_PKMNSABILITYPREVENTSABILITY 638
#define STRINGID_PREPARESHELLTRAP 639
@ -1392,6 +1392,7 @@
#define B_MSG_STARTED_SANDSTORM 3
#define B_MSG_STARTED_SUNLIGHT 4
#define B_MSG_STARTED_HAIL 5
#define B_MSG_STARTED_SNOW 6
// gRainContinuesStringIds
#define B_MSG_RAIN_CONTINUES 0

View File

@ -329,7 +329,7 @@ static const u8 sText_WildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} f
static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!");
static const u8 sText_NoRunningFromTrainers[] = _("No! There's no running\nfrom a TRAINER battle!\p");
static const u8 sText_CantEscape[] = _("Can't escape!\p");
static const u8 sText_DontLeaveBirch[] = _("PROF. BIRCH: Don't leave me like this!\p");
static const u8 sText_DontLeaveBirch[] = _(""); // Dummied
static const u8 sText_ButNothingHappened[] = _("But nothing happened!");
static const u8 sText_ButItFailed[] = _("But it failed!");
static const u8 sText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!");
@ -1044,7 +1044,7 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_ST
[STRINGID_SHARPSTEELDMG - BATTLESTRINGS_TABLE_START] = sText_SharpSteelDmg,
[STRINGID_SHARPSTEELFLOATS - BATTLESTRINGS_TABLE_START] = sText_SharpSteelFloats,
[STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN - BATTLESTRINGS_TABLE_START] = sText_AttackerGainedStrengthFromTheFallen,
[STRINGID_ABILITYWEAKENEDFSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat,
[STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT - BATTLESTRINGS_TABLE_START] = sText_AbilityWeakenedSurroundingMonsStat,
[STRINGID_ELECTRICTERRAINACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_ElectricTerrainActivatedAbility,
[STRINGID_STATWASHEIGHTENED - BATTLESTRINGS_TABLE_START] = sText_StatWasHeightened,
[STRINGID_SUNLIGHTACTIVATEDABILITY - BATTLESTRINGS_TABLE_START] = sText_SunlightActivatedAbility,
@ -1844,11 +1844,12 @@ const u16 gNoEscapeStringIds[] =
const u16 gMoveWeatherChangeStringIds[] =
{
[B_MSG_STARTED_RAIN] = STRINGID_STARTEDTORAIN,
[B_MSG_STARTED_DOWNPOUR] = STRINGID_DOWNPOURSTARTED,
[B_MSG_STARTED_DOWNPOUR] = STRINGID_DOWNPOURSTARTED, // Unused
[B_MSG_WEATHER_FAILED] = STRINGID_BUTITFAILED,
[B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED,
[B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT,
[B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL
[B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL,
[B_MSG_STARTED_SNOW] = STRINGID_STARTEDSNOW,
};
const u16 gSandStormHailSnowContinuesStringIds[] =
@ -2206,6 +2207,24 @@ const u16 gCaughtMonStringIds[] =
[B_MSG_BILLS_BOX_FULL] = STRINGID_PKMNBOXBILLSPCFULL
};
const u16 gRoomsStringIds[] =
{
STRINGID_PKMNTWISTEDDIMENSIONS, STRINGID_TRICKROOMENDS,
STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON, STRINGID_WONDERROOMENDS,
STRINGID_HELDITEMSLOSEEFFECTS, STRINGID_MAGICROOMENDS,
STRINGID_EMPTYSTRING3
};
const u16 gStatusConditionsStringIds[] =
{
STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNGOTFROSTBITE
};
const u16 gStatus2StringIds[] =
{
STRINGID_PKMNWASCONFUSED, STRINGID_PKMNFELLINLOVE, STRINGID_TARGETCANTESCAPENOW, STRINGID_PKMNSUBJECTEDTOTORMENT
};
const u16 gDamageNonTypesStartStringIds[] =
{
[B_MSG_TRAPPED_WITH_VINES] = STRINGID_TEAMTRAPPEDWITHVINES,

File diff suppressed because it is too large Load Diff

View File

@ -8984,6 +8984,24 @@ bool32 MoveHasAdditionalEffectSelfArg(u32 move, u32 moveEffect, u32 argument)
return (gMovesInfo[move].argument == argument) && MoveHasAdditionalEffectSelf(move, moveEffect);
}
// Photon geyser & light that burns the sky
u8 GetCategoryBasedOnStats(u32 battler)
{
u32 attack = gBattleMons[battler].attack;
u32 spAttack = gBattleMons[battler].spAttack;
attack = attack * gStatStageRatios[gBattleMons[battler].statStages[STAT_ATK]][0];
attack = attack / gStatStageRatios[gBattleMons[battler].statStages[STAT_ATK]][1];
spAttack = spAttack * gStatStageRatios[gBattleMons[battler].statStages[STAT_SPATK]][0];
spAttack = spAttack / gStatStageRatios[gBattleMons[battler].statStages[STAT_SPATK]][1];
if (spAttack >= attack)
return DAMAGE_CATEGORY_SPECIAL;
else
return DAMAGE_CATEGORY_PHYSICAL;
}
static u32 GetFlingPowerFromItemId(u32 itemId)
{
if (itemId >= ITEM_TM01 && itemId <= ITEM_HM08)
@ -8997,6 +9015,21 @@ static u32 GetFlingPowerFromItemId(u32 itemId)
return ItemId_GetFlingPower(itemId);
}
bool32 CanFling(u32 battler)
{
u16 item = gBattleMons[battler].item;
if (item == ITEM_NONE
|| (B_KLUTZ_FLING_INTERACTION >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ)
|| gFieldStatuses & STATUS_FIELD_MAGIC_ROOM
|| gDisableStructs[battler].embargoTimer != 0
|| GetFlingPowerFromItemId(item) == 0
|| !CanBattlerGetOrLoseItem(battler, item))
return FALSE;
return TRUE;
}
static void SetRandomMultiHitCounter()
{
if (GetBattlerHoldEffect(gBattlerAttacker, TRUE) == HOLD_EFFECT_LOADED_DICE)

File diff suppressed because it is too large Load Diff