expand top left move window. add z move init anim

This commit is contained in:
Evan 2020-11-27 17:06:36 -05:00
parent 348d70b309
commit 4060b09bd6
12 changed files with 193 additions and 17 deletions

View File

@ -1756,6 +1756,10 @@
.4byte \ptr .4byte \ptr
.endm .endm
.macro setzeffect
various BS_ATTACKER, VARIOUS_SET_Z_EFFECT
.endm
@ helpful macros @ helpful macros
.macro setstatchanger stat:req, stages:req, down:req .macro setstatchanger stat:req, stages:req, down:req
setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7 setbyte sSTATCHANGER \stat | \stages << 3 | \down << 7

View File

@ -767,7 +767,44 @@ gBattleAnims_Moves::
.4byte Move_JUNGLE_HEALING .4byte Move_JUNGLE_HEALING
.4byte Move_WICKED_BLOW .4byte Move_WICKED_BLOW
.4byte Move_SURGING_STRIKES .4byte Move_SURGING_STRIKES
.4byte Move_COUNT @ cannot be reached, because last move is Surging Strikes @@@@ Z MOVES
.4byte Move_BREAKNECK_BLITZ
.4byte Move_ALL_OUT_PUMMELING
.4byte Move_SUPERSONIC_SKYSTRIKE
.4byte Move_ACID_DOWNPOUR
.4byte Move_TECTONIC_RAGE
.4byte Move_CONTINENTAL_CRUSH
.4byte Move_SAVAGE_SPIN_OUT
.4byte Move_NEVER_ENDING_NIGHTMARE
.4byte Move_CORKSCREW_CRASH
.4byte Move_INFERNO_OVERDRIVE
.4byte Move_HYDRO_VORTEX
.4byte Move_BLOOM_DOOM
.4byte Move_GIGAVOLT_HAVOC
.4byte Move_SHATTERED_PSYCHE
.4byte Move_SUBZERO_SLAMMER
.4byte Move_DEVASTATING_DRAKE
.4byte Move_BLACK_HOLE_ECLIPSE
.4byte Move_TWINKLE_TACKLE
.4byte Move_CATASTROPIKA
.4byte Move_10000000_VOLT_THUNDERBOLT
.4byte Move_STOKED_SPARKSURFER
.4byte Move_EXTREME_EVOBOOST
.4byte Move_PULVERIZING_PANCAKE
.4byte Move_GENESIS_SUPERNOVA
.4byte Move_SINISTER_ARROW_RAID
.4byte Move_MALICIOUS_MOONSAULT
.4byte Move_OCEANIC_OPERETTA
.4byte Move_SPLINTERED_STORMSHARDS
.4byte Move_LETS_SNUGGLE_FOREVER
.4byte Move_CLANGOROUS_SOULBLAZE
.4byte Move_GUARDIAN_OF_ALOLA
.4byte Move_SEARING_SUNRAZE_SMASH
.4byte Move_MENACING_MOONRAZE_MAELSTROM
.4byte Move_LIGHT_THAT_BURNS_THE_SKY
.4byte Move_SOUL_STEALING_7_STAR_STRIKE
@@@ Last Move - cannot be reached
.4byte Move_COUNT
.align 2 .align 2
gBattleAnims_StatusConditions:: gBattleAnims_StatusConditions::
@ -815,6 +852,7 @@ gBattleAnims_General::
.4byte General_IllusionOff .4byte General_IllusionOff
.4byte General_FormChange .4byte General_FormChange
.4byte General_SlideOffScreen .4byte General_SlideOffScreen
.4byte General_ZMoveActivate
.align 2 .align 2
gBattleAnims_Special:: gBattleAnims_Special::
@ -24320,6 +24358,41 @@ General_TerrainElectric:
General_TerrainPsychic: General_TerrainPsychic:
end end
General_ZMoveActivate:
loadspritegfx ANIM_TAG_FOCUS_ENERGY @focus energy
loadspritegfx ANIM_TAG_Z_MOVE_SYMBOL @Z-Move Symbol
loadspritegfx ANIM_TAG_WHIP_HIT @green color
loadspritegfx ANIM_TAG_SWEAT_BEAD @blue color
loadspritegfx ANIM_TAG_PAW_PRINT @yellow color
monbg ANIM_ATTACKER
setblends 0x80c
fadetobg BG_ZMOVE_ACTIVATE
waitbgfadein
launchtask AnimTask_StartSlidingBg 0x5 0x4 0x0 0x0 0x0 0xFFFF
playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER
launchtask AnimTask_BlendColorCycle, 0x2, 0x6, ANIM_PAL_ATK, 0x0, 0x6, 0x0, 0xb, 0x76BC
call ZMoveBuffEffect
call ZMoveBuffEffect
call ZMoveBuffEffect
launchtemplate gZMoveSymbolSpriteTemplate 0x29 0x4 0x0 0x0 0x0 0x0
call ZMoveBuffEffect
call ZMoveBuffEffect
waitforvisualfinish
call UnsetPsychicBg
blendoff
clearmonbg ANIM_ATTACKER
end
ZMoveBuffEffect:
launchtemplate gBlueZMoveEnergySpriteTemplate 0x2 0x4 0x0 0xffe8 0x1a 0x2
delay 0x3
launchtemplate gEndureEnergySpriteTemplate 0x2 0x4 0x0 0xe 0x1c 0x1 @Red Buff
delay 0x3
launchtemplate gGreenZMoveEnergySpriteTemplate 0x2 0x4 0x0 0xfffb 0xa 0x2
delay 0x3
launchtemplate gYellowZMoveEnergySpriteTemplate 0x2 0x4 0x0 0x1c 0x1a 0x3
delay 0x3
return
SnatchMoveTrySwapFromSubstitute: SnatchMoveTrySwapFromSubstitute:
createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 createvisualtask AnimTask_IsAttackerBehindSubstitute, 2
jumprettrue SnatchMoveSwapSubstituteForMon jumprettrue SnatchMoveSwapSubstituteForMon
@ -24413,3 +24486,41 @@ Special_CriticalCaptureBallThrow:
jumpreteq -1, BallThrowTrainerBlock jumpreteq -1, BallThrowTrainerBlock
goto BallThrowEnd goto BallThrowEnd
@@@@@@@@@@ Z MOVES @@@@@@@@@@
Move_BREAKNECK_BLITZ::
Move_ALL_OUT_PUMMELING:
Move_SUPERSONIC_SKYSTRIKE:
Move_ACID_DOWNPOUR:
Move_TECTONIC_RAGE:
Move_CONTINENTAL_CRUSH::
Move_SAVAGE_SPIN_OUT::
Move_NEVER_ENDING_NIGHTMARE::
Move_CORKSCREW_CRASH::
Move_INFERNO_OVERDRIVE::
Move_HYDRO_VORTEX::
Move_BLOOM_DOOM::
Move_GIGAVOLT_HAVOC::
Move_SHATTERED_PSYCHE::
Move_SUBZERO_SLAMMER::
Move_DEVASTATING_DRAKE::
Move_BLACK_HOLE_ECLIPSE::
Move_TWINKLE_TACKLE::
Move_CATASTROPIKA::
Move_10000000_VOLT_THUNDERBOLT::
Move_STOKED_SPARKSURFER::
Move_EXTREME_EVOBOOST::
Move_PULVERIZING_PANCAKE::
Move_GENESIS_SUPERNOVA::
Move_SINISTER_ARROW_RAID::
Move_MALICIOUS_MOONSAULT::
Move_OCEANIC_OPERETTA::
Move_SPLINTERED_STORMSHARDS::
Move_LETS_SNUGGLE_FOREVER::
Move_CLANGOROUS_SOULBLAZE::
Move_GUARDIAN_OF_ALOLA::
Move_SEARING_SUNRAZE_SMASH::
Move_MENACING_MOONRAZE_MAELSTROM::
Move_LIGHT_THAT_BURNS_THE_SKY::
Move_SOUL_STEALING_7_STAR_STRIKE::
goto Move_TACKLE

