More gen4 move effects battlescrips.

This commit is contained in:
DizzyEggg 2018-07-21 21:58:07 +02:00
parent b203cf4ca4
commit fcca2afc81
7 changed files with 279 additions and 77 deletions

View File

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

View File

@ -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:
@ -622,6 +690,18 @@ 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
BattleScript_EffectStatUp::
@ -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_EffectEvasionDown::
BattleScript_EffectSpecialAttackDown:
setstatchanger STAT_SPATK, 1, TRUE
goto BattleScript_EffectStatDown
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
@ -1084,6 +1172,14 @@ 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
attackstring
@ -1095,22 +1191,34 @@ 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
attackstring
@ -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

View File

@ -253,8 +253,6 @@ struct SideTimer
/*0x09*/ u8 followmeTarget;
/*0x0A*/ u8 spikesAmount;
u8 toxicSpikesAmount;
bool8 stealthRock;
bool8 stickyWeb;
u8 auroraVeilTimer;
u8 auroraVeilBattlerId;
u8 tailwindTimer;

View File

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

View File

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

View File

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

View File

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