mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-04 10:20:01 +01:00
More gen4 move effects battlescrips.
This commit is contained in:
parent
b203cf4ca4
commit
fcca2afc81
@ -560,7 +560,7 @@
|
||||
|
||||
.macro setgravity ptr
|
||||
.byte 0x69
|
||||
.word \ptr
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro removeitem bank
|
||||
@ -864,7 +864,7 @@
|
||||
|
||||
.macro settailwind ptr
|
||||
.byte 0xac
|
||||
.word \ptr
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro tryspiteppreduce param0
|
||||
@ -911,7 +911,7 @@
|
||||
|
||||
.macro setembargo ptr
|
||||
.byte 0xb6
|
||||
.word \ptr
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro presentdamagecalculation
|
||||
@ -1051,14 +1051,14 @@
|
||||
.4byte \param1
|
||||
.endm
|
||||
|
||||
.macro trysetroots param0
|
||||
.macro settoxicspikes ptr
|
||||
.byte 0xd5
|
||||
.4byte \param0
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro setaquaring ptr
|
||||
.macro setgastroacid ptr
|
||||
.byte 0xd6
|
||||
.word \ptr
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro setyawn param0
|
||||
@ -1071,7 +1071,7 @@
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro nop_D9
|
||||
.macro setroom
|
||||
.byte 0xd9
|
||||
.endm
|
||||
|
||||
@ -1085,13 +1085,15 @@
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro trysetgrudge param0
|
||||
.macro setstealthrock param0
|
||||
.byte 0xdc
|
||||
.4byte \param0
|
||||
.endm
|
||||
|
||||
.macro nop_DD
|
||||
.macro setuserstatus3 flags ptr
|
||||
.byte 0xdd
|
||||
.4byte \flags
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro asistattackselect param0
|
||||
@ -1216,6 +1218,11 @@
|
||||
.byte \param0
|
||||
.endm
|
||||
|
||||
.macro settelekinesis ptr
|
||||
.byte 0xf9
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
@ various command changed to more readable macros
|
||||
.macro cancelmultiturnmoves bank
|
||||
various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||
|
@ -237,7 +237,7 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
|
||||
.4byte BattleScript_EffectAssurance
|
||||
.4byte BattleScript_EffectTrump_card
|
||||
.4byte BattleScript_EffectAcrobatics
|
||||
.4byte BattleScript_EffectHeat_crash
|
||||
.4byte BattleScript_EffectHeatCrash
|
||||
.4byte BattleScript_EffectPunishment
|
||||
.4byte BattleScript_EffectStoredPower
|
||||
.4byte BattleScript_EffectElectroBall
|
||||
@ -257,12 +257,90 @@ gBattleScriptsForMoveEffects:: @ 82D86A8
|
||||
.4byte BattleScript_EffectTailwind
|
||||
.4byte BattleScript_EffectEmbargo
|
||||
.4byte BattleScript_EffectAquaRing
|
||||
.4byte BattleScript_EffectTrickRoom
|
||||
.4byte BattleScript_EffectWonderRoom
|
||||
.4byte BattleScript_EffectMagicRoom
|
||||
.4byte BattleScript_EffectMagnetRise
|
||||
.4byte BattleScript_EffectToxicSpikes
|
||||
.4byte BattleScript_EffectGastroAcid
|
||||
.4byte BattleScript_EffectStealthRock
|
||||
.4byte BattleScript_EffectTelekinesis
|
||||
|
||||
BattleScript_EffectTelekinesis:
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, NO_ACC_CALC_CHECK_LOCK_ON
|
||||
attackstring
|
||||
ppreduce
|
||||
settelekinesis BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNIDENTIFIED
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectStealthRock:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setstealthrock STRINGID_POINTEDSTONESFLOAT
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_POISONSPIKESSCATTERED
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectGastroAcid:
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
attackstring
|
||||
ppreduce
|
||||
setgastroacid BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNSABILITYSUPPRESSED
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectToxicSpikes:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
settoxicspikes BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_POISONSPIKESSCATTERED
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectMagnetRise:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setuserstatus3 STATUS3_MAGNET_RISE BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNLEVITATEDONELECTROMAGNETISM
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectTrickRoom:
|
||||
BattleScript_EffectWonderRoom:
|
||||
BattleScript_EffectMagicRoom:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setroom
|
||||
attackanimation
|
||||
waitanimation
|
||||
printfromtable gRoomsStringIds
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectAquaRing:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setaquaring BattleScript_ButItFailed
|
||||
setuserstatus3 STATUS3_AQUA_RING BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNSURROUNDEDWITHVEILOFWATER
|
||||
@ -319,18 +397,8 @@ BattleScript_EffectRoost:
|
||||
setroost
|
||||
goto BattleScript_PresentHealTarget
|
||||
|
||||
BattleScript_EffectSpeedUp:
|
||||
BattleScript_EffectSpecialDefenseUp:
|
||||
BattleScript_EffectAccuracyUp:
|
||||
BattleScript_EffectAlwaysHit:
|
||||
BattleScript_EffectSpecialAttackDown:
|
||||
BattleScript_EffectSpecialDefenseDown:
|
||||
BattleScript_EffectPlaceholder43:
|
||||
BattleScript_EffectAccuracyUp2:
|
||||
BattleScript_EffectEvasionUp2:
|
||||
BattleScript_EffectSpecialAttackDown2:
|
||||
BattleScript_EffectAccuracyDown2:
|
||||
BattleScript_EffectEvasionDown2:
|
||||
BattleScript_EffectEvasionDownHit:
|
||||
BattleScript_EffectVitalThrow:
|
||||
BattleScript_EffectUnused60:
|
||||
@ -360,7 +428,7 @@ BattleScript_EffectHex:
|
||||
BattleScript_EffectAssurance:
|
||||
BattleScript_EffectTrump_card:
|
||||
BattleScript_EffectAcrobatics:
|
||||
BattleScript_EffectHeat_crash:
|
||||
BattleScript_EffectHeatCrash:
|
||||
BattleScript_EffectPunishment:
|
||||
BattleScript_EffectStoredPower:
|
||||
BattleScript_EffectElectroBall:
|
||||
@ -621,6 +689,18 @@ BattleScript_EffectDefenseUp::
|
||||
BattleScript_EffectSpecialAttackUp::
|
||||
setstatchanger STAT_SPATK, 1, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectSpeedUp:
|
||||
setstatchanger STAT_SPEED, 1, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectSpecialDefenseUp:
|
||||
setstatchanger STAT_SPDEF, 1, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectAccuracyUp:
|
||||
setstatchanger STAT_ACC, 1, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectEvasionUp::
|
||||
setstatchanger STAT_EVASION, 1, FALSE
|
||||
@ -651,25 +731,33 @@ BattleScript_StatUp::
|
||||
waitmessage 0x40
|
||||
return
|
||||
|
||||
BattleScript_EffectAttackDown::
|
||||
BattleScript_EffectAttackDown:
|
||||
setstatchanger STAT_ATK, 1, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectDefenseDown::
|
||||
BattleScript_EffectDefenseDown:
|
||||
setstatchanger STAT_DEF, 1, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectSpeedDown::
|
||||
BattleScript_EffectSpeedDown:
|
||||
setstatchanger STAT_SPEED, 1, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectAccuracyDown::
|
||||
BattleScript_EffectAccuracyDown:
|
||||
setstatchanger STAT_ACC, 1, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectSpecialAttackDown:
|
||||
setstatchanger STAT_SPATK, 1, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectEvasionDown::
|
||||
BattleScript_EffectSpecialDefenseDown:
|
||||
setstatchanger STAT_SPDEF, 1, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectEvasionDown:
|
||||
setstatchanger STAT_EVASION, 1, TRUE
|
||||
BattleScript_EffectStatDown::
|
||||
BattleScript_EffectStatDown:
|
||||
attackcanceler
|
||||
jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
@ -1083,6 +1171,14 @@ BattleScript_EffectSpecialAttackUp2::
|
||||
BattleScript_EffectSpecialDefenseUp2::
|
||||
setstatchanger STAT_SPDEF, 2, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectAccuracyUp2:
|
||||
setstatchanger STAT_ACC, 2, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectEvasionUp2:
|
||||
setstatchanger STAT_EVASION, 2, FALSE
|
||||
goto BattleScript_EffectStatUp
|
||||
|
||||
BattleScript_EffectTransform::
|
||||
attackcanceler
|
||||
@ -1095,21 +1191,33 @@ BattleScript_EffectTransform::
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectAttackDown2::
|
||||
BattleScript_EffectAttackDown2:
|
||||
setstatchanger STAT_ATK, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectDefenseDown2::
|
||||
BattleScript_EffectDefenseDown2:
|
||||
setstatchanger STAT_DEF, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectSpeedDown2::
|
||||
BattleScript_EffectSpeedDown2:
|
||||
setstatchanger STAT_SPEED, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectSpecialDefenseDown2::
|
||||
BattleScript_EffectSpecialDefenseDown2:
|
||||
setstatchanger STAT_SPDEF, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectSpecialAttackDown2:
|
||||
setstatchanger STAT_SPATK, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectAccuracyDown2:
|
||||
setstatchanger STAT_ACC, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectEvasionDown2:
|
||||
setstatchanger STAT_EVASION, 2, TRUE
|
||||
goto BattleScript_EffectStatDown
|
||||
|
||||
BattleScript_EffectReflect::
|
||||
attackcanceler
|
||||
@ -2471,7 +2579,7 @@ BattleScript_EffectWish::
|
||||
waitanimation
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectAssist::
|
||||
BattleScript_EffectAssist:
|
||||
attackcanceler
|
||||
attackstring
|
||||
asistattackselect BattleScript_ButItFailedPpReduce
|
||||
@ -2481,22 +2589,22 @@ BattleScript_EffectAssist::
|
||||
setbyte sB_ANIM_TARGETS_HIT, 0x0
|
||||
jumptorandomattack TRUE
|
||||
|
||||
BattleScript_EffectIngrain::
|
||||
BattleScript_EffectIngrain:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
trysetroots BattleScript_ButItFailed
|
||||
setuserstatus3 STATUS3_ROOTED BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNPLANTEDROOTS
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectSuperpower::
|
||||
BattleScript_EffectSuperpower:
|
||||
setmoveeffect MOVE_EFFECT_ATK_DEF_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
goto BattleScript_EffectHit
|
||||
|
||||
BattleScript_EffectMagicCoat::
|
||||
BattleScript_EffectMagicCoat:
|
||||
attackcanceler
|
||||
trysetmagiccoat BattleScript_ButItFailedAtkStringPpReduce
|
||||
attackstring
|
||||
@ -2615,7 +2723,7 @@ BattleScript_EffectImprison::
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectRefresh::
|
||||
BattleScript_EffectRefresh:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
@ -2627,18 +2735,18 @@ BattleScript_EffectRefresh::
|
||||
updatestatusicon BS_ATTACKER
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectGrudge::
|
||||
BattleScript_EffectGrudge:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
trysetgrudge BattleScript_ButItFailed
|
||||
setuserstatus3 STATUS3_GRUDGE BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring STRINGID_PKMNWANTSGRUDGE
|
||||
waitmessage 0x40
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectSnatch::
|
||||
BattleScript_EffectSnatch:
|
||||
attackcanceler
|
||||
trysetsnatch BattleScript_ButItFailedAtkStringPpReduce
|
||||
attackstring
|
||||
|
@ -253,8 +253,6 @@ struct SideTimer
|
||||
/*0x09*/ u8 followmeTarget;
|
||||
/*0x0A*/ u8 spikesAmount;
|
||||
u8 toxicSpikesAmount;
|
||||
bool8 stealthRock;
|
||||
bool8 stickyWeb;
|
||||
u8 auroraVeilTimer;
|
||||
u8 auroraVeilBattlerId;
|
||||
u8 tailwindTimer;
|
||||
|
@ -198,6 +198,8 @@
|
||||
#define SIDE_STATUS_TAILWIND (1 << 10)
|
||||
#define SIDE_STATUS_AURORA_VEIL (1 << 11)
|
||||
#define SIDE_STATUS_LUCKY_CHANT (1 << 12)
|
||||
#define SIDE_STATUS_TOXIC_SPIKES (1 << 13)
|
||||
#define SIDE_STATUS_STEALTH_ROCK (1 << 14)
|
||||
|
||||
// Field affecting statuses.
|
||||
#define STATUS_FIELD_MAGIC_ROOM 0x1
|
||||
|
@ -22,8 +22,8 @@
|
||||
#define EFFECT_ATTACK_DOWN 18
|
||||
#define EFFECT_DEFENSE_DOWN 19
|
||||
#define EFFECT_SPEED_DOWN 20
|
||||
#define EFFECT_SPECIAL_ATTACK_DOWN 21 // unused
|
||||
#define EFFECT_SPECIAL_DEFENSE_DOWN 22 // unused
|
||||
#define EFFECT_SPECIAL_ATTACK_DOWN 21
|
||||
#define EFFECT_SPECIAL_DEFENSE_DOWN 22
|
||||
#define EFFECT_ACCURACY_DOWN 23
|
||||
#define EFFECT_EVASION_DOWN 24
|
||||
#define EFFECT_HAZE 25
|
||||
@ -142,7 +142,7 @@
|
||||
#define EFFECT_DEFENSE_UP_HIT 138
|
||||
#define EFFECT_ATTACK_UP_HIT 139
|
||||
#define EFFECT_ALL_STATS_UP_HIT 140
|
||||
#define EFFECT_UNUSED_8D 141 // incomplete fake out in gen 2
|
||||
#define EFFECT_UNUSED_8D 141
|
||||
#define EFFECT_BELLY_DRUM 142
|
||||
#define EFFECT_PSYCH_UP 143
|
||||
#define EFFECT_MIRROR_COAT 144
|
||||
@ -151,7 +151,7 @@
|
||||
#define EFFECT_EARTHQUAKE 147
|
||||
#define EFFECT_FUTURE_SIGHT 148
|
||||
#define EFFECT_GUST 149
|
||||
#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
|
||||
#define EFFECT_FLINCH_MINIMIZE_HIT 150
|
||||
#define EFFECT_SOLARBEAM 151
|
||||
#define EFFECT_THUNDER 152
|
||||
#define EFFECT_TELEPORT 153
|
||||
@ -246,5 +246,13 @@
|
||||
#define EFFECT_TAILWIND 240
|
||||
#define EFFECT_EMBARGO 241
|
||||
#define EFFECT_AQUA_RING 242
|
||||
#define EFFECT_TRICK_TOOM 243
|
||||
#define EFFECT_WONDER_ROOM 244
|
||||
#define EFFECT_MAGIC_ROOM 245
|
||||
#define EFFECT_MAGNET_RISE 246
|
||||
#define EFFECT_TOXIC_SPIKES 247
|
||||
#define EFFECT_GASTRO_ACID 248
|
||||
#define EFFECT_STEALTH_ROCK 249
|
||||
#define EFFECT_TELEKINESIS 250
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
|
||||
|
@ -1304,6 +1304,14 @@ const u16 gTrappingMoves[] =
|
||||
MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xFFFF
|
||||
};
|
||||
|
||||
const u16 gRoomsStringIds[] =
|
||||
{
|
||||
STRINGID_PKMNTWISTEDDIMENSIONS, STRINGID_TRICKROOMENDS,
|
||||
STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON, STRINGID_WONDERROOMENDS,
|
||||
STRINGID_HELDITEMSLOSEEFFECTS, STRINGID_MAGICROOMENDS,
|
||||
STRINGID_EMPTYSTRING3
|
||||
};
|
||||
|
||||
const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
|
||||
const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p");
|
||||
const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
|
||||
|
@ -304,15 +304,15 @@ static void atkD1_trysethelpinghand(void);
|
||||
static void atkD2_tryswapitems(void);
|
||||
static void atkD3_trycopyability(void);
|
||||
static void atkD4_trywish(void);
|
||||
static void atkD5_trysetroots(void);
|
||||
static void atkD6_setaquaring(void);
|
||||
static void atkD5_settoxicspikes(void);
|
||||
static void atkD6_setgastroacid(void);
|
||||
static void atkD7_setyawn(void);
|
||||
static void atkD8_setdamagetohealthdifference(void);
|
||||
static void atkD9_nop(void);
|
||||
static void atkD9_setroom(void);
|
||||
static void atkDA_tryswapabilities(void);
|
||||
static void atkDB_tryimprision(void);
|
||||
static void atkDC_trysetgrudge(void);
|
||||
static void atkDD_nop(void);
|
||||
static void atkDC_setstealthrock(void);
|
||||
static void atkDD_setuserstatus3(void);
|
||||
static void atkDE_asistattackselect(void);
|
||||
static void atkDF_trysetmagiccoat(void);
|
||||
static void atkE0_trysetsnatch(void);
|
||||
@ -340,6 +340,7 @@ static void atkF5_removeattackerstatus1(void);
|
||||
static void atkF6_finishaction(void);
|
||||
static void atkF7_finishturn(void);
|
||||
static void atkF8_trainerslideout(void);
|
||||
static void atkF9_settelekinesis(void);
|
||||
|
||||
void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
{
|
||||
@ -556,15 +557,15 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
atkD2_tryswapitems,
|
||||
atkD3_trycopyability,
|
||||
atkD4_trywish,
|
||||
atkD5_trysetroots,
|
||||
atkD6_setaquaring,
|
||||
atkD5_settoxicspikes,
|
||||
atkD6_setgastroacid,
|
||||
atkD7_setyawn,
|
||||
atkD8_setdamagetohealthdifference,
|
||||
atkD9_nop,
|
||||
atkD9_setroom,
|
||||
atkDA_tryswapabilities,
|
||||
atkDB_tryimprision,
|
||||
atkDC_trysetgrudge,
|
||||
atkDD_nop,
|
||||
atkDC_setstealthrock,
|
||||
atkDD_setuserstatus3,
|
||||
atkDE_asistattackselect,
|
||||
atkDF_trysetmagiccoat,
|
||||
atkE0_trysetsnatch,
|
||||
@ -591,7 +592,8 @@ void (* const gBattleScriptingCommandsTable[])(void) =
|
||||
atkF5_removeattackerstatus1,
|
||||
atkF6_finishaction,
|
||||
atkF7_finishturn,
|
||||
atkF8_trainerslideout
|
||||
atkF8_trainerslideout,
|
||||
atkF9_settelekinesis,
|
||||
};
|
||||
|
||||
struct StatFractions
|
||||
@ -9206,29 +9208,40 @@ static void atkD4_trywish(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void atkD5_trysetroots(void) // ingrain
|
||||
static void atkD5_settoxicspikes(void)
|
||||
{
|
||||
if (gStatuses3[gBattlerAttacker] & STATUS3_ROOTED)
|
||||
u8 targetSide = GetBattlerSide(gBattlerTarget);
|
||||
if (gSideTimers[targetSide].toxicSpikesAmount >= 2)
|
||||
{
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gStatuses3[gBattlerAttacker] |= STATUS3_ROOTED;
|
||||
gSideTimers[targetSide].toxicSpikesAmount++;
|
||||
gSideStatuses[targetSide] |= SIDE_STATUS_TOXIC_SPIKES;
|
||||
gBattlescriptCurrInstr += 5;
|
||||
}
|
||||
}
|
||||
|
||||
static void atkD6_setaquaring(void)
|
||||
static void atkD6_setgastroacid(void)
|
||||
{
|
||||
if (gStatuses3[gBattlerAttacker] & STATUS3_AQUA_RING)
|
||||
switch (gBattleMons[gBattlerTarget].ability)
|
||||
{
|
||||
case ABILITY_MULTITYPE:
|
||||
case ABILITY_STANCE_CHANGE:
|
||||
case ABILITY_SCHOOLING:
|
||||
case ABILITY_COMATOSE:
|
||||
case ABILITY_SHIELDS_DOWN:
|
||||
case ABILITY_DISGUISE:
|
||||
case ABILITY_RKS_SYSTEM:
|
||||
case ABILITY_BATTLE_BOND:
|
||||
case ABILITY_POWER_CONSTRUCT:
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gStatuses3[gBattlerAttacker] |= STATUS3_AQUA_RING;
|
||||
break;
|
||||
default:
|
||||
gStatuses3[gBattlerTarget] |= STATUS3_GASTRO_ACID;
|
||||
gBattlescriptCurrInstr += 5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -9259,8 +9272,39 @@ static void atkD8_setdamagetohealthdifference(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void atkD9_nop(void)
|
||||
static void HandleRoomMove(u32 statusFlag, u8 *timer, u8 stringId)
|
||||
{
|
||||
if (gFieldStatuses & statusFlag)
|
||||
{
|
||||
gFieldStatuses &= ~(statusFlag);
|
||||
*timer = 0;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = stringId + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldStatuses |= statusFlag;
|
||||
*timer = 5;
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = stringId;
|
||||
}
|
||||
}
|
||||
|
||||
static void atkD9_setroom(void)
|
||||
{
|
||||
switch (gCurrentMove)
|
||||
{
|
||||
case MOVE_TRICK_ROOM:
|
||||
HandleRoomMove(STATUS_FIELD_TRICK_ROOM, &gFieldTimers.trickRoomTimer, 0);
|
||||
break;
|
||||
case MOVE_WONDER_ROOM:
|
||||
HandleRoomMove(STATUS_FIELD_WONDER_ROOM, &gFieldTimers.wonderRoomTimer, 2);
|
||||
break;
|
||||
case MOVE_MAGIC_ROOM:
|
||||
HandleRoomMove(STATUS_FIELD_MAGIC_ROOM, &gFieldTimers.magicRoomTimer, 4);
|
||||
break;
|
||||
default:
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 6;
|
||||
break;
|
||||
}
|
||||
gBattlescriptCurrInstr++;
|
||||
}
|
||||
|
||||
@ -9280,7 +9324,7 @@ static void atkDA_tryswapabilities(void) // skill swap
|
||||
gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability;
|
||||
gBattleMons[gBattlerTarget].ability = abilityAtk;
|
||||
|
||||
gBattlescriptCurrInstr += 5;
|
||||
gBattlescriptCurrInstr += 5;
|
||||
}
|
||||
}
|
||||
|
||||
@ -9321,27 +9365,38 @@ static void atkDB_tryimprision(void)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (battlerId == gBattlersCount) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes
|
||||
if (battlerId == gBattlersCount) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes.
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void atkDC_trysetgrudge(void)
|
||||
static void atkDC_setstealthrock(void)
|
||||
{
|
||||
if (gStatuses3[gBattlerAttacker] & STATUS3_GRUDGE)
|
||||
u8 targetSide = GetBattlerSide(gBattlerTarget);
|
||||
if (gSideStatuses[targetSide] & SIDE_STATUS_STEALTH_ROCK)
|
||||
{
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gStatuses3[gBattlerAttacker] |= STATUS3_GRUDGE;
|
||||
gSideStatuses[targetSide] |= SIDE_STATUS_STEALTH_ROCK;
|
||||
gBattlescriptCurrInstr += 5;
|
||||
}
|
||||
}
|
||||
|
||||
static void atkDD_nop(void)
|
||||
static void atkDD_setuserstatus3(void)
|
||||
{
|
||||
gBattlescriptCurrInstr++;
|
||||
u32 flags = T1_READ_32(gBattlescriptCurrInstr + 1);
|
||||
|
||||
if (gStatuses3[gBattlerAttacker] & flags)
|
||||
{
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 5);
|
||||
}
|
||||
else
|
||||
{
|
||||
gStatuses3[gBattlerAttacker] |= flags;
|
||||
gBattlescriptCurrInstr += 9;
|
||||
}
|
||||
}
|
||||
|
||||
static void atkDE_asistattackselect(void)
|
||||
@ -9356,7 +9411,7 @@ static void atkDE_asistattackselect(void)
|
||||
else
|
||||
party = gPlayerParty;
|
||||
|
||||
for (monId = 0; monId < 6; monId++)
|
||||
for (monId = 0; monId < PARTY_SIZE; monId++)
|
||||
{
|
||||
if (monId == gBattlerPartyIndexes[gBattlerAttacker])
|
||||
continue;
|
||||
@ -10176,3 +10231,19 @@ static void atkF8_trainerslideout(void)
|
||||
|
||||
gBattlescriptCurrInstr += 2;
|
||||
}
|
||||
|
||||
static void atkF9_settelekinesis(void)
|
||||
{
|
||||
if (gStatuses3[gBattlerTarget] & (STATUS3_TELEKINESIS | STATUS3_ROOTED | STATUS3_SMACKED_DOWN)
|
||||
|| gFieldStatuses & STATUS_FIELD_GRAVITY
|
||||
|| (gBattleMons[gBattlerTarget].species == SPECIES_DIGLETT || gBattleMons[gBattlerTarget].species == SPECIES_DUGTRIO))
|
||||
{
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
gStatuses3[gBattlerTarget] |= STATUS3_TELEKINESIS;
|
||||
gDisableStructs[gBattlerTarget].telekinesisTimer = 3;
|
||||
gBattlescriptCurrInstr += 5;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user