View File

@ -7686,3 +7686,18 @@ BattleScript_PrintPlayerForfeitedLinkBattle::
atk57 atk57
waitmessage 0x40 waitmessage 0x40
end2 end2
BattleScript_ZMoveActivateStatus::
printstring STRINGID_ZPOWERSURROUNDS
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
setzeffect
printstring STRINGID_ZMOVEUNLEASHED
waitmessage 0x40
return
BattleScript_ZMoveActivateDamaging::
printstring STRINGID_ZPOWERSURROUNDS
playanimation BS_ATTACKER, B_ANIM_ZMOVE_ACTIVATE, NULL
printstring STRINGID_ZMOVEUNLEASHED
waitmessage 0x40
return

View File

@ -429,10 +429,10 @@ struct Illusion
struct ZMoveData struct ZMoveData
{ {
/*0x00*/ u8 battlerId; /*0x00*/ u8 viable:1; // current move can become a z move
/*0x01*/ u8 viable:1; // current move can become a z move u8 viewing:1; //if player is viewing the z move name instead of regular moves
u8 viewingZMove:1; //if player is viewing the z move name instead of regular moves
u8 split:2; u8 split:2;
u8 active:1; //is z move being used this turn
u8 zUnused:4; u8 zUnused:4;
/*0x02*/ u16 currZMove; //z move of cursor / selected z move /*0x02*/ u16 currZMove; //z move of cursor / selected z move
/*0x04*/ u16 baseMove; //move turned into z move /*0x04*/ u16 baseMove; //move turned into z move

View File

@ -525,6 +525,7 @@
#define B_ANIM_ILLUSION_OFF 0x1C #define B_ANIM_ILLUSION_OFF 0x1C
#define B_ANIM_FORM_CHANGE 0x1D #define B_ANIM_FORM_CHANGE 0x1D
#define B_ANIM_SLIDE_OFFSCREEN 0x1E // for Emergency Exit #define B_ANIM_SLIDE_OFFSCREEN 0x1E // for Emergency Exit
#define B_ANIM_ZMOVE_ACTIVATE 0x1F
// special animations table // special animations table
#define B_ANIM_LVL_UP 0x0 #define B_ANIM_LVL_UP 0x0

View File

@ -165,6 +165,7 @@
#define VARIOUS_SET_LAST_USED_ITEM 99 #define VARIOUS_SET_LAST_USED_ITEM 99
#define VARIOUS_PARALYZE_TYPE_IMMUNITY 100 #define VARIOUS_PARALYZE_TYPE_IMMUNITY 100
#define VARIOUS_JUMP_IF_ABSENT 101 #define VARIOUS_JUMP_IF_ABSENT 101
#define VARIOUS_SET_Z_EFFECT 102
// Cmd_manipulatedamage // Cmd_manipulatedamage
#define DMG_CHANGE_SIGN 0 #define DMG_CHANGE_SIGN 0

View File

@ -551,7 +551,9 @@
#define STRINGID_CLOAKEDINAFREEZINGLIGHT 547 #define STRINGID_CLOAKEDINAFREEZINGLIGHT 547
#define STRINGID_STATWASNOTLOWERED 548 #define STRINGID_STATWASNOTLOWERED 548
#define STRINGID_FERVENTWISHREACHED 549 #define STRINGID_FERVENTWISHREACHED 549
#define STRINGID_ZPOWERSURROUNDS 550
#define STRINGID_ZMOVEUNLEASHED 551
#define BATTLESTRINGS_COUNT 550 #define BATTLESTRINGS_COUNT 552
#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H #endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H

View File

@ -4050,6 +4050,47 @@ const struct SpriteTemplate gSteelBeamSpikeShardTemplate =
}; };
//// Z MOVES //// Z MOVES
//activate
const struct SpriteTemplate gZMoveSymbolSpriteTemplate =
{
.tileTag = ANIM_TAG_Z_MOVE_SYMBOL,
.paletteTag = ANIM_TAG_Z_MOVE_SYMBOL,
.oam = &gOamData_AffineDouble_ObjBlend_64x64,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gAffineAnims_LusterPurgeCircle,
.callback = AnimSpriteOnMonPos
};
const struct SpriteTemplate gBlueZMoveEnergySpriteTemplate =
{
.tileTag = ANIM_TAG_FOCUS_ENERGY,
.paletteTag = ANIM_TAG_SWEAT_BEAD,
.oam = &gOamData_AffineOff_ObjNormal_16x32,
.anims = gEndureEnergyAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimEndureEnergy,
};
const struct SpriteTemplate gGreenZMoveEnergySpriteTemplate =
{
.tileTag = ANIM_TAG_FOCUS_ENERGY,
.paletteTag = ANIM_TAG_WHIP_HIT,
.oam = &gOamData_AffineOff_ObjNormal_16x32,
.anims = gEndureEnergyAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimEndureEnergy,
};
const struct SpriteTemplate gYellowZMoveEnergySpriteTemplate =
{
.tileTag = ANIM_TAG_FOCUS_ENERGY,
.paletteTag = ANIM_TAG_PAW_PRINT,
.oam = &gOamData_AffineOff_ObjNormal_16x32,
.anims = gEndureEnergyAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = AnimEndureEnergy,
};
/* /*
// breakneck blitz // breakneck blitz
const struct SpriteTemplate gBreakneckBlitzDanceSpriteTemplate = const struct SpriteTemplate gBreakneckBlitzDanceSpriteTemplate =

View File

@ -192,7 +192,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.bg = 0, .bg = 0,
.tilemapLeft = 2, .tilemapLeft = 2,
.tilemapTop = 55, .tilemapTop = 55,
.width = 8, .width = 12, //for z move names
.height = 2, .height = 2,
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0300, .baseBlock = 0x0300,
@ -204,7 +204,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.width = 8, .width = 8,
.height = 2, .height = 2,
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0310, .baseBlock = 0x0318,
}, },
{ // 5 Bottom left move { // 5 Bottom left move
.bg = 0, .bg = 0,
@ -213,7 +213,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.width = 8, .width = 8,
.height = 2, .height = 2,
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0320, .baseBlock = 0x0328,
}, },
{ // 6 Bottom right move { // 6 Bottom right move
.bg = 0, .bg = 0,
@ -222,7 +222,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
.width = 8, .width = 8,
.height = 2, .height = 2,
.paletteNum = 5, .paletteNum = 5,
.baseBlock = 0x0330, .baseBlock = 0x0338,
}, },
{ {
.bg = 0, .bg = 0,

View File

@ -630,7 +630,7 @@ static void HandleInputChooseMove(void)
else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59) else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
{ {
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
if (gBattleStruct->zmove.viewingZMove) if (gBattleStruct->zmove.viewing)
{ {
ReloadMoveNames(); ReloadMoveNames();
} }
@ -697,7 +697,7 @@ static void HandleInputChooseMove(void)
TryChangeZIndicator(gActiveBattler, moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]); TryChangeZIndicator(gActiveBattler, moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]);
} }
} }
else if (JOY_NEW(SELECT_BUTTON)) else if (JOY_NEW(SELECT_BUTTON) && !gBattleStruct->zmove.viewing)
{ {
if (gNumberOfMovesToChoose > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) if (gNumberOfMovesToChoose > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
{ {
@ -725,10 +725,8 @@ static void HandleInputChooseMove(void)
{ {
// show z move name / info // show z move name / info
//TODO: brighten z move symbol //TODO: brighten z move symbol
//ChangeMegaTriggerSprite(gBattleStruct->zmove.triggerSpriteId, gBattleStruct->zmove.viable);
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
if (!gBattleStruct->zmove.viewing)
if (!gBattleStruct->zmove.viewingZMove)
MoveSelectionDisplayZMove(gBattleStruct->zmove.currZMove); MoveSelectionDisplayZMove(gBattleStruct->zmove.currZMove);
else else
ReloadMoveNames(); ReloadMoveNames();
@ -739,7 +737,7 @@ static void HandleInputChooseMove(void)
static void ReloadMoveNames(void) static void ReloadMoveNames(void)
{ {
gBattleStruct->mega.playerSelect = FALSE; gBattleStruct->mega.playerSelect = FALSE;
gBattleStruct->zmove.viewingZMove = FALSE; gBattleStruct->zmove.viewing = FALSE;
MoveSelectionDestroyCursorAt(0); MoveSelectionDestroyCursorAt(0);
MoveSelectionDisplayMoveNames(); MoveSelectionDisplayMoveNames();
MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0); MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);

View File

@ -677,6 +677,8 @@ static const u8 sText_NoOneWillBeAbleToRun[] = _("No one will be able to run awa
static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!"); static const u8 sText_DestinyKnotActivates[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} fell in love\nfrom the {B_LAST_ITEM}!");
static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!"); static const u8 sText_CloakedInAFreezingLight[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin a freezing light!");
static const u8 sText_StatWasNotLowered[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas not lowered!"); static const u8 sText_StatWasNotLowered[] = _("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\nwas not lowered!");
static const u8 sText_ZPowerSurrounds[] = _("{B_ATK_NAME_WITH_PREFIX} surrounds\nitself with its Z-Power!");
static const u8 sText_ZPowerUnleashed[] = _("{B_ATK_NAME_WITH_PREFIX} unleashes\nits full-force Z-Move!");
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] = const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
{ {
@ -1218,6 +1220,8 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_GRASSYTERRAINHEALS - 12] = sText_GrassyTerrainHeals, [STRINGID_GRASSYTERRAINHEALS - 12] = sText_GrassyTerrainHeals,
[STRINGID_ELECTRICTERRAINPREVENTS - 12] = sText_ElectricTerrainPreventsSleep, [STRINGID_ELECTRICTERRAINPREVENTS - 12] = sText_ElectricTerrainPreventsSleep,
[STRINGID_PSYCHICTERRAINPREVENTS - 12] = sText_PsychicTerrainPreventsPriority, [STRINGID_PSYCHICTERRAINPREVENTS - 12] = sText_PsychicTerrainPreventsPriority,
[STRINGID_ZPOWERSURROUNDS - 12] = sText_ZPowerSurrounds,
[STRINGID_ZMOVEUNLEASHED - 12] = sText_ZPowerUnleashed,
}; };
const u16 gTerrainStringIds[] = const u16 gTerrainStringIds[] =

View File

@ -316,7 +316,6 @@ bool32 IsZMoveTriggerSpriteActive(void)
void HideZMoveTriggerSprite(void) void HideZMoveTriggerSprite(void)
{ {
struct Sprite *sprite = &gSprites[gBattleStruct->zmove.triggerSpriteId]; struct Sprite *sprite = &gSprites[gBattleStruct->zmove.triggerSpriteId];
ChangeMegaTriggerSprite(gBattleStruct->zmove.triggerSpriteId, 0);
sprite->tHide = TRUE; sprite->tHide = TRUE;
gBattleStruct->zmove.viable = FALSE; gBattleStruct->zmove.viable = FALSE;
} }
@ -375,7 +374,7 @@ bool32 MoveSelectionDisplayZMove(u16 zmove)
u16 move = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]; u16 move = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]];
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
gBattleStruct->zmove.viewingZMove = TRUE; gBattleStruct->zmove.viewing = TRUE;
if (zmove != MOVE_NONE) if (zmove != MOVE_NONE)
{ {
// clear move slots // clear move slots