mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 11:44:17 +01:00
z move anim/effect, black hole eclipse anim
This commit is contained in:
parent
2b1dfe73cf
commit
f114534ae3
@ -24503,7 +24503,151 @@ Move_GIGAVOLT_HAVOC::
|
||||
Move_SHATTERED_PSYCHE::
|
||||
Move_SUBZERO_SLAMMER::
|
||||
Move_DEVASTATING_DRAKE::
|
||||
goto Move_TACKLE
|
||||
|
||||
Move_BLACK_HOLE_ECLIPSE::
|
||||
loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy
|
||||
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT @shock wave
|
||||
loadspritegfx ANIM_TAG_SHADOW_BALL @shadow ball
|
||||
loadspritegfx ANIM_TAG_THIN_RING @ring
|
||||
loadspritegfx ANIM_TAG_ICE_CHUNK @blue
|
||||
loadspritegfx ANIM_TAG_BLACK_BALL_2 @black
|
||||
invisible ANIM_TARGET
|
||||
launchtask AnimTask_AllBanksInvisibleExceptAttackerAndTarget 0xA 0x0
|
||||
waitforvisualfinish
|
||||
playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER
|
||||
call EndureEffect
|
||||
delay 0x8
|
||||
launchtask AnimTask_BlendColorCycle 0x2 0x6 0x2 0x2 0x2 0x0 0xb 0x0000
|
||||
launchtask AnimTask_ShakeMon2 0x2 0x5 0x0 0x1 0x0 0x20 0x1
|
||||
call EndureEffect
|
||||
delay 0x8
|
||||
call EndureEffect
|
||||
waitforvisualfinish
|
||||
unloadspritegfx ANIM_TAG_FOCUS_ENERGY
|
||||
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseShockwaveSpriteTemplate 0x2 0x0
|
||||
waitforvisualfinish
|
||||
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
|
||||
loadspritegfx ANIM_TAG_HANDS_AND_FEET @black
|
||||
playsewithpan SE_M_NIGHTMARE, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseHoleUserSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_ATTACKER 0x0
|
||||
launchtemplate gBlackHoleEclipseBlueRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseBlackRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseBlueRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseBlackRingSpriteTemplate 0x3 0x4 0x0 0x0 0x0 0x0
|
||||
delay 0x8
|
||||
waitforvisualfinish
|
||||
stopsound
|
||||
launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x1 0x0 0x07 0x0000
|
||||
loadspritegfx ANIM_TAG_WISP_ORB @will o wisp
|
||||
invisible ANIM_ATTACKER
|
||||
loopsewithpan SE_M_FLAMETHROWER, SOUND_PAN_TARGET, 0x10, 0x5
|
||||
launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x2 0x3 0x0 0x10 0x0
|
||||
delay 0x3
|
||||
launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x3 0x3 0x0 0x10 0x1
|
||||
delay 0x3
|
||||
launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x4 0x3 0x0 0x10 0x2
|
||||
delay 0x3
|
||||
launchtemplate gBlackHoleEclipseWispSpriteTemplate 0x4 0x3 0x0 0x10 0x3
|
||||
waitforvisualfinish
|
||||
fadetobg BG_BLACKHOLE_ECLIPSE
|
||||
playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET
|
||||
loadspritegfx ANIM_TAG_VERTICAL_HEX @red
|
||||
launchtemplate gBlackHoleEclipseRedRingSpriteTemplate 0x3 0x4 0x0 0x0 0x100 0x0
|
||||
delay 0x4
|
||||
launchtemplate gBlackHoleEclipseRedRingSpriteTemplate 0x3 0x4 0x0 0x0 0x100 0x0
|
||||
delay 0x4
|
||||
launchtemplate gBlackHoleEclipseRedRingSpriteTemplate 0x3 0x4 0x0 0x0 0x100 0x0
|
||||
waitbgfadeout
|
||||
unloadspritegfx ANIM_TAG_WISP_ORB
|
||||
launchtemplate gBlackHoleEclipseHoleSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_TARGET 0x0 @ eclipse at target origin
|
||||
delay 0x10
|
||||
launchtemplate gSlideMonToOffsetSpriteTemplate 0x2 0x5 ANIM_TARGET 0x35 0xffed 0x1 0x2 @ target down and left (instantaneously (last arg))
|
||||
delay 0x2
|
||||
visible ANIM_TARGET
|
||||
loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 0xa, 0x5
|
||||
launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x50 0xfc00 ANIM_TARGET 0x0 @ spin target around (0x50 (time), -0x400 (rot speed))
|
||||
launchtemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gSlideMonToOriginalPosSpriteTemplate 0x2 0x3 ANIM_TARGET 0x0 0x30 @ target back to origin (slowly)
|
||||
launchtemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x15
|
||||
invisible ANIM_TARGET
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate 0x28 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
delay 0x8
|
||||
launchtemplate gBlackHoleEclipseHoleShrinkSpriteTemplate 0x2 0x4 0x0 0x0 ANIM_TARGET 0x0
|
||||
waitforvisualfinish
|
||||
loadspritegfx ANIM_TAG_SPARKLE_4 @detect
|
||||
launchtemplate gTargetTwinkleSpriteTemplate 0xd 0x3 0x0 0x0 ANIM_TARGET @detect star
|
||||
delay 0x2
|
||||
unloadspritegfx ANIM_TAG_SHADOW_BALL
|
||||
unloadspritegfx ANIM_TAG_THIN_RING
|
||||
unloadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
unloadspritegfx ANIM_TAG_BLACK_BALL_2
|
||||
loadspritegfx ANIM_TAG_EXPLOSION_2
|
||||
call BlackHoleEclipseExplosion
|
||||
launchtask AnimTask_BlendBattleAnimPal, 0xa, 0x5, ANIM_PAL_ALL_BATTLERS | ANIM_PAL_BG, 0x1, 0x0, 0x10, 0x7fff @ bg to white pal
|
||||
call BlackHoleEclipseExplosion
|
||||
waitforvisualfinish
|
||||
delay 0x18
|
||||
invisible ANIM_TARGET
|
||||
launchtask AnimTask_RotateMonSpriteToSide 0x2 0x4 0x1 0x0 ANIM_TARGET 0x1 @ fix rotation
|
||||
invisible ANIM_TARGET
|
||||
delay 0x1
|
||||
waitforvisualfinish
|
||||
call ResetFromWhiteScreen
|
||||
end
|
||||
|
||||
BlackHoleEclipseExplosion:
|
||||
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0x0 0x0 ANIM_TARGET 0x1
|
||||
delay 0x6
|
||||
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0x18 0xffe8 ANIM_TARGET 0x1
|
||||
delay 0x6
|
||||
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0xfff0 0x10 ANIM_TARGET 0x1
|
||||
delay 0x6
|
||||
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0xffe8 0xfff4 ANIM_TARGET 0x1
|
||||
delay 0x6
|
||||
playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER
|
||||
launchtemplate gBlackHoleEclipseRedExplosionSpriteTemplate 0x3 0x4 0x10 0x10 ANIM_TARGET 0x1
|
||||
delay 0x6
|
||||
return
|
||||
|
||||
ResetFromWhiteScreen:
|
||||
launchtask AnimTask_AllBanksInvisible 0xA 0x0
|
||||
waitforvisualfinish
|
||||
launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_ALL_BATTLERS 0x2 0x0 0x0 0x7FFF @everything from white
|
||||
restorebg
|
||||
waitbgfadeout
|
||||
setarg 0x7 0xffff
|
||||
launchtask AnimTask_AllBanksVisible 0xA 0x0
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
delay 0x5
|
||||
launchtask AnimTask_BlendBattleAnimPal 0xa 0x5 ANIM_PAL_BG 0x0 0x0 0x0 0x7fff
|
||||
waitforvisualfinish
|
||||
return
|
||||
|
||||
Move_TWINKLE_TACKLE::
|
||||
Move_CATASTROPIKA::
|
||||
Move_10000000_VOLT_THUNDERBOLT::
|
||||
|
@ -7687,15 +7687,7 @@ BattleScript_PrintPlayerForfeitedLinkBattle::
|
||||
waitmessage 0x40
|
||||
end2
|
||||
|
||||
BattleScript_ZMoveActivateStatus::
|
||||
printstring STRINGID_ZPOWERSURROUNDS
|
||||
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
|
||||
setzeffect
|
||||
printstring STRINGID_ZMOVEUNLEASHED
|
||||
waitmessage 0x40
|
||||
return
|
||||
|
||||
BattleScript_ZMoveActivateDamaging::
|
||||
BattleScript_ZMoveActivate::
|
||||
printstring STRINGID_ZPOWERSURROUNDS
|
||||
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
|
||||
printstring STRINGID_ZMOVEUNLEASHED
|
||||
|
@ -206,6 +206,7 @@ u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
|
||||
#define STAT_ANIM_MULTIPLE_MINUS1 57
|
||||
#define STAT_ANIM_MULTIPLE_MINUS2 58
|
||||
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
|
||||
extern const union AnimCmd *const gSpriteAnimTable_853EE80[];
|
||||
|
||||
// battle_anim_ground.c
|
||||
void AnimTask_HorizontalShake(u8 taskId);
|
||||
@ -476,7 +477,9 @@ extern const union AnimCmd *const gAnims_BlizzardIceCrystal[];
|
||||
// battle_anim_fire.c
|
||||
void AnimFireSpread(struct Sprite *sprite);
|
||||
void AnimFireSpiralOutward(struct Sprite *sprite);
|
||||
void AnimWillOWispOrb(struct Sprite *);
|
||||
extern const union AnimCmd *const gAnims_FireBlastCross[];
|
||||
extern const union AnimCmd *const gAnims_WillOWispOrb[];
|
||||
|
||||
// battle_anim_dragon.c
|
||||
extern const union AnimCmd *const gAnims_DragonBreathFire[];
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_BATTLE_MESSAGE_H
|
||||
#define GUARD_BATTLE_MESSAGE_H
|
||||
|
||||
#define TEXT_BUFF_ARRAY_COUNT 16
|
||||
#define TEXT_BUFF_ARRAY_COUNT 20 //expanded for z move names
|
||||
|
||||
// for 0xFD
|
||||
#define B_TXT_BUFF1 0x0
|
||||
|
@ -349,7 +349,6 @@ extern const u8 BattleScript_EmergencyExitNoPopUp[];
|
||||
extern const u8 BattleScript_EmergencyExitWild[];
|
||||
extern const u8 BattleScript_EmergencyExitWildNoPopUp[];
|
||||
extern const u8 BattleScript_CheekPouchActivates[];
|
||||
extern const u8 BattleScript_ZMoveActivateStatus[];
|
||||
extern const u8 BattleScript_ZMoveActivateDamaging[];
|
||||
extern const u8 BattleScript_ZMoveActivate[];
|
||||
|
||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||
|
@ -18,5 +18,6 @@ void HideZMoveTriggerSprite(void);
|
||||
bool32 IsZMoveTriggerSpriteActive(void);
|
||||
void DestroyZMoveTriggerSprite(void);
|
||||
bool32 MoveSelectionDisplayZMove(u16 zmove);
|
||||
const u8* GetZMoveName(u16 move);
|
||||
|
||||
#endif // GUARD_BATTLE_Z_MOVE_H
|
@ -809,7 +809,7 @@
|
||||
#define MOVE_CLANGOROUS_SOULBLAZE 776
|
||||
#define MOVE_GUARDIAN_OF_ALOLA 777
|
||||
#define MOVE_SEARING_SUNRAZE_SMASH 778
|
||||
#define MOVE_MENACING_MOONRAZE_MAELSTROM 7979
|
||||
#define MOVE_MENACING_MOONRAZE_MAELSTROM 779
|
||||
#define MOVE_LIGHT_THAT_BURNS_THE_SKY 780
|
||||
#define MOVE_SOUL_STEALING_7_STAR_STRIKE 781
|
||||
|
||||
|
@ -32,7 +32,6 @@ static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y)
|
||||
static void UpdateEruptionLaunchRockPos(struct Sprite *);
|
||||
static void AnimEruptionFallingRock(struct Sprite *);
|
||||
static void AnimEruptionFallingRock_Step(struct Sprite *);
|
||||
static void AnimWillOWispOrb(struct Sprite *);
|
||||
static void AnimWillOWispOrb_Step(struct Sprite *);
|
||||
static void AnimWillOWispFire(struct Sprite *);
|
||||
static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId);
|
||||
@ -428,7 +427,7 @@ static const union AnimCmd sAnim_WillOWispOrb_3[] =
|
||||
ANIMCMD_END,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_WillOWispOrb[] =
|
||||
const union AnimCmd *const gAnims_WillOWispOrb[] =
|
||||
{
|
||||
sAnim_WillOWispOrb_0,
|
||||
sAnim_WillOWispOrb_1,
|
||||
@ -441,7 +440,7 @@ const struct SpriteTemplate gWillOWispOrbSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_WISP_ORB,
|
||||
.paletteTag = ANIM_TAG_WISP_ORB,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = sAnims_WillOWispOrb,
|
||||
.anims = gAnims_WillOWispOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimWillOWispOrb,
|
||||
@ -1143,7 +1142,7 @@ static void AnimEruptionFallingRock_Step(struct Sprite *sprite)
|
||||
}
|
||||
}
|
||||
|
||||
static void AnimWillOWispOrb(struct Sprite *sprite)
|
||||
void AnimWillOWispOrb(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
|
@ -54,6 +54,7 @@ static void AnimSkyDropBallUp(struct Sprite *sprite);
|
||||
static void SpriteCB_SearingShotRock(struct Sprite* sprite);
|
||||
static void AnimHappyHourCoinShower(struct Sprite *sprite);
|
||||
static void SpriteCB_Geyser(struct Sprite* sprite);
|
||||
static void SpriteCB_TwinkleOnBattler(struct Sprite *sprite);
|
||||
|
||||
//////// const data
|
||||
//// general
|
||||
@ -4097,7 +4098,7 @@ const struct SpriteTemplate gBreakneckBlitzDanceSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HOLLOW_ORB,
|
||||
.paletteTag = ANIM_TAG_FLAT_ROCK,
|
||||
.oam = OAM_OFF_16x16,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
@ -4128,9 +4129,9 @@ const struct SpriteTemplate gAllOutPummelingOnslaughtSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.paletteTag = ANIM_TAG_IMPACT,
|
||||
.oam = OAM_OFF_32x32,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = 0x83E66CC,
|
||||
.images = 0x0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = 0x80B0929
|
||||
};
|
||||
@ -4151,7 +4152,7 @@ const struct SpriteTemplate gSupersonicSkystrikeFlySpriteTemplate =
|
||||
.paletteTag = ANIM_TAG_BIRD,
|
||||
.oam = OAM_NORMAL_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = 0x0,
|
||||
.images = NULL,
|
||||
.affineAnims = sSupersonicSkystrikeAffineAnimTable,
|
||||
.callback = 0x80B1C3D
|
||||
};
|
||||
@ -4162,7 +4163,7 @@ const struct SpriteTemplate gAcidDownpourReversalSpriteTemplate =
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = OAM_NORMAL_16x16,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = 0x0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = 0x80E0E95
|
||||
};
|
||||
@ -4172,24 +4173,207 @@ const struct SpriteTemplate gAcidDownpourAuraSpriteTemplate =
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = OAM_NORMAL_16x16,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = 0x0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = 0x80B477D
|
||||
};
|
||||
//tectonic rage
|
||||
const struct SpriteTemplate gTectonicRageBlastBurnSpriteTemplate =
|
||||
{
|
||||
TEC_RAGE_BLAST_BURN: objtemplate ANIM_TAG_FIRE_PLUME ANIM_TAG_FIRE_PLUME OAM_OFF_32x32 0x83E5C50 0x0 gDummySpriteAffineAnimTable BLASTBURN_TARGET_ASM+1
|
||||
TEC_RAGE_BLAST_BURN: objtemplate ANIM_TAG_FIRE_PLUME ANIM_TAG_FIRE_PLUME &gOamData_AffineOff_ObjNormal_32x32 0x83E5C50 0x0 gDummySpriteAffineAnimTable BLASTBURN_TARGET_ASM+1
|
||||
};
|
||||
const struct SpriteTemplate gTectonicRageExplosionSpriteTemplate =
|
||||
{
|
||||
TECTONIC_EXPLODE: objtemplate ANIM_TAG_UNUSED_EXPLOSION_2 ANIM_TAG_UNUSED_EXPLOSION_2 OAM_OFF_32x32 0x83E3F90 0x0 gDummySpriteAffineAnimTable SpriteCB_AnimSpriteOnMonPos
|
||||
TECTONIC_EXPLODE: objtemplate ANIM_TAG_EXPLOSION_2 ANIM_TAG_EXPLOSION_2 &gOamData_AffineOff_ObjNormal_32x32 0x83E3F90 0x0 gDummySpriteAffineAnimTable AnimSpriteOnMonPos
|
||||
};*/
|
||||
|
||||
// black hole eclipse
|
||||
const struct SpriteTemplate gBlackHoleEclipseShockwaveSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_CIRCLE_OF_LIGHT,
|
||||
.paletteTag = ANIM_TAG_BLACK_BALL_2,
|
||||
.oam = &gOamData_AffineNormal_ObjBlend_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gAffineAnims_GrowingElectricOrb,
|
||||
.callback = AnimGrowingShockWaveOrb
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseBlueRingSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_THIN_RING,
|
||||
.paletteTag = ANIM_TAG_ICE_CHUNK,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gThinRingExpandingAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseBlackRingSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_THIN_RING,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gThinRingExpandingAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseRedExplosionSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_EXPLOSION_2,
|
||||
.paletteTag = ANIM_TAG_VERTICAL_HEX,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gExplosionAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseWispSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_WISP_ORB,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_16x16,
|
||||
.anims = gAnims_WillOWispOrb,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimWillOWispOrb
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseRedRingSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_THIN_RING,
|
||||
.paletteTag = ANIM_TAG_VERTICAL_HEX,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gThinRingExpandingAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseBlueRingInwardsSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_THIN_RING,
|
||||
.paletteTag = ANIM_TAG_ICE_CHUNK,
|
||||
.oam = &gOamData_AffineDouble_ObjBlend_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gThinRingShrinkingAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseRedRingInwardsSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_THIN_RING,
|
||||
.paletteTag = ANIM_TAG_VERTICAL_HEX,
|
||||
.oam = &gOamData_AffineDouble_ObjBlend_64x64,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gThinRingShrinkingAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
static const union AffineAnimCmd gGrowingBackHoleTargetAffineCmds[] = {
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0, 0, -10, 0x88),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
static const union AffineAnimCmd *const gGrowingBlackHoleTargetAffineAnimTable[] = {
|
||||
gGrowingBackHoleTargetAffineCmds,
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseHoleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SHADOW_BALL,
|
||||
.paletteTag = ANIM_TAG_VERTICAL_HEX,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gGrowingBlackHoleTargetAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
static const union AffineAnimCmd gShrinkingBlackHoleAffineCmds[] = {
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(-0x10, -0x10, 0xf6, 8),
|
||||
AFFINEANIMCMD_END_ALT(1),
|
||||
};
|
||||
static const union AffineAnimCmd *const gShrinkingBlackHoleAffineAnimTable[] = {
|
||||
gShrinkingBlackHoleAffineCmds,
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseHoleShrinkSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SHADOW_BALL,
|
||||
.paletteTag = ANIM_TAG_VERTICAL_HEX,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gShrinkingBlackHoleAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
static const union AffineAnimCmd gGrowingBackHoleAffineCmds[] = {
|
||||
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
|
||||
AFFINEANIMCMD_FRAME(0, 0, -10, 0x48),
|
||||
AFFINEANIMCMD_END,
|
||||
};
|
||||
static const union AffineAnimCmd *const gGrowingBlackHoleAffineAnimTable[] = {
|
||||
gGrowingBackHoleAffineCmds,
|
||||
};
|
||||
const struct SpriteTemplate gBlackHoleEclipseHoleUserSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SHADOW_BALL,
|
||||
.paletteTag = ANIM_TAG_HANDS_AND_FEET,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_32x32,
|
||||
.anims = gDummySpriteAnimTable,
|
||||
.images = NULL,
|
||||
.affineAnims = gGrowingBlackHoleAffineAnimTable,
|
||||
.callback = AnimSpriteOnMonPos
|
||||
};
|
||||
const struct SpriteTemplate gTargetTwinkleSpriteTemplate =
|
||||
{
|
||||
.tileTag = ANIM_TAG_SPARKLE_4,
|
||||
.paletteTag = ANIM_TAG_SPARKLE_4,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = gSpriteAnimTable_853EE80,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_TwinkleOnBattler
|
||||
};
|
||||
|
||||
|
||||
//// functions
|
||||
//general
|
||||
void AnimTask_AllBanksInvisible(u8 taskId)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
u8 spriteId = gBattlerSpriteIds[i];
|
||||
if (spriteId != 0xFF)
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
}
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_AllBanksVisible(u8 taskId)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < gBattlersCount; i++)
|
||||
{
|
||||
u8 spriteId = gBattlerSpriteIds[i];
|
||||
if (spriteId != 0xFF)
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
}
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_AllBanksInvisibleExceptAttackerAndTarget(u8 taskId)
|
||||
{
|
||||
u32 i;
|
||||
for (i = 0; i < gBattlersCount; ++i)
|
||||
{
|
||||
u8 spriteId = gBattlerSpriteIds[i];
|
||||
if (spriteId == GetAnimBattlerSpriteId(ANIM_ATTACKER) || spriteId == GetAnimBattlerSpriteId(ANIM_TARGET))
|
||||
continue;
|
||||
if (spriteId != 0xFF || !IsBattlerSpriteVisible(i)) //Pokemon that are already hidden
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
}
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
static u8 LoadBattleAnimTarget(u8 arg)
|
||||
{
|
||||
u8 battler;
|
||||
@ -5145,3 +5329,20 @@ void AnimTask_TechnoBlast(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
// Z MOVES
|
||||
//Creates a twinkle at the location the target was knocked too in Twinkle Tackle
|
||||
static void SpriteCB_TwinkleOnBattler(struct Sprite *sprite)
|
||||
{
|
||||
struct Sprite* monSprite;
|
||||
|
||||
if (gBattleAnimArgs[2] == ANIM_TARGET)
|
||||
monSprite = &gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)];
|
||||
else
|
||||
monSprite = &gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)];
|
||||
|
||||
sprite->pos1 = monSprite->pos1;
|
||||
sprite->pos2 = monSprite->pos2;
|
||||
sprite->callback = RunStoredCallbackWhenAnimEnds;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
|
||||
|
@ -109,7 +109,7 @@ static const union AnimCmd sSpriteAnim_853EE68[] =
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_853EE80[] =
|
||||
const union AnimCmd *const gSpriteAnimTable_853EE80[] =
|
||||
{
|
||||
sSpriteAnim_853EE68
|
||||
};
|
||||
@ -119,7 +119,7 @@ const struct SpriteTemplate gSpinningSparkleSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_SPARKLE_4,
|
||||
.paletteTag = ANIM_TAG_SPARKLE_4,
|
||||
.oam = &gOamData_AffineOff_ObjNormal_32x32,
|
||||
.anims = sSpriteAnimTable_853EE80,
|
||||
.anims = gSpriteAnimTable_853EE80,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = AnimSpinningSparkle,
|
||||
|
@ -653,7 +653,7 @@ static void HandleInputChooseMove(void)
|
||||
}
|
||||
else if (JOY_NEW(DPAD_LEFT))
|
||||
{
|
||||
if (gMoveSelectionCursor[gActiveBattler] & 1)
|
||||
if (!gBattleStruct->zmove.viewing && gMoveSelectionCursor[gActiveBattler] & 1)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
|
||||
gMoveSelectionCursor[gActiveBattler] ^= 1;
|
||||
@ -666,7 +666,7 @@ static void HandleInputChooseMove(void)
|
||||
}
|
||||
else if (JOY_NEW(DPAD_RIGHT))
|
||||
{
|
||||
if (!(gMoveSelectionCursor[gActiveBattler] & 1)
|
||||
if (!gBattleStruct->zmove.viewing && !(gMoveSelectionCursor[gActiveBattler] & 1)
|
||||
&& (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
|
||||
@ -680,7 +680,7 @@ static void HandleInputChooseMove(void)
|
||||
}
|
||||
else if (JOY_NEW(DPAD_UP))
|
||||
{
|
||||
if (gMoveSelectionCursor[gActiveBattler] & 2)
|
||||
if (!gBattleStruct->zmove.viewing && gMoveSelectionCursor[gActiveBattler] & 2)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
|
||||
gMoveSelectionCursor[gActiveBattler] ^= 2;
|
||||
@ -693,7 +693,7 @@ static void HandleInputChooseMove(void)
|
||||
}
|
||||
else if (JOY_NEW(DPAD_DOWN))
|
||||
{
|
||||
if (!(gMoveSelectionCursor[gActiveBattler] & 2)
|
||||
if (!gBattleStruct->zmove.viewing && !(gMoveSelectionCursor[gActiveBattler] & 2)
|
||||
&& (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
|
||||
|
@ -525,7 +525,7 @@ static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
|
||||
// Great function to include newly added moves that don't have animation yet.
|
||||
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
|
||||
{
|
||||
if (moveId >= (MOVES_COUNT - 1))
|
||||
if (moveId >= (MOVES_COUNT_Z - 1))
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "battle_message.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "battle_z_move.h"
|
||||
#include "data.h"
|
||||
#include "event_data.h"
|
||||
#include "frontier_util.h"
|
||||
@ -2553,7 +2554,9 @@ void BufferStringBattle(u16 stringID)
|
||||
}
|
||||
break;
|
||||
case STRINGID_USEDMOVE: // pokemon used a move msg
|
||||
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
|
||||
if (gBattleStruct->zmove.active)
|
||||
StringCopy(gBattleTextBuff3, GetZMoveName(gBattleMsgDataPtr->currentMove));
|
||||
else if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
|
||||
StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]);
|
||||
else
|
||||
StringCopy(gBattleTextBuff3, gMoveNames[gBattleMsgDataPtr->currentMove]);
|
||||
@ -2982,13 +2985,17 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler)
|
||||
break;
|
||||
case B_TXT_CURRENT_MOVE: // current move name
|
||||
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
|
||||
if (gBattleStruct->zmove.active)
|
||||
toCpy = GetZMoveName(gBattleMsgDataPtr->currentMove);
|
||||
else if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
|
||||
toCpy = sATypeMove_Table[gBattleStruct->stringMoveType];
|
||||
else
|
||||
toCpy = gMoveNames[gBattleMsgDataPtr->currentMove];
|
||||
break;
|
||||
case B_TXT_LAST_MOVE: // originally used move name
|
||||
if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT)
|
||||
if (gBattleStruct->zmove.active)
|
||||
toCpy = GetZMoveName(gBattleMsgDataPtr->originallyUsedMove);
|
||||
else if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT)
|
||||
toCpy = sATypeMove_Table[gBattleStruct->stringMoveType];
|
||||
else
|
||||
toCpy = gMoveNames[gBattleMsgDataPtr->originallyUsedMove];
|
||||
|
@ -1627,7 +1627,14 @@ static void Cmd_ppreduce(void)
|
||||
|
||||
if (gBattleControllerExecFlags)
|
||||
return;
|
||||
|
||||
|
||||
if (gBattleStruct->zmove.active)
|
||||
{
|
||||
gHitMarker &= ~(HITMARKER_NO_PPDEDUCT);
|
||||
gBattlescriptCurrInstr++;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!gSpecialStatuses[gBattlerAttacker].ppNotAffectedByPressure)
|
||||
{
|
||||
switch (gBattleMoves[gCurrentMove].target)
|
||||
|
@ -95,7 +95,7 @@ void HandleAction_UseMove(void)
|
||||
gCurrentMove = gChosenMove = gLockedMoves[gBattlerAttacker];
|
||||
}
|
||||
// encore forces you to use the same move
|
||||
else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
|
||||
else if (!gBattleStruct->zmove.active && gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
|
||||
&& gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
|
||||
{
|
||||
gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
|
||||
@ -103,7 +103,7 @@ void HandleAction_UseMove(void)
|
||||
*(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
|
||||
}
|
||||
// check if the encored move wasn't overwritten
|
||||
else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
|
||||
else if (!gBattleStruct->zmove.active && gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
|
||||
&& gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
|
||||
{
|
||||
gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
|
||||
@ -122,6 +122,12 @@ void HandleAction_UseMove(void)
|
||||
{
|
||||
gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
|
||||
}
|
||||
|
||||
// check z move used
|
||||
if (gBattleStruct->zmove.active)
|
||||
{
|
||||
gCurrentMove = gBattleStruct->zmove.currZMove;
|
||||
}
|
||||
|
||||
if (gBattleMons[gBattlerAttacker].hp != 0)
|
||||
{
|
||||
@ -3187,18 +3193,8 @@ u8 AtkCanceller_UnableToUseMove(void)
|
||||
gBattleStruct->zmove.used[gBattlerAttacker] = TRUE;
|
||||
//TODO - partner battles.
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
if (gBattleMoves[gCurrentMove].split == SPLIT_STATUS)
|
||||
{
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ZMoveActivateStatus;
|
||||
//gBattleStruct->zmove.effect = gBattleMoves[gCurrentMove].z_move_effect;
|
||||
//gBattleStruct->zmove.effectApplied = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ZMoveActivateDamaging;
|
||||
}
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ZMoveActivate;
|
||||
effect = 1;
|
||||
}
|
||||
gBattleStruct->atkCancellerTracker++;
|
||||
|
@ -42,7 +42,6 @@ static u16 GetSignatureZMove(u16 move, u16 species, u16 item);
|
||||
static u16 GetTypeBasedZMove(u16 move, u8 battler);
|
||||
static void ZMoveSelectionDisplayPpNumber(void);
|
||||
static void ZMoveSelectionDisplayPower(u16 move, u16 zMove);
|
||||
static const u8* GetZMoveName(u16 move);
|
||||
static void ShowZMoveTriggerSprite(void);
|
||||
|
||||
// Const Data
|
||||
@ -517,7 +516,7 @@ static void ZMoveSelectionDisplayPpNumber(void)
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 9);
|
||||
}
|
||||
|
||||
static const u8* GetZMoveName(u16 move)
|
||||
const u8* GetZMoveName(u16 move)
|
||||
{
|
||||
if (IsZMove(move))
|
||||
return gZMoveNames[move - MOVE_BREAKNECK_BLITZ];
|
||||
|
@ -1,4 +1,4 @@
|
||||
const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
const struct BattleMove gBattleMoves[MOVES_COUNT_Z] =
|
||||
{
|
||||
[MOVE_NONE] =
|
||||
{
|
||||
@ -10843,4 +10843,531 @@ const struct BattleMove gBattleMoves[MOVES_COUNT] =
|
||||
.zMovePower = 120,
|
||||
.zMoveEffect = Z_EFFECT_NONE,
|
||||
},
|
||||
|
||||
// Z MOVES
|
||||
[MOVE_BREAKNECK_BLITZ] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL, //determined from move type
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_ALL_OUT_PUMMELING] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_FIGHTING,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SUPERSONIC_SKYSTRIKE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_FLYING,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_ACID_DOWNPOUR] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_POISON,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_TECTONIC_RAGE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_GROUND,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_CONTINENTAL_CRUSH] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_ROCK,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SAVAGE_SPIN_OUT] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_BUG,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_NEVER_ENDING_NIGHTMARE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_GHOST,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_CORKSCREW_CRASH] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_STEEL,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_INFERNO_OVERDRIVE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_FIRE,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_HYDRO_VORTEX] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_BLOOM_DOOM] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_GRASS,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_GIGAVOLT_HAVOC] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SHATTERED_PSYCHE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SUBZERO_SLAMMER] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_ICE,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_DEVASTATING_DRAKE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_DRAGON,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_BLACK_HOLE_ECLIPSE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_DARK,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_TWINKLE_TACKLE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 1,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_CATASTROPIKA] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 210,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_10000000_VOLT_THUNDERBOLT] =
|
||||
{
|
||||
.effect = EFFECT_HIT,//TODO: EFFECT_HIGH_CRITICAL,
|
||||
.power = 195,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_STOKED_SPARKSURFER] =
|
||||
{
|
||||
.effect = EFFECT_HIT, //EFFECT_PARALYZE_HIT,
|
||||
.power = 175,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_EXTREME_EVOBOOST] =
|
||||
{
|
||||
.effect = EFFECT_HIT,//TODO: EFFECT_EXTREME_EVOBOOST,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_USER,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_STATUS,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_PULVERIZING_PANCAKE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 210,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_GENESIS_SUPERNOVA] =
|
||||
{
|
||||
.effect = EFFECT_HIT,//TODO: EFFECT_DAMAGE_SET_TERRAIN,
|
||||
.power = 185,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SINISTER_ARROW_RAID] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 180,
|
||||
.type = TYPE_GHOST,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_MALICIOUS_MOONSAULT] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 180,
|
||||
.type = TYPE_DARK,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_OCEANIC_OPERETTA] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 195,
|
||||
.type = TYPE_WATER,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SPLINTERED_STORMSHARDS] =
|
||||
{
|
||||
.effect = EFFECT_HIT, //TODO removes terrain
|
||||
.power = 190,
|
||||
.type = TYPE_ROCK,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_LETS_SNUGGLE_FOREVER] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 190,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_CLANGOROUS_SOULBLAZE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,//TODO: EFFECT_ALL_STATS_UP_HIT,
|
||||
.power = 185,
|
||||
.type = TYPE_DRAGON,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 100,
|
||||
.target = MOVE_TARGET_BOTH,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_GUARDIAN_OF_ALOLA] =
|
||||
{
|
||||
.effect = EFFECT_HIT,//TODO: EFFECT_SUPER_FANG,
|
||||
.power = 1,
|
||||
.type = TYPE_FAIRY,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SEARING_SUNRAZE_SMASH] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 200,
|
||||
.type = TYPE_STEEL,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_MENACING_MOONRAZE_MAELSTROM] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 200,
|
||||
.type = TYPE_GHOST,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_LIGHT_THAT_BURNS_THE_SKY] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 200,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_SPECIAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
[MOVE_SOUL_STEALING_7_STAR_STRIKE] =
|
||||
{
|
||||
.effect = EFFECT_HIT,
|
||||
.power = 195,
|
||||
.type = TYPE_GHOST,
|
||||
.accuracy = 0,
|
||||
.pp = 1,
|
||||
.secondaryEffectChance = 0,
|
||||
.target = MOVE_TARGET_SELECTED,
|
||||
.priority = 0,
|
||||
.flags = 0,
|
||||
.zMovePower = 0,
|
||||
.split = SPLIT_PHYSICAL,
|
||||
.zMoveEffect = 0
|
||||
},
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user