more boss actors (#1117)

* common actors

* tubba and huff

* chapter 2

* fix ruff / tuff puff names

* bloopers

* slight

* everything except omo2

* format py

* fix pal

---------

Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
HailSanta 2023-09-23 01:57:29 -04:00 committed by GitHub
parent bde8f70e3f
commit 46b2f11a59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
222 changed files with 44347 additions and 44282 deletions

View File

@ -864,7 +864,7 @@ typedef struct BattleStatus {
/* */ };
/* 0x048 */ s8 curSubmenu;
/* 0x049 */ s8 unk_49;
/* 0x04A */ s8 unk_4A;
/* 0x04A */ s8 curPartnerSubmenu;
/* 0x04B */ s8 unk_4B;
/* 0x04C */ s8 lastPlayerMenuSelection[16];
/* 0x05C */ s8 lastPartnerMenuSelection[16];

View File

@ -486,18 +486,25 @@ typedef struct PurpleRingFXData {
/* 0x7A */ char unk_7A[2];
} PurpleRingFXData; // size = 0x7C
enum FlameFXTypes {
FX_FLAME_BLUE = 0,
FX_FLAME_RED = 1,
FX_FLAME_SMALL_BLUE = 2,
FX_FLAME_PINK = 3,
};
typedef struct FlameFXData {
/* 0x00 */ s32 unk_00;
/* 0x00 */ s32 type;
/* 0x04 */ Vec3f pos;
/* 0x10 */ f32 unk_10;
/* 0x10 */ f32 baseScale;
/* 0x14 */ f32 unk_14;
/* 0x18 */ s32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x2C */ f32 scaleH;
/* 0x30 */ f32 scaleW;
} FlameFXData; // size = 0x34
typedef struct StarsBurstFXData {
@ -881,17 +888,17 @@ typedef struct FireBreathFXData {
/* 0x0C */ Vec3f pos;
/* 0x18 */ Vec3f initPos;
/* 0x24 */ Vec3f endPos;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x30 */ f32 initialScale;
/* 0x34 */ f32 targetScale;
/* 0x38 */ f32 scale;
/* 0x3C */ f32 scaleChangeFactor;
/* 0x3C */ f32 scaleChangeRate;
/* 0x40 */ s32 alpha;
/* 0x44 */ s32 lifeTime;
/* 0x44 */ s32 duration;
/* 0x48 */ s32 timeLeft;
/* 0x4C */ s32 spawnTimer;
/* 0x50 */ Vec3f unk_50;
/* 0x5C */ f32 unk_5C;
/* 0x60 */ f32 unk_60;
/* 0x4C */ s32 lifetime;
/* 0x50 */ Vec3f offsetPos;
/* 0x5C */ f32 animTime; // each integer value corresponds to a new frame
/* 0x60 */ f32 velY;
/* 0x64 */ s32 primR;
/* 0x68 */ s32 primG;
/* 0x6C */ s32 primB;

View File

@ -4,7 +4,7 @@
#include "effects.h"
s32 effect_rand_int(s32);
s32 func_E0200044(s32, s32);
s32 effect_simple_rand(s32, s32);
#include "effect_shims.h"

View File

@ -3547,7 +3547,7 @@ enum BattleStatusFlags1 {
BS_FLAGS1_SP_EVT_ACTIVE = 0x00000020, // enable special events (other than hit/death/immune?)
BS_FLAGS1_40 = 0x00000040,
BS_FLAGS1_80 = 0x00000080,
BS_FLAGS1_100 = 0x00000100,
BS_FLAGS1_EXECUTING_MOVE = 0x00000100,
BS_FLAGS1_200 = 0x00000200,
BS_FLAGS1_400 = 0x00000400, // UNUSED
BS_FLAGS1_FORCE_HIT_IMMUNE = 0x00000800,
@ -3948,7 +3948,7 @@ enum BattlePlayerMenuSubstates {
BTL_SUBSTATE_PLAYER_MENU_DIPPING_5 = 74,
BTL_SUBSTATE_PLAYER_MENU_DIPPING_6 = 75,
// Berserker
BTL_SUBSTATE_PLAYER_MENU_BERSERKER_1 = 100,
BTL_SUBSTATE_PLAYER_MENU_BERSERKER_CHOOSE = 100,
// Strategies
BTL_SUBSTATE_PLAYER_MENU_BUILD_STRATEGIES = 200,
BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_2 = 201,
@ -4145,6 +4145,21 @@ enum BattleMoveSubmenuStates {
BTL_SUBMENU_MOVES_STATE_UNK_2A = 42,
};
enum BattleStratsSubmenuStates {
BTL_SUBMENU_STRATS_STATE_CANCEL = -2, // go back
BTL_SUBMENU_STRATS_STATE_SELECT = -1, // approve choice
BTL_SUBMENU_STRATS_STATE_INIT = 0,
BTL_SUBMENU_STRATS_STATE_CHOOSE = 1,
BTL_SUBMENU_STRATS_STATE_UNK_10 = 10,
BTL_SUBMENU_STRATS_STATE_UNK_11 = 11,
BTL_SUBMENU_STRATS_STATE_UNK_20 = 20,
BTL_SUBMENU_STRATS_STATE_UNK_30 = 30,
BTL_SUBMENU_STRATS_STATE_ERROR_INIT = 40,
BTL_SUBMENU_STRATS_STATE_ERROR_SHOW = 41,
BTL_SUBMENU_STRATS_STATE_ERROR_DONE = 42,
};
enum BattleMenuIndex {
BTL_MENU_IDX_MAIN = 0,
BTL_MENU_IDX_JUMP = 1,

View File

@ -375,7 +375,7 @@ extern EvtScript EVS_Enemy_DeathWithoutRemove;
extern EvtScript EVS_Enemy_ScareAway;
extern EvtScript EVS_Enemy_SpinSmashHit;
extern EvtScript EVS_Enemy_FlipBackUp;
extern EvtScript EVS_Enemy_JumpBack;
extern EvtScript EVS_Enemy_Knockback;
extern EvtScript EVS_Enemy_ReturnHome;
extern EvtScript EVS_Enemy_Recover;
extern EvtScript EVS_Enemy_HopHome;

View File

@ -124,6 +124,7 @@ ApiStatus AdjustCam(Evt* script, s32 isInitialCall);
ApiStatus ResetCam(Evt* script, s32 isInitialCall);
ApiStatus LoadAnimatedModel(Evt* script, s32 isInitialCall);
ApiStatus PlayModelAnimation(Evt* script, s32 isInitialCall);
ApiStatus SetAnimatorFlags(Evt* script, s32 isInitialCall);
ApiStatus SetAnimatedModelRootPosition(Evt* script, s32 isInitialCall);
ApiStatus ChangeModelAnimation(Evt* script, s32 isInitialCall);
ApiStatus DeleteNpc(Evt* script, s32 isInitialCall);

View File

@ -250,7 +250,7 @@ void btl_state_update_normal_start(void) {
battleStatus->initBattleCallback = NULL;
battleStatus->curSubmenu = 0;
battleStatus->unk_49 = 0;
battleStatus->unk_4A = 0;
battleStatus->curPartnerSubmenu = 0;
battleStatus->unk_4B = 0;
battleStatus->totalStarPoints = 0;
battleStatus->pendingStarPoints = 0;
@ -2683,7 +2683,7 @@ void btl_state_update_player_move(void) {
gBattleStatus.flags1 &= ~BS_FLAGS1_4000;
gBattleStatus.flags1 &= ~BS_FLAGS1_10000;
increment_status_bar_disabled();
gBattleStatus.flags1 |= BS_FLAGS1_100;
gBattleStatus.flags1 |= BS_FLAGS1_EXECUTING_MOVE;
reset_all_actor_sounds(player);
battleStatus->battlePhase = PHASE_EXECUTE_ACTION;
if (gBattleStatus.flags2 & BS_FLAGS2_PEACH_BATTLE) {
@ -2705,7 +2705,7 @@ void btl_state_update_player_move(void) {
player->takeTurnScript = NULL;
}
gBattleStatus.flags1 &= ~BS_FLAGS1_100;
gBattleStatus.flags1 &= ~BS_FLAGS1_EXECUTING_MOVE;
// wait for player battle event script to finish
if (player->handleEventScript != NULL && does_script_exist(player->handleEventScriptID)) {
@ -3189,7 +3189,7 @@ void btl_state_update_partner_move(void) {
}
increment_status_bar_disabled();
gBattleStatus.flags1 |= BS_FLAGS1_100;
gBattleStatus.flags1 |= BS_FLAGS1_EXECUTING_MOVE;
reset_actor_turn_info();
reset_all_actor_sounds(partner);
battleStatus->battlePhase = PHASE_EXECUTE_ACTION;
@ -3206,7 +3206,7 @@ void btl_state_update_partner_move(void) {
}
partner->takeTurnScript = NULL;
}
gBattleStatus.flags1 &= ~BS_FLAGS1_100;
gBattleStatus.flags1 &= ~BS_FLAGS1_EXECUTING_MOVE;
if (partner->handleEventScript != NULL && does_script_exist(partner->handleEventScriptID)) {
break;
@ -3587,7 +3587,7 @@ void btl_state_update_enemy_move(void) {
battleStatus->blockResult = BLOCK_RESULT_NONE;
battleStatus->curDamageSource = DMG_SRC_DEFAULT;
reset_actor_turn_info();
gBattleStatus.flags1 |= BS_FLAGS1_100;
gBattleStatus.flags1 |= BS_FLAGS1_EXECUTING_MOVE;
player->statusAfflicted = 0;
if (partner != NULL) {
partner->statusAfflicted = 0;
@ -3670,14 +3670,20 @@ void btl_state_update_enemy_move(void) {
}
}
if (!waitingForEnemyScript || (gBattleStatus.flags1 & BS_FLAGS1_YIELD_TURN)) {
gBattleStatus.flags1 &= ~BS_FLAGS1_100;
if (waitingForEnemyScript && !(gBattleStatus.flags1 & BS_FLAGS1_YIELD_TURN)) {
break;
}
gBattleStatus.flags1 &= ~BS_FLAGS1_EXECUTING_MOVE;
gBattleStatus.flags2 &= ~BS_FLAGS2_4000;
if (btl_check_enemies_defeated()) {
return;
}
if (battleStatus->stateFreezeCount == 0) {
if (battleStatus->stateFreezeCount != 0) {
break;
}
if (gGameStatusPtr->demoBattleFlags & DEMO_BTL_FLAG_ENABLED) {
btl_set_state(BATTLE_STATE_END_DEMO_BATTLE);
} else {
@ -3722,8 +3728,6 @@ void btl_state_update_enemy_move(void) {
break;
}
}
}
}
break;
case BTL_SUBSTATE_ENEMY_MOVE_AWAIT_PLAYER_POPUP_DONE:
if (!btl_is_popup_displayed()) {
@ -3896,7 +3900,7 @@ void btl_state_update_first_strike(void) {
player->takeTurnScript = NULL;
}
gBattleStatus.flags1 &= ~BS_FLAGS1_100;
gBattleStatus.flags1 &= ~BS_FLAGS1_EXECUTING_MOVE;
// wait for player handle event script
if (player->handleEventScript != NULL && does_script_exist(player->handleEventScriptID)) {

View File

@ -264,12 +264,12 @@ s32 bActorNames[ACTOR_TYPE_COUNT] = {
[ACTOR_TYPE_CRYSTAL_CLONE] MSG_EnemyName_CrystalKing,
[ACTOR_TYPE_CRYSTAL_BIT] MSG_EnemyName_CrystalBit,
[ACTOR_TYPE_INTRO_BOWSER] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BOWSER_PHASE_1] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BOWSER_DUP1] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BOWSER_PHASE_2] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BOWSER_DUP2] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BOWSER_PHASE_3] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BOWSER_DUP3] MSG_EnemyName_Bowser,
[ACTOR_TYPE_HALLWAY_BOWSER] MSG_EnemyName_Bowser,
[ACTOR_TYPE_HALLWAY_BOWSER_DUP] MSG_EnemyName_Bowser,
[ACTOR_TYPE_FINAL_BOWSER_1] MSG_EnemyName_Bowser,
[ACTOR_TYPE_FINAL_BOWSER_1_DUP] MSG_EnemyName_Bowser,
[ACTOR_TYPE_FINAL_BOWSER_2] MSG_EnemyName_Bowser,
[ACTOR_TYPE_FINAL_BOWSER_2_DUP] MSG_EnemyName_Bowser,
[ACTOR_TYPE_BLOOPER] MSG_EnemyName_Blooper,
[ACTOR_TYPE_ELECTRO_BLOOPER1] MSG_EnemyName_ElectroBlooper,
[ACTOR_TYPE_ELECTRO_BLOOPER2] MSG_EnemyName_ElectroBlooper,
@ -1646,42 +1646,42 @@ ActorSounds bActorSoundTable[ACTOR_TYPE_COUNT] = {
.hurt = SOUND_NONE,
.delay = { 30, 30 }
},
[ACTOR_TYPE_BOWSER_PHASE_1] = {
[ACTOR_TYPE_HALLWAY_BOWSER] = {
.walk = { SOUND_NONE, SOUND_NONE },
.fly = { SOUND_NONE, SOUND_NONE },
.jump = SOUND_LARGE_ACTOR_JUMP,
.hurt = SOUND_NONE,
.delay = { 30, 30 }
},
[ACTOR_TYPE_BOWSER_DUP1] = {
[ACTOR_TYPE_HALLWAY_BOWSER_DUP] = {
.walk = { SOUND_NONE, SOUND_NONE },
.fly = { SOUND_NONE, SOUND_NONE },
.jump = SOUND_NONE,
.hurt = SOUND_NONE,
.delay = { 30, 30 }
},
[ACTOR_TYPE_BOWSER_PHASE_2] = {
[ACTOR_TYPE_FINAL_BOWSER_1] = {
.walk = { SOUND_NONE, SOUND_NONE },
.fly = { SOUND_NONE, SOUND_NONE },
.jump = SOUND_LARGE_ACTOR_JUMP,
.hurt = SOUND_NONE,
.delay = { 30, 30 }
},
[ACTOR_TYPE_BOWSER_DUP2] = {
[ACTOR_TYPE_FINAL_BOWSER_1_DUP] = {
.walk = { SOUND_NONE, SOUND_NONE },
.fly = { SOUND_NONE, SOUND_NONE },
.jump = SOUND_NONE,
.hurt = SOUND_NONE,
.delay = { 30, 30 }
},
[ACTOR_TYPE_BOWSER_PHASE_3] = {
[ACTOR_TYPE_FINAL_BOWSER_2] = {
.walk = { SOUND_NONE, SOUND_NONE },
.fly = { SOUND_NONE, SOUND_NONE },
.jump = SOUND_LARGE_ACTOR_JUMP,
.hurt = SOUND_NONE,
.delay = { 30, 30 }
},
[ACTOR_TYPE_BOWSER_DUP3] = {
[ACTOR_TYPE_FINAL_BOWSER_2_DUP] = {
.walk = { SOUND_NONE, SOUND_NONE },
.fly = { SOUND_NONE, SOUND_NONE },
.jump = SOUND_NONE,
@ -1782,218 +1782,218 @@ ActorSounds bActorSoundTable[ACTOR_TYPE_COUNT] = {
};
s32 bActorTattles[ACTOR_TYPE_COUNT] = {
[ACTOR_TYPE_RED_GOOMBA] = MSG_NONE,
[ACTOR_TYPE_RED_PARAGOOMBA] = MSG_NONE,
[ACTOR_TYPE_GLOOMBA] = MSG_EnemyTattle_Gloomba,
[ACTOR_TYPE_PARAGLOOMBA] = MSG_EnemyTattle_Paragloomba,
[ACTOR_TYPE_SPIKED_GLOOMBA] = MSG_EnemyTattle_SpikedGloomba,
[ACTOR_TYPE_DARK_KOOPA] = MSG_EnemyTattle_DarkKoopa,
[ACTOR_TYPE_DARK_PARATROOPA] = MSG_EnemyTattle_DarkParatroopa,
[ACTOR_TYPE_GOOMBA] = MSG_EnemyTattle_Goomba,
[ACTOR_TYPE_PARAGOOMBA] = MSG_EnemyTattle_Paragoomba,
[ACTOR_TYPE_SPIKED_GOOMBA] = MSG_EnemyTattle_SpikedGoomba,
[ACTOR_TYPE_FUZZY] = MSG_EnemyTattle_Fuzzy,
[ACTOR_TYPE_KOOPA_TROOPA] = MSG_EnemyTattle_KoopaTroopa,
[ACTOR_TYPE_PARATROOPA] = MSG_EnemyTattle_Paratroopa,
[ACTOR_TYPE_BOB_OMB] = MSG_EnemyTattle_BobOmb,
[ACTOR_TYPE_BOB_OMB_DUP] = MSG_EnemyTattle_BobOmb,
[ACTOR_TYPE_BULLET_BILL] = MSG_EnemyTattle_BulletBill,
[ACTOR_TYPE_BILL_BLASTER] = MSG_EnemyTattle_BillBlaster,
[ACTOR_TYPE_CLEFT] = MSG_EnemyTattle_Cleft,
[ACTOR_TYPE_MONTY_MOLE] = MSG_EnemyTattle_MontyMole,
[ACTOR_TYPE_BANDIT] = MSG_EnemyTattle_Bandit,
[ACTOR_TYPE_POKEY] = MSG_EnemyTattle_Pokey,
[ACTOR_TYPE_POKEY_MUMMY] = MSG_EnemyTattle_PokeyMummy,
[ACTOR_TYPE_SWOOPER] = MSG_EnemyTattle_Swooper,
[ACTOR_TYPE_BUZZY_BEETLE] = MSG_EnemyTattle_BuzzyBeetle,
[ACTOR_TYPE_STONE_CHOMP] = MSG_EnemyTattle_StoneChomp,
[ACTOR_TYPE_PIRANHA_PLANT] = MSG_EnemyTattle_PiranhaPlant,
[ACTOR_TYPE_FOREST_FUZZY] = MSG_EnemyTattle_ForestFuzzy,
[ACTOR_TYPE_HYPER_GOOMBA] = MSG_EnemyTattle_HyperGoomba,
[ACTOR_TYPE_HYPER_PARAGOOMBA] = MSG_EnemyTattle_HyperParagoomba,
[ACTOR_TYPE_HYPER_CLEFT] = MSG_EnemyTattle_HyperCleft,
[ACTOR_TYPE_CLUBBA] = MSG_EnemyTattle_Clubba,
[ACTOR_TYPE_SHY_GUY] = MSG_EnemyTattle_ShyGuy,
[ACTOR_TYPE_GROOVE_GUY] = MSG_EnemyTattle_GrooveGuy,
[ACTOR_TYPE_SKY_GUY] = MSG_EnemyTattle_SkyGuy,
[ACTOR_TYPE_MEDI_GUY] = MSG_EnemyTattle_MediGuy,
[ACTOR_TYPE_PYRO_GUY] = MSG_EnemyTattle_PyroGuy,
[ACTOR_TYPE_SPY_GUY] = MSG_EnemyTattle_SpyGuy,
[ACTOR_TYPE_FUZZIPEDE] = MSG_NONE,
[ACTOR_TYPE_HURT_PLANT] = MSG_EnemyTattle_HurtPlant,
[ACTOR_TYPE_M_BUSH] = MSG_EnemyTattle_MBush,
[ACTOR_TYPE_AQUA_FUZZY] = MSG_NONE,
[ACTOR_TYPE_JUNGLE_FUZZY] = MSG_EnemyTattle_JungleFuzzy,
[ACTOR_TYPE_SPEAR_GUY] = MSG_EnemyTattle_SpearGuy,
[ACTOR_TYPE_LAVA_BUBBLE] = MSG_EnemyTattle_LavaBubble,
[ACTOR_TYPE_SPIKE_TOP] = MSG_EnemyTattle_SpikeTop,
[ACTOR_TYPE_PUTRID_PIRANHA] = MSG_EnemyTattle_PutridPiranha,
[ACTOR_TYPE_LAKITU] = MSG_EnemyTattle_Lakitu,
[ACTOR_TYPE_SPINY] = MSG_EnemyTattle_Spiny,
[ACTOR_TYPE_MONTY_MOLE_BOSS] = MSG_EnemyTattle_MontyMoleBoss,
[ACTOR_TYPE_BZZAP] = MSG_EnemyTattle_Bzzap,
[ACTOR_TYPE_CRAZEE_DAYZEE] = MSG_EnemyTattle_CrazeeDayzee,
[ACTOR_TYPE_AMAZY_DAYZEE] = MSG_EnemyTattle_AmazyDayzee,
[ACTOR_TYPE_RUFF_PUFF] = MSG_EnemyTattle_RuffPuff,
[ACTOR_TYPE_SPIKE] = MSG_EnemyTattle_Spike,
[ACTOR_TYPE_GULPIT] = MSG_EnemyTattle_Gulpit,
[ACTOR_TYPE_GULPIT_ROCKS] = MSG_EnemyTattle_GulpitRocks,
[ACTOR_TYPE_WHITE_CLUBBA] = MSG_EnemyTattle_WhiteClubba,
[ACTOR_TYPE_FROST_PIRANHA] = MSG_EnemyTattle_FrostPiranha,
[ACTOR_TYPE_SWOOPULA] = MSG_EnemyTattle_Swoopula,
[ACTOR_TYPE_DUPLIGHOST] = MSG_EnemyTattle_Duplighost,
[ACTOR_TYPE_GHOST_GOOMBARIO] = MSG_EnemyTattle_GhostGoombario,
[ACTOR_TYPE_GHOST_KOOPER] = MSG_EnemyTattle_GhostKooper,
[ACTOR_TYPE_GHOST_BOMBETTE] = MSG_EnemyTattle_GhostBombette,
[ACTOR_TYPE_GHOST_PARAKARRY] = MSG_EnemyTattle_GhostParakarry,
[ACTOR_TYPE_GHOST_BOW] = MSG_EnemyTattle_GhostBow,
[ACTOR_TYPE_GHOST_WATT] = MSG_EnemyTattle_GhostWatt,
[ACTOR_TYPE_GHOST_SUSHIE] = MSG_EnemyTattle_GhostSushie,
[ACTOR_TYPE_GHOST_LAKILESTER] = MSG_EnemyTattle_GhostLakilester,
[ACTOR_TYPE_ALBINO_DINO] = MSG_EnemyTattle_AlbinoDino,
[ACTOR_TYPE_EMBER] = MSG_EnemyTattle_Ember,
[ACTOR_TYPE_BONY_BEETLE] = MSG_EnemyTattle_BonyBeetle,
[ACTOR_TYPE_DRY_BONES] = MSG_EnemyTattle_DryBones,
[ACTOR_TYPE_DRY_BONES2] = MSG_EnemyTattle_DryBones,
[ACTOR_TYPE_BOMBSHELL_BLASTER] = MSG_EnemyTattle_BombshellBlaster,
[ACTOR_TYPE_BOMBSHELL_BILL] = MSG_EnemyTattle_BombshellBill,
[ACTOR_TYPE_HAMMER_BROS] = MSG_EnemyTattle_HammerBros,
[ACTOR_TYPE_KOOPATROL] = MSG_EnemyTattle_Koopatrol,
[ACTOR_TYPE_MAGIKOOPA] = MSG_EnemyTattle_Magikoopa,
[ACTOR_TYPE_FLYING_MAGIKOOPA] = MSG_EnemyTattle_MagikoopaDup,
[ACTOR_TYPE_MAGICLONE] = MSG_EnemyTattle_Magiclone,
[ACTOR_TYPE_FLYING_MAGICLONE] = MSG_EnemyTattle_MagicloneDup,
[ACTOR_TYPE_RED_MAGIKOOPA] = MSG_EnemyTattle_RedMagikoopa,
[ACTOR_TYPE_FLYING_RED_MAGIKOOPA] = MSG_EnemyTattle_FlyingRedMagikoopa,
[ACTOR_TYPE_GREEN_MAGIKOOPA] = MSG_EnemyTattle_GreenMagikoopa,
[ACTOR_TYPE_FLYING_GREEN_MAGIKOOPA] = MSG_EnemyTattle_FlyingGreenMagikoopa,
[ACTOR_TYPE_YELLOW_MAGIKOOPA] = MSG_EnemyTattle_YellowMagikoopa,
[ACTOR_TYPE_FLYING_YELLOW_MAGIKOOPA] = MSG_EnemyTattle_FlyingYellowMagikoopa,
[ACTOR_TYPE_GRAY_MAGIKOOPA] = MSG_EnemyTattle_GrayMagikoopa,
[ACTOR_TYPE_FLYING_GRAY_MAGIKOOPA] = MSG_EnemyTattle_FlyingGrayMagikoopa,
[ACTOR_TYPE_WHITE_MAGIKOOPA] = MSG_EnemyTattle_FlyingWhiteMagikoopa,
[ACTOR_TYPE_FLYING_WHITE_MAGIKOOPA] = MSG_EnemyTattle_WhiteMagikoopa,
[ACTOR_TYPE_UNUSED_5B] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5C] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5D] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5E] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5F] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_60] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_61] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_62] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_63] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_64] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_65] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_66] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_67] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_68] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_69] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_6A] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_MONTY_HOLE] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_6C] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_6D] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_PLAYER] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_GOOMBARIO] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_KOOPER] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_BOMBETTE] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_PARAKARRY] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_BOW] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_WATT] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_SUSHIE] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_LAKILESTER] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_TWINK] = MSG_NONE,
[ACTOR_TYPE_UNUSED_78] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_79] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_THE_MASTER_1] = MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_THE_MASTER_2] = MSG_EnemyTattle_TheMaster2,
[ACTOR_TYPE_THE_MASTER_3] = MSG_EnemyTattle_TheMaster3,
[ACTOR_TYPE_CHAN] = MSG_EnemyTattle_Chan,
[ACTOR_TYPE_LEE] = MSG_EnemyTattle_Lee,
[ACTOR_TYPE_LEE_GOOMBARIO] = MSG_EnemyTattle_LeeGoombario,
[ACTOR_TYPE_LEE_KOOPER] = MSG_EnemyTattle_LeeKooper,
[ACTOR_TYPE_LEE_BOMBETTE] = MSG_EnemyTattle_LeeBombette,
[ACTOR_TYPE_LEE_PARAKARRY] = MSG_EnemyTattle_LeeParakarry,
[ACTOR_TYPE_LEE_BOW] = MSG_EnemyTattle_LeeBow,
[ACTOR_TYPE_LEE_WATT] = MSG_EnemyTattle_LeeWatt,
[ACTOR_TYPE_LEE_SUSHIE] = MSG_EnemyTattle_LeeSushie,
[ACTOR_TYPE_LEE_LAKILESTER] = MSG_EnemyTattle_LeeLakilester,
[ACTOR_TYPE_KAMMY_KOOPA] = MSG_NONE,
[ACTOR_TYPE_JR_TROOPA_1] = MSG_NONE,
[ACTOR_TYPE_JR_TROOPA_2] = MSG_EnemyTattle_JrTroopa1,
[ACTOR_TYPE_JR_TROOPA_3] = MSG_EnemyTattle_JrTroopa2,
[ACTOR_TYPE_JR_TROOPA_4] = MSG_EnemyTattle_JrTroopa3,
[ACTOR_TYPE_JR_TROOPA_5] = MSG_EnemyTattle_JrTroopa4,
[ACTOR_TYPE_JR_TROOPA_6] = MSG_EnemyTattle_JrTroopa5,
[ACTOR_TYPE_JR_TROOPA_DUP1] = MSG_EnemyTattle_JrTroopa5,
[ACTOR_TYPE_JR_TROOPA_DUP2] = MSG_EnemyTattle_JrTroopa5,
[ACTOR_TYPE_BLUE_GOOMBA_BOSS] = MSG_EnemyTattle_BlueGoombaBoss,
[ACTOR_TYPE_RED_GOOMBA_BOSS] = MSG_EnemyTattle_RedGoombaBoss,
[ACTOR_TYPE_GOOMBA_KING] = MSG_EnemyTattle_GoombaKing,
[ACTOR_TYPE_GOOMNUT_TREE] = MSG_EnemyTattle_GoomnutTree,
[ACTOR_TYPE_GOOMBARIO_TUTOR1] = MSG_NONE,
[ACTOR_TYPE_MAGIKOOPA_BOSS] = MSG_EnemyTattle_MagikoopaBoss,
[ACTOR_TYPE_FLYING_MAGIKOOPA_BOSS] = MSG_EnemyTattle_MagikoopaBossDup,
[ACTOR_TYPE_MAGIKOOPA_DUP1] = MSG_EnemyTattle_MagikoopaBoss,
[ACTOR_TYPE_MAGIKOOPA_DUP2] = MSG_EnemyTattle_MagikoopaBossDup,
[ACTOR_TYPE_FAKE_BOWSER] = MSG_EnemyTattle_FakeBowser,
[ACTOR_TYPE_KOOPA_BROS] = MSG_EnemyTattle_KoopaBros,
[ACTOR_TYPE_GREEN_NINJAKOOPA] = MSG_EnemyTattle_GreenNinjakoopa,
[ACTOR_TYPE_RED_NINJAKOOPA] = MSG_EnemyTattle_RedNinjakoopa,
[ACTOR_TYPE_BLACK_NINJAKOOPA] = MSG_EnemyTattle_BlueNinjakoopa,
[ACTOR_TYPE_YELLOW_NINJAKOOPA] = MSG_EnemyTattle_YellowNinjakoopa,
[ACTOR_TYPE_ELDSTAR] = MSG_NONE,
[ACTOR_TYPE_BUZZAR] = MSG_EnemyTattle_Buzzar,
[ACTOR_TYPE_TUTANKOOPA] = MSG_EnemyTattle_Tutankoopa,
[ACTOR_TYPE_CHOMP] = MSG_EnemyTattle_Chomp,
[ACTOR_TYPE_TUBBA_BLUBBA_INVINCIBLE] = MSG_EnemyTattle_TubbaBlubba,
[ACTOR_TYPE_TUBBA_BLUBBA] = MSG_EnemyTattle_TubbaBlubbaInvincible,
[ACTOR_TYPE_TUBBA_HEART] = MSG_EnemyTattle_TubbaHeart,
[ACTOR_TYPE_STILT_GUY] = MSG_EnemyTattle_StiltGuy,
[ACTOR_TYPE_SHY_STACK] = MSG_EnemyTattle_ShyStack,
[ACTOR_TYPE_SHY_SQUAD] = MSG_EnemyTattle_ShySquad,
[ACTOR_TYPE_GENERAL_GUY] = MSG_NONE,
[ACTOR_TYPE_TOY_TANK] = MSG_EnemyTattle_GeneralGuy,
[ACTOR_TYPE_LIGHT_BULB] = MSG_NONE,
[ACTOR_TYPE_SIGNAL_GUY] = MSG_EnemyTattle_ShyGuy,
[ACTOR_TYPE_SHY_SQUAD_DUP] = MSG_NONE,
[ACTOR_TYPE_SHY_GUY_DUP] = MSG_EnemyTattle_ShyGuy,
[ACTOR_TYPE_ANTI_GUY_OMO] = MSG_EnemyTattle_AntiGuy,
[ACTOR_TYPE_ANTI_GUY_KPA] = MSG_EnemyTattle_AntiGuy,
[ACTOR_TYPE_BIG_LANTERN_GHOST] = MSG_EnemyTattle_BigLanternGhost,
[ACTOR_TYPE_GOOMBA_KING_DUP] = MSG_EnemyTattle_GoombaKing,
[ACTOR_TYPE_LAVA_PIRANHA_PHASE_1] = MSG_EnemyTattle_LavaPiranhaPhase1,
[ACTOR_TYPE_LAVA_PIRANHA_PHASE_2] = MSG_EnemyTattle_LavaPiranhaPhase2,
[ACTOR_TYPE_LAVA_BUD_PHASE_1] = MSG_EnemyTattle_LavaBudPhase1,
[ACTOR_TYPE_LAVA_BUD_PHASE_2] = MSG_EnemyTattle_LavaBudPhase2,
[ACTOR_TYPE_PETIT_PIRANHA] = MSG_EnemyTattle_PetitPiranha,
[ACTOR_TYPE_PETIT_PIRANHA_BOMB] = MSG_EnemyTattle_LavaPiranhaPhase1,
[ACTOR_TYPE_KENT_C_KOOPA] = MSG_EnemyTattle_KentCKoopa,
[ACTOR_TYPE_HUFF_N_PUFF] = MSG_EnemyTattle_HuffNPuff,
[ACTOR_TYPE_TUFF_PUFF] = MSG_EnemyTattle_TuffPuff,
[ACTOR_TYPE_MONSTAR] = MSG_EnemyTattle_Monstar,
[ACTOR_TYPE_CRYSTAL_KING] = MSG_EnemyTattle_CrystalKing,
[ACTOR_TYPE_CRYSTAL_CLONE] = MSG_EnemyTattle_CrystalClone,
[ACTOR_TYPE_CRYSTAL_BIT] = MSG_EnemyTattle_CrystalBit,
[ACTOR_TYPE_INTRO_BOWSER] = MSG_NONE,
[ACTOR_TYPE_BOWSER_PHASE_1] = MSG_EnemyTattle_BowserPhase1,
[ACTOR_TYPE_BOWSER_DUP1] = MSG_EnemyTattle_BowserPhase1,
[ACTOR_TYPE_BOWSER_PHASE_2] = MSG_EnemyTattle_BowserPhase2,
[ACTOR_TYPE_BOWSER_DUP2] = MSG_EnemyTattle_BowserPhase2,
[ACTOR_TYPE_BOWSER_PHASE_3] = MSG_EnemyTattle_BowserPhase3,
[ACTOR_TYPE_BOWSER_DUP3] = MSG_EnemyTattle_BowserPhase3,
[ACTOR_TYPE_BLOOPER] = MSG_EnemyTattle_Blooper,
[ACTOR_TYPE_ELECTRO_BLOOPER1] = MSG_EnemyTattle_ElectroBlooper,
[ACTOR_TYPE_ELECTRO_BLOOPER2] = MSG_EnemyTattle_ElectroBlooper,
[ACTOR_TYPE_SUPER_BLOOPER1] = MSG_EnemyTattle_SuperBlooper,
[ACTOR_TYPE_SUPER_BLOOPER2] = MSG_EnemyTattle_SuperBlooper,
[ACTOR_TYPE_BLOOPER_BABY] = MSG_EnemyTattle_BlooperBaby,
[ACTOR_TYPE_LAKILESTER_DUP] = MSG_EnemyTattle_GhostLakilester,
[ACTOR_TYPE_SLOT_MACHINE_START] = MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_SLOT_MACHINE_STOP] = MSG_EnemyTattle_SlotMachineStop,
[ACTOR_TYPE_WHACKA] = MSG_EnemyTattle_Whacka,
[ACTOR_TYPE_SLOT_MACHINE_START_DUP1] = MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_SLOT_MACHINE_START_DUP2] = MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_SLOT_MACHINE_START_DUP3] = MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_RED_GOOMBA] MSG_NONE,
[ACTOR_TYPE_RED_PARAGOOMBA] MSG_NONE,
[ACTOR_TYPE_GLOOMBA] MSG_EnemyTattle_Gloomba,
[ACTOR_TYPE_PARAGLOOMBA] MSG_EnemyTattle_Paragloomba,
[ACTOR_TYPE_SPIKED_GLOOMBA] MSG_EnemyTattle_SpikedGloomba,
[ACTOR_TYPE_DARK_KOOPA] MSG_EnemyTattle_DarkKoopa,
[ACTOR_TYPE_DARK_PARATROOPA] MSG_EnemyTattle_DarkParatroopa,
[ACTOR_TYPE_GOOMBA] MSG_EnemyTattle_Goomba,
[ACTOR_TYPE_PARAGOOMBA] MSG_EnemyTattle_Paragoomba,
[ACTOR_TYPE_SPIKED_GOOMBA] MSG_EnemyTattle_SpikedGoomba,
[ACTOR_TYPE_FUZZY] MSG_EnemyTattle_Fuzzy,
[ACTOR_TYPE_KOOPA_TROOPA] MSG_EnemyTattle_KoopaTroopa,
[ACTOR_TYPE_PARATROOPA] MSG_EnemyTattle_Paratroopa,
[ACTOR_TYPE_BOB_OMB] MSG_EnemyTattle_BobOmb,
[ACTOR_TYPE_BOB_OMB_DUP] MSG_EnemyTattle_BobOmb,
[ACTOR_TYPE_BULLET_BILL] MSG_EnemyTattle_BulletBill,
[ACTOR_TYPE_BILL_BLASTER] MSG_EnemyTattle_BillBlaster,
[ACTOR_TYPE_CLEFT] MSG_EnemyTattle_Cleft,
[ACTOR_TYPE_MONTY_MOLE] MSG_EnemyTattle_MontyMole,
[ACTOR_TYPE_BANDIT] MSG_EnemyTattle_Bandit,
[ACTOR_TYPE_POKEY] MSG_EnemyTattle_Pokey,
[ACTOR_TYPE_POKEY_MUMMY] MSG_EnemyTattle_PokeyMummy,
[ACTOR_TYPE_SWOOPER] MSG_EnemyTattle_Swooper,
[ACTOR_TYPE_BUZZY_BEETLE] MSG_EnemyTattle_BuzzyBeetle,
[ACTOR_TYPE_STONE_CHOMP] MSG_EnemyTattle_StoneChomp,
[ACTOR_TYPE_PIRANHA_PLANT] MSG_EnemyTattle_PiranhaPlant,
[ACTOR_TYPE_FOREST_FUZZY] MSG_EnemyTattle_ForestFuzzy,
[ACTOR_TYPE_HYPER_GOOMBA] MSG_EnemyTattle_HyperGoomba,
[ACTOR_TYPE_HYPER_PARAGOOMBA] MSG_EnemyTattle_HyperParagoomba,
[ACTOR_TYPE_HYPER_CLEFT] MSG_EnemyTattle_HyperCleft,
[ACTOR_TYPE_CLUBBA] MSG_EnemyTattle_Clubba,
[ACTOR_TYPE_SHY_GUY] MSG_EnemyTattle_ShyGuy,
[ACTOR_TYPE_GROOVE_GUY] MSG_EnemyTattle_GrooveGuy,
[ACTOR_TYPE_SKY_GUY] MSG_EnemyTattle_SkyGuy,
[ACTOR_TYPE_MEDI_GUY] MSG_EnemyTattle_MediGuy,
[ACTOR_TYPE_PYRO_GUY] MSG_EnemyTattle_PyroGuy,
[ACTOR_TYPE_SPY_GUY] MSG_EnemyTattle_SpyGuy,
[ACTOR_TYPE_FUZZIPEDE] MSG_NONE,
[ACTOR_TYPE_HURT_PLANT] MSG_EnemyTattle_HurtPlant,
[ACTOR_TYPE_M_BUSH] MSG_EnemyTattle_MBush,
[ACTOR_TYPE_AQUA_FUZZY] MSG_NONE,
[ACTOR_TYPE_JUNGLE_FUZZY] MSG_EnemyTattle_JungleFuzzy,
[ACTOR_TYPE_SPEAR_GUY] MSG_EnemyTattle_SpearGuy,
[ACTOR_TYPE_LAVA_BUBBLE] MSG_EnemyTattle_LavaBubble,
[ACTOR_TYPE_SPIKE_TOP] MSG_EnemyTattle_SpikeTop,
[ACTOR_TYPE_PUTRID_PIRANHA] MSG_EnemyTattle_PutridPiranha,
[ACTOR_TYPE_LAKITU] MSG_EnemyTattle_Lakitu,
[ACTOR_TYPE_SPINY] MSG_EnemyTattle_Spiny,
[ACTOR_TYPE_MONTY_MOLE_BOSS] MSG_EnemyTattle_MontyMoleBoss,
[ACTOR_TYPE_BZZAP] MSG_EnemyTattle_Bzzap,
[ACTOR_TYPE_CRAZEE_DAYZEE] MSG_EnemyTattle_CrazeeDayzee,
[ACTOR_TYPE_AMAZY_DAYZEE] MSG_EnemyTattle_AmazyDayzee,
[ACTOR_TYPE_RUFF_PUFF] MSG_EnemyTattle_RuffPuff,
[ACTOR_TYPE_SPIKE] MSG_EnemyTattle_Spike,
[ACTOR_TYPE_GULPIT] MSG_EnemyTattle_Gulpit,
[ACTOR_TYPE_GULPIT_ROCKS] MSG_EnemyTattle_GulpitRocks,
[ACTOR_TYPE_WHITE_CLUBBA] MSG_EnemyTattle_WhiteClubba,
[ACTOR_TYPE_FROST_PIRANHA] MSG_EnemyTattle_FrostPiranha,
[ACTOR_TYPE_SWOOPULA] MSG_EnemyTattle_Swoopula,
[ACTOR_TYPE_DUPLIGHOST] MSG_EnemyTattle_Duplighost,
[ACTOR_TYPE_GHOST_GOOMBARIO] MSG_EnemyTattle_GhostGoombario,
[ACTOR_TYPE_GHOST_KOOPER] MSG_EnemyTattle_GhostKooper,
[ACTOR_TYPE_GHOST_BOMBETTE] MSG_EnemyTattle_GhostBombette,
[ACTOR_TYPE_GHOST_PARAKARRY] MSG_EnemyTattle_GhostParakarry,
[ACTOR_TYPE_GHOST_BOW] MSG_EnemyTattle_GhostBow,
[ACTOR_TYPE_GHOST_WATT] MSG_EnemyTattle_GhostWatt,
[ACTOR_TYPE_GHOST_SUSHIE] MSG_EnemyTattle_GhostSushie,
[ACTOR_TYPE_GHOST_LAKILESTER] MSG_EnemyTattle_GhostLakilester,
[ACTOR_TYPE_ALBINO_DINO] MSG_EnemyTattle_AlbinoDino,
[ACTOR_TYPE_EMBER] MSG_EnemyTattle_Ember,
[ACTOR_TYPE_BONY_BEETLE] MSG_EnemyTattle_BonyBeetle,
[ACTOR_TYPE_DRY_BONES] MSG_EnemyTattle_DryBones,
[ACTOR_TYPE_DRY_BONES2] MSG_EnemyTattle_DryBones,
[ACTOR_TYPE_BOMBSHELL_BLASTER] MSG_EnemyTattle_BombshellBlaster,
[ACTOR_TYPE_BOMBSHELL_BILL] MSG_EnemyTattle_BombshellBill,
[ACTOR_TYPE_HAMMER_BROS] MSG_EnemyTattle_HammerBros,
[ACTOR_TYPE_KOOPATROL] MSG_EnemyTattle_Koopatrol,
[ACTOR_TYPE_MAGIKOOPA] MSG_EnemyTattle_Magikoopa,
[ACTOR_TYPE_FLYING_MAGIKOOPA] MSG_EnemyTattle_MagikoopaDup,
[ACTOR_TYPE_MAGICLONE] MSG_EnemyTattle_Magiclone,
[ACTOR_TYPE_FLYING_MAGICLONE] MSG_EnemyTattle_MagicloneDup,
[ACTOR_TYPE_RED_MAGIKOOPA] MSG_EnemyTattle_RedMagikoopa,
[ACTOR_TYPE_FLYING_RED_MAGIKOOPA] MSG_EnemyTattle_FlyingRedMagikoopa,
[ACTOR_TYPE_GREEN_MAGIKOOPA] MSG_EnemyTattle_GreenMagikoopa,
[ACTOR_TYPE_FLYING_GREEN_MAGIKOOPA] MSG_EnemyTattle_FlyingGreenMagikoopa,
[ACTOR_TYPE_YELLOW_MAGIKOOPA] MSG_EnemyTattle_YellowMagikoopa,
[ACTOR_TYPE_FLYING_YELLOW_MAGIKOOPA] MSG_EnemyTattle_FlyingYellowMagikoopa,
[ACTOR_TYPE_GRAY_MAGIKOOPA] MSG_EnemyTattle_GrayMagikoopa,
[ACTOR_TYPE_FLYING_GRAY_MAGIKOOPA] MSG_EnemyTattle_FlyingGrayMagikoopa,
[ACTOR_TYPE_WHITE_MAGIKOOPA] MSG_EnemyTattle_FlyingWhiteMagikoopa,
[ACTOR_TYPE_FLYING_WHITE_MAGIKOOPA] MSG_EnemyTattle_WhiteMagikoopa,
[ACTOR_TYPE_UNUSED_5B] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5C] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5D] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5E] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_5F] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_60] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_61] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_62] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_63] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_64] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_65] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_66] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_67] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_68] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_69] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_6A] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_MONTY_HOLE] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_6C] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_6D] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_PLAYER] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_GOOMBARIO] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_KOOPER] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_BOMBETTE] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_PARAKARRY] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_BOW] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_WATT] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_SUSHIE] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_LAKILESTER] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_TWINK] MSG_NONE,
[ACTOR_TYPE_UNUSED_78] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_UNUSED_79] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_THE_MASTER_1] MSG_EnemyTattle_TheMaster1,
[ACTOR_TYPE_THE_MASTER_2] MSG_EnemyTattle_TheMaster2,
[ACTOR_TYPE_THE_MASTER_3] MSG_EnemyTattle_TheMaster3,
[ACTOR_TYPE_CHAN] MSG_EnemyTattle_Chan,
[ACTOR_TYPE_LEE] MSG_EnemyTattle_Lee,
[ACTOR_TYPE_LEE_GOOMBARIO] MSG_EnemyTattle_LeeGoombario,
[ACTOR_TYPE_LEE_KOOPER] MSG_EnemyTattle_LeeKooper,
[ACTOR_TYPE_LEE_BOMBETTE] MSG_EnemyTattle_LeeBombette,
[ACTOR_TYPE_LEE_PARAKARRY] MSG_EnemyTattle_LeeParakarry,
[ACTOR_TYPE_LEE_BOW] MSG_EnemyTattle_LeeBow,
[ACTOR_TYPE_LEE_WATT] MSG_EnemyTattle_LeeWatt,
[ACTOR_TYPE_LEE_SUSHIE] MSG_EnemyTattle_LeeSushie,
[ACTOR_TYPE_LEE_LAKILESTER] MSG_EnemyTattle_LeeLakilester,
[ACTOR_TYPE_KAMMY_KOOPA] MSG_NONE,
[ACTOR_TYPE_JR_TROOPA_1] MSG_NONE,
[ACTOR_TYPE_JR_TROOPA_2] MSG_EnemyTattle_JrTroopa1,
[ACTOR_TYPE_JR_TROOPA_3] MSG_EnemyTattle_JrTroopa2,
[ACTOR_TYPE_JR_TROOPA_4] MSG_EnemyTattle_JrTroopa3,
[ACTOR_TYPE_JR_TROOPA_5] MSG_EnemyTattle_JrTroopa4,
[ACTOR_TYPE_JR_TROOPA_6] MSG_EnemyTattle_JrTroopa5,
[ACTOR_TYPE_JR_TROOPA_DUP1] MSG_EnemyTattle_JrTroopa5,
[ACTOR_TYPE_JR_TROOPA_DUP2] MSG_EnemyTattle_JrTroopa5,
[ACTOR_TYPE_BLUE_GOOMBA_BOSS] MSG_EnemyTattle_BlueGoombaBoss,
[ACTOR_TYPE_RED_GOOMBA_BOSS] MSG_EnemyTattle_RedGoombaBoss,
[ACTOR_TYPE_GOOMBA_KING] MSG_EnemyTattle_GoombaKing,
[ACTOR_TYPE_GOOMNUT_TREE] MSG_EnemyTattle_GoomnutTree,
[ACTOR_TYPE_GOOMBARIO_TUTOR1] MSG_NONE,
[ACTOR_TYPE_MAGIKOOPA_BOSS] MSG_EnemyTattle_MagikoopaBoss,
[ACTOR_TYPE_FLYING_MAGIKOOPA_BOSS] MSG_EnemyTattle_MagikoopaBossDup,
[ACTOR_TYPE_MAGIKOOPA_DUP1] MSG_EnemyTattle_MagikoopaBoss,
[ACTOR_TYPE_MAGIKOOPA_DUP2] MSG_EnemyTattle_MagikoopaBossDup,
[ACTOR_TYPE_FAKE_BOWSER] MSG_EnemyTattle_FakeBowser,
[ACTOR_TYPE_KOOPA_BROS] MSG_EnemyTattle_KoopaBros,
[ACTOR_TYPE_GREEN_NINJAKOOPA] MSG_EnemyTattle_GreenNinjakoopa,
[ACTOR_TYPE_RED_NINJAKOOPA] MSG_EnemyTattle_RedNinjakoopa,
[ACTOR_TYPE_BLACK_NINJAKOOPA] MSG_EnemyTattle_BlueNinjakoopa,
[ACTOR_TYPE_YELLOW_NINJAKOOPA] MSG_EnemyTattle_YellowNinjakoopa,
[ACTOR_TYPE_ELDSTAR] MSG_NONE,
[ACTOR_TYPE_BUZZAR] MSG_EnemyTattle_Buzzar,
[ACTOR_TYPE_TUTANKOOPA] MSG_EnemyTattle_Tutankoopa,
[ACTOR_TYPE_CHOMP] MSG_EnemyTattle_Chomp,
[ACTOR_TYPE_TUBBA_BLUBBA_INVINCIBLE] MSG_EnemyTattle_TubbaBlubba,
[ACTOR_TYPE_TUBBA_BLUBBA] MSG_EnemyTattle_TubbaBlubbaInvincible,
[ACTOR_TYPE_TUBBA_HEART] MSG_EnemyTattle_TubbaHeart,
[ACTOR_TYPE_STILT_GUY] MSG_EnemyTattle_StiltGuy,
[ACTOR_TYPE_SHY_STACK] MSG_EnemyTattle_ShyStack,
[ACTOR_TYPE_SHY_SQUAD] MSG_EnemyTattle_ShySquad,
[ACTOR_TYPE_GENERAL_GUY] MSG_NONE,
[ACTOR_TYPE_TOY_TANK] MSG_EnemyTattle_GeneralGuy,
[ACTOR_TYPE_LIGHT_BULB] MSG_NONE,
[ACTOR_TYPE_SIGNAL_GUY] MSG_EnemyTattle_ShyGuy,
[ACTOR_TYPE_SHY_SQUAD_DUP] MSG_NONE,
[ACTOR_TYPE_SHY_GUY_DUP] MSG_EnemyTattle_ShyGuy,
[ACTOR_TYPE_ANTI_GUY_OMO] MSG_EnemyTattle_AntiGuy,
[ACTOR_TYPE_ANTI_GUY_KPA] MSG_EnemyTattle_AntiGuy,
[ACTOR_TYPE_BIG_LANTERN_GHOST] MSG_EnemyTattle_BigLanternGhost,
[ACTOR_TYPE_GOOMBA_KING_DUP] MSG_EnemyTattle_GoombaKing,
[ACTOR_TYPE_LAVA_PIRANHA_PHASE_1] MSG_EnemyTattle_LavaPiranhaPhase1,
[ACTOR_TYPE_LAVA_PIRANHA_PHASE_2] MSG_EnemyTattle_LavaPiranhaPhase2,
[ACTOR_TYPE_LAVA_BUD_PHASE_1] MSG_EnemyTattle_LavaBudPhase1,
[ACTOR_TYPE_LAVA_BUD_PHASE_2] MSG_EnemyTattle_LavaBudPhase2,
[ACTOR_TYPE_PETIT_PIRANHA] MSG_EnemyTattle_PetitPiranha,
[ACTOR_TYPE_PETIT_PIRANHA_BOMB] MSG_EnemyTattle_LavaPiranhaPhase1,
[ACTOR_TYPE_KENT_C_KOOPA] MSG_EnemyTattle_KentCKoopa,
[ACTOR_TYPE_HUFF_N_PUFF] MSG_EnemyTattle_HuffNPuff,
[ACTOR_TYPE_TUFF_PUFF] MSG_EnemyTattle_TuffPuff,
[ACTOR_TYPE_MONSTAR] MSG_EnemyTattle_Monstar,
[ACTOR_TYPE_CRYSTAL_KING] MSG_EnemyTattle_CrystalKing,
[ACTOR_TYPE_CRYSTAL_CLONE] MSG_EnemyTattle_CrystalClone,
[ACTOR_TYPE_CRYSTAL_BIT] MSG_EnemyTattle_CrystalBit,
[ACTOR_TYPE_INTRO_BOWSER] MSG_NONE,
[ACTOR_TYPE_HALLWAY_BOWSER] MSG_EnemyTattle_HallwayBowser,
[ACTOR_TYPE_HALLWAY_BOWSER_DUP] MSG_EnemyTattle_HallwayBowser,
[ACTOR_TYPE_FINAL_BOWSER_1] MSG_EnemyTattle_FinalBowser1,
[ACTOR_TYPE_FINAL_BOWSER_1_DUP] MSG_EnemyTattle_FinalBowser1,
[ACTOR_TYPE_FINAL_BOWSER_2] MSG_EnemyTattle_FinalBowser2,
[ACTOR_TYPE_FINAL_BOWSER_2_DUP] MSG_EnemyTattle_FinalBowser2,
[ACTOR_TYPE_BLOOPER] MSG_EnemyTattle_Blooper,
[ACTOR_TYPE_ELECTRO_BLOOPER1] MSG_EnemyTattle_ElectroBlooper,
[ACTOR_TYPE_ELECTRO_BLOOPER2] MSG_EnemyTattle_ElectroBlooper,
[ACTOR_TYPE_SUPER_BLOOPER1] MSG_EnemyTattle_SuperBlooper,
[ACTOR_TYPE_SUPER_BLOOPER2] MSG_EnemyTattle_SuperBlooper,
[ACTOR_TYPE_BLOOPER_BABY] MSG_EnemyTattle_BlooperBaby,
[ACTOR_TYPE_LAKILESTER_DUP] MSG_EnemyTattle_GhostLakilester,
[ACTOR_TYPE_SLOT_MACHINE_START] MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_SLOT_MACHINE_STOP] MSG_EnemyTattle_SlotMachineStop,
[ACTOR_TYPE_WHACKA] MSG_EnemyTattle_Whacka,
[ACTOR_TYPE_SLOT_MACHINE_START_DUP1] MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_SLOT_MACHINE_START_DUP2] MSG_EnemyTattle_SlotMachineStart,
[ACTOR_TYPE_SLOT_MACHINE_START_DUP3] MSG_EnemyTattle_SlotMachineStart,
};
ActorOffsets bActorOffsets[ACTOR_TYPE_COUNT] = {
@ -2190,12 +2190,12 @@ ActorOffsets bActorOffsets[ACTOR_TYPE_COUNT] = {
[ACTOR_TYPE_CRYSTAL_CLONE] = { .tattleCam = { 0, 0, 0 }, .shadow = 0 },
[ACTOR_TYPE_CRYSTAL_BIT] = { .tattleCam = { 0, 0, 0 }, .shadow = 0 },
[ACTOR_TYPE_INTRO_BOWSER] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_BOWSER_PHASE_1] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_BOWSER_DUP1] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_BOWSER_PHASE_2] = { .tattleCam = { 241, 19, 45 }, .shadow = 241 },
[ACTOR_TYPE_BOWSER_DUP2] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_BOWSER_PHASE_3] = { .tattleCam = { 241, 19, 45 }, .shadow = 241 },
[ACTOR_TYPE_BOWSER_DUP3] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_HALLWAY_BOWSER] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_HALLWAY_BOWSER_DUP] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_FINAL_BOWSER_1] = { .tattleCam = { 241, 19, 45 }, .shadow = 241 },
[ACTOR_TYPE_FINAL_BOWSER_1_DUP] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_FINAL_BOWSER_2] = { .tattleCam = { 241, 19, 45 }, .shadow = 241 },
[ACTOR_TYPE_FINAL_BOWSER_2_DUP] = { .tattleCam = { 0, 0, 0 }, .shadow = 241 },
[ACTOR_TYPE_BLOOPER] = { .tattleCam = { 0, 0, 0 }, .shadow = 0 },
[ACTOR_TYPE_ELECTRO_BLOOPER1] = { .tattleCam = { 0, 0, 0 }, .shadow = 0 },
[ACTOR_TYPE_ELECTRO_BLOOPER2] = { .tattleCam = { 0, 0, 0 }, .shadow = 0 },

View File

@ -53,8 +53,8 @@ u8 ActorTypesShyGuyBoss[] = {
};
u8 ActorTypesBowser[] = {
ACTOR_TYPE_BOWSER_PHASE_2,
ACTOR_TYPE_BOWSER_PHASE_3,
ACTOR_TYPE_FINAL_BOWSER_1,
ACTOR_TYPE_FINAL_BOWSER_2,
ACTOR_TYPE_LIST_END
};

View File

@ -846,7 +846,7 @@ EvtScript EVS_Player_HandleEvent = {
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
EVT_END_SWITCH
EVT_CALL(CloseActionCommandInfo)
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_100, FALSE)
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_EXECUTING_MOVE, FALSE)
EVT_CALL(func_802693F0)
EVT_CALL(ForceDisablePlayerBlurImmediately)
EVT_CALL(GetLastEvent, ACTOR_PLAYER, LVarF)

View File

@ -13,7 +13,7 @@ void* effectFuncs[] = {
guFrustumF, draw_prev_frame_buffer_at_screen_pos, draw_box, draw_msg, get_msg_width, get_background_color_blend, sfx_play_sound_at_position
};
s32 D_E0200734[128] = {
s32 SimpleRandLUT[128] = {
0x100B2AF5, 0x45B59924, 0x35094B45, 0x4ABFA67A, 0x164F5371, 0x7B195845, 0x58562A56, 0x25733D41,
0x48008107, 0x0E004F28, 0x6963B8AD, 0x5B82AB71, 0x6BC1F51B, 0x3D947816, 0x39705175, 0x44409A59,
0x0ED99067, 0x5F70B6F8, 0x3225AEEE, 0x08B5E97C, 0x2CDE7594, 0x5E9E5B7D, 0x5B2A2888, 0x107F0F50,
@ -45,9 +45,9 @@ u32 effect_rand_int(s32 max) {
return effect_prng_seed % (max + 1);
}
// very simple 'random' number generator using a LUT
s32 func_E0200044(s32 max, s32 idx) {
s32 lookupVal = D_E0200734[idx % ARRAY_COUNT(D_E0200734)];
// very simple stateless 'random' number generator using a LUT
s32 effect_simple_rand(s32 max, s32 idx) {
s32 lookupVal = SimpleRandLUT[idx % ARRAY_COUNT(SimpleRandLUT)];
if (lookupVal < 0) {
lookupVal = -lookupVal;

View File

@ -385,12 +385,12 @@ BSS s8 BattleMenu_Moves_OptionSortPriority[24];
BSS s8 BattleMenu_Moves_OptionCantUseMessages[24];
BSS s32 battle_menu_moveOptionActive;
BSS s8 BattleSubmenuStratsState;
BSS s8 D_802AD605;
BSS s8 StratsMenuPos;
BSS s8 D_802AD606;
BSS s8 D_802AD607;
BSS s8 D_802AD608;
BSS s8 D_802AD609;
BSS s8 D_802AD60A;
BSS s8 StratsMenuLines;
BSS s8 D_802AD60B;
BSS s16 D_802AD60C;
BSS s16 D_802AD60E;
@ -407,7 +407,7 @@ BSS s16 D_802AD63E;
BSS HudScript* D_802AD640[6];
BSS s32 D_802AD658[5]; // msg IDs
BSS s32 D_802AD66C;
BSS s32 D_802AD670;
BSS s32 StratsMenuLastPos;
BSS s32 D_802AD674; // unused?
BSS s32 D_802AD678[6];
@ -424,10 +424,10 @@ void func_802A43DC(void* data, s32 x, s32 y);
void func_802A4448(void* data, s32 x, s32 y);
void func_802A4494(void* data, s32 x, s32 y);
void func_802A4534(void* data, s32 x, s32 y);
void func_802A5290(void* data, s32 x, s32 y);
void func_802A56F8(void* data, s32 x, s32 y);
void func_802A5738(void* data, s32 x, s32 y);
void func_802A57C8(void* data, s32 x, s32 y);
void btl_menu_strats_draw_content(void* data, s32 x, s32 y);
void btl_menu_strats_show_title(void* data, s32 x, s32 y);
void btl_menu_strats_show_desc(void* data, s32 x, s32 y);
void btl_menu_strats_show_error(void* data, s32 x, s32 y);
void func_80263300(void);
void func_80263268(void);
@ -1697,14 +1697,14 @@ void func_802A45D8(void) {
s32 sixTemp;
s8 temp802AD673;
BattleSubmenuStratsState = 0;
D_802AD605 = D_802AD670;
D_802AD606 = D_802AD670;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_INIT;
StratsMenuPos = StratsMenuLastPos;
D_802AD606 = StratsMenuLastPos;
D_802AD608 = 0;
D_802AD60A = D_802AD66C;
StratsMenuLines = D_802AD66C;
if (D_802AD60A > 6) {
D_802AD60A = 6;
if (StratsMenuLines > 6) {
StratsMenuLines = 6;
}
D_802AD609 = sixTemp = 6;
@ -1715,13 +1715,13 @@ void func_802A45D8(void) {
D_802AD624 = 255;
D_802AD60B = 1;
temp802AD673 = D_802AD670;
temp802AD673 = StratsMenuLastPos;
if ((s8) D_802AD670 < 0) {
D_802AD608 = D_802AD670;
if ((s8) StratsMenuLastPos < 0) {
D_802AD608 = StratsMenuLastPos;
}
if ((s8) D_802AD670 >= D_802AD609) {
D_802AD608 = (temp802AD673 + 1 - D_802AD60A);
if ((s8) StratsMenuLastPos >= D_802AD609) {
D_802AD608 = (temp802AD673 + 1 - StratsMenuLines);
}
D_802AD609 = D_802AD608 + sixTemp;
@ -1730,13 +1730,13 @@ void func_802A45D8(void) {
}
D_802AD60C = -D_802AD608 * 13;
D_802AD60E = ((s8) D_802AD670 - D_802AD608) * 13;
D_802AD60E = ((s8) StratsMenuLastPos - D_802AD608) * 13;
D_802AD607 = 0;
D_802AD6D4 = 0;
}
void func_802A4718(void) {
BattleSubmenuStratsState = 10;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_UNK_10;
}
void func_802A472C(void) {
@ -1772,7 +1772,7 @@ void func_802A47E0(void) {
D_802AD614 = MSG_PAL_STANDARD;
D_802AD60B = 1;
D_802AD624 = 255;
BattleSubmenuStratsState = 1;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_CHOOSE;
}
void func_802A48FC(void) {
@ -1792,17 +1792,17 @@ void func_802A48FC(void) {
hud_element_set_script(D_802AD618, &HES_AnimatedHandPointer);
D_802AD614 = MSG_PAL_STANDARD;
D_802AD60B = 1;
BattleSubmenuStratsState = 20;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_UNK_20;
}
void func_802A4A10(void) {
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_TRANSPARENT);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_TRANSPARENT);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_SHOW);
BattleSubmenuStratsState = 30;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_UNK_30;
}
s32 func_802A4A54(void) {
s32 btl_update_strats_menu(void) {
BattleStatus* battleStatus = &gBattleStatus;
s32 id;
s32 x, y;
@ -1811,11 +1811,11 @@ s32 func_802A4A54(void) {
s32 i;
switch (BattleSubmenuStratsState) {
case 0:
case BTL_SUBMENU_STRATS_STATE_INIT:
D_802AD63C = 20;
D_802AD63E = 68;
D_802AD60C = -D_802AD608 * 13;
D_802AD60E = (D_802AD605 - D_802AD608) * 13;
D_802AD60E = (StratsMenuPos - D_802AD608) * 13;
for (i = 0; i < D_802AD66C; i++) {
D_802AD628[i] = id = hud_element_create(D_802AD640[i]);
@ -1838,52 +1838,52 @@ s32 func_802A4A54(void) {
D_802AD614 = MSG_PAL_STANDARD;
x = D_802AD63C;
y = D_802AD63E;
set_window_properties(WINDOW_ID_6, x, y, 144, (D_802AD60A * 13) + 26, 0, func_802A5290, NULL, -1);
set_window_properties(WINDOW_ID_7, x + 18, y - 6, 108, 16, 1, func_802A56F8, NULL, -1);
set_window_properties(WINDOW_ID_6, x, y, 144, (StratsMenuLines * 13) + 26, 0, btl_menu_strats_draw_content, NULL, -1);
set_window_properties(WINDOW_ID_7, x + 18, y - 6, 108, 16, 1, btl_menu_strats_show_title, NULL, -1);
x = 20;
y = 186;
set_window_properties(WINDOW_ID_8, x, y, 280, 32, WINDOW_PRIORITY_20, func_802A5738, NULL, -1);
set_window_properties(WINDOW_ID_8, x, y, 280, 32, WINDOW_PRIORITY_20, btl_menu_strats_show_desc, NULL, -1);
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_SHOW);
BattleSubmenuStratsState = 1;
break;
case 1:
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_CHOOSE;
return 0;
case BTL_SUBMENU_STRATS_STATE_CHOOSE:
if (D_802AD607 == 0) {
D_802AD606 = D_802AD605;
D_802AD606 = StratsMenuPos;
if (battleStatus->curButtonsHeld & BUTTON_STICK_UP) {
if (D_802AD605 > 0) {
D_802AD605--;
if (StratsMenuPos > 0) {
StratsMenuPos--;
} else if (battleStatus->curButtonsPressed & BUTTON_STICK_UP) {
D_802AD605--;
StratsMenuPos--;
}
}
if (battleStatus->curButtonsHeld & BUTTON_STICK_DOWN) {
if (D_802AD605 < D_802AD66C - 1) {
D_802AD605++;
if (StratsMenuPos < D_802AD66C - 1) {
StratsMenuPos++;
} else if (battleStatus->curButtonsPressed & BUTTON_STICK_DOWN) {
D_802AD605++;
StratsMenuPos++;
}
}
if (D_802AD605 < 0) {
D_802AD605 = D_802AD66C - 1;
if (StratsMenuPos < 0) {
StratsMenuPos = D_802AD66C - 1;
}
if (D_802AD66C - 1 < D_802AD605) {
D_802AD605 = 0;
if (D_802AD66C - 1 < StratsMenuPos) {
StratsMenuPos = 0;
}
if (D_802AD606 != D_802AD605) {
if (D_802AD606 != StratsMenuPos) {
hud_element_set_scale(D_802AD628[D_802AD606], 0.45f);
sfx_play_sound(SOUND_MENU_CHANGE_SELECTION);
}
if (D_802AD605 < D_802AD608) {
D_802AD608 = D_802AD605;
if (StratsMenuPos < D_802AD608) {
D_802AD608 = StratsMenuPos;
}
if (D_802AD605 >= D_802AD609) {
D_802AD608 = D_802AD605 + 1 - D_802AD60A;
if (StratsMenuPos >= D_802AD609) {
D_802AD608 = StratsMenuPos + 1 - StratsMenuLines;
}
D_802AD609 = D_802AD608 + 6;
if (D_802AD609 > D_802AD66C) {
@ -1891,25 +1891,22 @@ s32 func_802A4A54(void) {
}
if (battleStatus->curButtonsPressed & BUTTON_A) {
if (D_802AD690[D_802AD605] == 1) {
if (D_802AD690[StratsMenuPos] == 1) {
sfx_play_sound(SOUND_MENU_NEXT);
BattleSubmenuStratsState = -1;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_SELECT;
} else {
sfx_play_sound(SOUND_MENU_ERROR);
BattleSubmenuStratsState = 40;
D_802AD610 = D_802AD6A8[D_802AD605];
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_ERROR_INIT;
D_802AD610 = D_802AD6A8[StratsMenuPos];
}
break;
}
if (battleStatus->curButtonsPressed & BUTTON_B) {
} else if (battleStatus->curButtonsPressed & BUTTON_B) {
sfx_play_sound(SOUND_MENU_BACK);
func_802A472C();
BattleSubmenuStratsState = -2;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_CANCEL;
}
}
break;
case -1:
return 0;
case BTL_SUBMENU_STRATS_STATE_SELECT:
for (i = 0; i < D_802AD66C; i++) {
hud_element_set_tint(D_802AD628[i], 160, 160, 160);
}
@ -1921,34 +1918,34 @@ s32 func_802A4A54(void) {
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_DARKENED);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_DARKENED);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_HIDE);
return D_802AD605 + 1;
case -2:
return StratsMenuPos + 1;
case BTL_SUBMENU_STRATS_STATE_CANCEL:
return 255;
case 10:
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_HIDE);
BattleSubmenuStratsState = 11;
return D_802AD605 + 1;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_UNK_11;
return StratsMenuPos + 1;
case 11:
return D_802AD605 + 1;
return StratsMenuPos + 1;
case 20:
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_SHOW);
BattleSubmenuStratsState = 1;
return D_802AD605 + 1;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_CHOOSE;
return StratsMenuPos + 1;
case 30:
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_SHOW);
BattleSubmenuStratsState = -1;
break;
case 40:
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_SELECT;
return 0;
case BTL_SUBMENU_STRATS_STATE_ERROR_INIT:
D_802AD6D4 = -1;
BattleSubmenuStratsState = 41;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_ERROR_SHOW;
return -1;
case 41:
case BTL_SUBMENU_STRATS_STATE_ERROR_SHOW:
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_HIDE);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_HIDE);
@ -1964,12 +1961,12 @@ s32 func_802A4A54(void) {
break;
}
width = get_msg_width(msgID, 0) + 23;
set_window_properties(WINDOW_ID_BATTLE_POPUP, (SCREEN_WIDTH / 2) - (width / 2), 80, width, 28, 20, func_802A57C8, NULL, -1);
set_window_properties(WINDOW_ID_BATTLE_POPUP, (SCREEN_WIDTH / 2) - (width / 2), 80, width, 28, 20, btl_menu_strats_show_error, NULL, -1);
set_window_update(WINDOW_ID_BATTLE_POPUP, WINDOW_UPDATE_SHOW);
D_802AD612 = 60;
BattleSubmenuStratsState = 42;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_ERROR_DONE;
return -1;
case 42:
case BTL_SUBMENU_STRATS_STATE_ERROR_DONE:
if (gGameStatusPtr->pressedButtons[0] & (BUTTON_A | BUTTON_B)) {
D_802AD612 = 0;
}
@ -1981,15 +1978,15 @@ s32 func_802A4A54(void) {
set_window_update(WINDOW_ID_6, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_7, WINDOW_UPDATE_SHOW);
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_SHOW);
BattleSubmenuStratsState = 1;
break;
BattleSubmenuStratsState = BTL_SUBMENU_STRATS_STATE_CHOOSE;
return 0;
}
return 0;
}
static const f32 padding4 = 0.0f;
void func_802A5290(void* data, s32 x, s32 y) {
void btl_menu_strats_draw_content(void* data, s32 x, s32 y) {
s32 var_t0;
s32 temp_f6;
s32 xPos, yPos;
@ -1998,13 +1995,13 @@ void func_802A5290(void* data, s32 x, s32 y) {
s32 i;
switch (BattleSubmenuStratsState) {
case -1:
case 1:
case 10:
case 20:
case 30:
case 40:
case 41:
case BTL_SUBMENU_STRATS_STATE_SELECT:
case BTL_SUBMENU_STRATS_STATE_CHOOSE:
case BTL_SUBMENU_STRATS_STATE_UNK_10:
case BTL_SUBMENU_STRATS_STATE_UNK_20:
case BTL_SUBMENU_STRATS_STATE_UNK_30:
case BTL_SUBMENU_STRATS_STATE_ERROR_INIT:
case BTL_SUBMENU_STRATS_STATE_ERROR_SHOW:
yPos = -D_802AD608 * 13;
var_t0 = D_802AD60C;
temp_f6 = (yPos - var_t0) * 0.5;
@ -2017,7 +2014,7 @@ void func_802A5290(void* data, s32 x, s32 y) {
xPos = x + 4;
yPos = y + 18;
var_t0 = yPos + 1 + (D_802AD60A * 13);
var_t0 = yPos + 1 + (StratsMenuLines * 13);
gDPSetScissor(gMainGfxPos++, G_SC_NON_INTERLACE, xPos, yPos, x + 142, var_t0);
xPos = x + 33;
@ -2049,7 +2046,7 @@ void func_802A5290(void* data, s32 x, s32 y) {
yPos += 13;
}
yPos = (D_802AD605 - D_802AD608) * 13;
yPos = (StratsMenuPos - D_802AD608) * 13;
var_t0 = D_802AD60E;
temp_f6 = (yPos - var_t0) * 1.0;
xPos = x + 10;
@ -2082,25 +2079,25 @@ void func_802A5290(void* data, s32 x, s32 y) {
}
}
void func_802A56F8(void* data, s32 x, s32 y) {
void btl_menu_strats_show_title(void* data, s32 x, s32 y) {
draw_msg(MSG_Menus_Strategies, x + 15, y + 2, D_802AD624, MSG_PAL_33, DRAW_MSG_STYLE_MENU);
}
void func_802A5738(void* data, s32 x, s32 y) {
void btl_menu_strats_show_desc(void* data, s32 x, s32 y) {
switch (BattleSubmenuStratsState) {
case -1:
case 1:
case 10:
case 20:
case 30:
case BTL_SUBMENU_STRATS_STATE_SELECT:
case BTL_SUBMENU_STRATS_STATE_CHOOSE:
case BTL_SUBMENU_STRATS_STATE_UNK_10:
case BTL_SUBMENU_STRATS_STATE_UNK_20:
case BTL_SUBMENU_STRATS_STATE_UNK_30:
if (D_802AD60B != 0) {
draw_msg(D_802AD6C0[D_802AD605], x + 8, y, D_802AD624, D_802AD614, 0);
draw_msg(D_802AD6C0[StratsMenuPos], x + 8, y, D_802AD624, D_802AD614, 0);
}
break;
}
}
void func_802A57C8(void* data, s32 x, s32 y) {
void btl_menu_strats_show_error(void* data, s32 x, s32 y) {
s32 msgID;
x += 11;
y += 6;
@ -2119,7 +2116,7 @@ void func_802A57C8(void* data, s32 x, s32 y) {
draw_msg(msgID, x, y, 255, MSG_PAL_0F, 0);
}
s32 can_btl_state_update_switch_to_player(void) {
s32 can_switch_to_player(void) {
BattleStatus* battleStatus = &gBattleStatus;
Actor* player = battleStatus->playerActor;
@ -2168,7 +2165,7 @@ s32 can_btl_state_update_switch_to_player(void) {
extern s32 MenuIndexFromPartnerID[]; // TODO MOVE
s32 func_802A58D0(void) {
s32 can_switch_to_partner(void) {
BattleStatus* battleStatus = &gBattleStatus;
Actor* partner = battleStatus->partnerActor;
s8 partnerDebuff;
@ -2234,7 +2231,7 @@ void btl_state_update_player_menu(void) {
battleStatus->moveCategory = BTL_MENU_TYPE_INVALID;
battleStatus->selectedMoveID = 0;
battleStatus->curAttackElement = 0;
if (!can_btl_state_update_switch_to_player()) {
if (!can_switch_to_player()) {
btl_set_state(BATTLE_STATE_END_PLAYER_TURN);
return;
}
@ -2295,7 +2292,7 @@ void btl_state_update_player_menu(void) {
btl_init_menu_boots();
btl_init_menu_hammer();
if (player_team_is_ability_active(playerActor, ABILITY_BERSERKER)) {
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_BERSERKER_1;
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_BERSERKER_CHOOSE;
break;
}
@ -2431,7 +2428,7 @@ void btl_state_update_player_menu(void) {
D_802AD0A8 = 0;
D_802AD0B0 = initialPos;
D_802AD100 = 2 - initialPos;
if (func_802A58D0()) {
if (can_switch_to_partner()) {
BattleMenu_ShowSwapIcons = TRUE;
} else {
BattleMenu_ShowSwapIcons = FALSE;
@ -2451,7 +2448,7 @@ void btl_state_update_player_menu(void) {
if (D_802ACC6C != 0) {
D_802ACC6C--;
} else if (!(gBattleStatus.flags1 & BS_FLAGS1_TUTORIAL_BATTLE) && (gGameStatusPtr->pressedButtons[0] & BUTTON_Z)) {
if (func_802A58D0() && battleStatus->hustleTurns != 1) {
if (can_switch_to_partner() && battleStatus->hustleTurns != 1) {
sfx_play_sound(SOUND_PARTNER_SWAP_BATTLE_POS);
battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_MAIN] = battle_menu_submenuIDs[BattleMenu_CurPos + BattleMenu_HomePos];
btl_main_menu_destroy();
@ -3181,7 +3178,7 @@ void btl_state_update_player_menu(void) {
}
break;
case BTL_SUBSTATE_PLAYER_MENU_DIPPING_1:
if (!can_btl_state_update_switch_to_player()) {
if (!can_switch_to_player()) {
battleStatus->itemUsesLeft = 1;
btl_set_state(BATTLE_STATE_END_PLAYER_TURN);
} else {
@ -3280,7 +3277,7 @@ void btl_state_update_player_menu(void) {
case BTL_SUBSTATE_PLAYER_MENU_DIPPING_6:
destroy_popup_menu();
break;
case BTL_SUBSTATE_PLAYER_MENU_BERSERKER_1:
case BTL_SUBSTATE_PLAYER_MENU_BERSERKER_CHOOSE:
if (playerData->bootsLevel >= 0) {
battleStatus->curTargetListFlags = gMoveTable[MOVE_BERSERKER_JUMP].flags;
player_create_target_list(playerActor);
@ -3328,20 +3325,23 @@ void btl_state_update_player_menu(void) {
case BTL_SUBSTATE_PLAYER_MENU_BUILD_STRATEGIES:
entryIdx = 0;
func_80263268();
// add 'Change Member' command
if (battleStatus->changePartnerAllowed >= 0) {
D_802AD678[0] = BTL_MENU_TYPE_CHANGE_PARTNER;
D_802AD658[0] = BattleMenu_LeftJustMessages[BTL_MENU_TYPE_CHANGE_PARTNER];
D_802AD640[0] = battle_menu_PartnerHudScripts[playerData->curPartner];
D_802AD690[0] = 1;
D_802AD6C0[0] = MSG_Menus_Action_ChangePartner;
D_802AD678[entryIdx] = BTL_MENU_TYPE_CHANGE_PARTNER;
D_802AD658[entryIdx] = BattleMenu_LeftJustMessages[BTL_MENU_TYPE_CHANGE_PARTNER];
D_802AD640[entryIdx] = battle_menu_PartnerHudScripts[playerData->curPartner];
D_802AD690[entryIdx] = 1;
D_802AD6C0[entryIdx] = MSG_Menus_Action_ChangePartner;
if (battleStatus->changePartnerAllowed <= 0) {
D_802AD640[0] = battle_menu_DisabledPartnerHudScripts[playerData->curPartner];
D_802AD690[0] = 0;
D_802AD6A8[0] = 0;
D_802AD640[entryIdx] = battle_menu_DisabledPartnerHudScripts[playerData->curPartner];
D_802AD690[entryIdx] = 0;
D_802AD6A8[entryIdx] = 0;
}
entryIdx++;
}
// add 'Do Nothing' command
D_802AD640[entryIdx] = battle_menu_DoNothingHudScripts.enabled;
D_802AD678[entryIdx] = BTL_MENU_TYPE_DO_NOTHING;
D_802AD690[entryIdx] = 1;
@ -3349,6 +3349,7 @@ void btl_state_update_player_menu(void) {
D_802AD6C0[entryIdx] = MSG_Menus_Action_DoNothing;
entryIdx++;
// add 'Run Away' command
D_802AD640[entryIdx] = battle_menu_FleeHudScripts.enabled;
D_802AD678[entryIdx] = BTL_MENU_TYPE_RUN_AWAY;
D_802AD690[entryIdx] = 1;
@ -3366,12 +3367,12 @@ void btl_state_update_player_menu(void) {
}
initialPos = battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY];
D_802AD66C = entryIdx;
D_802AD670 = initialPos;
StratsMenuLastPos = initialPos;
func_802A45D8();
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_2;
break;
case BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_2:
submenuResult = func_802A4A54();
submenuResult = btl_update_strats_menu();
if (submenuResult == -1) {
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_8;
} else if (submenuResult == 0) {
@ -3385,7 +3386,7 @@ void btl_state_update_player_menu(void) {
} else {
battleStatus->curSubmenu = D_802AD678[submenuResult - 1];
battleStatus->lastPlayerMenuSelection[BTL_MENU_IDX_STRATEGY] = submenuResult - 1;
if (battleStatus->curSubmenu == 5) {
if (battleStatus->curSubmenu == 5) { // change partner
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_1;
btl_state_update_player_menu();
btl_state_update_player_menu();
@ -3397,7 +3398,7 @@ void btl_state_update_player_menu(void) {
}
break;
case BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_3:
submenuResult = func_802A4A54();
submenuResult = btl_update_strats_menu();
if ((battleStatus->curButtonsPressed & BUTTON_B) && submenuResult == 0) {
func_802A48FC();
func_802A1098();
@ -3436,7 +3437,7 @@ void btl_state_update_player_menu(void) {
}
break;
case BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_4:
func_802A4A54();
btl_update_strats_menu();
if (btl_main_menu_update() != 0) {
D_802ACC60 = 8;
D_802ACC6C = 4;
@ -3453,7 +3454,7 @@ void btl_state_update_player_menu(void) {
btl_main_menu_destroy();
break;
case BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_8:
if (func_802A4A54() != -1) {
if (btl_update_strats_menu() != -1) {
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_STRATEGIES_2;
}
break;
@ -3520,7 +3521,7 @@ void btl_state_update_player_menu(void) {
func_802A1098();
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_4;
} else {
func_802A4A54();
btl_update_strats_menu();
if (btl_main_menu_update() != 0) {
gBattleSubState = battleStatus->acceptTargetMenuSubstate;
btl_state_update_player_menu();
@ -3529,7 +3530,7 @@ void btl_state_update_player_menu(void) {
}
break;
case BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_4:
func_802A4A54();
btl_update_strats_menu();
if (btl_main_menu_update() != 0) {
gBattleSubState = BTL_SUBSTATE_PLAYER_MENU_CHANGE_MEMBER_2;
}
@ -3630,7 +3631,7 @@ void btl_state_update_partner_menu(void) {
battleStatus->moveCategory = BTL_MENU_TYPE_INVALID;
battleStatus->selectedMoveID = MOVE_NONE;
battleStatus->curAttackElement = 0;
if (!func_802A58D0()) {
if (!can_switch_to_partner()) {
btl_set_state(BATTLE_STATE_9);
} else {
btl_cam_use_preset(BTL_CAM_DEFAULT);
@ -3751,7 +3752,7 @@ void btl_state_update_partner_menu(void) {
D_802AD0A8 = 1;
D_802AD0B0 = initialPos;
D_802AD100 = 2 - initialPos;
if (can_btl_state_update_switch_to_player()) {
if (can_switch_to_player()) {
BattleMenu_ShowSwapIcons = TRUE;
} else {
BattleMenu_ShowSwapIcons = FALSE;
@ -3770,7 +3771,7 @@ void btl_state_update_partner_menu(void) {
if (D_802ACC6C != 0) {
D_802ACC6C--;
} else if (!(gBattleStatus.flags1 & BS_FLAGS1_TUTORIAL_BATTLE) && (gGameStatusPtr->pressedButtons[0] & BUTTON_Z)) {
if (can_btl_state_update_switch_to_player()) {
if (can_switch_to_player()) {
sfx_play_sound(SOUND_PARTNER_SWAP_BATTLE_POS);
battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_MAIN] = battle_menu_submenuIDs[BattleMenu_CurPos + BattleMenu_HomePos];
btl_main_menu_destroy();
@ -3786,24 +3787,24 @@ void btl_state_update_partner_menu(void) {
D_802ACC60--;
} else if (entryIdx != 0) {
set_animation(ACTOR_PARTNER, 0, BattleMenu_PartnerIdleAnims[playerData->curPartner]);
battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_MAIN] = battleStatus->unk_4A = battle_menu_submenuIDs[entryIdx - 1];
if (battleStatus->unk_4A == 7) {
battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_MAIN] = battleStatus->curPartnerSubmenu = battle_menu_submenuIDs[entryIdx - 1];
if (battleStatus->curPartnerSubmenu == 7) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_1;
btl_state_update_partner_menu();
btl_state_update_partner_menu();
} else if (battleStatus->unk_4A == 6) {
} else if (battleStatus->curPartnerSubmenu == 6) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_ABILITIES_1;
btl_state_update_partner_menu();
btl_state_update_partner_menu();
} else if (battleStatus->unk_4A == 8) {
} else if (battleStatus->curPartnerSubmenu == 8) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_FOCUS_1;
btl_state_update_partner_menu();
btl_state_update_partner_menu();
} else if (battleStatus->unk_4A == 2) {
} else if (battleStatus->curPartnerSubmenu == 2) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_ITEMS_1;
btl_state_update_partner_menu();
btl_state_update_partner_menu();
} else if (battleStatus->unk_4A == 5) {
} else if (battleStatus->curPartnerSubmenu == 5) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_UNUSED_CHANGE_PARTNER_1;
btl_state_update_partner_menu();
btl_state_update_partner_menu();
@ -3846,7 +3847,7 @@ void btl_state_update_partner_menu(void) {
btl_main_menu_destroy();
break;
case BTL_SUBSTATE_PARTNER_MENU_MAIN_MENU_7:
if (can_btl_state_update_switch_to_player() == 0) {
if (can_switch_to_player() == 0) {
btl_show_variable_battle_message(BTL_MSG_CANT_MOVE, 60, 0);
} else {
btl_show_variable_battle_message(BTL_MSG_CANT_SWITCH, 60, 0);
@ -4220,6 +4221,8 @@ void btl_state_update_partner_menu(void) {
case BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_1:
popupIndex = 0;
func_80263268();
// add 'Change Member' command
if (battleStatus->changePartnerAllowed >= 0) {
D_802AD678[popupIndex] = BTL_MENU_TYPE_CHANGE_PARTNER;
D_802AD658[popupIndex] = BattleMenu_LeftJustMessages[BTL_MENU_TYPE_CHANGE_PARTNER];
@ -4233,6 +4236,8 @@ void btl_state_update_partner_menu(void) {
}
popupIndex++;
}
// add 'Do Nothing' command
D_802AD640[popupIndex] = battle_menu_DoNothingHudScripts.enabled;
D_802AD678[popupIndex] = BTL_MENU_TYPE_DO_NOTHING;
D_802AD690[popupIndex] = 1;
@ -4245,14 +4250,14 @@ void btl_state_update_partner_menu(void) {
}
D_802AD66C = popupIndex;
initialPos = battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STRATEGY];
D_802AD670 = initialPos;
StratsMenuLastPos = initialPos;
func_802A45D8();
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_2;
break;
case BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_2:
entryIdx = func_802A4A54();
if (entryIdx != 0) {
if (entryIdx == 255) {
entryIdx = btl_update_strats_menu();
if (entryIdx == 0) {
} else if (entryIdx == 255) {
func_802A1050();
D_802ACC60 = 8;
D_802ACC6C = 4;
@ -4260,9 +4265,9 @@ void btl_state_update_partner_menu(void) {
btl_state_update_partner_menu();
btl_state_update_partner_menu();
} else {
battleStatus->unk_4A = D_802AD678[entryIdx - 1];
battleStatus->curPartnerSubmenu = D_802AD678[entryIdx - 1];
battleStatus->lastPartnerMenuSelection[BTL_MENU_IDX_STRATEGY] = entryIdx - 1;
if (battleStatus->unk_4A == 5) {
if (battleStatus->curPartnerSubmenu == 5) { // change partner
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_1;
btl_state_update_partner_menu();
btl_state_update_partner_menu();
@ -4272,10 +4277,9 @@ void btl_state_update_partner_menu(void) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_3;
}
}
}
break;
case BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_3:
entryIdx = func_802A4A54();
entryIdx = btl_update_strats_menu();
if ((battleStatus->curButtonsPressed & BUTTON_B) && entryIdx == 0) {
func_802A48FC();
func_802A1098();
@ -4283,7 +4287,7 @@ void btl_state_update_partner_menu(void) {
} else if (btl_main_menu_update() != 0) {
battleStatus->cancelTargetMenuSubstate = BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_5;
battleStatus->acceptTargetMenuSubstate = BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_6;
entryIdx = battleStatus->unk_4A;
entryIdx = battleStatus->curPartnerSubmenu;
switch (entryIdx) {
case 9:
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_6;
@ -4306,7 +4310,7 @@ void btl_state_update_partner_menu(void) {
}
break;
case BTL_SUBSTATE_PARTNER_MENU_STRATEGIES_4:
func_802A4A54();
btl_update_strats_menu();
if (btl_main_menu_update() != 0) {
D_802ACC60 = 8;
D_802ACC6C = 4;
@ -4385,7 +4389,7 @@ void btl_state_update_partner_menu(void) {
func_802A1098();
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_4;
} else {
func_802A4A54();
btl_update_strats_menu();
if (btl_main_menu_update() != 0) {
gBattleSubState = battleStatus->acceptTargetMenuSubstate;
btl_state_update_partner_menu();
@ -4394,7 +4398,7 @@ void btl_state_update_partner_menu(void) {
}
break;
case BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_4:
func_802A4A54();
btl_update_strats_menu();
if (btl_main_menu_update() != 0) {
gBattleSubState = BTL_SUBSTATE_PARTNER_MENU_CHANGE_PARTNER_2;
}

View File

@ -45,8 +45,8 @@ extern Gfx D_8014BF40[];
extern Gfx D_8014BF68[];
AnimScript gAnimScriptDefault = {
AS_WAIT, 60,
AS_END,
as_Wait(60)
as_End
};
void appendGfx_animator_node(ModelAnimator*, AnimatorNode*, Matrix4f);

View File

@ -271,7 +271,7 @@ ApiStatus GetIndexFromPos(Evt* script, s32 isInitialCall) {
ApiStatus GetIndexFromHome(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 actorID = evt_get_variable(script, *args++);
s32 a1 = *args++;
s32 outVar = *args++;
Actor* actor;
if (actorID == ACTOR_SELF) {
@ -279,7 +279,7 @@ ApiStatus GetIndexFromHome(Evt* script, s32 isInitialCall) {
}
actor = get_actor(actorID);
evt_set_variable(script, a1, get_nearest_home_index(actor->homePos.x, actor->homePos.y, actor->homePos.z));
evt_set_variable(script, outVar, get_nearest_home_index(actor->homePos.x, actor->homePos.y, actor->homePos.z));
return ApiStatus_DONE2;
}

View File

@ -151,9 +151,9 @@
#define ACTOR_LEVEL_KAMMY_KOOPA 99
#define ACTOR_LEVEL_INTRO_BOWSER 0
#define ACTOR_LEVEL_BOWSER_PHASE_1 100
#define ACTOR_LEVEL_BOWSER_PHASE_2 0
#define ACTOR_LEVEL_BOWSER_PHASE_3 0
#define ACTOR_LEVEL_HALLWAY_BOWSER 100
#define ACTOR_LEVEL_FINAL_BOWSER_1 0
#define ACTOR_LEVEL_FINAL_BOWSER_2 0
#define ACTOR_LEVEL_JR_TROOPA_1 41
#define ACTOR_LEVEL_JR_TROOPA_2 44

View File

@ -215,7 +215,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)

View File

@ -245,7 +245,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_EXEC_WAIT(N(EVS_SelectAnimation))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TubbasHeart_Anim03)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP

View File

@ -262,7 +262,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleTubba_Anim14)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)

View File

@ -775,7 +775,7 @@ EvtScript N(EVS_HuffNPuff_Death) = {
EVT_USE_ARRAY(N(RuffPuffDataBuffer))
EVT_LABEL(0)
EVT_CALL(GetBattleFlags, LVar0)
EVT_IF_FLAG(LVar0, BS_FLAGS1_100)
EVT_IF_FLAG(LVar0, BS_FLAGS1_EXECUTING_MOVE)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
@ -857,7 +857,7 @@ EvtScript N(EVS_HuffNPuff_BurnDeath) = {
EVT_USE_ARRAY(N(RuffPuffDataBuffer))
EVT_LABEL(0)
EVT_CALL(GetBattleFlags, LVar0)
EVT_IF_FLAG(LVar0, BS_FLAGS1_100)
EVT_IF_FLAG(LVar0, BS_FLAGS1_EXECUTING_MOVE)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF

View File

@ -181,7 +181,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -478,7 +478,7 @@ EvtScript N(EVS_RemoveClone) = {
EVT_IF_FLAG(LVarA, DAMAGE_TYPE_MULTIPLE_POPUPS)
EVT_LABEL(0)
EVT_CALL(GetBattleFlags, LVarA)
EVT_IF_FLAG(LVarA, BS_FLAGS1_100)
EVT_IF_FLAG(LVarA, BS_FLAGS1_EXECUTING_MOVE)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF

View File

@ -370,7 +370,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Tutankoopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Tutankoopa_Run)

View File

@ -9,29 +9,35 @@ extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Floor_HandleEvent);
extern EvtScript N(EVS_Ceiling_HandleEvent);
extern EvtScript N(EVS_HandlePhase);
extern EvtScript N(8021A2E8);
extern EvtScript N(EVS_LeaveHome);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
PRT_2 = 2,
PRT_OFFSET = 2,
};
enum N(ActorVars) {
AVAR_NextMove = 0,
AVAL_Move_0 = 0,
AVAL_Move_1 = 1,
AVAL_Move_2 = 2,
AVAL_Move_3 = 3,
AVAL_Move_4 = 4,
AVAR_Unk_1 = 1,
AVAR_Unk_2 = 2,
AVAR_CurrentHome = 0,
AVAL_Home_Crate = 0,
AVAL_Home_Ceiling1 = 1,
AVAL_Home_Ceiling2 = 2,
AVAL_Home_Ground = 3,
AVAL_Home_Ceiling3 = 4,
AVAR_CommandLossState = 1,
AVAL_LossState_Idle = 0,
AVAL_LossState_KnockAway = 1,
AVAL_LossState_ShowMessage = 2,
AVAL_LossState_Done = 3,
AVAR_Taunted = 2,
};
enum N(ActorParams) {
DMG_UNK = 0,
DMG_LEAP = 3,
DMG_DISABLE = 3,
HEAL_AMT = 4,
};
s32 N(IdleAnimations_802189B0)[] = {
s32 N(DefaultAnims)[] = {
STATUS_KEY_NORMAL, ANIM_Fuzzipede_Anim04,
STATUS_KEY_STONE, ANIM_Fuzzipede_Anim00,
STATUS_KEY_SLEEP, ANIM_Fuzzipede_Anim29,
@ -44,7 +50,7 @@ s32 N(IdleAnimations_802189B0)[] = {
STATUS_END,
};
s32 N(IdleAnimations_802189FC)[] = {
s32 N(HangingAnims)[] = {
STATUS_KEY_NORMAL, ANIM_Fuzzipede_Anim06,
STATUS_KEY_STONE, ANIM_Fuzzipede_Anim02,
STATUS_KEY_SLEEP, ANIM_Fuzzipede_Anim2A,
@ -94,7 +100,7 @@ ActorPartBlueprint N(ActorParts)[] = {
.posOffset = { 0, 0, 0 },
.targetOffset = { 2, 24 },
.opacity = 255,
.idleAnimations = N(IdleAnimations_802189B0),
.idleAnimations = N(DefaultAnims),
.defenseTable = N(DefenseTable),
.eventFlags = ACTOR_EVENT_FLAGS_NONE,
.elementImmunityFlags = 0,
@ -102,7 +108,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_MULTI_TARGET | ACTOR_PART_FLAG_80000000,
.index = PRT_2,
.index = PRT_OFFSET,
.posOffset = { 0, 40, 0 },
.targetOffset = { 2, -16 },
.opacity = 255,
@ -144,8 +150,8 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Floor_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_2, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Crate)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Taunted, FALSE)
EVT_CALL(SetActorPos, ACTOR_SELF, 125, 33, -15)
EVT_CALL(SetHomePos, ACTOR_SELF, 125, 33, -15)
EVT_CALL(HPBarToHome, ACTOR_SELF)
@ -155,9 +161,9 @@ EvtScript N(EVS_Init) = {
};
EvtScript N(EVS_HandlePhase) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Unk_2, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_2, 1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Taunted, LVar0)
EVT_IF_FALSE(LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Taunted, TRUE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_08)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(SetBattleCamZoom, 200)
@ -178,7 +184,7 @@ EvtScript N(EVS_Idle) = {
EVT_END
};
EvtScript N(80218D68) = {
EvtScript N(EVS_HopOntoCrate) = {
EVT_CALL(SetHomePos, ACTOR_SELF, 125, 33, -15)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(7.0))
@ -194,7 +200,7 @@ EvtScript N(80218D68) = {
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim04)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(IdleAnimations_802189B0)))
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefaultAnims)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Floor_HandleEvent)))
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING | ACTOR_FLAG_UPSIDE_DOWN, FALSE)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 2, 24)
@ -202,14 +208,14 @@ EvtScript N(80218D68) = {
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_MAIN, ACTOR_PART_FLAG_MULTI_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_MAIN, ACTOR_PART_FLAG_NO_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_MULTI_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_NO_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_OFFSET, ACTOR_PART_FLAG_MULTI_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_OFFSET, ACTOR_PART_FLAG_NO_TARGET, FALSE)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_RETURN
EVT_END
};
EvtScript N(80218FC8) = {
EvtScript N(EVS_HopToGround) = {
EVT_CALL(SetHomePos, ACTOR_SELF, 60, 0, 15)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(7.0))
@ -219,7 +225,7 @@ EvtScript N(80218FC8) = {
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_EXEC_WAIT(EVS_Enemy_HopToPos)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(IdleAnimations_802189B0)))
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefaultAnims)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Floor_HandleEvent)))
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING | ACTOR_FLAG_UPSIDE_DOWN, FALSE)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 2, 24)
@ -227,8 +233,8 @@ EvtScript N(80218FC8) = {
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_MAIN, ACTOR_PART_FLAG_MULTI_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_MAIN, ACTOR_PART_FLAG_NO_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_MULTI_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_NO_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_OFFSET, ACTOR_PART_FLAG_MULTI_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_OFFSET, ACTOR_PART_FLAG_NO_TARGET, TRUE)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_RETURN
EVT_END
@ -270,13 +276,14 @@ EvtScript N(EVS_ClimbOntoCeiling) = {
EVT_END_LOOP
EVT_END_THREAD
EVT_SET(LVar0, 0)
// flip over
EVT_LOOP(10)
EVT_ADD(LVar0, 18)
EVT_CALL(SetActorRotation, ACTOR_SELF, LVar0, 0, 0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(IdleAnimations_802189FC)))
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(HangingAnims)))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim06)
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Ceiling_HandleEvent)))
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_UPSIDE_DOWN, TRUE)
@ -285,39 +292,41 @@ EvtScript N(EVS_ClimbOntoCeiling) = {
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, -25, 10, -30)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_MAIN, ACTOR_PART_FLAG_MULTI_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_MAIN, ACTOR_PART_FLAG_NO_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_MULTI_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_NO_TARGET, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_OFFSET, ACTOR_PART_FLAG_MULTI_TARGET, FALSE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_OFFSET, ACTOR_PART_FLAG_NO_TARGET, TRUE)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_RETURN
EVT_END
};
EvtScript N(80219668) = {
EvtScript N(EVS_ReturnHome) = {
EVT_CALL(HideHealthBar, ACTOR_SELF)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
// advance to next home position
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CurrentHome, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(AVAL_Move_0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_1)
EVT_CASE_EQ(AVAL_Move_1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_2)
EVT_CASE_EQ(AVAL_Move_2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_3)
EVT_CASE_EQ(AVAL_Move_3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_4)
EVT_CASE_EQ(AVAL_Move_4)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_0)
EVT_CASE_EQ(AVAL_Home_Crate)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Ceiling1)
EVT_CASE_EQ(AVAL_Home_Ceiling1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Ceiling2)
EVT_CASE_EQ(AVAL_Home_Ceiling2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Ground)
EVT_CASE_EQ(AVAL_Home_Ground)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Ceiling3)
EVT_CASE_EQ(AVAL_Home_Ceiling3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Crate)
EVT_END_SWITCH
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
// move to the current home
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CurrentHome, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(AVAL_Move_0)
EVT_EXEC_WAIT(N(80218D68))
EVT_CASE_OR_EQ(AVAL_Move_1)
EVT_CASE_OR_EQ(AVAL_Move_2)
EVT_CASE_OR_EQ(AVAL_Move_4)
EVT_CASE_EQ(AVAL_Home_Crate)
EVT_EXEC_WAIT(N(EVS_HopOntoCrate))
EVT_CASE_OR_EQ(AVAL_Home_Ceiling1)
EVT_CASE_OR_EQ(AVAL_Home_Ceiling2)
EVT_CASE_OR_EQ(AVAL_Home_Ceiling3)
EVT_EXEC_WAIT(N(EVS_ClimbOntoCeiling))
EVT_END_CASE_GROUP
EVT_CASE_EQ(AVAL_Move_3)
EVT_EXEC_WAIT(N(80218FC8))
EVT_CASE_EQ(AVAL_Home_Ground)
EVT_EXEC_WAIT(N(EVS_HopToGround))
EVT_END_SWITCH
EVT_RETURN
EVT_END
@ -369,8 +378,8 @@ EvtScript N(EVS_Floor_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzipede_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(N(80219668))
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_CALL(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
@ -417,14 +426,14 @@ EvtScript N(EVS_Floor_HandleEvent) = {
EVT_END
};
EvtScript N(80219D68) = {
EvtScript N(EVS_CeilingHit) = {
EVT_CALL(GetLastDamage, ACTOR_SELF, LVar0)
EVT_IF_LE(LVar0, 0)
EVT_RETURN
EVT_END_IF
EVT_CALL(HideHealthBar, ACTOR_SELF)
EVT_EXEC_WAIT(N(8021A2E8))
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(IdleAnimations_802189B0)))
EVT_EXEC_WAIT(N(EVS_LeaveHome))
EVT_CALL(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefaultAnims)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Floor_HandleEvent)))
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING | ACTOR_FLAG_UPSIDE_DOWN, FALSE)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 2, 24)
@ -432,7 +441,7 @@ EvtScript N(80219D68) = {
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
EVT_IF_FLAG(LVarA, STATUS_FLAGS_IMMOBILIZED)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_NextMove, AVAL_Move_3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CurrentHome, AVAL_Home_Ground)
EVT_CALL(HPBarToCurrent, ACTOR_SELF)
EVT_ELSE
EVT_EXEC_WAIT(N(EVS_ClimbOntoCeiling))
@ -456,13 +465,13 @@ EvtScript N(EVS_Ceiling_HandleEvent) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzipede_Anim1C)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_EXEC_WAIT(N(80219D68))
EVT_EXEC_WAIT(N(EVS_CeilingHit))
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzipede_Anim20)
EVT_SET_CONST(LVar2, ANIM_Fuzzipede_Anim21)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_EXEC_WAIT(N(80219D68))
EVT_EXEC_WAIT(N(EVS_CeilingHit))
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzipede_Anim20)
@ -480,8 +489,8 @@ EvtScript N(EVS_Ceiling_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzipede_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(N(80219668))
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_CALL(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
@ -516,21 +525,21 @@ EvtScript N(EVS_Ceiling_HandleEvent) = {
EVT_END
};
EvtScript N(8021A2E8) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
EvtScript N(EVS_LeaveHome) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CurrentHome, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(AVAL_Move_0)
EVT_CASE_EQ(AVAL_Home_Crate)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 60)
EVT_SET(LVar1, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.2))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
EVT_CASE_EQ(AVAL_Move_3)
EVT_CASE_EQ(AVAL_Home_Ground)
// do nothing
EVT_CASE_OR_EQ(AVAL_Move_1)
EVT_CASE_OR_EQ(AVAL_Move_2)
EVT_CASE_OR_EQ(AVAL_Move_4)
EVT_CASE_OR_EQ(AVAL_Home_Ceiling1)
EVT_CASE_OR_EQ(AVAL_Home_Ceiling2)
EVT_CASE_OR_EQ(AVAL_Home_Ceiling3)
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING | ACTOR_FLAG_UPSIDE_DOWN, FALSE)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim04)
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 180)
@ -575,14 +584,14 @@ EvtScript N(8021A2E8) = {
EVT_END
};
EvtScript N(8021A6D8) = {
EvtScript N(EVS_Attack_Leap) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_EXEC_WAIT(N(8021A2E8))
EVT_EXEC_WAIT(N(EVS_LeaveHome))
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim0A)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
@ -633,7 +642,7 @@ EvtScript N(8021A6D8) = {
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
EVT_EXEC_WAIT(N(80219668))
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
@ -658,7 +667,7 @@ EvtScript N(8021A6D8) = {
EVT_WAIT(1)
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, DMG_LEAP, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.1), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT(1)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
@ -692,7 +701,7 @@ EvtScript N(8021A6D8) = {
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
EVT_WAIT(8)
EVT_EXEC_WAIT(N(80219668))
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
@ -702,19 +711,17 @@ EvtScript N(8021A6D8) = {
};
#include "common/ItemEntityJumpToPos.inc.c"
#include "common/DisableRandomAbility.inc.c"
#include "common/StartRumbleWithParams.inc.c"
#include "common/battle/CheckPlayerCanLoseCommand.inc.c"
EvtScript N(8021B008) = {
EvtScript N(EVS_ManageCommandLoss) = {
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Unk_1, LVarA)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVarA)
EVT_SWITCH(LVarA)
EVT_CASE_EQ(0)
EVT_CASE_EQ(1)
EVT_CASE_EQ(AVAL_LossState_Idle)
// do nothing
EVT_CASE_EQ(AVAL_LossState_KnockAway)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar1, LVar2, LVar3)
EVT_SET(LVar2, 0)
EVT_SUB(LVar3, 1)
@ -726,13 +733,13 @@ EvtScript N(8021B008) = {
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 10, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 10)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 5, EVT_FLOAT(1.0))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_1, 0)
EVT_CASE_EQ(2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CASE_EQ(AVAL_LossState_ShowMessage)
EVT_CALL(ShowMessageBox, LVar5, 60)
EVT_SUB(LVar1, 150)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 30, EVT_FLOAT(1.0))
EVT_CALL(RemoveItemEntity, LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_1, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Done)
EVT_RETURN
EVT_END_SWITCH
EVT_WAIT(1)
@ -741,14 +748,14 @@ EvtScript N(8021B008) = {
EVT_END
};
EvtScript N(8021B22C) = {
EvtScript N(EVS_Attack_DisableTackle) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(func_8024ECF8, BTL_CAM_MODEY_MINUS_1, BTL_CAM_MODEX_1, FALSE)
EVT_EXEC_WAIT(N(8021A2E8))
EVT_EXEC_WAIT(N(EVS_LeaveHome))
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim0A)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
@ -810,7 +817,7 @@ EvtScript N(8021B22C) = {
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
EVT_EXEC_WAIT(N(80219668))
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
@ -830,7 +837,7 @@ EvtScript N(8021B22C) = {
EVT_WAIT(1)
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, 0, DMG_DISABLE, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_THREAD
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.1), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT(1)
@ -857,8 +864,8 @@ EvtScript N(8021B22C) = {
EVT_SET(LFlag0, FALSE)
EVT_END_IF
EVT_IF_EQ(LFlag0, TRUE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_1, 1)
EVT_EXEC(N(8021B008))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_KnockAway)
EVT_EXEC(N(EVS_ManageCommandLoss))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim04)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 40)
@ -878,8 +885,8 @@ EvtScript N(8021B22C) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Fuzzipede_Anim04)
EVT_WAIT(8)
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Unk_1, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVar0)
EVT_IF_NE(LVar0, AVAL_LossState_Idle)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
@ -890,7 +897,7 @@ EvtScript N(8021B22C) = {
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
EVT_END_LOOP
EVT_WAIT(10)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_1, 2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_ShowMessage)
EVT_PLAY_EFFECT(EFFECT_FIREWORK, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 0, 0)
EVT_CALL(N(StartRumbleWithParams), 200, 10)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20DC)
@ -919,7 +926,7 @@ EvtScript N(8021B22C) = {
EVT_WAIT(10)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_EXEC_WAIT(N(80219668))
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
@ -928,7 +935,7 @@ EvtScript N(8021B22C) = {
EVT_END
};
EvtScript N(8021C004) = {
EvtScript N(EVS_Recover) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
@ -947,7 +954,7 @@ EvtScript N(8021C004) = {
EVT_END_THREAD
EVT_THREAD
EVT_CALL(FreezeBattleState, TRUE)
EVT_CALL(HealActor, ACTOR_SELF, 4, FALSE)
EVT_CALL(HealActor, ACTOR_SELF, HEAL_AMT, FALSE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_CALL(WaitForBuffDone)
@ -959,10 +966,11 @@ EvtScript N(8021C004) = {
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_NextMove, LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CurrentHome, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(AVAL_Move_0)
EVT_CASE_OR_EQ(AVAL_Move_3)
EVT_CASE_OR_EQ(AVAL_Home_Crate)
EVT_CASE_OR_EQ(AVAL_Home_Ground)
// 50% chance to heal when HP < 35%
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
EVT_CALL(GetEnemyMaxHP, ACTOR_SELF, LVar1)
EVT_MUL(LVar0, 100)
@ -970,21 +978,22 @@ EvtScript N(EVS_TakeTurn) = {
EVT_IF_LE(LVar0, 35)
EVT_CALL(RandInt, 1000, LVar0)
EVT_IF_LT(LVar0, 500)
EVT_EXEC_WAIT(N(8021C004))
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_CASE_GROUP
EVT_END_SWITCH
// 50% chance to try disabling a command, if possible
EVT_CALL(RandInt, 1000, LVar0)
EVT_IF_LT(LVar0, 500)
EVT_EXEC_WAIT(N(8021A6D8))
EVT_EXEC_WAIT(N(EVS_Attack_Leap))
EVT_ELSE
EVT_CALL(N(CheckPlayerCanLoseCommand), LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_EXEC_WAIT(N(8021B22C))
EVT_EXEC_WAIT(N(EVS_Attack_DisableTackle))
EVT_ELSE
EVT_EXEC_WAIT(N(8021A6D8))
EVT_EXEC_WAIT(N(EVS_Attack_Leap))
EVT_END_IF
EVT_END_IF
EVT_RETURN

View File

@ -223,7 +223,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GoombaBros_Blue_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GoombaBros_Blue_Dizzy)

View File

@ -214,7 +214,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GoombaBros_Blue_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GoombaBros_Blue_Dizzy)

View File

@ -221,7 +221,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GoombaBros_Red_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GoombaBros_Red_Dizzy)

View File

@ -214,7 +214,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GoombaBros_Red_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GoombaBros_Red_Dizzy)

View File

@ -303,7 +303,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_JrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_JrTroopa_Run)
@ -315,7 +315,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_JrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetHomePos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -488,7 +488,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET(LVar1, FORM_ANIM_HURT)
EVT_EXEC_WAIT(N(EVS_GetFormAnims))
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_CALL(SetPartRotation, ACTOR_SELF, PRT_FLYING, 0, 0, 0)
@ -498,7 +498,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET(LVar1, FORM_ANIM_HURT)
EVT_EXEC_WAIT(N(EVS_GetFormAnims))
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_JrTroopa_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_ZERO_DAMAGE)

View File

@ -320,7 +320,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_BASE)
EVT_SET_CONST(LVar1, ANIM_MageJrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
EVT_SET_CONST(LVar0, PRT_BASE)
@ -334,7 +334,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_BASE)
EVT_SET_CONST(LVar1, ANIM_MageJrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_BASE)
EVT_SET_CONST(LVar1, ANIM_MageJrTroopa_Still)
EVT_EXEC_WAIT(N(EVS_JrTroopa_Death))

View File

@ -307,7 +307,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_GROUND)
EVT_SET_CONST(LVar1, ANIM_ParaJrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_JrTroopa_FlyHome))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ParaJrTroopa_Idle)
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
@ -316,7 +316,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_GROUND)
EVT_SET_CONST(LVar1, ANIM_ParaJrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_GROUND)
EVT_SET_CONST(LVar1, ANIM_ParaJrTroopa_Idle)
EVT_EXEC_WAIT(N(EVS_JrTroopa_Death))

View File

@ -317,7 +317,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_GROUND)
EVT_SET_CONST(LVar1, ANIM_SpikedParaJrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_JrTroopa_FlyHome))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_SpikedParaJrTroopa_Idle)
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
@ -326,7 +326,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_GROUND)
EVT_SET_CONST(LVar1, ANIM_SpikedParaJrTroopa_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_GROUND)
EVT_SET_CONST(LVar1, ANIM_SpikedParaJrTroopa_Still)
EVT_EXEC_WAIT(N(EVS_JrTroopa_Death))

View File

@ -313,7 +313,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_FLYING)
EVT_SET_CONST(LVar1, ANIM_Paragoomba_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_Paragoomba_Dizzy)
EVT_EXEC_WAIT(N(EVS_Paragoomba_GoHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)

View File

@ -215,7 +215,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_SpikedGoomba_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_SpikedGoomba_Dizzy)

View File

@ -1,63 +1,66 @@
#include "../area.h"
#include "sprite/npc/BattleBowser.h"
#define NAMESPACE A(bowser_phase_2)
#define NAMESPACE A(final_bowser_1)
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_TakeTurn_Inner);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(attackFlameBreath);
extern EvtScript N(attackLightningBlast);
extern EvtScript N(attackShockwaveDrain);
extern EvtScript N(attackClawSwipe);
extern EvtScript N(attackHeavyJump);
extern EvtScript N(normalAttack);
extern EvtScript N(attack);
extern EvtScript N(useStarRod);
extern EvtScript N(doTakeTurn);
extern EvtScript N(doOnHit);
extern EvtScript N(onHit);
extern EvtScript N(onImmune);
extern EvtScript N(EVS_HandlePhase);
extern EvtScript N(EVS_AnimateImgFX);
extern EvtScript N(EVS_Attack_LightningBlast);
extern EvtScript N(EVS_Attack_FireBreath);
extern EvtScript N(EVS_Attack_ClawSwipe);
extern EvtScript N(EVS_Attack_BodySlam);
extern EvtScript N(EVS_UseAttack);
extern EvtScript N(EVS_UseDrainingShockwave);
extern EvtScript N(EVS_UseAttackOrShockwave);
extern EvtScript N(EVS_StarRodCast);
extern EvtScript N(EVS_ReturnHome);
extern EvtScript N(jumpHome);
extern EvtScript N(onBurnHit);
extern EvtScript N(makeWalkingSounds);
extern EvtScript N(unkDecorationScript);
extern EvtScript N(EVS_Hit);
extern EvtScript N(EVS_Hit_Inner);
extern EvtScript N(EVS_Death);
extern EvtScript N(EVS_NoDamageHit);
extern EvtScript N(EVS_BurnHit);
extern EvtScript N(EVS_ShockReaction);
extern EvtScript N(EVS_PlayFootstepSounds);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
AVAR_Unk_0 = 0,
AVAR_Unk_1 = 1,
AVAR_Unk_2 = 2,
AVAR_Unk_3 = 3,
AVAR_Unk_4 = 4,
AVAR_Unk_5 = 5,
AVAR_Unk_6 = 6,
AVAR_Unk_7 = 7,
AVAR_Unk_8 = 8,
AVAR_Unk_9 = 9,
AVAR_Unk_A = 10,
AVAR_Unk_E = 14,
AVAR_TurnCount = 0,
AVAR_TurnsSinceShockwave = 2,
AVAR_TurnsSinceStarBeam = 3,
AVAR_TurnsSinceClawSwipe = 4,
AVAR_TurnsSinceBodySlam = 5,
AVAR_TurnsSinceRecover = 6,
AVAR_RecoversLeft = 7,
AVAR_CommandLossState = 9,
AVAL_LossState_Idle = 0,
AVAL_LossState_KnockAway = 1,
AVAL_LossState_ShowMessage = 2,
AVAL_LossState_Done = 3,
AVAR_CommandLossItemIdx = 10,
AVAR_Unused = 14,
};
enum N(ActorParams) {
DMG_UNK = 0,
};
enum N(OldActorVars) {
N(VAR_TURN_COUNTER) = 0,
N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN) = 2,
N(VAR_TURNS_SINCE_LAST_STAR_BEAM) = 3,
N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE) = 4,
N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP) = 5,
N(VAR_TURNS_SINCE_LAST_RECOVER) = 6,
N(VAR_RECOVERS_LEFT) = 7,
N(VAR_COMMAND_LOSS_STATE) = 9,
N(VAR_LOST_ABILITY_ITEM) = 10,
DMG_CLAW_SWIPE = 8,
DMG_BOOSTED_CLAW_SWIPE = 16,
DMG_BODY_SLAM = 8,
DMG_BOOSTED_BODY_SLAM = 16,
DMG_FIRE_BREATH = 10,
DMG_BOOSTED_FIRE_BREATH = 20,
DMG_SHOCKWAVE = 6,
DMG_BOOSTED_SHOCKWAVE = 6,
DMG_SHOCKWAVE_P = 3,
DMG_BOOSTED_SHOCKWAVE_P = 3,
DMG_LIGHTNING_BLAST = 10,
DMG_BOOSTED_LIGHTNING_BLAST = 20,
};
s32 N(DefaultAnims)[] = {
@ -74,12 +77,12 @@ s32 N(DefaultAnims)[] = {
STATUS_END,
};
s32 N(DefenseTable)[] = {
s32 N(NormalDefense)[] = {
ELEMENT_NORMAL, 2,
ELEMENT_END,
};
s32 N(DefenseTable_boosted)[] = {
s32 N(BoostedDefense)[] = {
ELEMENT_NORMAL, 99,
ELEMENT_END,
};
@ -109,7 +112,7 @@ s32 N(StatusTable)[] = {
STATUS_END,
};
s32 N(StatusTable_boosted)[] = {
s32 N(BoostedStatusTable)[] = {
STATUS_KEY_NORMAL, 0,
STATUS_KEY_DEFAULT, 0,
STATUS_KEY_SLEEP, 0,
@ -142,7 +145,7 @@ ActorPartBlueprint N(ActorParts)[] = {
.targetOffset = { -27, 108 },
.opacity = 255,
.idleAnimations = N(DefaultAnims),
.defenseTable = N(DefenseTable),
.defenseTable = N(NormalDefense),
.eventFlags = 0,
.elementImmunityFlags = 0,
.projectileTargetOffset = { 0, -8 },
@ -151,8 +154,8 @@ ActorPartBlueprint N(ActorParts)[] = {
ActorBlueprint NAMESPACE = {
.flags = 0,
.type = ACTOR_TYPE_BOWSER_PHASE_2,
.level = ACTOR_LEVEL_BOWSER_PHASE_2,
.type = ACTOR_TYPE_FINAL_BOWSER_1,
.level = ACTOR_LEVEL_FINAL_BOWSER_1,
.maxHP = 99,
.partCount = ARRAY_COUNT(N(ActorParts)),
.partsData = N(ActorParts),
@ -174,7 +177,7 @@ ActorBlueprint NAMESPACE = {
#define BOWSER_LARGE
#include "common/StartRumbleWithParams.inc.c"
#include "common/UnkBowserFunc1.inc.c"
#include "common/UpdateEnchantedBowserColors.inc.c"
#include "common/FadeBackgroundDarken.inc.c"
#include "common/FadeBackgroundLighten.inc.c"
#include "common/RemoveChillOut.inc.c"
@ -186,19 +189,19 @@ ActorBlueprint NAMESPACE = {
#include "common/GetItemEntityPosition.inc.c"
EvtScript N(EVS_Init) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_E, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_RecoversLeft, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unused, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, 0)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.5), EVT_FLOAT(1.5), EVT_FLOAT(1.0))
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 150, 0, 0, 0)
EVT_EXEC(N(unkDecorationScript))
EVT_EXEC(N(EVS_AnimateImgFX))
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 0, 150, 150, 0, 0)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_A)
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
@ -225,7 +228,7 @@ EvtScript N(EVS_Idle) = {
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 0, 60, 60, 255, 0)
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 60, 0, 0, 0)
EVT_END_IF
EVT_EXEC_WAIT(N(makeWalkingSounds))
EVT_EXEC_WAIT(N(EVS_PlayFootstepSounds))
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
@ -241,27 +244,27 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LVar0, 1)
EVT_SET(LVar1, ANIM_BattleBowser_BurnHurt)
EVT_SET(LVar2, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onBurnHit))
EVT_EXEC_WAIT(N(EVS_BurnHit))
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET(LVar0, 1)
EVT_SET(LVar1, ANIM_BattleBowser_BurnHurt)
EVT_SET(LVar2, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onBurnHit))
EVT_EXEC_WAIT(N(EVS_BurnHit))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -269,7 +272,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(jumpHome))
EVT_EXEC_WAIT(N(EVS_ShockReaction))
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
EVT_SET(LVar1, ANIM_BattleBowser_Walk)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
@ -279,7 +282,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(jumpHome))
EVT_EXEC_WAIT(N(EVS_ShockReaction))
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
EVT_SET(LVar1, ANIM_BattleBowser_Walk)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
@ -294,7 +297,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_SET(LVar1, ANIM_BattleBowser_Mock)
EVT_EXEC_WAIT(N(onImmune))
EVT_EXEC_WAIT(N(EVS_NoDamageHit))
EVT_END_SWITCH
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
@ -304,7 +307,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_EQ(EVENT_SPIKE_TAUNT)
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
@ -382,21 +385,21 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END
};
EvtScript N(onHit) = {
EVT_EXEC_WAIT(N(doOnHit))
EvtScript N(EVS_Hit) = {
EVT_EXEC_WAIT(N(EVS_Hit_Inner))
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(doOnHit) = {
EvtScript N(EVS_Hit_Inner) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EvtScript N(EVS_Death) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -405,7 +408,7 @@ EvtScript N(onDeath) = {
EVT_END
};
EvtScript N(onImmune) = {
EvtScript N(EVS_NoDamageHit) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_RETURN
@ -414,15 +417,15 @@ EvtScript N(onImmune) = {
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_EXEC_WAIT(N(doTakeTurn))
EVT_EXEC_WAIT(N(EVS_TakeTurn_Inner))
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(powerUp) = {
EvtScript N(EVS_Move_UseStarRod) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Brandish)
EVT_EXEC_WAIT(N(useStarRod))
EVT_EXEC_WAIT(N(EVS_StarRodCast))
EVT_RETURN
EVT_END
};
@ -450,13 +453,13 @@ EvtScript N(EVS_ReturnHome) = {
EVT_END
};
EvtScript N(unkDecorationScript) = {
EVT_CALL(N(UnkBowserFunc1))
EvtScript N(EVS_AnimateImgFX) = {
EVT_CALL(N(UpdateEnchantedBowserColors))
EVT_RETURN
EVT_END
};
EvtScript N(useStarRod) = {
EvtScript N(EVS_StarRodCast) = {
EVT_CALL(N(FadeBackgroundDarken))
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
@ -501,8 +504,8 @@ EvtScript N(useStarRod) = {
EVT_CALL(RemoveEffect, LVarD)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED, TRUE)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 1, ACTOR_DECORATION_RADIAL_STAR_EMITTER)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable_boosted)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable_boosted)))
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(BoostedDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(BoostedStatusTable)))
EVT_CALL(N(RemoveChillOut))
EVT_WAIT(3)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -543,7 +546,7 @@ EvtScript N(useStarRod) = {
EVT_END
};
EvtScript N(jumpHome) = {
EvtScript N(EVS_ShockReaction) = {
EVT_IF_NE(LVar1, -1)
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_END_IF
@ -572,7 +575,7 @@ EvtScript N(jumpHome) = {
EVT_END
};
EvtScript N(makeWalkingSounds) = {
EvtScript N(EVS_PlayFootstepSounds) = {
EVT_CALL(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar7)
EVT_IF_NE(LVar7, ANIM_BattleBowser_Walk)
EVT_IF_EQ(LVar3, ANIM_BattleBowser_Walk)
@ -599,10 +602,10 @@ EvtScript N(makeWalkingSounds) = {
EVT_END
};
EvtScript N(recover) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EvtScript N(EVS_Recover) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_SUB(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_IF_NOT_FLAG(LVar3, STATUS_FLAG_SHRINK)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
@ -669,14 +672,14 @@ EvtScript N(recover) = {
EVT_END
};
EvtScript N(doTakeTurn) = {
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 1)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EvtScript N(EVS_TakeTurn_Inner) = {
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnCount, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_EQ(LVar0, 2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -699,7 +702,7 @@ EvtScript N(doTakeTurn) = {
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_IF
EVT_CALL(ActorSpeak, MSG_CH8_0084, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Mock, ANIM_BattleBowser_Mock)
EVT_EXEC_WAIT(N(powerUp))
EVT_EXEC_WAIT(N(EVS_Move_UseStarRod))
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
@ -709,31 +712,31 @@ EvtScript N(doTakeTurn) = {
EVT_CALL(N(GetPlayerHpPercent), LVar2)
EVT_SUB(LVar2, LVar0)
EVT_IF_GT(LVar2, 25)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 75)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, LVar0)
EVT_IF_GT(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_EXEC_WAIT(N(recover))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_ELSE
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_EXEC_WAIT(N(recover))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_GT(LVar0, 1)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_NOT_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(1)
EVT_SET(LVar0, 0)
@ -746,114 +749,120 @@ EvtScript N(doTakeTurn) = {
EVT_END_SWITCH
EVT_CALL(RandInt, 100, LVar1)
EVT_IF_LT(LVar1, LVar0)
EVT_EXEC_WAIT(N(powerUp))
EVT_EXEC_WAIT(N(EVS_Move_UseStarRod))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_IF_LT(LVar0, 3)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(attack))
EVT_EXEC_WAIT(N(EVS_UseAttackOrShockwave))
EVT_RETURN
EVT_END
};
EvtScript N(attack) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EvtScript N(EVS_UseAttackOrShockwave) = {
// only use regular attacks for the first few turns
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_LE(LVar0, 3)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), LVar0)
// use shockwave if it hasn't been used recently
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_IF_GE(LVar0, 6)
EVT_CALL(RandInt, 30, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_ELSE
EVT_EXEC_WAIT(N(attackLightningBlast))
EVT_EXEC_WAIT(N(EVS_Attack_LightningBlast))
EVT_END_IF
EVT_RETURN
EVT_END_IF
// if either hammer or jump are boosted, try using shockwave
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 75)
EVT_CALL(N(GetJumpHammerCharge), LVar0, LVar1)
EVT_IF_GT(LVar0, 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_IF_GT(LVar1, 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_END_IF
// ~27% chance to use regardless
EVT_CALL(RandInt, 110, LVar0)
EVT_IF_LT(LVar0, 30)
EVT_IF_LT(LVar0, 20)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_ELSE
EVT_EXEC_WAIT(N(attackLightningBlast))
EVT_EXEC_WAIT(N(EVS_Attack_LightningBlast))
EVT_END_IF
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(normalAttack))
// fallback to using a regular attack
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_RETURN
EVT_END
};
EvtScript N(normalAttack) = {
EvtScript N(EVS_UseAttack) = {
EVT_CALL(RandInt, 80, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, LVar0)
EVT_IF_GE(LVar0, 2)
EVT_EXEC_WAIT(N(attackHeavyJump))
EVT_EXEC_WAIT(N(EVS_Attack_BodySlam))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_CALL(RandInt, 60, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, LVar0)
EVT_IF_GE(LVar0, 2)
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_EXEC_WAIT(N(attackFlameBreath))
EVT_EXEC_WAIT(N(EVS_Attack_FireBreath))
EVT_RETURN
EVT_END
};
#include "common/DisableRandomAbility.inc.c"
#include "common/CanPlayerLoseAction.inc.c"
#include "common/UnkFireBreathFXFunc.inc.c"
#include "common/SetBowserFireBreathScales.inc.c"
#include "common/UnkLightningBoltFxFunc1.inc.c"
EvtScript N(inflictCommandLoss) = {
EvtScript N(EVS_ManageCommandLoss) = {
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), LVarA)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVarA)
EVT_SWITCH(LVarA)
EVT_CASE_EQ(0)
EVT_CASE_EQ(1)
EVT_CASE_EQ(AVAL_LossState_Idle)
// do nothing
EVT_CASE_EQ(AVAL_LossState_KnockAway)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar1, LVar2, LVar3)
EVT_SET(LVar2, 0)
EVT_SUB(LVar3, 1)
EVT_CALL(N(DisableRandomAbility), LVar4, LVar5)
EVT_CALL(MakeItemEntity, LVar4, LVar1, LVar2, LVar3, ITEM_SPAWN_MODE_DECORATION, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_ADD(LVar1, 7)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 8, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 12)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 8, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 7)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 5, EVT_FLOAT(1.0))
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 0)
EVT_CASE_EQ(2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CASE_EQ(AVAL_LossState_ShowMessage)
EVT_CALL(ShowMessageBox, LVar5, 60)
EVT_CALL(RemoveItemEntity, LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Done)
EVT_RETURN
EVT_END_SWITCH
EVT_WAIT(1)
@ -862,8 +871,8 @@ EvtScript N(inflictCommandLoss) = {
EVT_END
};
EvtScript N(attackHeavyJump) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 0)
EvtScript N(EVS_Attack_BodySlam) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -939,9 +948,9 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Land)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_IF_FLAG(LVar1, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 16)
EVT_SET(LVar0, DMG_BOOSTED_BODY_SLAM)
EVT_ELSE
EVT_SET(LVar0, 8)
EVT_SET(LVar0, DMG_BODY_SLAM)
EVT_END_IF
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarF)
EVT_IF_NOT_FLAG(LVarF, STATUS_FLAG_SHRINK)
@ -963,8 +972,8 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(LandJump, ACTOR_SELF)
EVT_CALL(N(StartRumbleWithParams), 80, 14)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 1)
EVT_EXEC(N(inflictCommandLoss))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_KnockAway)
EVT_EXEC(N(EVS_ManageCommandLoss))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 52)
EVT_SET(LVar1, 0)
@ -985,15 +994,15 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_PostJump)
EVT_WAIT(3)
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVar0)
EVT_IF_NE(LVar0, AVAL_LossState_Idle)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
EVT_WAIT(8)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Walk)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_CALL(N(GetItemEntityPosition), LVar0, LVar1, LVar2, LVar3)
EVT_ADD(LVar1, 38)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(2.0))
@ -1004,9 +1013,9 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_StompOnce)
EVT_WAIT(2)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_CALL(N(GetItemEntityPosition), LVar0, LVar1, LVar2, LVar3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_ShowMessage)
EVT_PLAY_EFFECT(EFFECT_FIREWORK, 0, LVar1, 0, LVar3, EVT_FLOAT(0.75), 0, 0)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 1, LVar1, 0, LVar3, EVT_FLOAT(3.0), 0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20F6)
@ -1067,7 +1076,7 @@ EvtScript N(attackHeavyJump) = {
EVT_END
};
EvtScript N(onAttackMissed) = {
EvtScript N(EVS_AttackMissed) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Tantrum)
EVT_THREAD
EVT_WAIT(5)
@ -1082,8 +1091,8 @@ EvtScript N(onAttackMissed) = {
EVT_END
};
EvtScript N(attackClawSwipe) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 0)
EvtScript N(EVS_Attack_ClawSwipe) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -1122,7 +1131,7 @@ EvtScript N(attackClawSwipe) = {
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_WAIT(30)
@ -1140,11 +1149,11 @@ EvtScript N(attackClawSwipe) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 16)
EVT_SET(LVar0, DMG_BOOSTED_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, DMG_STATUS_KEY(STATUS_FLAG_POISON, 3, 100), LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_SET(LVar0, 8)
EVT_SET(LVar0, DMG_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, DMG_STATUS_KEY(STATUS_FLAG_POISON, 3, 100), LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_IF
@ -1167,8 +1176,8 @@ EvtScript N(attackClawSwipe) = {
EVT_END
};
EvtScript N(attackShockwaveDrain) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 0)
EvtScript N(EVS_UseDrainingShockwave) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -1252,17 +1261,18 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CASE_DEFAULT
EVT_WAIT(2)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_WAIT(2)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 3)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE_P)
EVT_ELSE
EVT_SET(LVar1, 3)
EVT_SET(LVar1, DMG_SHOCKWAVE_P)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_PARTNER_GLOWING)
@ -1280,20 +1290,22 @@ EvtScript N(attackShockwaveDrain) = {
EVT_WAIT(4)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 3)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE_P)
EVT_ELSE
EVT_SET(LVar1, 3)
EVT_SET(LVar1, DMG_SHOCKWAVE_P)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 6)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE)
EVT_ELSE
EVT_SET(LVar1, 6)
EVT_SET(LVar1, DMG_SHOCKWAVE)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_JUMP_CHARGE | PLAYER_BUFF_HAMMER_CHARGE | PLAYER_BUFF_STONE | PLAYER_BUFF_HUSTLE | PLAYER_BUFF_STATIC | PLAYER_BUFF_TRANSPARENT | PLAYER_BUFF_CLOUD_NINE | PLAYER_BUFF_TURBO_CHARGE | PLAYER_BUFF_WATER_BLOCK | PLAYER_BUFF_PARTNER_GLOWING | 0xFFEFC04)
@ -1312,7 +1324,7 @@ EvtScript N(attackShockwaveDrain) = {
EVT_END
};
EvtScript N(attackFlameBreath) = {
EvtScript N(EVS_Attack_FireBreath) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
@ -1376,7 +1388,7 @@ EvtScript N(attackFlameBreath) = {
EVT_END_IF
EVT_SUB(LVar3, 10)
EVT_PLAY_EFFECT(EFFECT_FIRE_BREATH, 2, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, 50, 1, 24, 0)
EVT_CALL(N(UnkFireBreathFXFunc), LVarF)
EVT_CALL(N(SetBowserFireBreathScales), LVarF)
EVT_END_IF
EVT_THREAD
EVT_CALL(N(StartRumbleWithParams), 50, 148)
@ -1397,7 +1409,7 @@ EvtScript N(attackFlameBreath) = {
EVT_WAIT(15)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(30)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
@ -1410,9 +1422,9 @@ EvtScript N(attackFlameBreath) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 20)
EVT_SET(LVar0, DMG_BOOSTED_FIRE_BREATH)
EVT_ELSE
EVT_SET(LVar0, 10)
EVT_SET(LVar0, DMG_FIRE_BREATH)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
@ -1435,7 +1447,7 @@ EvtScript N(attackFlameBreath) = {
EVT_END
};
EvtScript N(onBurnHit) = {
EvtScript N(EVS_BurnHit) = {
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_CALL(GetDamageSource, LVar3)
EVT_SWITCH(LVar3)
@ -1521,12 +1533,13 @@ EvtScript N(onBurnHit) = {
EVT_PLAY_EFFECT(EFFECT_SMOKE_BURST, 0, LVar0, LVar1, LVar2, LVar3, 10, 0)
EVT_END_IF
EVT_CASE_EQ(EVENT_BURN_DEATH)
// do nothing
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(attackLightningBlast) = {
EvtScript N(EVS_Attack_LightningBlast) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
@ -1600,10 +1613,10 @@ EvtScript N(attackLightningBlast) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 20)
EVT_SET(LVar0, DMG_BOOSTED_LIGHTNING_BLAST)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_SET(LVar0, 10)
EVT_SET(LVar0, DMG_LIGHTNING_BLAST)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_IF
EVT_SWITCH(LVarF)

View File

@ -1,66 +1,69 @@
#include "../area.h"
#include "sprite/npc/BattleBowser.h"
#define NAMESPACE A(bowser_phase_3)
#define NAMESPACE A(final_bowser_2)
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_TakeTurn_Inner);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(EVS_HandlePhase);
extern EvtScript N(attackFlameBreath);
extern EvtScript N(attackClawSwipe);
extern EvtScript N(attackHeavyJump);
extern EvtScript N(normalAttack);
extern EvtScript N(attackLightningBlast);
extern EvtScript N(attackShockwaveDrain);
extern EvtScript N(attack);
extern EvtScript N(useStarRod);
extern EvtScript N(doTakeTurn);
extern EvtScript N(doOnHit);
extern EvtScript N(onImmune);
extern EvtScript N(onDeath);
extern EvtScript N(jumpHome);
extern EvtScript N(EVS_AnimateImgFX);
extern EvtScript N(EVS_Attack_LightningBlast);
extern EvtScript N(EVS_Attack_FireBreath);
extern EvtScript N(EVS_Attack_ClawSwipe);
extern EvtScript N(EVS_Attack_BodySlam);
extern EvtScript N(EVS_UseAttack);
extern EvtScript N(EVS_UseDrainingShockwave);
extern EvtScript N(EVS_UseAttackOrShockwave);
extern EvtScript N(EVS_StarRodCast);
extern EvtScript N(EVS_ReturnHome);
extern EvtScript N(onHit);
extern EvtScript N(onBurnHit);
extern EvtScript N(makeWalkingSounds);
extern EvtScript N(unkDecorationScript);
extern EvtScript N(EVS_Hit);
extern EvtScript N(EVS_Hit_Inner);
extern EvtScript N(EVS_Death);
extern EvtScript N(EVS_NoDamageHit);
extern EvtScript N(EVS_BurnHit);
extern EvtScript N(EVS_ShockReaction);
extern EvtScript N(EVS_PlayFootstepSounds);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
AVAR_Unk_0 = 0,
AVAR_Unk_1 = 1,
AVAR_Unk_2 = 2,
AVAR_Unk_3 = 3,
AVAR_Unk_4 = 4,
AVAR_Unk_5 = 5,
AVAR_Unk_6 = 6,
AVAR_Unk_7 = 7,
AVAR_Unk_8 = 8,
AVAR_Unk_9 = 9,
AVAR_Unk_A = 10,
AVAR_Unk_E = 14,
AVAR_TurnCount = 0,
AVAR_Flags = 1,
AVAL_Flag_NotOverYet = 0x10,
AVAL_Flag_PeachBeamRemark = 0x20,
AVAR_TurnsSinceShockwave = 2,
AVAR_TurnsSinceStarBeam = 3,
AVAR_TurnsSinceClawSwipe = 4,
AVAR_TurnsSinceBodySlam = 5,
AVAR_TurnsSinceRecover = 6,
AVAR_RecoversLeft = 7,
AVAR_CommandLossState = 9,
AVAL_LossState_Idle = 0,
AVAL_LossState_KnockAway = 1,
AVAL_LossState_ShowMessage = 2,
AVAL_LossState_Done = 3,
AVAR_CommandLossItemIdx = 10,
AVAR_Unused = 14,
};
enum N(ActorParams) {
DMG_UNK = 0,
};
enum N(OldActorVars) {
N(VAR_TURN_COUNTER) = 0,
N(VAR_FLAGS) = 1,
N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN) = 2,
N(VAR_TURNS_SINCE_LAST_STAR_BEAM) = 3,
N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE) = 4,
N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP) = 5,
N(VAR_TURNS_SINCE_LAST_RECOVER) = 6,
N(VAR_RECOVERS_LEFT) = 7,
N(VAR_COMMAND_LOSS_STATE) = 9,
N(VAR_LOST_ABILITY_ITEM) = 10,
DMG_CLAW_SWIPE = 8,
DMG_BOOSTED_CLAW_SWIPE = 16,
DMG_BODY_SLAM = 8,
DMG_BOOSTED_BODY_SLAM = 16,
DMG_FIRE_BREATH = 10,
DMG_BOOSTED_FIRE_BREATH = 20,
DMG_SHOCKWAVE = 6,
DMG_BOOSTED_SHOCKWAVE = 6,
DMG_SHOCKWAVE_P = 3,
DMG_BOOSTED_SHOCKWAVE_P = 3,
DMG_LIGHTNING_BLAST = 10,
DMG_BOOSTED_LIGHTNING_BLAST = 20,
};
s32 N(DefaultAnims)[] = {
@ -77,12 +80,12 @@ s32 N(DefaultAnims)[] = {
STATUS_END,
};
s32 N(DefenseTable)[] = {
s32 N(NormalDefense)[] = {
ELEMENT_NORMAL, 2,
ELEMENT_END,
};
s32 N(DefenseTable_boosted)[] = {
s32 N(BoostedDefense)[] = {
ELEMENT_NORMAL, 99,
ELEMENT_END,
};
@ -112,7 +115,7 @@ s32 N(StatusTable)[] = {
STATUS_END,
};
s32 N(StatusTable_boosted)[] = {
s32 N(BoostedStatusTable)[] = {
STATUS_KEY_NORMAL, 0,
STATUS_KEY_DEFAULT, 0,
STATUS_KEY_SLEEP, 0,
@ -145,7 +148,7 @@ ActorPartBlueprint N(ActorParts)[] = {
.targetOffset = { -27, 108 },
.opacity = 255,
.idleAnimations = N(DefaultAnims),
.defenseTable = N(DefenseTable),
.defenseTable = N(NormalDefense),
.eventFlags = 0,
.elementImmunityFlags = 0,
.projectileTargetOffset = { 0, -8 },
@ -154,8 +157,8 @@ ActorPartBlueprint N(ActorParts)[] = {
ActorBlueprint NAMESPACE = {
.flags = 0,
.type = ACTOR_TYPE_BOWSER_PHASE_3,
.level = ACTOR_LEVEL_BOWSER_PHASE_3,
.type = ACTOR_TYPE_FINAL_BOWSER_2,
.level = ACTOR_LEVEL_FINAL_BOWSER_2,
.maxHP = 99,
.partCount = ARRAY_COUNT(N(ActorParts)),
.partsData = N(ActorParts),
@ -178,7 +181,7 @@ ActorBlueprint NAMESPACE = {
#define BOWSER_LARGE
#include "common/StartRumbleWithParams.inc.c"
API_CALLABLE(N(MakeLightnings)) {
API_CALLABLE(N(MakeLightningBolts)) {
Bytecode* args = script->ptrReadPos;
s32 angles[] = { 90, 135, 225, 270, 315, 405 };
Actor* actor = get_actor(script->owner1.actorID);
@ -217,7 +220,8 @@ API_CALLABLE(N(MakeLightnings)) {
}
return ApiStatus_DONE2;
}
#include "common/UnkBowserFunc1.inc.c"
#include "common/UpdateEnchantedBowserColors.inc.c"
#include "common/FadeBackgroundDarken.inc.c"
#include "common/FadeBackgroundLighten.inc.c"
#include "common/RemoveChillOut.inc.c"
@ -229,29 +233,29 @@ API_CALLABLE(N(MakeLightnings)) {
#include "common/GetItemEntityPosition.inc.c"
EvtScript N(EVS_Init) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_E, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_RecoversLeft, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unused, 0)
EVT_CALL(SetEnemyHP, ACTOR_SELF, GB_FinalBowserHP)
EVT_IF_LT(GB_FinalBowserHP, 1)
EVT_CALL(SetEnemyHP, ACTOR_SELF, 1)
EVT_END_IF
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.5), EVT_FLOAT(1.5), EVT_FLOAT(1.0))
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 150, 0, 0, 0)
EVT_EXEC(N(unkDecorationScript))
EVT_EXEC(N(EVS_AnimateImgFX))
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 0, 150, 150, 0, 0)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_A)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED, TRUE)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 1, ACTOR_DECORATION_RADIAL_STAR_EMITTER)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable_boosted)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable_boosted)))
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(BoostedDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(BoostedStatusTable)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
@ -277,7 +281,7 @@ EvtScript N(EVS_Idle) = {
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 0, 60, 60, 255, 0)
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 60, 0, 0, 0)
EVT_END_IF
EVT_EXEC_WAIT(N(makeWalkingSounds))
EVT_EXEC_WAIT(N(EVS_PlayFootstepSounds))
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
@ -288,7 +292,7 @@ EvtScript N(EVS_HandlePhase) = {
EVT_CALL(GetBattlePhase, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(PHASE_PLAYER_BEGIN)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableBattleStatusBar, FALSE)
@ -322,10 +326,10 @@ EvtScript N(EVS_HandlePhase) = {
EVT_MUL(LVar0, 100)
EVT_DIV(LVar0, LVar1)
EVT_IF_LT(LVar0, 50)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_NOT_FLAG(LVar0, 0x10)
EVT_BITWISE_OR_CONST(LVar0, 0x10)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_NotOverYet)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_NotOverYet)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -367,7 +371,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_DEATH)
@ -375,31 +379,31 @@ EvtScript N(EVS_HandleEvent) = {
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LVar0, 1)
EVT_SET(LVar1, ANIM_BattleBowser_BurnHurt)
EVT_SET(LVar2, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onBurnHit))
EVT_EXEC_WAIT(N(EVS_BurnHit))
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET(LVar0, 1)
EVT_SET(LVar1, ANIM_BattleBowser_BurnHurt)
EVT_SET(LVar2, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onBurnHit))
EVT_EXEC_WAIT(N(EVS_BurnHit))
EVT_SET_CONST(LVar1, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -407,7 +411,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(jumpHome))
EVT_EXEC_WAIT(N(EVS_ShockReaction))
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
EVT_SET(LVar1, ANIM_BattleBowser_Walk)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
@ -417,10 +421,10 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(jumpHome))
EVT_EXEC_WAIT(N(EVS_ShockReaction))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
@ -433,7 +437,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_SET(LVar1, ANIM_BattleBowser_Mock)
EVT_EXEC_WAIT(N(onImmune))
EVT_EXEC_WAIT(N(EVS_NoDamageHit))
EVT_END_SWITCH
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
@ -457,7 +461,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_WAIT(1000)
EVT_CASE_EQ(EVENT_INVUNERABLE_TAUNT)
EVT_SET(LVar1, ANIM_BattleBowser_Idle)
EVT_EXEC_WAIT(N(onImmune))
EVT_EXEC_WAIT(N(EVS_NoDamageHit))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_DMG_APPLY, TRUE)
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_DISABLE_CELEBRATION | BS_FLAGS1_BATTLE_FLED, TRUE)
@ -481,15 +485,15 @@ EvtScript N(EVS_HandleEvent) = {
EVT_ADD(LVar1, LVar4)
EVT_PLAY_EFFECT(EFFECT_SHIMMER_BURST, 1, LVar0, LVar1, LVar2, EVT_FLOAT(1.05), 50, 0)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 0)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable)))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 0)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(NormalDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable)))
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(doOnHit))
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_NOT_FLAG(LVar0, 0x20)
EVT_BITWISE_OR_CONST(LVar0, 0x20)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_EXEC_WAIT(N(EVS_Hit_Inner))
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_PeachBeamRemark)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_PeachBeamRemark)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_IF_NOT_FLAG(LVar3, STATUS_FLAG_SHRINK)
EVT_SET(LVar3, 90)
@ -516,21 +520,21 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END
};
EvtScript N(onHit) = {
EVT_EXEC_WAIT(N(doOnHit))
EvtScript N(EVS_Hit) = {
EVT_EXEC_WAIT(N(EVS_Hit_Inner))
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(doOnHit) = {
EvtScript N(EVS_Hit_Inner) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EvtScript N(EVS_Death) = {
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED, FALSE)
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 1)
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
@ -568,7 +572,7 @@ EvtScript N(onDeath) = {
EVT_IF_GE(LVar2, LVar0)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar3, LVar4, LVar5)
EVT_CALL(GetActorScale, ACTOR_SELF, LVar6, LVar6, LVar7)
EVT_CALL(N(MakeLightnings), LVar3, LVar4, LVar5, LVar6)
EVT_CALL(N(MakeLightningBolts), LVar3, LVar4, LVar5, LVar6)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(0)
EVT_END_IF
@ -664,7 +668,7 @@ EvtScript N(onDeath) = {
EVT_END
};
EvtScript N(onImmune) = {
EvtScript N(EVS_NoDamageHit) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_RETURN
@ -673,15 +677,15 @@ EvtScript N(onImmune) = {
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_EXEC_WAIT(N(doTakeTurn))
EVT_EXEC_WAIT(N(EVS_TakeTurn_Inner))
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(powerUp) = {
EvtScript N(EVS_Move_UseStarRod) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Brandish)
EVT_EXEC_WAIT(N(useStarRod))
EVT_EXEC_WAIT(N(EVS_StarRodCast))
EVT_RETURN
EVT_END
};
@ -709,13 +713,13 @@ EvtScript N(EVS_ReturnHome) = {
EVT_END
};
EvtScript N(unkDecorationScript) = {
EVT_CALL(N(UnkBowserFunc1))
EvtScript N(EVS_AnimateImgFX) = {
EVT_CALL(N(UpdateEnchantedBowserColors))
EVT_RETURN
EVT_END
};
EvtScript N(useStarRod) = {
EvtScript N(EVS_StarRodCast) = {
EVT_CALL(N(FadeBackgroundDarken))
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
@ -760,8 +764,8 @@ EvtScript N(useStarRod) = {
EVT_CALL(RemoveEffect, LVarD)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED, TRUE)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 1, ACTOR_DECORATION_RADIAL_STAR_EMITTER)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable_boosted)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable_boosted)))
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(BoostedDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(BoostedStatusTable)))
EVT_CALL(N(RemoveChillOut))
EVT_WAIT(3)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -802,7 +806,7 @@ EvtScript N(useStarRod) = {
EVT_END
};
EvtScript N(jumpHome) = {
EvtScript N(EVS_ShockReaction) = {
EVT_IF_NE(LVar1, -1)
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_END_IF
@ -831,7 +835,7 @@ EvtScript N(jumpHome) = {
EVT_END
};
EvtScript N(makeWalkingSounds) = {
EvtScript N(EVS_PlayFootstepSounds) = {
EVT_CALL(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar7)
EVT_IF_NE(LVar7, ANIM_BattleBowser_Walk)
EVT_IF_EQ(LVar3, ANIM_BattleBowser_Walk)
@ -858,10 +862,10 @@ EvtScript N(makeWalkingSounds) = {
EVT_END
};
EvtScript N(recover) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EvtScript N(EVS_Recover) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_SUB(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_IF_NOT_FLAG(LVar3, STATUS_FLAG_SHRINK)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
@ -928,13 +932,13 @@ EvtScript N(recover) = {
EVT_END
};
EvtScript N(doTakeTurn) = {
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 1)
EvtScript N(EVS_TakeTurn_Inner) = {
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnCount, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 1)
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
EVT_CALL(GetEnemyMaxHP, ACTOR_SELF, LVar1)
EVT_MUL(LVar0, 100)
@ -942,31 +946,31 @@ EvtScript N(doTakeTurn) = {
EVT_CALL(N(GetPlayerHpPercent), LVar2)
EVT_SUB(LVar2, LVar0)
EVT_IF_GT(LVar2, 25)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 75)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, LVar0)
EVT_IF_GT(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_EXEC_WAIT(N(recover))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_ELSE
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_EXEC_WAIT(N(recover))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_GT(LVar0, 1)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_NOT_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(1)
EVT_SET(LVar0, 0)
@ -979,114 +983,120 @@ EvtScript N(doTakeTurn) = {
EVT_END_SWITCH
EVT_CALL(RandInt, 100, LVar1)
EVT_IF_LT(LVar1, LVar0)
EVT_EXEC_WAIT(N(powerUp))
EVT_EXEC_WAIT(N(EVS_Move_UseStarRod))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_IF_LT(LVar0, 3)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(attack))
EVT_EXEC_WAIT(N(EVS_UseAttackOrShockwave))
EVT_RETURN
EVT_END
};
EvtScript N(attack) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EvtScript N(EVS_UseAttackOrShockwave) = {
// only use regular attacks for the first few turns
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_LE(LVar0, 3)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), LVar0)
// use shockwave if it hasn't been used recently
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_IF_GE(LVar0, 6)
EVT_CALL(RandInt, 30, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_ELSE
EVT_EXEC_WAIT(N(attackLightningBlast))
EVT_EXEC_WAIT(N(EVS_Attack_LightningBlast))
EVT_END_IF
EVT_RETURN
EVT_END_IF
// if either hammer or jump are boosted, try using shockwave
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 75)
EVT_CALL(N(GetJumpHammerCharge), LVar0, LVar1)
EVT_IF_GT(LVar0, 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_IF_GT(LVar1, 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_END_IF
// ~27% chance to use regardless
EVT_CALL(RandInt, 110, LVar0)
EVT_IF_LT(LVar0, 30)
EVT_IF_LT(LVar0, 20)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_ELSE
EVT_EXEC_WAIT(N(attackLightningBlast))
EVT_EXEC_WAIT(N(EVS_Attack_LightningBlast))
EVT_END_IF
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(normalAttack))
// fallback to using a regular attack
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_RETURN
EVT_END
};
EvtScript N(normalAttack) = {
EvtScript N(EVS_UseAttack) = {
EVT_CALL(RandInt, 80, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, LVar0)
EVT_IF_GE(LVar0, 2)
EVT_EXEC_WAIT(N(attackHeavyJump))
EVT_EXEC_WAIT(N(EVS_Attack_BodySlam))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_CALL(RandInt, 60, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, LVar0)
EVT_IF_GE(LVar0, 2)
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_EXEC_WAIT(N(attackFlameBreath))
EVT_EXEC_WAIT(N(EVS_Attack_FireBreath))
EVT_RETURN
EVT_END
};
#include "common/DisableRandomAbility.inc.c"
#include "common/CanPlayerLoseAction.inc.c"
#include "common/UnkFireBreathFXFunc.inc.c"
#include "common/SetBowserFireBreathScales.inc.c"
#include "common/UnkLightningBoltFxFunc1.inc.c"
EvtScript N(inflictCommandLoss) = {
EvtScript N(EVS_ManageCommandLoss) = {
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), LVarA)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVarA)
EVT_SWITCH(LVarA)
EVT_CASE_EQ(0)
EVT_CASE_EQ(1)
EVT_CASE_EQ(AVAL_LossState_Idle)
// do nothing
EVT_CASE_EQ(AVAL_LossState_KnockAway)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar1, LVar2, LVar3)
EVT_SET(LVar2, 0)
EVT_SUB(LVar3, 1)
EVT_CALL(N(DisableRandomAbility), LVar4, LVar5)
EVT_CALL(MakeItemEntity, LVar4, LVar1, LVar2, LVar3, ITEM_SPAWN_MODE_DECORATION, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_ADD(LVar1, 7)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 8, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 12)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 8, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 7)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 5, EVT_FLOAT(1.0))
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 0)
EVT_CASE_EQ(2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CASE_EQ(AVAL_LossState_ShowMessage)
EVT_CALL(ShowMessageBox, LVar5, 60)
EVT_CALL(RemoveItemEntity, LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Done)
EVT_RETURN
EVT_END_SWITCH
EVT_WAIT(1)
@ -1095,8 +1105,8 @@ EvtScript N(inflictCommandLoss) = {
EVT_END
};
EvtScript N(attackHeavyJump) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 0)
EvtScript N(EVS_Attack_BodySlam) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -1172,9 +1182,9 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Land)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_IF_FLAG(LVar1, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 16)
EVT_SET(LVar0, DMG_BOOSTED_BODY_SLAM)
EVT_ELSE
EVT_SET(LVar0, 8)
EVT_SET(LVar0, DMG_BODY_SLAM)
EVT_END_IF
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarF)
EVT_IF_NOT_FLAG(LVarF, STATUS_FLAG_SHRINK)
@ -1196,8 +1206,8 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(LandJump, ACTOR_SELF)
EVT_CALL(N(StartRumbleWithParams), 80, 14)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 1)
EVT_EXEC(N(inflictCommandLoss))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_KnockAway)
EVT_EXEC(N(EVS_ManageCommandLoss))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 52)
EVT_SET(LVar1, 0)
@ -1218,15 +1228,15 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_PostJump)
EVT_WAIT(3)
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVar0)
EVT_IF_NE(LVar0, AVAL_LossState_Idle)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
EVT_WAIT(8)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Walk)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_CALL(N(GetItemEntityPosition), LVar0, LVar1, LVar2, LVar3)
EVT_ADD(LVar1, 38)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(2.0))
@ -1237,9 +1247,9 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_StompOnce)
EVT_WAIT(2)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_CALL(N(GetItemEntityPosition), LVar0, LVar1, LVar2, LVar3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_ShowMessage)
EVT_PLAY_EFFECT(EFFECT_FIREWORK, 0, LVar1, 0, LVar3, EVT_FLOAT(0.75), 0, 0)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 1, LVar1, 0, LVar3, EVT_FLOAT(3.0), 0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20F6)
@ -1300,7 +1310,7 @@ EvtScript N(attackHeavyJump) = {
EVT_END
};
EvtScript N(onAttackMissed) = {
EvtScript N(EVS_AttackMissed) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Tantrum)
EVT_THREAD
EVT_WAIT(5)
@ -1315,8 +1325,8 @@ EvtScript N(onAttackMissed) = {
EVT_END
};
EvtScript N(attackClawSwipe) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 0)
EvtScript N(EVS_Attack_ClawSwipe) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -1355,7 +1365,7 @@ EvtScript N(attackClawSwipe) = {
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_WAIT(30)
@ -1373,11 +1383,11 @@ EvtScript N(attackClawSwipe) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 16)
EVT_SET(LVar0, DMG_BOOSTED_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, DMG_STATUS_KEY(STATUS_FLAG_POISON, 3, 100), LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_SET(LVar0, 8)
EVT_SET(LVar0, DMG_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, DMG_STATUS_KEY(STATUS_FLAG_POISON, 3, 100), LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_IF
@ -1400,8 +1410,8 @@ EvtScript N(attackClawSwipe) = {
EVT_END
};
EvtScript N(attackShockwaveDrain) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 0)
EvtScript N(EVS_UseDrainingShockwave) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -1485,21 +1495,22 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CASE_DEFAULT
EVT_WAIT(2)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_WAIT(2)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 3)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE_P)
EVT_ELSE
EVT_SET(LVar1, 3)
EVT_SET(LVar1, DMG_SHOCKWAVE_P)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_PARTNER_GLOWING)
EVT_IF_NE(LVarA, 5)
EVT_IF_NE(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_END_IF
EVT_WAIT(30)
@ -1513,20 +1524,22 @@ EvtScript N(attackShockwaveDrain) = {
EVT_WAIT(4)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 3)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE_P)
EVT_ELSE
EVT_SET(LVar1, 3)
EVT_SET(LVar1, DMG_SHOCKWAVE_P)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 6)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE)
EVT_ELSE
EVT_SET(LVar1, 6)
EVT_SET(LVar1, DMG_SHOCKWAVE)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_JUMP_CHARGE | PLAYER_BUFF_HAMMER_CHARGE | PLAYER_BUFF_STONE | PLAYER_BUFF_HUSTLE | PLAYER_BUFF_STATIC | PLAYER_BUFF_TRANSPARENT | PLAYER_BUFF_CLOUD_NINE | PLAYER_BUFF_TURBO_CHARGE | PLAYER_BUFF_WATER_BLOCK | PLAYER_BUFF_PARTNER_GLOWING | 0xFFEFC04)
@ -1536,7 +1549,7 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(15)
EVT_IF_EQ(LVarF, 10)
EVT_IF_EQ(LVarF, HIT_RESULT_10)
EVT_RETURN
EVT_END_IF
EVT_END_CASE_GROUP
@ -1545,7 +1558,7 @@ EvtScript N(attackShockwaveDrain) = {
EVT_END
};
EvtScript N(attackFlameBreath) = {
EvtScript N(EVS_Attack_FireBreath) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
@ -1609,7 +1622,7 @@ EvtScript N(attackFlameBreath) = {
EVT_END_IF
EVT_SUB(LVar3, 10)
EVT_PLAY_EFFECT(EFFECT_FIRE_BREATH, 2, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, 50, 1, 24, 0)
EVT_CALL(N(UnkFireBreathFXFunc), LVarF)
EVT_CALL(N(SetBowserFireBreathScales), LVarF)
EVT_END_IF
EVT_THREAD
EVT_CALL(N(StartRumbleWithParams), 50, 148)
@ -1630,7 +1643,7 @@ EvtScript N(attackFlameBreath) = {
EVT_WAIT(15)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(30)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
@ -1643,9 +1656,9 @@ EvtScript N(attackFlameBreath) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 20)
EVT_SET(LVar0, DMG_BOOSTED_FIRE_BREATH)
EVT_ELSE
EVT_SET(LVar0, 10)
EVT_SET(LVar0, DMG_FIRE_BREATH)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
@ -1668,7 +1681,7 @@ EvtScript N(attackFlameBreath) = {
EVT_END
};
EvtScript N(onBurnHit) = {
EvtScript N(EVS_BurnHit) = {
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_CALL(GetDamageSource, LVar3)
EVT_SWITCH(LVar3)
@ -1754,12 +1767,13 @@ EvtScript N(onBurnHit) = {
EVT_PLAY_EFFECT(EFFECT_SMOKE_BURST, 0, LVar0, LVar1, LVar2, LVar3, 10, 0)
EVT_END_IF
EVT_CASE_EQ(EVENT_BURN_DEATH)
// do nothing
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(attackLightningBlast) = {
EvtScript N(EVS_Attack_LightningBlast) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
@ -1833,10 +1847,10 @@ EvtScript N(attackLightningBlast) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
EVT_SET(LVar0, 20)
EVT_SET(LVar0, DMG_BOOSTED_LIGHTNING_BLAST)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_SET(LVar0, 10)
EVT_SET(LVar0, DMG_LIGHTNING_BLAST)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_IF
EVT_SWITCH(LVarF)

View File

@ -1,65 +1,69 @@
#include "../area.h"
#include "sprite/npc/BattleBowser.h"
#define NAMESPACE A(bowser_phase_1)
#define NAMESPACE A(hallway_bowser)
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_TakeTurn_Inner);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(EVS_HandlePhase);
extern EvtScript N(unkDecorationScript);
extern EvtScript N(attackFlameBreath);
extern EvtScript N(attackClawSwipe);
extern EvtScript N(attackHeavyJump);
extern EvtScript N(normalAttack);
extern EvtScript N(attackShockwaveDrain);
extern EvtScript N(attack);
extern EvtScript N(useStarRod);
extern EvtScript N(doTakeTurn);
extern EvtScript N(onHit);
extern EvtScript N(onImmune);
extern EvtScript N(onDeath);
extern EvtScript N(jumpHome);
extern EvtScript N(EVS_AnimateImgFX);
extern EvtScript N(EVS_Attack_FireBreath);
extern EvtScript N(EVS_Attack_ClawSwipe);
extern EvtScript N(EVS_Attack_BodySlam);
extern EvtScript N(EVS_UseAttack);
extern EvtScript N(EVS_UseDrainingShockwave);
extern EvtScript N(EVS_UseAttackOrShockwave);
extern EvtScript N(EVS_StarRodCast);
extern EvtScript N(EVS_Hit);
extern EvtScript N(EVS_Death);
extern EvtScript N(EVS_NoDamageHit);
extern EvtScript N(EVS_BasicHit);
extern EvtScript N(EVS_BurnHit);
extern EvtScript N(EVS_ShockReaction);
extern EvtScript N(EVS_ReturnHome);
extern EvtScript N(onSpinSmashOrNormalHit);
extern EvtScript N(onBurnHit);
extern EvtScript N(makeWalkingSounds);
extern EvtScript N(EVS_PlayFootstepSounds);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
AVAR_Unk_0 = 0,
AVAR_Unk_1 = 1,
AVAR_Unk_2 = 2,
AVAR_Unk_3 = 3,
AVAR_Unk_4 = 4,
AVAR_Unk_5 = 5,
AVAR_Unk_6 = 6,
AVAR_Unk_7 = 7,
AVAR_Unk_8 = 8,
AVAR_Unk_9 = 9,
AVAR_Unk_A = 10,
AVAR_Unk_E = 14,
AVAR_TurnCount = 0,
AVAR_Flags = 1,
AVAL_Flag_InitialTaunt = 0x01,
AVAL_Flag_StarBeamRemark = 0x02,
AVAL_Flag_HasBeenDisenchanted = 0x04,
AVAL_Flag_CowardTaunt = 0x08,
AVAL_Flag_UsedStarRod = 0x40,
AVAR_TurnsSinceShockwave = 2,
AVAR_TurnsSinceStarBeam = 3,
AVAR_TurnsSinceClawSwipe = 4,
AVAR_TurnsSinceBodySlam = 5,
AVAR_TurnsSinceRecover = 6,
AVAR_RecoversLeft = 7,
AVAR_CommandLossState = 9,
AVAL_LossState_Idle = 0,
AVAL_LossState_KnockAway = 1,
AVAL_LossState_ShowMessage = 2,
AVAL_LossState_Done = 3,
AVAR_CommandLossItemIdx = 10,
AVAR_Unused = 14,
};
enum N(ActorParams) {
DMG_UNK = 0,
};
enum N(OldActorVars) {
N(VAR_TURN_COUNTER) = 0,
N(VAR_FLAGS) = 1,
N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN) = 2,
N(VAR_TURNS_SINCE_LAST_STAR_BEAM) = 3,
N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE) = 4,
N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP) = 5,
N(VAR_TURNS_SINCE_LAST_RECOVER) = 6,
N(VAR_RECOVERS_LEFT) = 7,
N(VAR_COMMAND_LOSS_STATE) = 9,
N(VAR_LOST_ABILITY_ITEM) = 10,
DMG_CLAW_SWIPE = 6,
DMG_BOOSTED_CLAW_SWIPE = 12,
DMG_BODY_SLAM = 6,
DMG_BOOSTED_BODY_SLAM = 12,
DMG_FIRE_BREATH = 8,
DMG_BOOSTED_FIRE_BREATH = 16,
DMG_SHOCKWAVE = 4,
DMG_BOOSTED_SHOCKWAVE = 4,
DMG_SHOCKWAVE_P = 3,
DMG_BOOSTED_SHOCKWAVE_P = 3,
};
s32 N(DefaultAnims)[] = {
@ -76,12 +80,12 @@ s32 N(DefaultAnims)[] = {
STATUS_END,
};
s32 N(DefenseTable)[] = {
s32 N(NormalDefense)[] = {
ELEMENT_NORMAL, 1,
ELEMENT_END,
};
s32 N(DefenseTable_boosted)[] = {
s32 N(BoostedDefense)[] = {
ELEMENT_NORMAL, 4,
ELEMENT_END,
};
@ -111,7 +115,7 @@ s32 N(StatusTable)[] = {
STATUS_END,
};
s32 N(StatusTable_boosted)[] = {
s32 N(BoostedStatusTable)[] = {
STATUS_KEY_NORMAL, 0,
STATUS_KEY_DEFAULT, 0,
STATUS_KEY_SLEEP, 0,
@ -144,7 +148,7 @@ ActorPartBlueprint N(ActorParts)[] = {
.targetOffset = { -18, 72 },
.opacity = 255,
.idleAnimations = N(DefaultAnims),
.defenseTable = N(DefenseTable),
.defenseTable = N(NormalDefense),
.eventFlags = 0,
.elementImmunityFlags = 0,
.projectileTargetOffset = { 0, -8 },
@ -153,8 +157,8 @@ ActorPartBlueprint N(ActorParts)[] = {
ActorBlueprint NAMESPACE = {
.flags = 0,
.type = ACTOR_TYPE_BOWSER_PHASE_1,
.level = ACTOR_LEVEL_BOWSER_PHASE_1,
.type = ACTOR_TYPE_HALLWAY_BOWSER,
.level = ACTOR_LEVEL_HALLWAY_BOWSER,
.maxHP = 50,
.partCount = ARRAY_COUNT(N(ActorParts)),
.partsData = N(ActorParts),
@ -175,7 +179,7 @@ ActorBlueprint NAMESPACE = {
};
#include "common/StartRumbleWithParams.inc.c"
#include "common/UnkBowserFunc1.inc.c"
#include "common/UpdateEnchantedBowserColors.inc.c"
#include "common/FadeBackgroundDarken.inc.c"
#include "common/FadeBackgroundLighten.inc.c"
#include "common/RemoveChillOut.inc.c"
@ -187,22 +191,22 @@ ActorBlueprint NAMESPACE = {
#include "common/GetItemEntityPosition.inc.c"
EvtScript N(EVS_Init) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), 1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_E, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_RecoversLeft, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unused, 0)
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 100, 0, 0, 0)
EVT_EXEC(N(unkDecorationScript))
EVT_EXEC(N(EVS_AnimateImgFX))
EVT_RETURN
EVT_END
};
@ -221,7 +225,7 @@ EvtScript N(EVS_Idle) = {
EVT_ELSE
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 40, 0, 0, 0)
EVT_END_IF
EVT_EXEC_WAIT(N(makeWalkingSounds))
EVT_EXEC_WAIT(N(EVS_PlayFootstepSounds))
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
@ -233,10 +237,10 @@ EvtScript N(EVS_HandlePhase) = {
EVT_CALL(GetBattlePhase, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(PHASE_PLAYER_BEGIN)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_NOT_FLAG(LVar0, 1)
EVT_BITWISE_OR_CONST(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_InitialTaunt)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_InitialTaunt)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
@ -265,31 +269,31 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
EVT_CASE_EQ(EVENT_HIT_COMBO)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_RETURN
EVT_CASE_EQ(EVENT_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onSpinSmashOrNormalHit))
EVT_EXEC_WAIT(N(EVS_BasicHit))
EVT_RETURN
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LVar0, 1)
EVT_SET(LVar0, PRT_MAIN)
EVT_SET(LVar1, ANIM_BattleBowser_BurnHurt)
EVT_SET(LVar2, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onBurnHit))
EVT_EXEC_WAIT(N(EVS_BurnHit))
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_NOT_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_FLAG(LVar0, 4)
EVT_IF_NOT_FLAG(LVar0, 8)
EVT_BITWISE_OR_CONST(LVar0, 8)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_FLAG(LVar0, AVAL_Flag_HasBeenDisenchanted)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_CowardTaunt)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_CowardTaunt)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
@ -303,24 +307,24 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET(LVar0, 1)
EVT_SET(LVar0, PRT_MAIN)
EVT_SET(LVar1, ANIM_BattleBowser_BurnHurt)
EVT_SET(LVar2, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onBurnHit))
EVT_EXEC_WAIT(N(EVS_BurnHit))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_BurnStill)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onSpinSmashOrNormalHit))
EVT_EXEC_WAIT(N(EVS_BasicHit))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -328,7 +332,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(jumpHome))
EVT_EXEC_WAIT(N(EVS_ShockReaction))
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
EVT_SET(LVar1, ANIM_BattleBowser_Walk)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
@ -338,10 +342,10 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(jumpHome))
EVT_EXEC_WAIT(N(EVS_ShockReaction))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
@ -354,7 +358,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_SET(LVar1, ANIM_BattleBowser_Mock)
EVT_EXEC_WAIT(N(onImmune))
EVT_EXEC_WAIT(N(EVS_NoDamageHit))
EVT_END_SWITCH
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
@ -394,16 +398,16 @@ EvtScript N(EVS_HandleEvent) = {
EVT_ADD(LVar1, LVar4)
EVT_PLAY_EFFECT(EFFECT_SHIMMER_BURST, 1, LVar0, LVar1, LVar2, EVT_FLOAT(0.7), 30, 0)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_ENCHANTED, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 0)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable)))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 0)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(NormalDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable)))
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_NOT_FLAG(LVar0, 2)
EVT_BITWISE_OR_CONST(LVar0, 2)
EVT_BITWISE_OR_CONST(LVar0, 4)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_StarBeamRemark)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_StarBeamRemark)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_HasBeenDisenchanted)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 30)
@ -441,45 +445,45 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END
};
EvtScript N(onSpinSmashOrNormalHit) = {
EvtScript N(EVS_BasicHit) = {
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_NOT_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_FLAG(LVar0, 4)
EVT_IF_NOT_FLAG(LVar0, 8)
EVT_BITWISE_OR_CONST(LVar0, 8)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_FLAG(LVar0, AVAL_Flag_HasBeenDisenchanted)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_CowardTaunt)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_CowardTaunt)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
EVT_CALL(FreezeBattleCam, TRUE)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 30)
EVT_CALL(ActorSpeak, MSG_CH8_0077, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_AnnoyedTalk, ANIM_BattleBowser_AnnoyedTalk)
EVT_CALL(FreezeBattleCam, FALSE)
EVT_ELSE
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_END_IF
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(onHit) = {
EvtScript N(EVS_Hit) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EvtScript N(EVS_Death) = {
EVT_CALL(HideHealthBar, ACTOR_SELF)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_IF_NE(LVar1, -1)
@ -538,7 +542,7 @@ EvtScript N(onDeath) = {
EVT_END
};
EvtScript N(onImmune) = {
EvtScript N(EVS_NoDamageHit) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_RETURN
@ -548,17 +552,17 @@ EvtScript N(onImmune) = {
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_EXEC_WAIT(N(doTakeTurn))
EVT_EXEC_WAIT(N(EVS_TakeTurn_Inner))
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(powerUp) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EVT_IF_NOT_FLAG(LVar0, 0x40)
EVT_BITWISE_OR_CONST(LVar0, 0x40)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_FLAGS), LVar0)
EvtScript N(EVS_Move_UseStarRod) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_IF_NOT_FLAG(LVar0, AVAL_Flag_UsedStarRod)
EVT_BITWISE_OR_CONST(LVar0, AVAL_Flag_UsedStarRod)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Flags, LVar0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 20)
@ -571,13 +575,13 @@ EvtScript N(powerUp) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Brandish)
EVT_END_IF
EVT_WAIT(2)
EVT_EXEC_WAIT(N(useStarRod))
EVT_EXEC_WAIT(N(EVS_StarRodCast))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_ReturnHome) = {
EVT_SET(LVar0, 1)
EVT_SET(LVar0, PRT_MAIN)
EVT_CALL(GetActorPos, ACTOR_SELF, LVarA, LVarB, LVarC)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVarD, LVarE, LVarF)
@ -599,13 +603,13 @@ EvtScript N(EVS_ReturnHome) = {
EVT_END
};
EvtScript N(unkDecorationScript) = {
EVT_CALL(N(UnkBowserFunc1))
EvtScript N(EVS_AnimateImgFX) = {
EVT_CALL(N(UpdateEnchantedBowserColors))
EVT_RETURN
EVT_END
};
EvtScript N(useStarRod) = {
EvtScript N(EVS_StarRodCast) = {
EVT_CALL(N(FadeBackgroundDarken))
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
@ -650,8 +654,8 @@ EvtScript N(useStarRod) = {
EVT_CALL(RemoveEffect, LVarD)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_ENCHANTED, TRUE)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 1, ACTOR_DECORATION_RADIAL_STAR_EMITTER)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable_boosted)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable_boosted)))
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(BoostedDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(BoostedStatusTable)))
EVT_CALL(N(RemoveChillOut))
EVT_WAIT(3)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -692,7 +696,7 @@ EvtScript N(useStarRod) = {
EVT_END
};
EvtScript N(jumpHome) = {
EvtScript N(EVS_ShockReaction) = {
EVT_IF_NE(LVar1, -1)
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_END_IF
@ -721,7 +725,7 @@ EvtScript N(jumpHome) = {
EVT_END
};
EvtScript N(makeWalkingSounds) = {
EvtScript N(EVS_PlayFootstepSounds) = {
EVT_CALL(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar7)
EVT_IF_NE(LVar7, ANIM_BattleBowser_Walk)
EVT_IF_EQ(LVar3, ANIM_BattleBowser_Walk)
@ -748,10 +752,10 @@ EvtScript N(makeWalkingSounds) = {
EVT_END
};
EvtScript N(recover) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EvtScript N(EVS_Recover) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_SUB(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_IF_NOT_FLAG(LVar3, STATUS_FLAG_SHRINK)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
@ -818,14 +822,14 @@ EvtScript N(recover) = {
EVT_END
};
EvtScript N(doTakeTurn) = {
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), 1)
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 1)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EvtScript N(EVS_TakeTurn_Inner) = {
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnCount, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, 1)
EVT_CALL(AddActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_EQ(LVar0, 2)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -847,7 +851,7 @@ EvtScript N(doTakeTurn) = {
EVT_CALL(SetBattleCamOffsetZ, 0)
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_IF
EVT_EXEC_WAIT(N(powerUp))
EVT_EXEC_WAIT(N(EVS_Move_UseStarRod))
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
@ -857,31 +861,31 @@ EvtScript N(doTakeTurn) = {
EVT_CALL(N(GetPlayerHpPercent), LVar2)
EVT_SUB(LVar2, LVar0)
EVT_IF_GT(LVar2, 30)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_RECOVERS_LEFT), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_RecoversLeft, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 80)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, LVar0)
EVT_IF_GT(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_EXEC_WAIT(N(recover))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_ELSE
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_RECOVER), 0)
EVT_EXEC_WAIT(N(recover))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceRecover, 0)
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_GT(LVar0, 1)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_NOT_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_STAR_BEAM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceStarBeam, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(1)
EVT_SET(LVar0, 0)
@ -894,113 +898,119 @@ EvtScript N(doTakeTurn) = {
EVT_END_SWITCH
EVT_CALL(RandInt, 100, LVar1)
EVT_IF_LT(LVar1, LVar0)
EVT_EXEC_WAIT(N(powerUp))
EVT_EXEC_WAIT(N(EVS_Move_UseStarRod))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_IF_LT(LVar0, 3)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(attack))
EVT_EXEC_WAIT(N(EVS_UseAttackOrShockwave))
EVT_RETURN
EVT_END
};
EvtScript N(attack) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EvtScript N(EVS_UseAttackOrShockwave) = {
// only use regular attacks for the first few turns
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_LE(LVar0, 3)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), LVar0)
// use shockwave if it hasn't been used recently
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_IF_GE(LVar0, 6)
EVT_CALL(RandInt, 20, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_ELSE
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_END_IF
EVT_RETURN
EVT_END_IF
// if either hammer or jump are boosted, try using shockwave
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 75)
EVT_CALL(N(GetJumpHammerCharge), LVar0, LVar1)
EVT_IF_GT(LVar0, 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_IF_GT(LVar1, 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_END_IF
// 20% chance to use regardless
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_IF_LT(LVar0, 20)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_ELSE
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_END_IF
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(normalAttack))
// fallback to using a regular attack
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_RETURN
EVT_END
};
EvtScript N(normalAttack) = {
EvtScript N(EVS_UseAttack) = {
EVT_CALL(RandInt, 80, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, LVar0)
EVT_IF_GE(LVar0, 2)
EVT_EXEC_WAIT(N(attackHeavyJump))
EVT_EXEC_WAIT(N(EVS_Attack_BodySlam))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_CALL(RandInt, 60, LVar0)
EVT_IF_LT(LVar0, 20)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, LVar0)
EVT_IF_GE(LVar0, 2)
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_EXEC_WAIT(N(attackFlameBreath))
EVT_EXEC_WAIT(N(EVS_Attack_FireBreath))
EVT_RETURN
EVT_END
};
#include "common/DisableRandomAbility.inc.c"
#include "common/CanPlayerLoseAction.inc.c"
#include "common/UnkFireBreathFXFunc.inc.c"
#include "common/SetBowserFireBreathScales.inc.c"
EvtScript N(inflictCommandLoss) = {
EvtScript N(EVS_ManageCommandLoss) = {
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), LVarA)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVarA)
EVT_SWITCH(LVarA)
EVT_CASE_EQ(0)
EVT_CASE_EQ(1)
EVT_CASE_EQ(AVAL_LossState_Idle)
// do nothing
EVT_CASE_EQ(AVAL_LossState_KnockAway)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar1, LVar2, LVar3)
EVT_SET(LVar2, 0)
EVT_SUB(LVar3, 1)
EVT_CALL(N(DisableRandomAbility), LVar4, LVar5)
EVT_CALL(MakeItemEntity, LVar4, LVar1, LVar2, LVar3, ITEM_SPAWN_MODE_DECORATION, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_ADD(LVar1, 7)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 8, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 12)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 8, EVT_FLOAT(1.0))
EVT_ADD(LVar1, 7)
EVT_CALL(N(ItemEntityJumpToPos), LVar0, LVar1, LVar2, LVar3, 5, EVT_FLOAT(1.0))
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 0)
EVT_CASE_EQ(2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Idle)
EVT_CASE_EQ(AVAL_LossState_ShowMessage)
EVT_CALL(ShowMessageBox, LVar5, 60)
EVT_CALL(RemoveItemEntity, LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 3)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_Done)
EVT_RETURN
EVT_END_SWITCH
EVT_WAIT(1)
@ -1009,8 +1019,8 @@ EvtScript N(inflictCommandLoss) = {
EVT_END
};
EvtScript N(attackHeavyJump) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_HEAVY_JUMP), 0)
EvtScript N(EVS_Attack_BodySlam) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceBodySlam, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -1086,9 +1096,9 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Land)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar1)
EVT_IF_FLAG(LVar1, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED) // @bug checks wrong event flag, never uses 12 damage attack
EVT_SET(LVar0, 12)
EVT_SET(LVar0, DMG_BOOSTED_BODY_SLAM)
EVT_ELSE
EVT_SET(LVar0, 6)
EVT_SET(LVar0, DMG_BODY_SLAM)
EVT_END_IF
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarF)
EVT_IF_NOT_FLAG(LVarF, ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED)
@ -1110,8 +1120,8 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(LandJump, ACTOR_SELF)
EVT_CALL(N(StartRumbleWithParams), 80, 14)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 1)
EVT_EXEC(N(inflictCommandLoss))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_KnockAway)
EVT_EXEC(N(EVS_ManageCommandLoss))
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_ADD(LVar0, 52)
EVT_SET(LVar1, 0)
@ -1132,15 +1142,15 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_PostJump)
EVT_WAIT(3)
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossState, LVar0)
EVT_IF_NE(LVar0, AVAL_LossState_Idle)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
EVT_WAIT(8)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Walk)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_CALL(N(GetItemEntityPosition), LVar0, LVar1, LVar2, LVar3)
EVT_ADD(LVar1, 30)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(2.0))
@ -1151,9 +1161,9 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_StompOnce)
EVT_WAIT(2)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LOST_ABILITY_ITEM), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_CommandLossItemIdx, LVar0)
EVT_CALL(N(GetItemEntityPosition), LVar0, LVar1, LVar2, LVar3)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_COMMAND_LOSS_STATE), 2)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_CommandLossState, AVAL_LossState_ShowMessage)
EVT_PLAY_EFFECT(EFFECT_FIREWORK, 0, LVar1, 0, LVar3, EVT_FLOAT(0.5), 0, 0)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 1, LVar1, 0, LVar3, EVT_FLOAT(2.0), 0)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20F6)
@ -1214,7 +1224,7 @@ EvtScript N(attackHeavyJump) = {
EVT_END
};
EvtScript N(onAttackMissed) = {
EvtScript N(EVS_AttackMissed) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Tantrum)
EVT_THREAD
EVT_WAIT(5)
@ -1229,8 +1239,8 @@ EvtScript N(onAttackMissed) = {
EVT_END
};
EvtScript N(attackClawSwipe) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_CLAW_SWIPE), 0)
EvtScript N(EVS_Attack_ClawSwipe) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceClawSwipe, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
@ -1269,7 +1279,7 @@ EvtScript N(attackClawSwipe) = {
EVT_WAIT(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_WAIT(30)
@ -1287,11 +1297,11 @@ EvtScript N(attackClawSwipe) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar0, 12)
EVT_SET(LVar0, DMG_BOOSTED_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, DMG_STATUS_KEY(STATUS_FLAG_POISON, 3, 100), LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_SET(LVar0, 6)
EVT_SET(LVar0, DMG_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, DMG_STATUS_KEY(STATUS_FLAG_POISON, 3, 100), LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_IF
@ -1316,8 +1326,8 @@ EvtScript N(attackClawSwipe) = {
EVT_END
};
EvtScript N(attackShockwaveDrain) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_SINCE_LAST_SHOCKWAVE_DRAIN), 0)
EvtScript N(EVS_UseDrainingShockwave) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -1401,17 +1411,18 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CASE_DEFAULT
EVT_WAIT(2)
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_WAIT(2)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 3)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE_P)
EVT_ELSE
EVT_SET(LVar1, 3)
EVT_SET(LVar1, DMG_SHOCKWAVE_P)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_PARTNER_GLOWING)
@ -1429,20 +1440,22 @@ EvtScript N(attackShockwaveDrain) = {
EVT_WAIT(4)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 3)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE_P)
EVT_ELSE
EVT_SET(LVar1, 3)
EVT_SET(LVar1, DMG_SHOCKWAVE_P)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_IF_FLAG(LVar0, 0x00040000) // ???
EVT_SET(LVar1, 4)
// @bug missing a call to GetPartEventFlags, LVar0 is invalid in next block
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar1, DMG_BOOSTED_SHOCKWAVE)
EVT_ELSE
EVT_SET(LVar1, 4)
EVT_SET(LVar1, DMG_SHOCKWAVE)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC | DAMAGE_TYPE_MULTIPLE_POPUPS, SUPPRESS_EVENT_ALL, 0, LVar1, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_JUMP_CHARGE | PLAYER_BUFF_HAMMER_CHARGE | PLAYER_BUFF_STONE | PLAYER_BUFF_HUSTLE | PLAYER_BUFF_STATIC | PLAYER_BUFF_TRANSPARENT | PLAYER_BUFF_CLOUD_NINE | PLAYER_BUFF_TURBO_CHARGE | PLAYER_BUFF_WATER_BLOCK | PLAYER_BUFF_PARTNER_GLOWING | 0xFFEFC04)
@ -1461,7 +1474,7 @@ EvtScript N(attackShockwaveDrain) = {
EVT_END
};
EvtScript N(attackFlameBreath) = {
EvtScript N(EVS_Attack_FireBreath) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
@ -1518,7 +1531,7 @@ EvtScript N(attackFlameBreath) = {
EVT_PLAY_EFFECT(EFFECT_FIRE_BREATH, 0, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, 50, 1, 24, 0)
EVT_ELSE
EVT_PLAY_EFFECT(EFFECT_FIRE_BREATH, 2, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, 50, 1, 24, 0)
EVT_CALL(N(UnkFireBreathFXFunc), LVarF)
EVT_CALL(N(SetBowserFireBreathScales), LVarF)
EVT_END_IF
EVT_THREAD
EVT_CALL(N(StartRumbleWithParams), 50, 148)
@ -1539,7 +1552,7 @@ EvtScript N(attackFlameBreath) = {
EVT_WAIT(15)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(30)
EVT_EXEC_WAIT(N(onAttackMissed))
EVT_EXEC_WAIT(N(EVS_AttackMissed))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
@ -1552,9 +1565,9 @@ EvtScript N(attackFlameBreath) = {
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetPartEventFlags, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_IF_FLAG(LVar0, ACTOR_EVENT_FLAG_ENCHANTED)
EVT_SET(LVar0, 16)
EVT_SET(LVar0, DMG_BOOSTED_FIRE_BREATH)
EVT_ELSE
EVT_SET(LVar0, 8)
EVT_SET(LVar0, DMG_FIRE_BREATH)
EVT_END_IF
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
@ -1577,7 +1590,7 @@ EvtScript N(attackFlameBreath) = {
EVT_END
};
EvtScript N(onBurnHit) = {
EvtScript N(EVS_BurnHit) = {
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar3)
EVT_IF_EQ(LVar3, 36)
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 1)
@ -1668,6 +1681,7 @@ EvtScript N(onBurnHit) = {
EVT_PLAY_EFFECT(EFFECT_SMOKE_BURST, 0, LVar0, LVar1, LVar2, LVar3, 10, 0)
EVT_END_IF
EVT_CASE_EQ(EVENT_BURN_DEATH)
// do nothing
EVT_END_SWITCH
EVT_RETURN
EVT_END

View File

@ -4,40 +4,38 @@
#include "sprite/npc/ParadePeach.h"
#include "sprite/player.h"
#define NAMESPACE A(bowser_intro)
#define NAMESPACE A(intro_bowser)
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(EVS_HandlePhase);
extern EvtScript N(unkDecorationScript);
extern EvtScript N(makeWalkingSounds);
extern EvtScript N(onHit);
extern EvtScript N(onDeath);
extern EvtScript N(attackClawSwipe);
extern EvtScript N(powerUp);
extern EvtScript N(attackFireBreath);
extern EvtScript N(EVS_AnimateImgFX);
extern EvtScript N(EVS_PlayFootstepSounds);
extern EvtScript N(EVS_OnHit);
extern EvtScript N(EVS_OnDeath);
extern EvtScript N(EVS_ReturnHome);
extern EvtScript N(useStarRod);
extern EvtScript N(EVS_Attack_ClawSwipe);
extern EvtScript N(EVS_Attack_FireBreath);
extern EvtScript N(EVS_UseStarRod);
extern EvtScript N(EVS_StarRodCast);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
AVAR_Unk_0 = 0,
AVAR_Unk_1 = 1,
AVAR_Unk_E = 14,
AVAR_TurnCount = 0,
AVAR_PeachSpoke = 1,
AVAR_Unused = 14,
};
enum N(ActorParams) {
DMG_UNK = 0,
};
enum N(OldActorVars) {
N(VAR_TURN_COUNTER) = 0,
N(VAR_PEACH_SPOKE) = 1,
DMG_CLAW_SWIPE = 1,
DMG_MEGA_CLAW_SWIPE = 3,
DMG_FIRE_BREATH = 10,
};
s32 N(DefaultAnims)[] = {
@ -59,7 +57,7 @@ s32 N(DefenseTable)[] = {
ELEMENT_END,
};
s32 N(DefenseTable_boosted)[] = {
s32 N(BoostedDefense)[] = {
ELEMENT_NORMAL, 1,
ELEMENT_END,
};
@ -89,7 +87,7 @@ s32 N(StatusTable)[] = {
STATUS_END,
};
s32 N(StatusTable_boosted)[] = {
s32 N(BoostedStatusTable)[] = {
STATUS_KEY_NORMAL, 0,
STATUS_KEY_DEFAULT, 0,
STATUS_KEY_SLEEP, 0,
@ -153,8 +151,8 @@ ActorBlueprint NAMESPACE = {
};
#include "common/StartRumbleWithParams.inc.c"
#include "common/UnkFireBreathFXFunc.inc.c"
#include "common/UnkBowserFunc1.inc.c"
#include "common/SetBowserFireBreathScales.inc.c"
#include "common/UpdateEnchantedBowserColors.inc.c"
#include "common/FadeBackgroundDarken.inc.c"
#include "common/FadeBackgroundLighten.inc.c"
#include "common/RemoveChillOut.inc.c"
@ -162,9 +160,9 @@ ActorBlueprint NAMESPACE = {
#include "common/StarRodPowerUpEffect.inc.c"
EvtScript N(EVS_Init) = {
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_PEACH_SPOKE), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_E, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_PeachSpoke, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unused, 0)
EVT_CALL(SetBattleMenuEnabledFlags, BTL_MENU_ENABLED_JUMP)
EVT_CALL(CreateNpc, NPC_BTL_COMPANION, ANIM_ParadePeach_IdleRaisedArms)
EVT_CALL(SetNpcYaw, NPC_BTL_COMPANION, 90)
@ -175,7 +173,7 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(ModifyActorDecoration, ACTOR_SELF, PRT_MAIN, 1, 100, 0, 0, 0)
EVT_EXEC(N(unkDecorationScript))
EVT_EXEC(N(EVS_AnimateImgFX))
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_NO_GAME_OVER, TRUE)
EVT_CALL(SetBattleFlagBits2, BS_FLAGS2_DONT_STOP_MUSIC, TRUE)
EVT_RETURN
@ -185,7 +183,7 @@ EvtScript N(EVS_Init) = {
EvtScript N(EVS_Idle) = {
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_LABEL(0)
EVT_EXEC_WAIT(N(makeWalkingSounds))
EVT_EXEC_WAIT(N(EVS_PlayFootstepSounds))
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
@ -197,9 +195,9 @@ EvtScript N(EVS_HandlePhase) = {
EVT_CALL(GetBattlePhase, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(PHASE_PLAYER_BEGIN)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_PEACH_SPOKE), LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_PEACH_SPOKE), 1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_PeachSpoke, LVar0)
EVT_IF_EQ(LVar0, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_PeachSpoke, TRUE)
EVT_CALL(EnableBattleStatusBar, FALSE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, -115, 0, 0)
@ -239,21 +237,21 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -261,14 +259,14 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET(LVar1, ANIM_BattleBowser_Idle)
EVT_EXEC_WAIT(EVS_Enemy_NoDamageHit)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_EQ(LVar0, 3)
EVT_CALL(ActorSpeak, MSG_Intro_005B, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Talk, ANIM_BattleBowser_Idle)
EVT_END_IF
@ -276,7 +274,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_EQ(EVENT_SPIKE_TAUNT)
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
@ -300,14 +298,14 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END
};
EvtScript N(onHit) = {
EvtScript N(EVS_OnHit) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EvtScript N(EVS_OnDeath) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -318,30 +316,30 @@ EvtScript N(onDeath) = {
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_ADD(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_LT(3)
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_CASE_EQ(3)
EVT_EXEC_WAIT(N(powerUp))
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_UseStarRod))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_CASE_EQ(4)
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_CASE_EQ(5)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT(30)
EVT_CALL(ActorSpeak, MSG_Intro_005C, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Talk, ANIM_BattleBowser_Idle)
EVT_EXEC_WAIT(N(attackFireBreath))
EVT_EXEC_WAIT(N(EVS_Attack_FireBreath))
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(attackClawSwipe) = {
EvtScript N(EVS_Attack_ClawSwipe) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
EVT_CALL(SetBattleCamZoom, 200)
@ -360,20 +358,20 @@ EvtScript N(attackClawSwipe) = {
EVT_WAIT(3)
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar1)
EVT_IF_LT(LVar1, 3)
EVT_SET(LVar0, 1)
EVT_SET(LVar0, DMG_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_SET(LVar0, 3)
EVT_SET(LVar0, DMG_MEGA_CLAW_SWIPE)
EVT_CALL(SetDamageSource, DMG_SRC_LAST_SLAP_LEFT)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 20)
EVT_THREAD
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_IF_GE(LVar0, 3)
EVT_CALL(SetNpcAnimation, NPC_BTL_COMPANION, ANIM_ParadePeach_Weep)
EVT_ELSE
@ -400,7 +398,7 @@ EvtScript N(attackClawSwipe) = {
EVT_END
};
EvtScript N(attackFireBreath) = {
EvtScript N(EVS_Attack_FireBreath) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
@ -423,8 +421,8 @@ EvtScript N(attackFireBreath) = {
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
EVT_SUB(LVar3, 40)
EVT_SET(LVar4, 20)
EVT_PLAY_EFFECT(EFFECT_FIRE_BREATH, 2, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, 50, 1, 24, 0)
EVT_CALL(N(UnkFireBreathFXFunc), LVarF)
EVT_PLAY_EFFECT(EFFECT_FIRE_BREATH, 2, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, 50, 1, 24)
EVT_CALL(N(SetBowserFireBreathScales), LVarF)
EVT_THREAD
EVT_CALL(N(StartRumbleWithParams), 50, 148)
EVT_CALL(PlaySound, SOUND_03BD)
@ -439,7 +437,7 @@ EvtScript N(attackFireBreath) = {
EVT_WAIT(30)
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, 10, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, DMG_FIRE_BREATH, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
@ -467,7 +465,7 @@ EvtScript N(attackFireBreath) = {
EVT_END
};
EvtScript N(powerUp) = {
EvtScript N(EVS_UseStarRod) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 30)
@ -495,7 +493,7 @@ EvtScript N(powerUp) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Brandish)
EVT_EXEC_WAIT(N(useStarRod))
EVT_EXEC_WAIT(N(EVS_StarRodCast))
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 15)
@ -505,14 +503,14 @@ EvtScript N(powerUp) = {
EVT_CALL(SetBattleCamOffsetZ, 0)
EVT_CALL(MoveBattleCamOver, 25)
EVT_CALL(ActorSpeak, MSG_Intro_005A, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_RearUpMock, ANIM_BattleBowser_RearUpStill)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable_boosted)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable_boosted)))
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(BoostedDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(BoostedStatusTable)))
EVT_RETURN
EVT_END
};
EvtScript N(EVS_ReturnHome) = {
EVT_SET(LVar0, 1)
EVT_SET(LVar0, PRT_MAIN)
EVT_CALL(GetActorPos, ACTOR_SELF, LVarA, LVarB, LVarC)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVarD, LVarE, LVarF)
@ -534,13 +532,13 @@ EvtScript N(EVS_ReturnHome) = {
EVT_END
};
EvtScript N(unkDecorationScript) = {
EVT_CALL(N(UnkBowserFunc1))
EvtScript N(EVS_AnimateImgFX) = {
EVT_CALL(N(UpdateEnchantedBowserColors))
EVT_RETURN
EVT_END
};
EvtScript N(useStarRod) = {
EvtScript N(EVS_StarRodCast) = {
EVT_CALL(N(FadeBackgroundDarken))
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
@ -585,8 +583,8 @@ EvtScript N(useStarRod) = {
EVT_CALL(RemoveEffect, LVarD)
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_MAIN, ACTOR_EVENT_FLAG_ENCHANTED, TRUE)
EVT_CALL(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 1, ACTOR_DECORATION_RADIAL_STAR_EMITTER)
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(DefenseTable_boosted)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable_boosted)))
EVT_CALL(SetDefenseTable, ACTOR_SELF, PRT_MAIN, EVT_PTR(N(BoostedDefense)))
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(BoostedStatusTable)))
EVT_CALL(N(RemoveChillOut))
EVT_WAIT(3)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar3)
@ -633,7 +631,7 @@ EvtScript N(useStarRod) = {
EVT_END
};
EvtScript N(jumpHome) = {
EvtScript N(EVS_ShockReaction) = {
EVT_IF_NE(LVar1, -1)
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_END_IF
@ -662,7 +660,7 @@ EvtScript N(jumpHome) = {
EVT_END
};
EvtScript N(makeWalkingSounds) = {
EvtScript N(EVS_PlayFootstepSounds) = {
EVT_CALL(GetAnimation, ACTOR_SELF, PRT_MAIN, LVar7)
EVT_IF_NE(LVar7, ANIM_BattleBowser_Walk)
EVT_IF_EQ(LVar3, ANIM_BattleBowser_Walk)

View File

@ -1,30 +1,38 @@
#include "../area.h"
#include "sprite/npc/BattleBowser.h"
#define NAMESPACE A(bowser)
#define NAMESPACE A(unused_bowser)
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(onHit);
extern EvtScript N(onDeath);
extern EvtScript N(normalAttack);
extern EvtScript N(attackShockwaveDrain);
extern EvtScript N(attackFlameBreath);
extern EvtScript N(attackClawSwipe);
extern EvtScript N(attackHeavyJump);
extern EvtScript N(EVS_OnHit);
extern EvtScript N(EVS_OnDeath);
extern EvtScript N(EVS_UseAttack);
extern EvtScript N(EVS_UseDrainingShockwave);
extern EvtScript N(EVS_Attack_FireBreath);
extern EvtScript N(EVS_Attack_ClawSwipe);
extern EvtScript N(EVS_Attack_BodySlam);
extern EvtScript N(EVS_ReturnHome);
extern EvtScript N(recover);
extern EvtScript N(EVS_Recover);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
N(VAR_TURN_COUNTER) = 1,
N(VAR_TURNS_AFTER_SHOCKWAVE) = 2,
N(VAR_3) = 3,
AVAR_TurnCount = 1,
AVAR_TurnsSinceShockwave = 2,
AVAR_DamageMultiplier = 3,
};
enum N(ActorParams) {
DMG_CLAW_SWIPE = 6,
DMG_BODY_SLAM = 6,
DMG_FIRE_BREATH = 8,
DMG_SHOCKWAVE = 4,
DMG_SHOCKWAVE_P = 3,
};
s32 N(DefaultAnims)[] = {
@ -88,8 +96,8 @@ ActorPartBlueprint N(ActorParts)[] = {
ActorBlueprint NAMESPACE = {
.flags = 0,
.type = ACTOR_TYPE_BOWSER_PHASE_1,
.level = ACTOR_LEVEL_BOWSER_PHASE_1,
.type = ACTOR_TYPE_HALLWAY_BOWSER,
.level = ACTOR_LEVEL_HALLWAY_BOWSER,
.maxHP = 50,
.partCount = ARRAY_COUNT(N(ActorParts)),
.partsData = N(ActorParts),
@ -113,9 +121,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_AFTER_SHOCKWAVE), 0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_3), 1)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_DamageMultiplier, 1)
EVT_RETURN
EVT_END
};
@ -137,21 +145,21 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -159,17 +167,17 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_OR_EQ(EVENT_ZERO_DAMAGE)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_SET(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_OnHit))
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIKE_TAUNT)
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LVar1, ANIM_BattleBowser_Hurt)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_OnDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
@ -191,14 +199,14 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END
};
EvtScript N(onHit) = {
EvtScript N(EVS_OnHit) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EvtScript N(EVS_OnDeath) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -208,60 +216,66 @@ EvtScript N(onDeath) = {
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
// only use regular attacks for the first few turns
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_ADD(LVar0, 1)
EVT_IF_LT(LVar0, 5)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURN_COUNTER), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_AFTER_SHOCKWAVE), 5)
EVT_EXEC_WAIT(N(normalAttack))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnCount, LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 5)
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_TURNS_AFTER_SHOCKWAVE), LVar0)
// increment shockwave turn counter
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
EVT_ADD(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_AFTER_SHOCKWAVE), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, LVar0)
// use normal attack if shockwave was used recently
EVT_IF_LT(LVar0, 4)
EVT_EXEC_WAIT(N(normalAttack))
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END_IF
// use shockwave if it hasn't been used recently
EVT_IF_GT(LVar0, 6)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_AFTER_SHOCKWAVE), 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
// use shockwave if HP is low, even if it hasn't met the normal time threshold
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
EVT_IF_LT(LVar0, 8)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_TURNS_AFTER_SHOCKWAVE), 0)
EVT_EXEC_WAIT(N(attackShockwaveDrain))
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_TurnsSinceShockwave, 0)
EVT_EXEC_WAIT(N(EVS_UseDrainingShockwave))
EVT_RETURN
EVT_END_IF
EVT_EXEC_WAIT(N(normalAttack))
// fallback to using a regular attack
EVT_EXEC_WAIT(N(EVS_UseAttack))
EVT_RETURN
EVT_END
};
EvtScript N(normalAttack) = {
EvtScript N(EVS_UseAttack) = {
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_STATIC)
EVT_EXEC_WAIT(N(attackFlameBreath))
EVT_EXEC_WAIT(N(EVS_Attack_FireBreath))
EVT_RETURN
EVT_END_IF
EVT_CALL(RandInt, 2, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(0)
EVT_EXEC_WAIT(N(attackClawSwipe))
EVT_EXEC_WAIT(N(EVS_Attack_ClawSwipe))
EVT_RETURN
EVT_CASE_EQ(1)
EVT_EXEC_WAIT(N(attackHeavyJump))
EVT_EXEC_WAIT(N(EVS_Attack_BodySlam))
EVT_RETURN
EVT_CASE_DEFAULT
EVT_EXEC_WAIT(N(attackFlameBreath))
EVT_EXEC_WAIT(N(EVS_Attack_FireBreath))
EVT_RETURN
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(attackClawSwipe) = {
EvtScript N(EVS_Attack_ClawSwipe) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
@ -299,8 +313,8 @@ EvtScript N(attackClawSwipe) = {
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_3), LVar0)
EVT_MUL(LVar0, 6)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_DamageMultiplier, LVar0)
EVT_MUL(LVar0, DMG_CLAW_SWIPE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
@ -323,7 +337,7 @@ EvtScript N(attackClawSwipe) = {
EVT_END
};
EvtScript N(attackHeavyJump) = {
EvtScript N(EVS_Attack_BodySlam) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
@ -384,8 +398,8 @@ EvtScript N(attackHeavyJump) = {
EVT_CALL(ShakeCam, CAM_BATTLE, 0, 4, EVT_FLOAT(3.0))
EVT_END_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Land)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_3), LVar0)
EVT_MUL(LVar0, 6)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_DamageMultiplier, LVar0)
EVT_MUL(LVar0, DMG_BODY_SLAM)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
@ -417,7 +431,7 @@ EvtScript N(attackHeavyJump) = {
EVT_END
};
EvtScript N(attackFlameBreath) = {
EvtScript N(EVS_Attack_FireBreath) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
@ -461,8 +475,8 @@ EvtScript N(attackFlameBreath) = {
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_3), LVar0)
EVT_MUL(LVar0, 8)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_DamageMultiplier, LVar0)
EVT_MUL(LVar0, DMG_FIRE_BREATH)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, LVar0, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
@ -486,7 +500,7 @@ EvtScript N(attackFlameBreath) = {
#include "common/FadeBackgroundDarken.inc.c"
#include "common/FadeBackgroundLighten.inc.c"
EvtScript N(attackShockwaveDrain) = {
EvtScript N(EVS_UseDrainingShockwave) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
@ -521,7 +535,7 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CASE_EQ(HIT_RESULT_MISS)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(15)
EVT_EXEC_WAIT(N(recover))
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_WAIT(30)
EVT_RETURN
EVT_CASE_EQ(HIT_RESULT_LUCKY)
@ -531,12 +545,12 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC, 0, 0, DMG_SHOCKWAVE_P, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(15)
EVT_EXEC_WAIT(N(recover))
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
@ -550,11 +564,11 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC, 0, 0, DMG_SHOCKWAVE_P, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(FreezeBattleState, FALSE)
EVT_END_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC, 0, STATUS_FLAG_POISON, 4, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_COSMIC, 0, STATUS_FLAG_POISON, DMG_SHOCKWAVE, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(RemovePlayerBuffs, PLAYER_BUFF_JUMP_CHARGE | PLAYER_BUFF_HAMMER_CHARGE | PLAYER_BUFF_STONE | PLAYER_BUFF_HUSTLE | PLAYER_BUFF_STATIC | PLAYER_BUFF_TRANSPARENT | PLAYER_BUFF_CLOUD_NINE | PLAYER_BUFF_TURBO_CHARGE | PLAYER_BUFF_WATER_BLOCK | PLAYER_BUFF_PARTNER_GLOWING | 0xFFEFC04)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
@ -562,7 +576,7 @@ EvtScript N(attackShockwaveDrain) = {
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleBowser_Idle)
EVT_WAIT(15)
EVT_EXEC_WAIT(N(recover))
EVT_EXEC_WAIT(N(EVS_Recover))
EVT_IF_EQ(LVarF, HIT_RESULT_10)
EVT_RETURN
EVT_END_IF
@ -593,7 +607,7 @@ EvtScript N(EVS_ReturnHome) = {
EVT_END
};
EvtScript N(recover) = {
EvtScript N(EVS_Recover) = {
EVT_CALL(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
EVT_ADD(LVar2, 60)
EVT_PLAY_EFFECT(EFFECT_SPARKLES, 0, LVar1, LVar2, LVar3, EVT_FLOAT(1.0), 0)
@ -607,9 +621,9 @@ EvtScript N(recover) = {
EVT_SET(LVar0, LVar1)
EVT_END_IF
EVT_CALL(SetEnemyHP, ACTOR_SELF, LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_3), LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_DamageMultiplier, LVar0)
EVT_ADD(LVar0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_3), LVar0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_DamageMultiplier, LVar0)
EVT_RETURN
EVT_END
};

View File

@ -1,10 +1,10 @@
#include "area.h"
extern ActorBlueprint A(bowser);
extern ActorBlueprint A(bowser_intro);
extern ActorBlueprint A(bowser_phase_1);
extern ActorBlueprint A(bowser_phase_2);
extern ActorBlueprint A(bowser_phase_3);
extern ActorBlueprint A(unused_bowser);
extern ActorBlueprint A(intro_bowser);
extern ActorBlueprint A(hallway_bowser);
extern ActorBlueprint A(final_bowser_1);
extern ActorBlueprint A(final_bowser_2);
extern Stage A(kpa_01);
extern Stage A(kkj_01);
@ -13,23 +13,23 @@ extern Stage A(kkj_02);
Vec3i A(bowser_pos) = { 80, 0, -10 };
Formation A(Formation_00) = {
ACTOR_BY_IDX(A(bowser), BTL_POS_GROUND_C, 10),
ACTOR_BY_IDX(A(unused_bowser), BTL_POS_GROUND_C, 10),
};
Formation A(Formation_01) = {
ACTOR_BY_IDX(A(bowser_intro), BTL_POS_GROUND_C, 10),
ACTOR_BY_IDX(A(intro_bowser), BTL_POS_GROUND_C, 10),
};
Formation A(Formation_02) = {
ACTOR_BY_IDX(A(bowser_phase_1), BTL_POS_GROUND_C, 10),
ACTOR_BY_IDX(A(hallway_bowser), BTL_POS_GROUND_C, 10),
};
Formation A(Formation_03) = {
ACTOR_BY_POS(A(bowser_phase_2), A(bowser_pos), 10),
ACTOR_BY_POS(A(final_bowser_1), A(bowser_pos), 10),
};
Formation A(Formation_04) = {
ACTOR_BY_POS(A(bowser_phase_3), A(bowser_pos), 10),
ACTOR_BY_POS(A(final_bowser_2), A(bowser_pos), 10),
};
BattleList A(Formations) = {

View File

@ -0,0 +1,88 @@
#ifndef _LAVA_PIRANHA_COMMON_H_
#define _LAVA_PIRANHA_COMMON_H_
enum N(BattleCommon) {
ACTOR_BOSS = ACTOR_ENEMY0,
ACTOR_BUD_1 = ACTOR_ENEMY1,
ACTOR_BUD_2 = ACTOR_ENEMY2,
ACTOR_PETIT_1 = ACTOR_ENEMY3,
ACTOR_PETIT_2 = ACTOR_ENEMY4,
// actor vars specific to certain actors in the boss battle
AVAR_Boss_IsSecondPhase = 0,
AVAR_Boss_Dying = 1,
AVAR_Bud_WhichVine = 0,
AVAR_Bud_PetitCount = 9,
AVAR_Petit_Parent = 0,
// actor vars used by both the boss and buds
AVAR_Common_PiranhaState = 5,
AVAR_Common_FlameEffect = 6,
AVAR_Common_UnkAnim1 = 7,
AVAR_Common_UnkAnim2 = 8,
AVAR_Common_FlameSize = 10,
AVAR_Common_StunTurnsLeft = 11,
AVAR_Common_NextTwitchMode = 12,
AVAR_Common_NextTwitchTime = 13,
};
// state for piranha plant and buds during the second phase
enum N(PiranhaState) {
PIRANHA_STATE_STUNNED = 0,
PIRANHA_STATE_FIERY = 1,
PIRANHA_STATE_DEAD = 2, // used by buds when HP = 0
};
enum {
VINE_0 = 0,
VINE_1 = 1,
VINE_2 = 2,
VINE_3 = 3,
NUM_VINES = 4,
SHATTER_GROUND = 4, // animator ID for ground crack and shattering animation
};
enum N(VineAnims) {
// VINE_0
VINE_ANIM_BOSS_IDLE = 0,
VINE_ANIM_BOSS_TWITCH = 1, // slight sway while stunned
VINE_ANIM_BOSS_ATTACK = 2, // lurch forward for attack
VINE_ANIM_BOSS_POST_ATTACK = 3, // withdraw after attack
VINE_ANIM_BOSS_STUNNED_HEAVY_HIT = 4,
VINE_ANIM_BOSS_STUNNED_LIGHT_HIT = 5,
VINE_ANIM_BOSS_HEAVY_HIT = 6,
VINE_ANIM_BOSS_LIGHT_HIT = 7,
VINE_ANIM_BOSS_STUNNED_DEATH_BEGIN = 8,
VINE_ANIM_BOSS_DEATH_BEGIN = 9,
VINE_ANIM_BOSS_DEATH_MIDDLE = 10, // swing violently and stop, ending upright
VINE_ANIM_BOSS_DEATH_COLLAPSE = 11, // fall down
VINE_ANIM_BOSS_EMERGE = 12, // emerge
VINE_ANIM_BOSS_STUN = 13, // stun
VINE_ANIM_BOSS_RECOVER = 14, // un-stun
VINE_ANIM_BOSS_DUP_EMERGE = 15, // unused?
VINE_ANIM_BOSS_SINK_AWAY = 16,
VINE_ANIM_BOSS_TALK = 17,
// VINE_1 and VINE_2
VINE_ANIM_BUD_ATTACK = 18,
VINE_ANIM_BUD_STUNNED_HEAVY_HIT = 19,
VINE_ANIM_BUD_STUNNED_LIGHT_HIT = 20,
VINE_ANIM_BUD_HEAVY_HIT = 21,
VINE_ANIM_BUD_LIGHT_HIT = 22,
VINE_ANIM_BUD_STUNNED_DEATH_BEGIN = 23,
VINE_ANIM_BUD_DEATH_BEGIN = 24,
VINE_ANIM_BUD_DEATH_MIDDLE = 25,
VINE_ANIM_BUD_DEATH_COLLAPSE = 26,
VINE_ANIM_BUD_STUN = 27, // stun
VINE_ANIM_BUD_EMERGE = 28, // emerge
VINE_ANIM_BUD_RECOVER = 29, // un-stun
VINE_ANIM_BUD_TWITCH = 30,
VINE_ANIM_BUD_IDLE = 31,
VINE_ANIM_BUD_DUP_EMERGE = 32, // unused?
VINE_ANIM_BUD_SINK_AWAY = 33,
// VINE_3
VINE_ANIM_EXTRA_IDLE = 34,
VINE_ANIM_EXTRA_DEATH = 35,
VINE_ANIM_EXTRA_EMERGE = 36,
};
#endif // _LAVA_PIRANHA_COMMON_H_

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
#include "../area.h"
#include "sprite/npc/PetitPiranha.h"
#include "effects.h"
#include "boss_common.h"
#define NAMESPACE A(petit_piranha)
@ -8,19 +9,14 @@ extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(onDeath);
extern EvtScript N(EVS_Death);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
AVAR_Unk_0 = 0,
AVAR_Unk_9 = 9,
};
enum N(ActorParams) {
DMG_UNK = 0,
DMG_IMPACT = 6,
};
s32 N(DefaultAnims)[] = {
@ -149,7 +145,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_SET_CONST(LVar2, -1)
EVT_EXEC_WAIT(EVS_Enemy_BurnHit)
EVT_WAIT(10)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_Death)
@ -162,7 +158,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_SpinSmashHit)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_Death)
@ -175,7 +171,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_Death)
@ -197,7 +193,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_Hit)
EVT_WAIT(10)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_PetitPiranha_Anim03)
EVT_EXEC_WAIT(EVS_Enemy_Death)
@ -220,7 +216,8 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END
};
EvtScript N(recoverHP) = {
// unused
EvtScript N(EVS_AbsorbDamage) = {
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_SPARKLES, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 0)
EVT_ADD(LVar0, 20)
@ -237,17 +234,17 @@ EvtScript N(recoverHP) = {
EVT_END
};
API_CALLABLE(N(SetFlameUnk2C)) {
API_CALLABLE(N(SetFlameScaleH)) {
Bytecode* args = script->ptrReadPos;
EffectInstance* effect = (EffectInstance*) evt_get_variable(script, *args++);
FlameFXData* flame = effect->data.flame;
flame->unk_2C = evt_get_float_variable(script, *args++);
flame->scaleH = evt_get_float_variable(script, *args++);
return ApiStatus_DONE2;
}
API_CALLABLE(N(SetFlameX)) {
API_CALLABLE(N(SetFlamePosX)) {
Bytecode* args = script->ptrReadPos;
EffectInstance* effect = (EffectInstance*) evt_get_variable(script, *args++);
FlameFXData* flame = effect->data.flame;
@ -313,7 +310,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_ADD(LVar0, 10)
EVT_SET(LVar1, 0)
EVT_ADD(LVar2, 2)
EVT_PLAY_EFFECT(EFFECT_FLAME, 1, LVar0, LVar1, LVar2, EVT_FLOAT(0.3), LVarA, 0)
EVT_PLAY_EFFECT(EFFECT_FLAME, FX_FLAME_RED, LVar0, LVar1, LVar2, EVT_FLOAT(0.3), LVarA, 0)
EVT_THREAD
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
@ -322,7 +319,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UpdateLerp)
EVT_SET(LVar4, LVar3)
EVT_SUB(LVar4, LVar0)
EVT_CALL(N(SetFlameX), LVarA, LVar4)
EVT_CALL(N(SetFlamePosX), LVarA, LVar4)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
@ -333,7 +330,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_MULF(LVar0, EVT_FLOAT(0.01))
EVT_CALL(N(SetFlameUnk2C), LVarA, LVar0)
EVT_CALL(N(SetFlameScaleH), LVarA, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
@ -347,7 +344,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_MULF(LVar0, EVT_FLOAT(0.01))
EVT_CALL(N(SetFlameUnk2C), LVarA, LVar0)
EVT_CALL(N(SetFlameScaleH), LVarA, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
@ -359,13 +356,13 @@ EvtScript N(EVS_TakeTurn) = {
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_WAIT(2)
EVT_SET(LVar8, 6)
EVT_SET(LVar8, DMG_IMPACT)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar9, DAMAGE_TYPE_FIRE, SUPPRESS_EVENT_ALL, 0, LVar8, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVar9)
@ -376,7 +373,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LOOP(0)
EVT_CALL(UpdateLerp)
EVT_MULF(LVar0, EVT_FLOAT(0.01))
EVT_CALL(N(SetFlameUnk2C), LVarA, LVar0)
EVT_CALL(N(SetFlameScaleH), LVarA, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 0)
EVT_BREAK_LOOP
@ -391,25 +388,25 @@ EvtScript N(EVS_TakeTurn) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EVT_CALL(ActorExists, ACTOR_ENEMY0, LVar0)
EvtScript N(EVS_Death) = {
EVT_CALL(ActorExists, ACTOR_BOSS, LVar0)
EVT_IF_FALSE(LVar0)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorHP, ACTOR_BOSS, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorHP, ACTOR_ENEMY0, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_RETURN
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Unk_0, LVar0)
EVT_CALL(GetActorVar, LVar0, AVAR_Unk_9, LVar1)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Petit_Parent, LVar0)
EVT_CALL(GetActorVar, LVar0, AVAR_Bud_PetitCount, LVar1)
EVT_SUB(LVar1, 1)
EVT_CALL(SetActorVar, LVar0, AVAR_Unk_9, LVar1)
EVT_CALL(SetActorVar, LVar0, AVAR_Bud_PetitCount, LVar1)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,933 @@
#include "../area.h"
#include "animation_script.h"
#include "mapfs/kzn_bt05_shape.h"
#define NAMESPACE A(lava_piranha_anim1)
StaticAnimatorNode N(8021A120) = {
.vertexStartOffset = -1,
.modelID = MODEL_hahen,
};
StaticAnimatorNode N(8021A14C) = {
.rot = { 249, 0, -9 },
.sibling = &N(8021A120),
.vertexStartOffset = -1,
.modelID = MODEL_h11,
};
StaticAnimatorNode N(8021A178) = {
.sibling = &N(8021A14C),
.vertexStartOffset = -1,
.modelID = MODEL_h10,
};
StaticAnimatorNode N(8021A1A4) = {
.sibling = &N(8021A178),
.vertexStartOffset = -1,
.modelID = MODEL_h09,
};
StaticAnimatorNode N(8021A1D0) = {
.sibling = &N(8021A1A4),
.vertexStartOffset = -1,
.modelID = MODEL_h08,
};
StaticAnimatorNode N(8021A1FC) = {
.sibling = &N(8021A1D0),
.vertexStartOffset = -1,
.modelID = MODEL_h07,
};
StaticAnimatorNode N(8021A228) = {
.sibling = &N(8021A1FC),
.vertexStartOffset = -1,
.modelID = MODEL_h06,
};
StaticAnimatorNode N(8021A254) = {
.sibling = &N(8021A228),
.vertexStartOffset = -1,
.modelID = MODEL_h05,
};
StaticAnimatorNode N(8021A280) = {
.sibling = &N(8021A254),
.vertexStartOffset = -1,
.modelID = MODEL_h04,
};
StaticAnimatorNode N(8021A2AC) = {
.sibling = &N(8021A280),
.vertexStartOffset = -1,
.modelID = MODEL_h03,
};
StaticAnimatorNode N(8021A2D8) = {
.sibling = &N(8021A2AC),
.vertexStartOffset = -1,
.modelID = MODEL_h02,
};
StaticAnimatorNode N(8021A304) = {
.child = &N(8021A2D8),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(8021A304),
&N(8021A2D8),
&N(8021A2AC),
&N(8021A280),
&N(8021A254),
&N(8021A228),
&N(8021A1FC),
&N(8021A1D0),
&N(8021A1A4),
&N(8021A178),
&N(8021A14C),
&N(8021A120),
NULL,
};
AnimScript N(8021A364) = {
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
as_SetScale(1, 1.0, 1.0, 1.0)
as_SetRotation(2, 0.0, 0.0, 0.0)
as_SetPos(2, 0, 0, 0)
as_SetScale(2, 1.0, 1.0, 1.0)
as_SetRotation(3, 0.0, 0.0, 0.0)
as_SetPos(3, 0, 0, 0)
as_SetScale(3, 1.0, 1.0, 1.0)
as_SetRotation(4, 0.0, 0.0, 0.0)
as_SetPos(4, 0, 0, 0)
as_SetScale(4, 1.0, 1.0, 1.0)
as_SetRotation(5, 0.0, 0.0, 0.0)
as_SetPos(5, 0, 0, 0)
as_SetScale(5, 1.0, 1.0, 1.0)
as_SetRotation(6, 0.0, 0.0, 0.0)
as_SetPos(6, 0, 0, 0)
as_SetScale(6, 1.0, 1.0, 1.0)
as_SetRotation(7, 0.0, 0.0, 0.0)
as_SetPos(7, 0, 0, 0)
as_SetScale(7, 1.0, 1.0, 1.0)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 0, 0, 0)
as_SetScale(8, 1.0, 1.0, 1.0)
as_SetRotation(9, 0.0, 0.0, 0.0)
as_SetPos(9, 0, 0, 0)
as_SetScale(9, 1.0, 1.0, 1.0)
as_SetRotation(10, 0.0, 0.0, 0.0)
as_SetPos(10, 0, 0, 0)
as_SetScale(10, 1.0, 1.0, 1.0)
as_SetRotation(11, 1.37, 0.0, -0.05)
as_SetPos(11, 0, 0, 0)
as_SetScale(11, 1.0, 1.0, 1.0)
as_SetRotation(12, 0.0, 0.0, 0.0)
as_SetPos(12, 0, 0, 0)
as_SetScale(12, 1.0, 1.0, 1.0)
as_Wait(1)
as_SetRotation(2, -13.76, -0.705, -5.85)
as_SetPos(2, 1, 32, -4)
as_SetRotation(3, -14.695, -1.65, -12.745)
as_SetPos(3, 5, 44, -6)
as_SetRotation(4, -3.52, -0.19, -6.35)
as_SetPos(4, 2, 27, -1)
as_SetRotation(5, 0.845, 0.2, -26.455)
as_SetPos(5, 19, 80, 0)
as_SetRotation(6, 7.65, 3.335, -47.09)
as_SetPos(6, 53, 121, 9)
as_SetRotation(7, 17.75, 3.71, -23.43)
as_SetPos(7, 18, 66, 14)
as_SetRotation(8, 86.985, 12.745, -13.425)
as_SetPos(8, 10, 39, 43)
as_SetRotation(9, 8.04, -0.28, 4.01)
as_SetPos(9, 0, 6, 1)
as_SetRotation(10, 2.775, -0.495, 20.25)
as_SetPos(10, 1, -7, 0)
as_SetRotation(11, 1.72, -0.27, 9.935)
as_SetPos(11, -1, 1, 0)
as_SetRotation(12, -4.855, 0.135, 3.325)
as_SetPos(12, 0, 9, 0)
as_Wait(1)
as_SetRotation(2, -27.39, -2.78, -11.37)
as_SetPos(2, 5, 62, -13)
as_SetRotation(3, -28.73, -6.415, -24.705)
as_SetPos(3, 18, 84, -20)
as_SetRotation(4, -7.005, -0.775, -12.68)
as_SetPos(4, 6, 54, -3)
as_SetRotation(5, 1.52, 0.76, -52.905)
as_SetPos(5, 68, 145, 2)
as_SetRotation(6, -169.545, 168.79, 85.955)
as_SetPos(6, 171, 164, 31)
as_SetRotation(7, 32.885, 13.97, -45.09)
as_SetPos(7, 56, 114, 43)
as_SetRotation(8, 0.0, 153.815, -179.995)
as_SetPos(8, 17, 8, 76)
as_SetRotation(9, 16.045, -1.12, 7.945)
as_SetPos(9, -1, 13, 3)
as_SetRotation(10, 5.21, -1.915, 40.46)
as_SetPos(10, 8, -13, -1)
as_SetRotation(11, 2.02, -0.595, 19.925)
as_SetPos(11, -2, 3, 0)
as_SetRotation(12, -9.695, 0.56, 6.63)
as_SetPos(12, 0, 17, -1)
as_Wait(1)
as_SetRotation(2, -40.81, -6.085, -16.265)
as_SetPos(2, 11, 88, -27)
as_SetRotation(3, -41.72, -13.855, -35.36)
as_SetPos(3, 36, 116, -42)
as_SetRotation(4, -10.4, -1.74, -18.965)
as_SetPos(4, 13, 79, -7)
as_SetRotation(5, 1.875, 1.555, -79.35)
as_SetPos(5, 137, 182, 4)
as_SetRotation(6, -173.63, 161.435, 37.59)
as_SetPos(6, 275, 107, 50)
as_SetRotation(7, 44.005, 28.865, -64.99)
as_SetPos(7, 106, 131, 81)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 9, -12, 41)
as_SetRotation(9, 23.98, -2.495, 11.725)
as_SetPos(9, -2, 20, 4)
as_SetRotation(10, 7.005, -4.1, 60.625)
as_SetPos(10, 19, -16, -2)
as_SetRotation(11, 2.265, -0.97, 29.91)
as_SetPos(11, -1, 5, 0)
as_SetRotation(12, -14.5, 1.26, 9.89)
as_SetPos(12, -1, 25, -1)
as_Wait(1)
as_SetRotation(2, -54.03, -10.425, -20.29)
as_SetPos(2, 19, 110, -45)
as_SetRotation(3, -53.675, -23.38, -44.475)
as_SetPos(3, 59, 137, -68)
as_SetRotation(4, -13.675, -3.065, -25.185)
as_SetPos(4, 21, 103, -11)
as_SetRotation(5, -178.16, 177.565, 74.18)
as_SetPos(5, 211, 185, 7)
as_SetRotation(6, 177.725, 159.625, -12.6)
as_SetPos(6, 297, -6, 54)
as_SetRotation(7, 49.835, 46.41, -85.4)
as_SetPos(7, 154, 111, 118)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 3, 35, 16)
as_SetRotation(9, 31.815, -4.38, 15.28)
as_SetPos(9, -2, 26, 4)
as_SetRotation(10, 7.945, -6.76, 80.795)
as_SetPos(10, 34, -13, -4)
as_SetRotation(11, 2.44, -1.385, 39.9)
as_SetPos(11, 1, 7, 0)
as_SetRotation(12, -19.27, 2.225, 13.08)
as_SetPos(12, -1, 33, -2)
as_Wait(1)
as_SetRotation(2, -67.16, -15.565, -23.265)
as_SetPos(2, 28, 126, -65)
as_SetRotation(3, -64.92, -34.445, -51.96)
as_SetPos(3, 82, 146, -95)
as_SetRotation(4, -16.795, -4.74, -31.335)
as_SetPos(4, 31, 125, -17)
as_SetRotation(5, -178.585, 176.805, 47.705)
as_SetPos(5, 274, 157, 9)
as_SetRotation(6, 170.755, 164.69, -62.055)
as_SetPos(6, 223, -97, 40)
as_SetRotation(7, -135.465, 115.705, 66.165)
as_SetPos(7, 189, 63, 145)
as_SetRotation(8, 86.985, 12.745, -13.425)
as_SetPos(8, 13, 72, 59)
as_SetRotation(9, 39.55, -6.725, 18.565)
as_SetPos(9, -2, 31, 4)
as_SetRotation(10, 7.895, -9.58, 101.065)
as_SetPos(10, 51, -4, -7)
as_SetRotation(11, 2.53, -1.82, 49.885)
as_SetPos(11, 4, 10, -1)
as_SetRotation(12, -23.98, 3.455, 16.18)
as_SetPos(12, -1, 40, -2)
as_Wait(1)
as_SetRotation(2, -80.415, -21.225, -24.995)
as_SetPos(2, 37, 136, -87)
as_SetRotation(3, -76.125, -46.565, -57.58)
as_SetPos(3, 104, 143, -120)
as_SetRotation(4, -19.72, -6.735, -37.4)
as_SetPos(4, 42, 144, -23)
as_SetRotation(5, -179.31, 176.31, 21.205)
as_SetPos(5, 314, 104, 10)
as_SetRotation(6, -9.865, 6.98, 70.505)
as_SetPos(6, 102, -100, 18)
as_SetRotation(7, 179.995, 105.045, 0.0)
as_SetPos(7, 204, 0, 156)
as_SetRotation(8, 0.0, 153.815, -179.995)
as_SetPos(8, 21, 39, 92)
as_SetRotation(9, 47.195, -9.485, 21.515)
as_SetPos(9, -2, 36, 4)
as_SetRotation(10, 6.85, -12.21, 121.525)
as_SetPos(10, 66, 9, -9)
as_SetRotation(11, 2.555, -2.265, 59.87)
as_SetPos(11, 9, 13, -1)
as_SetRotation(12, -28.62, 4.935, 19.17)
as_SetPos(12, -2, 46, -3)
as_Wait(1)
as_SetRotation(2, -94.09, -27.115, -25.3)
as_SetPos(2, 46, 140, -107)
as_SetRotation(3, -88.755, -59.31, -60.385)
as_SetPos(3, 122, 129, -141)
as_SetRotation(4, -22.435, -9.02, -43.385)
as_SetPos(4, 55, 160, -30)
as_SetRotation(5, 179.82, 176.19, -5.3)
as_SetPos(5, 323, 40, 10)
as_SetRotation(6, -4.17, 0.87, 23.59)
as_SetPos(6, 15, -8, 2)
as_SetPos(7, 204, 1, 156)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 13, 16, 58)
as_SetRotation(9, 54.745, -12.615, 24.1)
as_SetPos(9, -1, 40, 3)
as_SetRotation(10, 4.915, -14.31, 142.23)
as_SetPos(10, 78, 29, -11)
as_SetRotation(11, 2.5, -2.705, 69.865)
as_SetPos(11, 14, 17, -1)
as_SetRotation(12, -33.19, 6.64, 22.045)
as_SetPos(12, -2, 52, -3)
as_Wait(1)
as_SetRotation(2, -108.555, -32.895, -23.965)
as_SetPos(2, 54, 137, -127)
as_SetRotation(3, 72.265, -107.96, 124.08)
as_SetPos(3, 134, 108, -155)
as_SetRotation(4, -24.91, -11.575, -49.305)
as_SetPos(4, 69, 174, -38)
as_SetRotation(5, 178.99, 176.47, -31.81)
as_SetPos(5, 298, -20, 9)
as_SetRotation(6, 4.17, 0.87, -23.59)
as_SetPos(6, 21, 120, 3)
as_SetPos(7, 204, 2, 156)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 7, 62, 33)
as_SetRotation(9, 62.265, -16.04, 26.265)
as_SetPos(9, -1, 43, 2)
as_SetRotation(10, 2.325, -15.605, 163.155)
as_SetPos(10, 86, 53, -12)
as_SetRotation(11, 2.37, -3.13, 79.86)
as_SetPos(11, 20, 21, -2)
as_SetRotation(12, -37.69, 8.575, 24.785)
as_SetPos(12, -2, 57, -3)
as_Wait(1)
as_SetRotation(2, -124.23, -38.175, -20.75)
as_SetPos(2, 61, 128, -143)
as_SetRotation(3, 17.335, -98.305, 164.975)
as_SetPos(3, 139, 82, -160)
as_SetRotation(4, -27.125, -14.365, -55.165)
as_SetPos(4, 84, 185, -47)
as_SetRotation(5, 178.375, 177.085, -58.3)
as_SetPos(5, 246, -63, 8)
as_SetRotation(6, 9.865, 6.98, -70.51)
as_SetPos(6, 115, 204, 21)
as_SetPos(7, 204, 1, 156)
as_SetRotation(8, 86.985, 12.745, -13.425)
as_SetPos(8, 17, 97, 76)
as_SetRotation(9, 69.795, -19.715, 27.985)
as_SetPos(9, 0, 44, 1)
as_SetRotation(10, -0.59, -15.915, -175.78)
as_SetPos(10, 87, 78, -12)
as_SetRotation(11, 2.165, -3.525, 89.865)
as_SetPos(11, 27, 26, -2)
as_SetRotation(12, -42.115, 10.71, 27.38)
as_SetPos(12, -2, 61, -3)
as_Wait(1)
as_SetRotation(2, 38.56, -137.495, 164.505)
as_SetPos(2, 66, 115, -155)
as_SetRotation(3, -61.42, -104.005, -130.21)
as_SetPos(3, 135, 55, -156)
as_SetRotation(4, -29.07, -17.365, -61.0)
as_SetPos(4, 100, 193, -55)
as_SetRotation(5, 178.095, 177.915, -84.77)
as_SetPos(5, 176, -78, 5)
as_SetRotation(6, -170.755, 164.69, 62.055)
as_SetPos(6, 238, 191, 43)
as_SetPos(7, 204, 0, 156)
as_SetRotation(8, 0.0, 153.815, -179.995)
as_SetPos(8, 25, 62, 109)
as_SetRotation(9, 77.395, -23.575, 29.205)
as_SetPos(9, 0, 44, 0)
as_SetRotation(10, -3.415, -15.2, -154.765)
as_SetPos(10, 82, 103, -11)
as_SetRotation(11, 1.89, -3.885, 99.875)
as_SetPos(11, 33, 32, -3)
as_SetRotation(12, -46.475, 13.04, 29.81)
as_SetPos(12, -2, 64, -3)
as_Wait(1)
as_SetRotation(2, 19.79, -134.615, 171.65)
as_SetPos(2, 69, 98, -162)
as_SetRotation(3, -86.115, -116.395, -119.82)
as_SetPos(3, 125, 32, -143)
as_SetRotation(4, -30.71, -20.535, -66.82)
as_SetPos(4, 117, 197, -65)
as_SetRotation(5, -1.78, 1.215, 68.77)
as_SetPos(5, 105, -59, 3)
as_SetRotation(6, -177.725, 159.625, 12.6)
as_SetPos(6, 308, 91, 56)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 17, 36, 74)
as_SetRotation(9, 85.15, -27.55, 29.88)
as_SetPos(9, 0, 43, -1)
as_SetRotation(10, -5.785, -13.55, -133.915)
as_SetPos(10, 70, 126, -9)
as_SetRotation(11, 1.565, -4.185, 109.885)
as_SetPos(11, 40, 39, -3)
as_SetRotation(12, -50.775, 15.54, 32.085)
as_SetPos(12, -2, 67, -3)
as_Wait(1)
as_SetRotation(2, 0.0, -133.6, -179.995)
as_SetPos(2, 70, 79, -164)
as_SetRotation(3, 80.055, -50.77, 58.925)
as_SetPos(3, 107, 16, -124)
as_SetRotation(4, -32.025, -23.845, -72.68)
as_SetPos(4, 133, 198, -74)
as_SetRotation(5, -1.285, 0.495, 42.32)
as_SetPos(5, 47, -11, 1)
as_SetRotation(6, 173.63, 161.435, -37.59)
as_SetPos(6, 280, -26, 51)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 11, 80, 49)
as_SetRotation(9, 93.17, -31.57, 29.945)
as_SetPos(9, 1, 41, -3)
as_SetRotation(10, -7.385, -11.205, -113.31)
as_SetPos(10, 54, 143, -7)
as_SetRotation(11, 1.185, -4.42, 119.905)
as_SetPos(11, 46, 45, -3)
as_SetRotation(12, -55.025, 18.2, 34.185)
as_SetPos(12, -2, 69, -3)
as_Wait(1)
as_SetRotation(2, -19.79, -134.615, -171.65)
as_SetPos(2, 69, 60, -161)
as_SetRotation(3, 68.61, -38.385, 54.065)
as_SetPos(3, 86, 10, -99)
as_SetRotation(4, -33.0, -27.27, -78.625)
as_SetPos(4, 150, 196, -83)
as_SetRotation(5, -0.52, 0.07, 15.87)
as_SetPos(5, 14, 57, 0)
as_SetRotation(6, 169.545, 168.79, -85.955)
as_SetPos(6, 174, -83, 31)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 21, 114, 92)
as_SetRotation(9, 101.57, -35.56, 29.33)
as_SetPos(9, 2, 38, -4)
as_SetRotation(10, -8.035, -8.455, -92.935)
as_SetPos(10, 35, 154, -4)
as_SetRotation(11, 0.775, -4.6, 129.93)
as_SetPos(11, 52, 52, -4)
as_SetRotation(12, -59.245, 20.995, 36.1)
as_Wait(1)
as_SetRotation(2, -38.56, -137.495, -164.505)
as_SetPos(2, 65, 41, -152)
as_SetRotation(3, 57.475, -26.915, 47.155)
as_SetPos(3, 63, 15, -73)
as_SetRotation(4, -33.58, -30.755, -84.7)
as_SetPos(4, 167, 192, -92)
as_SetRotation(5, 0.345, 0.025, -10.58)
as_SetPos(5, 14, 134, 0)
as_SetRotation(6, -7.65, 3.335, 47.085)
as_SetPos(6, 61, -40, 11)
as_SetRotation(8, 0.0, 153.815, -179.995)
as_SetPos(8, 29, 77, 126)
as_SetRotation(9, 110.475, -39.425, 27.93)
as_SetPos(9, 3, 34, -6)
as_SetRotation(10, -7.68, -5.66, -72.72)
as_SetPos(10, 14, 158, -1)
as_SetRotation(11, 0.34, -4.695, 139.955)
as_SetPos(11, 56, 60, -4)
as_SetRotation(12, -63.45, 23.925, 37.835)
as_Wait(1)
as_SetRotation(2, 124.225, -38.175, 20.75)
as_SetPos(2, 59, 25, -139)
as_SetRotation(3, 45.815, -16.82, 38.575)
as_SetPos(3, 42, 32, -48)
as_SetRotation(4, 146.255, -145.705, 89.02)
as_SetPos(4, 183, 184, -101)
as_SetRotation(5, 1.15, 0.385, -37.03)
as_SetPos(5, 46, 203, 1)
as_SetRotation(6, 0.0, 0.0, 0.0)
as_SetPos(6, 17, 75, 3)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 21, 49, 91)
as_SetRotation(9, 120.035, -43.06, 25.65)
as_SetPos(9, 3, 29, -7)
as_SetRotation(10, -6.38, -3.155, -52.56)
as_SetPos(10, -5, 155, 0)
as_SetRotation(11, -0.105, -4.715, 149.98)
as_SetPos(11, 60, 66, -4)
as_SetRotation(12, -67.65, 26.955, 39.36)
as_SetPos(12, -2, 68, -3)
as_Wait(1)
as_SetRotation(2, 108.555, -32.895, 23.965)
as_SetPos(2, 52, 11, -122)
as_SetRotation(3, 33.18, -8.63, 28.415)
as_SetPos(3, 23, 58, -27)
as_SetRotation(4, 146.58, -142.19, 82.47)
as_SetPos(4, 198, 174, -110)
as_SetRotation(5, 1.71, 1.055, -63.48)
as_SetPos(5, 105, 249, 3)
as_SetRotation(6, 7.65, 3.335, -47.09)
as_SetPos(6, 72, 186, 13)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 15, 91, 66)
as_SetRotation(9, 130.385, -46.355, 22.385)
as_SetPos(9, 4, 24, -8)
as_SetRotation(10, -4.295, -1.245, -32.38)
as_SetPos(10, -22, 145, 3)
as_SetRotation(11, -0.55, -4.66, 160.005)
as_SetPos(11, 63, 73, -4)
as_SetRotation(12, -71.885, 30.08, 40.675)
as_SetPos(12, -2, 67, -3)
as_Wait(1)
as_SetRotation(2, 94.085, -27.11, 25.3)
as_SetPos(2, 44, 3, -103)
as_SetRotation(3, 19.47, -2.91, 16.85)
as_SetPos(3, 11, 92, -13)
as_SetRotation(4, 147.45, -138.725, 75.555)
as_SetPos(4, 212, 161, -118)
as_SetRotation(5, 1.905, 1.905, -89.935)
as_SetPos(5, 177, 264, 5)
as_SetRotation(6, -169.545, 168.79, 85.955)
as_SetPos(6, 191, 220, 34)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 25, 123, 109)
as_SetRotation(9, 141.625, -49.145, 18.08)
as_SetPos(9, 4, 19, -9)
as_SetRotation(10, -1.685, -0.175, -12.15)
as_SetPos(10, -34, 130, 4)
as_SetRotation(11, -0.97, -4.525, 170.03)
as_SetPos(11, 64, 80, -5)
as_SetRotation(12, -76.18, 33.285, 41.75)
as_SetPos(12, -2, 65, -2)
as_Wait(1)
as_SetRotation(2, 80.415, -21.225, 24.995)
as_SetPos(2, 35, 0, -83)
as_SetRotation(3, 4.935, -0.18, 4.285)
as_SetPos(3, 6, 131, -7)
as_SetRotation(4, 148.95, -135.365, 68.17)
as_SetPos(4, 226, 145, -125)
as_SetRotation(5, -178.285, 177.235, 63.595)
as_SetPos(5, 248, 245, 8)
as_SetRotation(6, -173.63, 161.435, 37.59)
as_SetPos(6, 296, 153, 53)
as_SetRotation(8, 0.0, 153.815, -179.995)
as_SetPos(8, 33, 84, 142)
as_SetRotation(9, 153.765, -51.295, 12.765)
as_SetPos(9, 4, 13, -9)
as_SetRotation(10, 1.125, -0.075, 8.095)
as_SetPos(10, -39, 112, 5)
as_SetRotation(11, -1.375, -4.32, -179.945)
as_SetPos(11, 64, 86, -5)
as_SetRotation(12, -80.575, 36.545, 42.56)
as_SetPos(12, -1, 63, -2)
as_Wait(1)
as_SetRotation(2, 67.16, -15.565, 23.265)
as_SetPos(2, 27, 0, -63)
as_SetRotation(3, -9.84, -0.735, -8.55)
as_SetPos(3, 9, 169, -10)
as_SetRotation(4, 151.17, -132.185, 60.205)
as_SetPos(4, 237, 126, -132)
as_SetRotation(5, -178.845, 176.565, 37.105)
as_SetPos(5, 304, 195, 10)
as_SetRotation(6, 177.725, 159.625, -12.6)
as_SetPos(6, 319, 29, 58)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 25, 54, 107)
as_SetRotation(9, 166.655, -52.66, 6.62)
as_SetPos(9, 4, 6, -9)
as_SetRotation(10, 3.805, -0.96, 28.335)
as_SetPos(10, -39, 93, 5)
as_SetRotation(11, -1.725, -4.05, -169.93)
as_SetPos(11, 62, 91, -5)
as_SetRotation(12, -85.11, 39.855, 43.095)
as_SetPos(12, -1, 60, -2)
as_Wait(1)
as_SetRotation(2, 54.03, -10.425, 20.29)
as_SetPos(2, 19, 6, -45)
as_SetRotation(3, -24.155, -4.505, -20.84)
as_SetPos(3, 19, 203, -22)
as_SetRotation(4, 154.205, -129.265, 51.55)
as_SetPos(4, 248, 104, -137)
as_SetRotation(5, -179.65, 176.21, 10.6)
as_SetPos(5, 332, 125, 11)
as_SetRotation(6, 170.755, 164.69, -62.055)
as_SetPos(6, 246, -70, 44)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 19, 95, 82)
as_SetRotation(9, -179.995, -53.125, 0.0)
as_SetPos(9, 4, 0, -9)
as_SetRotation(10, 6.02, -2.715, 48.53)
as_SetPos(10, -33, 76, 4)
as_SetRotation(11, -2.025, -3.72, -159.915)
as_SetPos(11, 59, 96, -5)
as_SetRotation(12, -89.84, 43.185, 43.285)
as_SetPos(12, -1, 56, -1)
as_Wait(1)
as_SetRotation(2, 40.81, -6.085, 16.265)
as_SetPos(2, 12, 16, -29)
as_SetRotation(3, -37.515, -11.115, -31.97)
as_SetPos(3, 36, 229, -42)
as_SetRotation(4, 158.13, -126.685, 42.095)
as_SetPos(4, 256, 80, -142)
as_SetRotation(5, 179.475, 176.255, -15.91)
as_SetPos(5, 327, 49, 10)
as_SetRotation(6, -9.865, 6.98, 70.505)
as_SetPos(6, 125, -81, 22)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 29, 124, 125)
as_SetPos(9, 4, 1, -9)
as_SetRotation(10, 7.495, -5.12, 68.69)
as_SetPos(10, -23, 63, 3)
as_SetRotation(11, -2.27, -3.345, -149.915)
as_SetPos(11, 55, 99, -5)
as_SetRotation(12, -94.835, 46.51, 43.095)
as_SetPos(12, -1, 52, -1)
as_Wait(1)
as_SetRotation(2, 27.39, -2.78, 11.37)
as_SetPos(2, 7, 30, -18)
as_SetRotation(3, -49.795, -20.005, -41.61)
as_SetPos(3, 57, 245, -66)
as_SetRotation(4, 162.975, -124.565, 31.795)
as_SetPos(4, 263, 54, -146)
as_SetRotation(5, 178.71, 176.675, -42.41)
as_SetPos(5, 290, -16, 9)
as_SetRotation(6, -4.17, 0.87, 23.59)
as_SetPos(6, 39, 0, 7)
as_SetRotation(8, 0.0, 153.815, 179.995)
as_SetPos(8, 37, 84, 159)
as_SetPos(9, 4, 2, -9)
as_SetRotation(10, 8.04, -7.89, 88.89)
as_SetPos(10, -9, 54, 1)
as_SetRotation(11, -2.44, -2.935, -139.915)
as_SetPos(11, 49, 101, -5)
as_SetRotation(12, -100.185, 49.815, 42.44)
as_SetPos(12, 0, 47, -1)
as_Wait(1)
as_SetRotation(2, 13.76, -0.705, 5.85)
as_SetPos(2, 5, 45, -12)
as_SetRotation(3, -61.22, -30.615, -49.655)
as_SetPos(3, 81, 248, -93)
as_SetRotation(4, 165.485, -123.77, 26.8)
as_SetPos(4, 266, 50, -147)
as_SetRotation(5, 178.215, 177.4, -68.89)
as_SetPos(5, 230, -60, 7)
as_SetRotation(6, 4.17, 0.87, -23.59)
as_SetPos(6, 44, 120, 8)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 28, 53, 124)
as_SetPos(9, 4, 1, -9)
as_SetRotation(10, 7.59, -10.675, 109.22)
as_SetPos(10, 3, 51, 0)
as_SetRotation(11, -2.54, -2.495, -129.915)
as_SetPos(11, 42, 102, -5)
as_SetRotation(12, -105.995, 53.06, 41.235)
as_SetPos(12, 0, 41, 0)
as_Wait(1)
as_SetRotation(2, 0.0, 0.0, 0.0)
as_SetPos(2, 4, 61, -11)
as_SetRotation(3, -72.33, -42.435, -55.95)
as_SetPos(3, 104, 238, -119)
as_SetRotation(4, 168.165, -123.105, 21.655)
as_SetPos(4, 268, 44, -149)
as_SetRotation(5, -1.9, 1.73, 84.64)
as_SetPos(5, 158, -73, 5)
as_SetRotation(6, 9.865, 6.98, -70.51)
as_SetPos(6, 139, 196, 25)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 23, 92, 99)
as_SetPos(9, 4, 0, -9)
as_SetRotation(10, 6.175, -13.13, 129.775)
as_SetPos(10, 16, 54, -2)
as_SetRotation(11, -2.555, -2.05, -119.93)
as_SetPos(11, 35, 101, -5)
as_SetRotation(12, -112.4, 56.2, 39.345)
as_SetPos(12, 0, 35, 0)
as_Wait(1)
as_SetRotation(2, -13.76, -0.705, -5.85)
as_SetPos(2, 6, 76, -15)
as_SetRotation(3, -84.225, -55.02, -59.9)
as_SetPos(3, 123, 216, -142)
as_SetRotation(4, 170.985, -122.58, 16.37)
as_SetPos(4, 270, 37, -150)
as_SetRotation(5, -1.62, 0.9, 58.19)
as_SetPos(5, 90, -53, 3)
as_SetRotation(6, -170.755, 164.69, 62.055)
as_SetPos(6, 261, 173, 47)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 33, 121, 142)
as_SetRotation(10, 3.94, -14.935, 150.58)
as_SetPos(10, 24, 61, -3)
as_SetRotation(11, -2.5, -1.61, -109.94)
as_SetPos(11, 26, 98, -5)
as_SetRotation(12, -119.575, 59.2, 36.61)
as_SetPos(12, 0, 28, 0)
as_Wait(1)
as_SetRotation(2, -27.39, -2.78, -11.37)
as_SetPos(2, 10, 89, -25)
as_SetRotation(3, 80.02, -112.13, 121.08)
as_SetPos(3, 138, 186, -158)
as_SetRotation(4, 173.925, -122.2, 10.975)
as_SetPos(4, 272, 27, -151)
as_SetRotation(5, -1.0, 0.285, 31.74)
as_SetPos(5, 41, -6, 1)
as_SetRotation(6, -177.725, 159.625, 12.6)
as_SetPos(6, 330, 64, 60)
as_SetRotation(8, 0.0, 153.815, 179.995)
as_SetPos(8, 40, 79, 175)
as_SetRotation(10, 1.17, -15.855, 171.575)
as_SetPos(10, 28, 70, -3)
as_SetRotation(11, -2.36, -1.18, -99.955)
as_SetPos(11, 16, 94, -5)
as_SetRotation(12, -127.71, 61.975, 32.85)
as_SetPos(12, 0, 21, 0)
as_Wait(1)
as_SetRotation(2, -40.815, -6.085, -16.265)
as_SetPos(2, 16, 97, -39)
as_SetRotation(3, 44.59, -100.555, 142.375)
as_SetPos(3, 145, 149, -167)
as_SetRotation(4, 176.94, -121.97, 5.505)
as_SetPos(4, 273, 14, -151)
as_SetRotation(5, -0.175, 0.005, 5.285)
as_SetPos(5, 20, 56, 0)
as_SetRotation(6, 173.63, 161.435, -37.59)
as_SetPos(6, 302, -62, 54)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 32, 46, 140)
as_SetRotation(10, -1.75, -15.75, -167.36)
as_SetPos(10, 26, 81, -3)
as_SetRotation(11, -2.16, -0.785, -89.965)
as_SetPos(11, 7, 87, -5)
as_SetRotation(12, -137.02, 64.435, 27.87)
as_SetPos(12, 0, 12, 0)
as_Wait(1)
as_SetRotation(2, -54.03, -10.425, -20.29)
as_SetPos(2, 24, 101, -56)
as_SetRotation(3, -44.59, -100.56, -142.37)
as_SetPos(3, 144, 110, -166)
as_SetRotation(4, -179.995, -121.885, 0.0)
as_SetPos(4, 274, 0, -152)
as_SetRotation(5, 0.685, 0.125, -21.16)
as_SetPos(5, 33, 121, 1)
as_SetRotation(6, 169.545, 168.79, -85.955)
as_SetPos(6, 194, -129, 35)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 26, 84, 115)
as_SetRotation(10, -4.44, -14.64, -146.395)
as_SetPos(10, 17, 91, -2)
as_SetRotation(11, -1.89, -0.435, -79.975)
as_SetPos(11, -2, 78, -5)
as_SetRotation(12, -147.66, 66.475, 21.51)
as_SetPos(12, 0, 3, 0)
as_Wait(1)
as_SetRotation(2, -67.16, -15.565, -23.265)
as_SetPos(2, 32, 99, -76)
as_SetRotation(3, -80.02, -112.13, -121.08)
as_SetPos(3, 135, 73, -156)
as_SetPos(4, 275, 1, -152)
as_SetRotation(5, 1.405, 0.62, -47.615)
as_SetPos(5, 77, 172, 2)
as_SetRotation(6, -7.65, 3.335, 47.085)
as_SetPos(6, 80, -95, 14)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 36, 111, 158)
as_SetRotation(10, -6.53, -12.685, -125.645)
as_SetPos(10, 3, 97, 0)
as_SetRotation(11, -1.56, -0.13, -69.99)
as_SetPos(11, -12, 68, -5)
as_SetRotation(12, -156.0, 67.59, 16.19)
as_SetPos(12, 0, 6, 0)
as_Wait(1)
as_SetRotation(2, -80.415, -21.225, -24.995)
as_SetPos(2, 42, 91, -98)
as_SetRotation(3, 84.225, -55.02, 59.9)
as_SetPos(3, 120, 42, -138)
as_SetPos(4, 275, 2, -153)
as_SetRotation(5, 1.835, 1.385, -74.06)
as_SetPos(5, 143, 197, 4)
as_SetRotation(6, 0.0, 0.0, 0.0)
as_SetPos(6, 34, 10, 6)
as_SetRotation(8, 0.0, 153.815, 179.995)
as_SetPos(8, 44, 67, 192)
as_SetRotation(10, -7.76, -10.135, -105.135)
as_SetPos(10, -14, 98, 2)
as_SetRotation(11, -1.18, 0.105, -60.005)
as_SetPos(11, -22, 55, -6)
as_SetRotation(12, -164.93, 68.38, 10.26)
as_SetPos(12, 0, 8, 1)
as_Wait(1)
as_SetRotation(2, -98.77, -21.56, 22.775)
as_SetPos(2, 7, 14, -112)
as_SetRotation(3, 72.33, -42.435, 55.95)
as_SetPos(3, 100, 20, -115)
as_SetPos(4, 276, 1, -153)
as_SetRotation(5, -178.12, 177.735, 79.48)
as_SetPos(5, 217, 189, 7)
as_SetPos(6, 34, 13, 6)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 36, 33, 157)
as_SetRotation(10, -8.015, -7.325, -84.84)
as_SetPos(10, -35, 93, 4)
as_SetRotation(11, 0.615, 0.32, -18.365)
as_SetPos(11, -49, 35, -5)
as_SetRotation(12, -174.285, 68.805, 3.91)
as_SetPos(12, 0, 9, 1)
as_Wait(1)
as_SetRotation(2, 68.705, -170.56, -112.815)
as_SetPos(2, 37, -65, -100)
as_SetRotation(3, 61.22, -30.615, 49.655)
as_SetPos(3, 78, 9, -89)
as_SetPos(4, 277, 0, -154)
as_SetRotation(5, -178.475, 176.94, 53.005)
as_SetPos(5, 284, 148, 9)
as_SetPos(6, 34, 16, 6)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 30, 68, 132)
as_SetRotation(10, -7.27, -4.605, -64.655)
as_SetPos(10, -55, 81, 7)
as_SetRotation(11, 2.11, -0.715, 23.255)
as_SetPos(11, -54, 4, -6)
as_SetRotation(12, 176.19, 68.84, -2.61)
as_Wait(1)
as_SetRotation(2, 68.025, 172.365, -71.78)
as_SetPos(2, 114, -100, -67)
as_SetRotation(3, 49.795, -20.005, 41.61)
as_SetPos(3, 55, 9, -64)
as_SetRotation(5, -179.145, 176.38, 26.51)
as_SetPos(5, 329, 81, 10)
as_SetPos(6, 34, 17, 6)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 40, 93, 175)
as_SetRotation(10, -5.63, -2.3, -44.49)
as_SetPos(10, -73, 63, 10)
as_SetRotation(11, 2.54, -2.485, 64.87)
as_SetPos(11, -36, -20, -8)
as_SetRotation(12, 166.78, 68.495, -9.02)
as_SetPos(12, 0, 6, 1)
as_Wait(1)
as_SetRotation(2, 79.355, 159.265, -27.95)
as_SetPos(2, 192, -69, -33)
as_SetRotation(3, 37.515, -11.115, 31.97)
as_SetPos(3, 36, 21, -41)
as_SetRotation(5, 179.995, 176.175, 0.0)
as_SetPos(5, 345, 0, 11)
as_SetPos(6, 34, 16, 6)
as_SetRotation(8, 0.0, 153.815, 179.995)
as_SetPos(8, 48, 47, 208)
as_SetRotation(10, -3.3, -0.71, -24.29)
as_SetPos(10, -88, 40, 12)
as_SetRotation(11, 1.68, -4.085, 106.545)
as_SetPos(11, -5, -28, -9)
as_SetRotation(12, 157.745, 67.775, -15.045)
as_SetPos(12, 0, 3, 1)
as_Wait(1)
as_SetRotation(2, 97.66, 158.04, 19.785)
as_SetPos(2, 227, 11, -18)
as_SetRotation(3, 24.155, -4.505, 20.84)
as_SetPos(3, 21, 41, -24)
as_SetPos(5, 345, 3, 11)
as_SetPos(6, 34, 13, 6)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 40, 11, 174)
as_SetRotation(10, -0.565, -0.015, -4.05)
as_SetPos(10, -96, 27, 13)
as_SetRotation(11, -0.025, -4.72, 148.31)
as_SetPos(11, 20, -15, -10)
as_SetRotation(12, 163.11, 68.25, -11.485)
as_SetPos(12, 0, 5, 0)
as_Wait(1)
as_SetRotation(2, 110.83, 169.55, 64.525)
as_SetPos(2, 197, 96, -31)
as_SetRotation(3, 9.84, -0.735, 8.55)
as_SetPos(3, 13, 67, -15)
as_SetPos(5, 345, 6, 11)
as_SetPos(6, 34, 10, 6)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 34, 44, 149)
as_SetRotation(10, 2.235, -0.32, 16.2)
as_SetPos(10, -98, 12, 13)
as_SetRotation(11, -1.725, -4.05, -169.93)
as_SetPos(11, 27, 10, -10)
as_SetRotation(12, 168.64, 68.595, -7.76)
as_Wait(1)
as_SetRotation(2, -67.7, -6.575, -74.39)
as_SetPos(2, 118, 140, -65)
as_SetRotation(3, -4.935, -0.18, -4.285)
as_SetPos(3, 14, 94, -16)
as_SetPos(5, 345, 7, 11)
as_SetPos(6, 34, 11, 6)
as_SetRotation(8, 86.98, 12.745, -13.425)
as_SetPos(8, 44, 66, 192)
as_SetRotation(10, 4.765, -1.565, 36.42)
as_SetPos(10, -94, -3, 13)
as_SetRotation(11, -1.615, -4.145, -173.265)
as_SetPos(11, 27, 9, -10)
as_SetRotation(12, 174.285, 68.805, -3.91)
as_SetPos(12, 0, 3, 0)
as_Wait(1)
as_SetRotation(2, -78.33, -20.195, -30.885)
as_SetPos(2, 35, 112, -101)
as_SetRotation(3, -19.47, -2.91, -16.85)
as_SetPos(3, 22, 120, -25)
as_SetPos(5, 345, 6, 11)
as_SetPos(6, 34, 12, 6)
as_SetRotation(8, 0.0, 153.815, 179.995)
as_SetPos(8, 52, 18, 225)
as_SetRotation(10, 6.705, -3.615, 56.59)
as_SetPos(10, -84, -17, 11)
as_SetRotation(11, -1.495, -4.235, -176.605)
as_SetPos(11, 27, 7, -10)
as_SetRotation(12, 179.995, 68.875, 0.0)
as_SetPos(12, 0, 0, 0)
as_Wait(1)
as_SetRotation(2, -96.535, -22.305, 16.79)
as_SetPos(2, -6, 28, -119)
as_SetRotation(3, -33.185, -8.63, -28.415)
as_SetPos(3, 36, 139, -42)
as_SetPos(5, 345, 3, 11)
as_SetPos(6, 34, 11, 6)
as_SetRotation(8, -86.98, 12.745, 13.425)
as_SetPos(8, 44, -20, 190)
as_SetRotation(10, 7.83, -6.2, 76.76)
as_SetPos(10, -70, -29, 9)
as_SetRotation(11, -1.375, -4.32, -179.945)
as_SetPos(11, 27, 3, -10)
as_Wait(1)
as_SetRotation(2, 69.67, -168.57, -118.14)
as_SetPos(2, 15, -66, -109)
as_SetRotation(3, -45.815, -16.82, -38.575)
as_SetPos(3, 57, 148, -65)
as_SetPos(5, 345, 0, 11)
as_SetPos(6, 34, 10, 6)
as_SetRotation(8, 0.0, 0.0, 0.0)
as_SetPos(8, 38, 9, 165)
as_SetRotation(10, 7.985, -9.02, 96.995)
as_SetPos(10, -54, -35, 7)
as_SetPos(11, 27, 0, -10)
as_Wait(1)
as_SetRotation(3, -57.475, -26.915, -47.155)
as_SetPos(3, 80, 147, -92)
as_SetPos(5, 345, 1, 11)
as_SetRotation(10, 7.135, -11.715, 117.41)
as_SetPos(10, -38, -29, 5)
as_Wait(1)
as_SetRotation(3, -68.61, -38.385, -54.065)
as_SetPos(3, 103, 133, -119)
as_SetPos(5, 345, 2, 11)
as_SetRotation(10, 5.365, -13.95, 138.065)
as_SetPos(10, -24, -18, 3)
as_Wait(1)
as_SetRotation(3, -80.06, -50.77, -58.925)
as_SetPos(3, 124, 107, -143)
as_SetPos(5, 345, 1, 11)
as_SetRotation(10, 2.88, -15.42, 158.955)
as_SetPos(10, -14, -7, 2)
as_Wait(1)
as_SetRotation(3, 86.115, -116.395, 119.82)
as_SetPos(3, 140, 71, -161)
as_SetPos(5, 345, 0, 11)
as_SetRotation(10, 0.0, -15.935, 179.995)
as_SetPos(10, -10, 0, 1)
as_Wait(1)
as_Restart
as_End
};

View File

@ -1,4 +1,4 @@
#include "lava_piranha_anim1.inc.c"
#include "lava_piranha_anim2.inc.c"
#include "lava_piranha_anim3.inc.c"
#include "lava_piranha_anim4.inc.c"
#include "anim_shatter_ground.inc.c"
#include "skel_main_vine.inc.c"
#include "skel_side_vine.inc.c"
#include "skel_extra_vine.inc.c"

View File

@ -1,932 +0,0 @@
#include "../area.h"
#include "animation_script.h"
#define NAMESPACE A(lava_piranha_anim1)
StaticAnimatorNode N(8021A120) = {
.vertexStartOffset = -1,
.modelID = 89,
};
StaticAnimatorNode N(8021A14C) = {
.rot = { 249, 0, -9 },
.sibling = &N(8021A120),
.vertexStartOffset = -1,
.modelID = 88,
};
StaticAnimatorNode N(8021A178) = {
.sibling = &N(8021A14C),
.vertexStartOffset = -1,
.modelID = 87,
};
StaticAnimatorNode N(8021A1A4) = {
.sibling = &N(8021A178),
.vertexStartOffset = -1,
.modelID = 86,
};
StaticAnimatorNode N(8021A1D0) = {
.sibling = &N(8021A1A4),
.vertexStartOffset = -1,
.modelID = 85,
};
StaticAnimatorNode N(8021A1FC) = {
.sibling = &N(8021A1D0),
.vertexStartOffset = -1,
.modelID = 84,
};
StaticAnimatorNode N(8021A228) = {
.sibling = &N(8021A1FC),
.vertexStartOffset = -1,
.modelID = 83,
};
StaticAnimatorNode N(8021A254) = {
.sibling = &N(8021A228),
.vertexStartOffset = -1,
.modelID = 82,
};
StaticAnimatorNode N(8021A280) = {
.sibling = &N(8021A254),
.vertexStartOffset = -1,
.modelID = 81,
};
StaticAnimatorNode N(8021A2AC) = {
.sibling = &N(8021A280),
.vertexStartOffset = -1,
.modelID = 80,
};
StaticAnimatorNode N(8021A2D8) = {
.sibling = &N(8021A2AC),
.vertexStartOffset = -1,
.modelID = 79,
};
StaticAnimatorNode N(8021A304) = {
.child = &N(8021A2D8),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(8021A304),
&N(8021A2D8),
&N(8021A2AC),
&N(8021A280),
&N(8021A254),
&N(8021A228),
&N(8021A1FC),
&N(8021A1D0),
&N(8021A1A4),
&N(8021A178),
&N(8021A14C),
&N(8021A120),
NULL,
};
AnimScript N(8021A364) = {
AS_SET_ROTATION, 1, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 1, 0, 0, 0,
AS_SET_SCALE, 1, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 2, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 2, 0, 0, 0,
AS_SET_SCALE, 2, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 3, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 3, 0, 0, 0,
AS_SET_SCALE, 3, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 4, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 4, 0, 0, 0,
AS_SET_SCALE, 4, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 5, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 5, 0, 0, 0,
AS_SET_SCALE, 5, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 6, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 6, 0, 0, 0,
AS_SET_SCALE, 6, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 7, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 7, 0, 0, 0,
AS_SET_SCALE, 7, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 0, 0, 0,
AS_SET_SCALE, 8, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 9, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 9, 0, 0, 0,
AS_SET_SCALE, 9, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 10, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 10, 0, 0, 0,
AS_SET_SCALE, 10, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 11, AS_F(1.37), AS_F(0.0), AS_F(-0.05),
AS_SET_POS, 11, 0, 0, 0,
AS_SET_SCALE, 11, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_SET_ROTATION, 12, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 12, 0, 0, 0,
AS_SET_SCALE, 12, AS_F(1.0), AS_F(1.0), AS_F(1.0),
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-13.76), AS_F(-0.705), AS_F(-5.85),
AS_SET_POS, 2, 1, 32, -4,
AS_SET_ROTATION, 3, AS_F(-14.695), AS_F(-1.65), AS_F(-12.745),
AS_SET_POS, 3, 5, 44, -6,
AS_SET_ROTATION, 4, AS_F(-3.52), AS_F(-0.19), AS_F(-6.35),
AS_SET_POS, 4, 2, 27, -1,
AS_SET_ROTATION, 5, AS_F(0.845), AS_F(0.2), AS_F(-26.455),
AS_SET_POS, 5, 19, 80, 0,
AS_SET_ROTATION, 6, AS_F(7.65), AS_F(3.335), AS_F(-47.09),
AS_SET_POS, 6, 53, 121, 9,
AS_SET_ROTATION, 7, AS_F(17.75), AS_F(3.71), AS_F(-23.43),
AS_SET_POS, 7, 18, 66, 14,
AS_SET_ROTATION, 8, AS_F(86.985), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 10, 39, 43,
AS_SET_ROTATION, 9, AS_F(8.04), AS_F(-0.28), AS_F(4.01),
AS_SET_POS, 9, 0, 6, 1,
AS_SET_ROTATION, 10, AS_F(2.775), AS_F(-0.495), AS_F(20.25),
AS_SET_POS, 10, 1, -7, 0,
AS_SET_ROTATION, 11, AS_F(1.72), AS_F(-0.27), AS_F(9.935),
AS_SET_POS, 11, -1, 1, 0,
AS_SET_ROTATION, 12, AS_F(-4.855), AS_F(0.135), AS_F(3.325),
AS_SET_POS, 12, 0, 9, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-27.39), AS_F(-2.78), AS_F(-11.37),
AS_SET_POS, 2, 5, 62, -13,
AS_SET_ROTATION, 3, AS_F(-28.73), AS_F(-6.415), AS_F(-24.705),
AS_SET_POS, 3, 18, 84, -20,
AS_SET_ROTATION, 4, AS_F(-7.005), AS_F(-0.775), AS_F(-12.68),
AS_SET_POS, 4, 6, 54, -3,
AS_SET_ROTATION, 5, AS_F(1.52), AS_F(0.76), AS_F(-52.905),
AS_SET_POS, 5, 68, 145, 2,
AS_SET_ROTATION, 6, AS_F(-169.545), AS_F(168.79), AS_F(85.955),
AS_SET_POS, 6, 171, 164, 31,
AS_SET_ROTATION, 7, AS_F(32.885), AS_F(13.97), AS_F(-45.09),
AS_SET_POS, 7, 56, 114, 43,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(-179.995),
AS_SET_POS, 8, 17, 8, 76,
AS_SET_ROTATION, 9, AS_F(16.045), AS_F(-1.12), AS_F(7.945),
AS_SET_POS, 9, -1, 13, 3,
AS_SET_ROTATION, 10, AS_F(5.21), AS_F(-1.915), AS_F(40.46),
AS_SET_POS, 10, 8, -13, -1,
AS_SET_ROTATION, 11, AS_F(2.02), AS_F(-0.595), AS_F(19.925),
AS_SET_POS, 11, -2, 3, 0,
AS_SET_ROTATION, 12, AS_F(-9.695), AS_F(0.56), AS_F(6.63),
AS_SET_POS, 12, 0, 17, -1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-40.81), AS_F(-6.085), AS_F(-16.265),
AS_SET_POS, 2, 11, 88, -27,
AS_SET_ROTATION, 3, AS_F(-41.72), AS_F(-13.855), AS_F(-35.36),
AS_SET_POS, 3, 36, 116, -42,
AS_SET_ROTATION, 4, AS_F(-10.4), AS_F(-1.74), AS_F(-18.965),
AS_SET_POS, 4, 13, 79, -7,
AS_SET_ROTATION, 5, AS_F(1.875), AS_F(1.555), AS_F(-79.35),
AS_SET_POS, 5, 137, 182, 4,
AS_SET_ROTATION, 6, AS_F(-173.63), AS_F(161.435), AS_F(37.59),
AS_SET_POS, 6, 275, 107, 50,
AS_SET_ROTATION, 7, AS_F(44.005), AS_F(28.865), AS_F(-64.99),
AS_SET_POS, 7, 106, 131, 81,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 9, -12, 41,
AS_SET_ROTATION, 9, AS_F(23.98), AS_F(-2.495), AS_F(11.725),
AS_SET_POS, 9, -2, 20, 4,
AS_SET_ROTATION, 10, AS_F(7.005), AS_F(-4.1), AS_F(60.625),
AS_SET_POS, 10, 19, -16, -2,
AS_SET_ROTATION, 11, AS_F(2.265), AS_F(-0.97), AS_F(29.91),
AS_SET_POS, 11, -1, 5, 0,
AS_SET_ROTATION, 12, AS_F(-14.5), AS_F(1.26), AS_F(9.89),
AS_SET_POS, 12, -1, 25, -1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-54.03), AS_F(-10.425), AS_F(-20.29),
AS_SET_POS, 2, 19, 110, -45,
AS_SET_ROTATION, 3, AS_F(-53.675), AS_F(-23.38), AS_F(-44.475),
AS_SET_POS, 3, 59, 137, -68,
AS_SET_ROTATION, 4, AS_F(-13.675), AS_F(-3.065), AS_F(-25.185),
AS_SET_POS, 4, 21, 103, -11,
AS_SET_ROTATION, 5, AS_F(-178.16), AS_F(177.565), AS_F(74.18),
AS_SET_POS, 5, 211, 185, 7,
AS_SET_ROTATION, 6, AS_F(177.725), AS_F(159.625), AS_F(-12.6),
AS_SET_POS, 6, 297, -6, 54,
AS_SET_ROTATION, 7, AS_F(49.835), AS_F(46.41), AS_F(-85.4),
AS_SET_POS, 7, 154, 111, 118,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 3, 35, 16,
AS_SET_ROTATION, 9, AS_F(31.815), AS_F(-4.38), AS_F(15.28),
AS_SET_POS, 9, -2, 26, 4,
AS_SET_ROTATION, 10, AS_F(7.945), AS_F(-6.76), AS_F(80.795),
AS_SET_POS, 10, 34, -13, -4,
AS_SET_ROTATION, 11, AS_F(2.44), AS_F(-1.385), AS_F(39.9),
AS_SET_POS, 11, 1, 7, 0,
AS_SET_ROTATION, 12, AS_F(-19.27), AS_F(2.225), AS_F(13.08),
AS_SET_POS, 12, -1, 33, -2,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-67.16), AS_F(-15.565), AS_F(-23.265),
AS_SET_POS, 2, 28, 126, -65,
AS_SET_ROTATION, 3, AS_F(-64.92), AS_F(-34.445), AS_F(-51.96),
AS_SET_POS, 3, 82, 146, -95,
AS_SET_ROTATION, 4, AS_F(-16.795), AS_F(-4.74), AS_F(-31.335),
AS_SET_POS, 4, 31, 125, -17,
AS_SET_ROTATION, 5, AS_F(-178.585), AS_F(176.805), AS_F(47.705),
AS_SET_POS, 5, 274, 157, 9,
AS_SET_ROTATION, 6, AS_F(170.755), AS_F(164.69), AS_F(-62.055),
AS_SET_POS, 6, 223, -97, 40,
AS_SET_ROTATION, 7, AS_F(-135.465), AS_F(115.705), AS_F(66.165),
AS_SET_POS, 7, 189, 63, 145,
AS_SET_ROTATION, 8, AS_F(86.985), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 13, 72, 59,
AS_SET_ROTATION, 9, AS_F(39.55), AS_F(-6.725), AS_F(18.565),
AS_SET_POS, 9, -2, 31, 4,
AS_SET_ROTATION, 10, AS_F(7.895), AS_F(-9.58), AS_F(101.065),
AS_SET_POS, 10, 51, -4, -7,
AS_SET_ROTATION, 11, AS_F(2.53), AS_F(-1.82), AS_F(49.885),
AS_SET_POS, 11, 4, 10, -1,
AS_SET_ROTATION, 12, AS_F(-23.98), AS_F(3.455), AS_F(16.18),
AS_SET_POS, 12, -1, 40, -2,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-80.415), AS_F(-21.225), AS_F(-24.995),
AS_SET_POS, 2, 37, 136, -87,
AS_SET_ROTATION, 3, AS_F(-76.125), AS_F(-46.565), AS_F(-57.58),
AS_SET_POS, 3, 104, 143, -120,
AS_SET_ROTATION, 4, AS_F(-19.72), AS_F(-6.735), AS_F(-37.4),
AS_SET_POS, 4, 42, 144, -23,
AS_SET_ROTATION, 5, AS_F(-179.31), AS_F(176.31), AS_F(21.205),
AS_SET_POS, 5, 314, 104, 10,
AS_SET_ROTATION, 6, AS_F(-9.865), AS_F(6.98), AS_F(70.505),
AS_SET_POS, 6, 102, -100, 18,
AS_SET_ROTATION, 7, AS_F(179.995), AS_F(105.045), AS_F(0.0),
AS_SET_POS, 7, 204, 0, 156,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(-179.995),
AS_SET_POS, 8, 21, 39, 92,
AS_SET_ROTATION, 9, AS_F(47.195), AS_F(-9.485), AS_F(21.515),
AS_SET_POS, 9, -2, 36, 4,
AS_SET_ROTATION, 10, AS_F(6.85), AS_F(-12.21), AS_F(121.525),
AS_SET_POS, 10, 66, 9, -9,
AS_SET_ROTATION, 11, AS_F(2.555), AS_F(-2.265), AS_F(59.87),
AS_SET_POS, 11, 9, 13, -1,
AS_SET_ROTATION, 12, AS_F(-28.62), AS_F(4.935), AS_F(19.17),
AS_SET_POS, 12, -2, 46, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-94.09), AS_F(-27.115), AS_F(-25.3),
AS_SET_POS, 2, 46, 140, -107,
AS_SET_ROTATION, 3, AS_F(-88.755), AS_F(-59.31), AS_F(-60.385),
AS_SET_POS, 3, 122, 129, -141,
AS_SET_ROTATION, 4, AS_F(-22.435), AS_F(-9.02), AS_F(-43.385),
AS_SET_POS, 4, 55, 160, -30,
AS_SET_ROTATION, 5, AS_F(179.82), AS_F(176.19), AS_F(-5.3),
AS_SET_POS, 5, 323, 40, 10,
AS_SET_ROTATION, 6, AS_F(-4.17), AS_F(0.87), AS_F(23.59),
AS_SET_POS, 6, 15, -8, 2,
AS_SET_POS, 7, 204, 1, 156,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 13, 16, 58,
AS_SET_ROTATION, 9, AS_F(54.745), AS_F(-12.615), AS_F(24.1),
AS_SET_POS, 9, -1, 40, 3,
AS_SET_ROTATION, 10, AS_F(4.915), AS_F(-14.31), AS_F(142.23),
AS_SET_POS, 10, 78, 29, -11,
AS_SET_ROTATION, 11, AS_F(2.5), AS_F(-2.705), AS_F(69.865),
AS_SET_POS, 11, 14, 17, -1,
AS_SET_ROTATION, 12, AS_F(-33.19), AS_F(6.64), AS_F(22.045),
AS_SET_POS, 12, -2, 52, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-108.555), AS_F(-32.895), AS_F(-23.965),
AS_SET_POS, 2, 54, 137, -127,
AS_SET_ROTATION, 3, AS_F(72.265), AS_F(-107.96), AS_F(124.08),
AS_SET_POS, 3, 134, 108, -155,
AS_SET_ROTATION, 4, AS_F(-24.91), AS_F(-11.575), AS_F(-49.305),
AS_SET_POS, 4, 69, 174, -38,
AS_SET_ROTATION, 5, AS_F(178.99), AS_F(176.47), AS_F(-31.81),
AS_SET_POS, 5, 298, -20, 9,
AS_SET_ROTATION, 6, AS_F(4.17), AS_F(0.87), AS_F(-23.59),
AS_SET_POS, 6, 21, 120, 3,
AS_SET_POS, 7, 204, 2, 156,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 7, 62, 33,
AS_SET_ROTATION, 9, AS_F(62.265), AS_F(-16.04), AS_F(26.265),
AS_SET_POS, 9, -1, 43, 2,
AS_SET_ROTATION, 10, AS_F(2.325), AS_F(-15.605), AS_F(163.155),
AS_SET_POS, 10, 86, 53, -12,
AS_SET_ROTATION, 11, AS_F(2.37), AS_F(-3.13), AS_F(79.86),
AS_SET_POS, 11, 20, 21, -2,
AS_SET_ROTATION, 12, AS_F(-37.69), AS_F(8.575), AS_F(24.785),
AS_SET_POS, 12, -2, 57, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-124.23), AS_F(-38.175), AS_F(-20.75),
AS_SET_POS, 2, 61, 128, -143,
AS_SET_ROTATION, 3, AS_F(17.335), AS_F(-98.305), AS_F(164.975),
AS_SET_POS, 3, 139, 82, -160,
AS_SET_ROTATION, 4, AS_F(-27.125), AS_F(-14.365), AS_F(-55.165),
AS_SET_POS, 4, 84, 185, -47,
AS_SET_ROTATION, 5, AS_F(178.375), AS_F(177.085), AS_F(-58.3),
AS_SET_POS, 5, 246, -63, 8,
AS_SET_ROTATION, 6, AS_F(9.865), AS_F(6.98), AS_F(-70.51),
AS_SET_POS, 6, 115, 204, 21,
AS_SET_POS, 7, 204, 1, 156,
AS_SET_ROTATION, 8, AS_F(86.985), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 17, 97, 76,
AS_SET_ROTATION, 9, AS_F(69.795), AS_F(-19.715), AS_F(27.985),
AS_SET_POS, 9, 0, 44, 1,
AS_SET_ROTATION, 10, AS_F(-0.59), AS_F(-15.915), AS_F(-175.78),
AS_SET_POS, 10, 87, 78, -12,
AS_SET_ROTATION, 11, AS_F(2.165), AS_F(-3.525), AS_F(89.865),
AS_SET_POS, 11, 27, 26, -2,
AS_SET_ROTATION, 12, AS_F(-42.115), AS_F(10.71), AS_F(27.38),
AS_SET_POS, 12, -2, 61, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(38.56), AS_F(-137.495), AS_F(164.505),
AS_SET_POS, 2, 66, 115, -155,
AS_SET_ROTATION, 3, AS_F(-61.42), AS_F(-104.005), AS_F(-130.21),
AS_SET_POS, 3, 135, 55, -156,
AS_SET_ROTATION, 4, AS_F(-29.07), AS_F(-17.365), AS_F(-61.0),
AS_SET_POS, 4, 100, 193, -55,
AS_SET_ROTATION, 5, AS_F(178.095), AS_F(177.915), AS_F(-84.77),
AS_SET_POS, 5, 176, -78, 5,
AS_SET_ROTATION, 6, AS_F(-170.755), AS_F(164.69), AS_F(62.055),
AS_SET_POS, 6, 238, 191, 43,
AS_SET_POS, 7, 204, 0, 156,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(-179.995),
AS_SET_POS, 8, 25, 62, 109,
AS_SET_ROTATION, 9, AS_F(77.395), AS_F(-23.575), AS_F(29.205),
AS_SET_POS, 9, 0, 44, 0,
AS_SET_ROTATION, 10, AS_F(-3.415), AS_F(-15.2), AS_F(-154.765),
AS_SET_POS, 10, 82, 103, -11,
AS_SET_ROTATION, 11, AS_F(1.89), AS_F(-3.885), AS_F(99.875),
AS_SET_POS, 11, 33, 32, -3,
AS_SET_ROTATION, 12, AS_F(-46.475), AS_F(13.04), AS_F(29.81),
AS_SET_POS, 12, -2, 64, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(19.79), AS_F(-134.615), AS_F(171.65),
AS_SET_POS, 2, 69, 98, -162,
AS_SET_ROTATION, 3, AS_F(-86.115), AS_F(-116.395), AS_F(-119.82),
AS_SET_POS, 3, 125, 32, -143,
AS_SET_ROTATION, 4, AS_F(-30.71), AS_F(-20.535), AS_F(-66.82),
AS_SET_POS, 4, 117, 197, -65,
AS_SET_ROTATION, 5, AS_F(-1.78), AS_F(1.215), AS_F(68.77),
AS_SET_POS, 5, 105, -59, 3,
AS_SET_ROTATION, 6, AS_F(-177.725), AS_F(159.625), AS_F(12.6),
AS_SET_POS, 6, 308, 91, 56,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 17, 36, 74,
AS_SET_ROTATION, 9, AS_F(85.15), AS_F(-27.55), AS_F(29.88),
AS_SET_POS, 9, 0, 43, -1,
AS_SET_ROTATION, 10, AS_F(-5.785), AS_F(-13.55), AS_F(-133.915),
AS_SET_POS, 10, 70, 126, -9,
AS_SET_ROTATION, 11, AS_F(1.565), AS_F(-4.185), AS_F(109.885),
AS_SET_POS, 11, 40, 39, -3,
AS_SET_ROTATION, 12, AS_F(-50.775), AS_F(15.54), AS_F(32.085),
AS_SET_POS, 12, -2, 67, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(0.0), AS_F(-133.6), AS_F(-179.995),
AS_SET_POS, 2, 70, 79, -164,
AS_SET_ROTATION, 3, AS_F(80.055), AS_F(-50.77), AS_F(58.925),
AS_SET_POS, 3, 107, 16, -124,
AS_SET_ROTATION, 4, AS_F(-32.025), AS_F(-23.845), AS_F(-72.68),
AS_SET_POS, 4, 133, 198, -74,
AS_SET_ROTATION, 5, AS_F(-1.285), AS_F(0.495), AS_F(42.32),
AS_SET_POS, 5, 47, -11, 1,
AS_SET_ROTATION, 6, AS_F(173.63), AS_F(161.435), AS_F(-37.59),
AS_SET_POS, 6, 280, -26, 51,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 11, 80, 49,
AS_SET_ROTATION, 9, AS_F(93.17), AS_F(-31.57), AS_F(29.945),
AS_SET_POS, 9, 1, 41, -3,
AS_SET_ROTATION, 10, AS_F(-7.385), AS_F(-11.205), AS_F(-113.31),
AS_SET_POS, 10, 54, 143, -7,
AS_SET_ROTATION, 11, AS_F(1.185), AS_F(-4.42), AS_F(119.905),
AS_SET_POS, 11, 46, 45, -3,
AS_SET_ROTATION, 12, AS_F(-55.025), AS_F(18.2), AS_F(34.185),
AS_SET_POS, 12, -2, 69, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-19.79), AS_F(-134.615), AS_F(-171.65),
AS_SET_POS, 2, 69, 60, -161,
AS_SET_ROTATION, 3, AS_F(68.61), AS_F(-38.385), AS_F(54.065),
AS_SET_POS, 3, 86, 10, -99,
AS_SET_ROTATION, 4, AS_F(-33.0), AS_F(-27.27), AS_F(-78.625),
AS_SET_POS, 4, 150, 196, -83,
AS_SET_ROTATION, 5, AS_F(-0.52), AS_F(0.07), AS_F(15.87),
AS_SET_POS, 5, 14, 57, 0,
AS_SET_ROTATION, 6, AS_F(169.545), AS_F(168.79), AS_F(-85.955),
AS_SET_POS, 6, 174, -83, 31,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 21, 114, 92,
AS_SET_ROTATION, 9, AS_F(101.57), AS_F(-35.56), AS_F(29.33),
AS_SET_POS, 9, 2, 38, -4,
AS_SET_ROTATION, 10, AS_F(-8.035), AS_F(-8.455), AS_F(-92.935),
AS_SET_POS, 10, 35, 154, -4,
AS_SET_ROTATION, 11, AS_F(0.775), AS_F(-4.6), AS_F(129.93),
AS_SET_POS, 11, 52, 52, -4,
AS_SET_ROTATION, 12, AS_F(-59.245), AS_F(20.995), AS_F(36.1),
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-38.56), AS_F(-137.495), AS_F(-164.505),
AS_SET_POS, 2, 65, 41, -152,
AS_SET_ROTATION, 3, AS_F(57.475), AS_F(-26.915), AS_F(47.155),
AS_SET_POS, 3, 63, 15, -73,
AS_SET_ROTATION, 4, AS_F(-33.58), AS_F(-30.755), AS_F(-84.7),
AS_SET_POS, 4, 167, 192, -92,
AS_SET_ROTATION, 5, AS_F(0.345), AS_F(0.025), AS_F(-10.58),
AS_SET_POS, 5, 14, 134, 0,
AS_SET_ROTATION, 6, AS_F(-7.65), AS_F(3.335), AS_F(47.085),
AS_SET_POS, 6, 61, -40, 11,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(-179.995),
AS_SET_POS, 8, 29, 77, 126,
AS_SET_ROTATION, 9, AS_F(110.475), AS_F(-39.425), AS_F(27.93),
AS_SET_POS, 9, 3, 34, -6,
AS_SET_ROTATION, 10, AS_F(-7.68), AS_F(-5.66), AS_F(-72.72),
AS_SET_POS, 10, 14, 158, -1,
AS_SET_ROTATION, 11, AS_F(0.34), AS_F(-4.695), AS_F(139.955),
AS_SET_POS, 11, 56, 60, -4,
AS_SET_ROTATION, 12, AS_F(-63.45), AS_F(23.925), AS_F(37.835),
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(124.225), AS_F(-38.175), AS_F(20.75),
AS_SET_POS, 2, 59, 25, -139,
AS_SET_ROTATION, 3, AS_F(45.815), AS_F(-16.82), AS_F(38.575),
AS_SET_POS, 3, 42, 32, -48,
AS_SET_ROTATION, 4, AS_F(146.255), AS_F(-145.705), AS_F(89.02),
AS_SET_POS, 4, 183, 184, -101,
AS_SET_ROTATION, 5, AS_F(1.15), AS_F(0.385), AS_F(-37.03),
AS_SET_POS, 5, 46, 203, 1,
AS_SET_ROTATION, 6, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 6, 17, 75, 3,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 21, 49, 91,
AS_SET_ROTATION, 9, AS_F(120.035), AS_F(-43.06), AS_F(25.65),
AS_SET_POS, 9, 3, 29, -7,
AS_SET_ROTATION, 10, AS_F(-6.38), AS_F(-3.155), AS_F(-52.56),
AS_SET_POS, 10, -5, 155, 0,
AS_SET_ROTATION, 11, AS_F(-0.105), AS_F(-4.715), AS_F(149.98),
AS_SET_POS, 11, 60, 66, -4,
AS_SET_ROTATION, 12, AS_F(-67.65), AS_F(26.955), AS_F(39.36),
AS_SET_POS, 12, -2, 68, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(108.555), AS_F(-32.895), AS_F(23.965),
AS_SET_POS, 2, 52, 11, -122,
AS_SET_ROTATION, 3, AS_F(33.18), AS_F(-8.63), AS_F(28.415),
AS_SET_POS, 3, 23, 58, -27,
AS_SET_ROTATION, 4, AS_F(146.58), AS_F(-142.19), AS_F(82.47),
AS_SET_POS, 4, 198, 174, -110,
AS_SET_ROTATION, 5, AS_F(1.71), AS_F(1.055), AS_F(-63.48),
AS_SET_POS, 5, 105, 249, 3,
AS_SET_ROTATION, 6, AS_F(7.65), AS_F(3.335), AS_F(-47.09),
AS_SET_POS, 6, 72, 186, 13,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 15, 91, 66,
AS_SET_ROTATION, 9, AS_F(130.385), AS_F(-46.355), AS_F(22.385),
AS_SET_POS, 9, 4, 24, -8,
AS_SET_ROTATION, 10, AS_F(-4.295), AS_F(-1.245), AS_F(-32.38),
AS_SET_POS, 10, -22, 145, 3,
AS_SET_ROTATION, 11, AS_F(-0.55), AS_F(-4.66), AS_F(160.005),
AS_SET_POS, 11, 63, 73, -4,
AS_SET_ROTATION, 12, AS_F(-71.885), AS_F(30.08), AS_F(40.675),
AS_SET_POS, 12, -2, 67, -3,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(94.085), AS_F(-27.11), AS_F(25.3),
AS_SET_POS, 2, 44, 3, -103,
AS_SET_ROTATION, 3, AS_F(19.47), AS_F(-2.91), AS_F(16.85),
AS_SET_POS, 3, 11, 92, -13,
AS_SET_ROTATION, 4, AS_F(147.45), AS_F(-138.725), AS_F(75.555),
AS_SET_POS, 4, 212, 161, -118,
AS_SET_ROTATION, 5, AS_F(1.905), AS_F(1.905), AS_F(-89.935),
AS_SET_POS, 5, 177, 264, 5,
AS_SET_ROTATION, 6, AS_F(-169.545), AS_F(168.79), AS_F(85.955),
AS_SET_POS, 6, 191, 220, 34,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 25, 123, 109,
AS_SET_ROTATION, 9, AS_F(141.625), AS_F(-49.145), AS_F(18.08),
AS_SET_POS, 9, 4, 19, -9,
AS_SET_ROTATION, 10, AS_F(-1.685), AS_F(-0.175), AS_F(-12.15),
AS_SET_POS, 10, -34, 130, 4,
AS_SET_ROTATION, 11, AS_F(-0.97), AS_F(-4.525), AS_F(170.03),
AS_SET_POS, 11, 64, 80, -5,
AS_SET_ROTATION, 12, AS_F(-76.18), AS_F(33.285), AS_F(41.75),
AS_SET_POS, 12, -2, 65, -2,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(80.415), AS_F(-21.225), AS_F(24.995),
AS_SET_POS, 2, 35, 0, -83,
AS_SET_ROTATION, 3, AS_F(4.935), AS_F(-0.18), AS_F(4.285),
AS_SET_POS, 3, 6, 131, -7,
AS_SET_ROTATION, 4, AS_F(148.95), AS_F(-135.365), AS_F(68.17),
AS_SET_POS, 4, 226, 145, -125,
AS_SET_ROTATION, 5, AS_F(-178.285), AS_F(177.235), AS_F(63.595),
AS_SET_POS, 5, 248, 245, 8,
AS_SET_ROTATION, 6, AS_F(-173.63), AS_F(161.435), AS_F(37.59),
AS_SET_POS, 6, 296, 153, 53,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(-179.995),
AS_SET_POS, 8, 33, 84, 142,
AS_SET_ROTATION, 9, AS_F(153.765), AS_F(-51.295), AS_F(12.765),
AS_SET_POS, 9, 4, 13, -9,
AS_SET_ROTATION, 10, AS_F(1.125), AS_F(-0.075), AS_F(8.095),
AS_SET_POS, 10, -39, 112, 5,
AS_SET_ROTATION, 11, AS_F(-1.375), AS_F(-4.32), AS_F(-179.945),
AS_SET_POS, 11, 64, 86, -5,
AS_SET_ROTATION, 12, AS_F(-80.575), AS_F(36.545), AS_F(42.56),
AS_SET_POS, 12, -1, 63, -2,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(67.16), AS_F(-15.565), AS_F(23.265),
AS_SET_POS, 2, 27, 0, -63,
AS_SET_ROTATION, 3, AS_F(-9.84), AS_F(-0.735), AS_F(-8.55),
AS_SET_POS, 3, 9, 169, -10,
AS_SET_ROTATION, 4, AS_F(151.17), AS_F(-132.185), AS_F(60.205),
AS_SET_POS, 4, 237, 126, -132,
AS_SET_ROTATION, 5, AS_F(-178.845), AS_F(176.565), AS_F(37.105),
AS_SET_POS, 5, 304, 195, 10,
AS_SET_ROTATION, 6, AS_F(177.725), AS_F(159.625), AS_F(-12.6),
AS_SET_POS, 6, 319, 29, 58,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 25, 54, 107,
AS_SET_ROTATION, 9, AS_F(166.655), AS_F(-52.66), AS_F(6.62),
AS_SET_POS, 9, 4, 6, -9,
AS_SET_ROTATION, 10, AS_F(3.805), AS_F(-0.96), AS_F(28.335),
AS_SET_POS, 10, -39, 93, 5,
AS_SET_ROTATION, 11, AS_F(-1.725), AS_F(-4.05), AS_F(-169.93),
AS_SET_POS, 11, 62, 91, -5,
AS_SET_ROTATION, 12, AS_F(-85.11), AS_F(39.855), AS_F(43.095),
AS_SET_POS, 12, -1, 60, -2,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(54.03), AS_F(-10.425), AS_F(20.29),
AS_SET_POS, 2, 19, 6, -45,
AS_SET_ROTATION, 3, AS_F(-24.155), AS_F(-4.505), AS_F(-20.84),
AS_SET_POS, 3, 19, 203, -22,
AS_SET_ROTATION, 4, AS_F(154.205), AS_F(-129.265), AS_F(51.55),
AS_SET_POS, 4, 248, 104, -137,
AS_SET_ROTATION, 5, AS_F(-179.65), AS_F(176.21), AS_F(10.6),
AS_SET_POS, 5, 332, 125, 11,
AS_SET_ROTATION, 6, AS_F(170.755), AS_F(164.69), AS_F(-62.055),
AS_SET_POS, 6, 246, -70, 44,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 19, 95, 82,
AS_SET_ROTATION, 9, AS_F(-179.995), AS_F(-53.125), AS_F(0.0),
AS_SET_POS, 9, 4, 0, -9,
AS_SET_ROTATION, 10, AS_F(6.02), AS_F(-2.715), AS_F(48.53),
AS_SET_POS, 10, -33, 76, 4,
AS_SET_ROTATION, 11, AS_F(-2.025), AS_F(-3.72), AS_F(-159.915),
AS_SET_POS, 11, 59, 96, -5,
AS_SET_ROTATION, 12, AS_F(-89.84), AS_F(43.185), AS_F(43.285),
AS_SET_POS, 12, -1, 56, -1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(40.81), AS_F(-6.085), AS_F(16.265),
AS_SET_POS, 2, 12, 16, -29,
AS_SET_ROTATION, 3, AS_F(-37.515), AS_F(-11.115), AS_F(-31.97),
AS_SET_POS, 3, 36, 229, -42,
AS_SET_ROTATION, 4, AS_F(158.13), AS_F(-126.685), AS_F(42.095),
AS_SET_POS, 4, 256, 80, -142,
AS_SET_ROTATION, 5, AS_F(179.475), AS_F(176.255), AS_F(-15.91),
AS_SET_POS, 5, 327, 49, 10,
AS_SET_ROTATION, 6, AS_F(-9.865), AS_F(6.98), AS_F(70.505),
AS_SET_POS, 6, 125, -81, 22,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 29, 124, 125,
AS_SET_POS, 9, 4, 1, -9,
AS_SET_ROTATION, 10, AS_F(7.495), AS_F(-5.12), AS_F(68.69),
AS_SET_POS, 10, -23, 63, 3,
AS_SET_ROTATION, 11, AS_F(-2.27), AS_F(-3.345), AS_F(-149.915),
AS_SET_POS, 11, 55, 99, -5,
AS_SET_ROTATION, 12, AS_F(-94.835), AS_F(46.51), AS_F(43.095),
AS_SET_POS, 12, -1, 52, -1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(27.39), AS_F(-2.78), AS_F(11.37),
AS_SET_POS, 2, 7, 30, -18,
AS_SET_ROTATION, 3, AS_F(-49.795), AS_F(-20.005), AS_F(-41.61),
AS_SET_POS, 3, 57, 245, -66,
AS_SET_ROTATION, 4, AS_F(162.975), AS_F(-124.565), AS_F(31.795),
AS_SET_POS, 4, 263, 54, -146,
AS_SET_ROTATION, 5, AS_F(178.71), AS_F(176.675), AS_F(-42.41),
AS_SET_POS, 5, 290, -16, 9,
AS_SET_ROTATION, 6, AS_F(-4.17), AS_F(0.87), AS_F(23.59),
AS_SET_POS, 6, 39, 0, 7,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(179.995),
AS_SET_POS, 8, 37, 84, 159,
AS_SET_POS, 9, 4, 2, -9,
AS_SET_ROTATION, 10, AS_F(8.04), AS_F(-7.89), AS_F(88.89),
AS_SET_POS, 10, -9, 54, 1,
AS_SET_ROTATION, 11, AS_F(-2.44), AS_F(-2.935), AS_F(-139.915),
AS_SET_POS, 11, 49, 101, -5,
AS_SET_ROTATION, 12, AS_F(-100.185), AS_F(49.815), AS_F(42.44),
AS_SET_POS, 12, 0, 47, -1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(13.76), AS_F(-0.705), AS_F(5.85),
AS_SET_POS, 2, 5, 45, -12,
AS_SET_ROTATION, 3, AS_F(-61.22), AS_F(-30.615), AS_F(-49.655),
AS_SET_POS, 3, 81, 248, -93,
AS_SET_ROTATION, 4, AS_F(165.485), AS_F(-123.77), AS_F(26.8),
AS_SET_POS, 4, 266, 50, -147,
AS_SET_ROTATION, 5, AS_F(178.215), AS_F(177.4), AS_F(-68.89),
AS_SET_POS, 5, 230, -60, 7,
AS_SET_ROTATION, 6, AS_F(4.17), AS_F(0.87), AS_F(-23.59),
AS_SET_POS, 6, 44, 120, 8,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 28, 53, 124,
AS_SET_POS, 9, 4, 1, -9,
AS_SET_ROTATION, 10, AS_F(7.59), AS_F(-10.675), AS_F(109.22),
AS_SET_POS, 10, 3, 51, 0,
AS_SET_ROTATION, 11, AS_F(-2.54), AS_F(-2.495), AS_F(-129.915),
AS_SET_POS, 11, 42, 102, -5,
AS_SET_ROTATION, 12, AS_F(-105.995), AS_F(53.06), AS_F(41.235),
AS_SET_POS, 12, 0, 41, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 2, 4, 61, -11,
AS_SET_ROTATION, 3, AS_F(-72.33), AS_F(-42.435), AS_F(-55.95),
AS_SET_POS, 3, 104, 238, -119,
AS_SET_ROTATION, 4, AS_F(168.165), AS_F(-123.105), AS_F(21.655),
AS_SET_POS, 4, 268, 44, -149,
AS_SET_ROTATION, 5, AS_F(-1.9), AS_F(1.73), AS_F(84.64),
AS_SET_POS, 5, 158, -73, 5,
AS_SET_ROTATION, 6, AS_F(9.865), AS_F(6.98), AS_F(-70.51),
AS_SET_POS, 6, 139, 196, 25,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 23, 92, 99,
AS_SET_POS, 9, 4, 0, -9,
AS_SET_ROTATION, 10, AS_F(6.175), AS_F(-13.13), AS_F(129.775),
AS_SET_POS, 10, 16, 54, -2,
AS_SET_ROTATION, 11, AS_F(-2.555), AS_F(-2.05), AS_F(-119.93),
AS_SET_POS, 11, 35, 101, -5,
AS_SET_ROTATION, 12, AS_F(-112.4), AS_F(56.2), AS_F(39.345),
AS_SET_POS, 12, 0, 35, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-13.76), AS_F(-0.705), AS_F(-5.85),
AS_SET_POS, 2, 6, 76, -15,
AS_SET_ROTATION, 3, AS_F(-84.225), AS_F(-55.02), AS_F(-59.9),
AS_SET_POS, 3, 123, 216, -142,
AS_SET_ROTATION, 4, AS_F(170.985), AS_F(-122.58), AS_F(16.37),
AS_SET_POS, 4, 270, 37, -150,
AS_SET_ROTATION, 5, AS_F(-1.62), AS_F(0.9), AS_F(58.19),
AS_SET_POS, 5, 90, -53, 3,
AS_SET_ROTATION, 6, AS_F(-170.755), AS_F(164.69), AS_F(62.055),
AS_SET_POS, 6, 261, 173, 47,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 33, 121, 142,
AS_SET_ROTATION, 10, AS_F(3.94), AS_F(-14.935), AS_F(150.58),
AS_SET_POS, 10, 24, 61, -3,
AS_SET_ROTATION, 11, AS_F(-2.5), AS_F(-1.61), AS_F(-109.94),
AS_SET_POS, 11, 26, 98, -5,
AS_SET_ROTATION, 12, AS_F(-119.575), AS_F(59.2), AS_F(36.61),
AS_SET_POS, 12, 0, 28, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-27.39), AS_F(-2.78), AS_F(-11.37),
AS_SET_POS, 2, 10, 89, -25,
AS_SET_ROTATION, 3, AS_F(80.02), AS_F(-112.13), AS_F(121.08),
AS_SET_POS, 3, 138, 186, -158,
AS_SET_ROTATION, 4, AS_F(173.925), AS_F(-122.2), AS_F(10.975),
AS_SET_POS, 4, 272, 27, -151,
AS_SET_ROTATION, 5, AS_F(-1.0), AS_F(0.285), AS_F(31.74),
AS_SET_POS, 5, 41, -6, 1,
AS_SET_ROTATION, 6, AS_F(-177.725), AS_F(159.625), AS_F(12.6),
AS_SET_POS, 6, 330, 64, 60,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(179.995),
AS_SET_POS, 8, 40, 79, 175,
AS_SET_ROTATION, 10, AS_F(1.17), AS_F(-15.855), AS_F(171.575),
AS_SET_POS, 10, 28, 70, -3,
AS_SET_ROTATION, 11, AS_F(-2.36), AS_F(-1.18), AS_F(-99.955),
AS_SET_POS, 11, 16, 94, -5,
AS_SET_ROTATION, 12, AS_F(-127.71), AS_F(61.975), AS_F(32.85),
AS_SET_POS, 12, 0, 21, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-40.815), AS_F(-6.085), AS_F(-16.265),
AS_SET_POS, 2, 16, 97, -39,
AS_SET_ROTATION, 3, AS_F(44.59), AS_F(-100.555), AS_F(142.375),
AS_SET_POS, 3, 145, 149, -167,
AS_SET_ROTATION, 4, AS_F(176.94), AS_F(-121.97), AS_F(5.505),
AS_SET_POS, 4, 273, 14, -151,
AS_SET_ROTATION, 5, AS_F(-0.175), AS_F(0.005), AS_F(5.285),
AS_SET_POS, 5, 20, 56, 0,
AS_SET_ROTATION, 6, AS_F(173.63), AS_F(161.435), AS_F(-37.59),
AS_SET_POS, 6, 302, -62, 54,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 32, 46, 140,
AS_SET_ROTATION, 10, AS_F(-1.75), AS_F(-15.75), AS_F(-167.36),
AS_SET_POS, 10, 26, 81, -3,
AS_SET_ROTATION, 11, AS_F(-2.16), AS_F(-0.785), AS_F(-89.965),
AS_SET_POS, 11, 7, 87, -5,
AS_SET_ROTATION, 12, AS_F(-137.02), AS_F(64.435), AS_F(27.87),
AS_SET_POS, 12, 0, 12, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-54.03), AS_F(-10.425), AS_F(-20.29),
AS_SET_POS, 2, 24, 101, -56,
AS_SET_ROTATION, 3, AS_F(-44.59), AS_F(-100.56), AS_F(-142.37),
AS_SET_POS, 3, 144, 110, -166,
AS_SET_ROTATION, 4, AS_F(-179.995), AS_F(-121.885), AS_F(0.0),
AS_SET_POS, 4, 274, 0, -152,
AS_SET_ROTATION, 5, AS_F(0.685), AS_F(0.125), AS_F(-21.16),
AS_SET_POS, 5, 33, 121, 1,
AS_SET_ROTATION, 6, AS_F(169.545), AS_F(168.79), AS_F(-85.955),
AS_SET_POS, 6, 194, -129, 35,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 26, 84, 115,
AS_SET_ROTATION, 10, AS_F(-4.44), AS_F(-14.64), AS_F(-146.395),
AS_SET_POS, 10, 17, 91, -2,
AS_SET_ROTATION, 11, AS_F(-1.89), AS_F(-0.435), AS_F(-79.975),
AS_SET_POS, 11, -2, 78, -5,
AS_SET_ROTATION, 12, AS_F(-147.66), AS_F(66.475), AS_F(21.51),
AS_SET_POS, 12, 0, 3, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-67.16), AS_F(-15.565), AS_F(-23.265),
AS_SET_POS, 2, 32, 99, -76,
AS_SET_ROTATION, 3, AS_F(-80.02), AS_F(-112.13), AS_F(-121.08),
AS_SET_POS, 3, 135, 73, -156,
AS_SET_POS, 4, 275, 1, -152,
AS_SET_ROTATION, 5, AS_F(1.405), AS_F(0.62), AS_F(-47.615),
AS_SET_POS, 5, 77, 172, 2,
AS_SET_ROTATION, 6, AS_F(-7.65), AS_F(3.335), AS_F(47.085),
AS_SET_POS, 6, 80, -95, 14,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 36, 111, 158,
AS_SET_ROTATION, 10, AS_F(-6.53), AS_F(-12.685), AS_F(-125.645),
AS_SET_POS, 10, 3, 97, 0,
AS_SET_ROTATION, 11, AS_F(-1.56), AS_F(-0.13), AS_F(-69.99),
AS_SET_POS, 11, -12, 68, -5,
AS_SET_ROTATION, 12, AS_F(-156.0), AS_F(67.59), AS_F(16.19),
AS_SET_POS, 12, 0, 6, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-80.415), AS_F(-21.225), AS_F(-24.995),
AS_SET_POS, 2, 42, 91, -98,
AS_SET_ROTATION, 3, AS_F(84.225), AS_F(-55.02), AS_F(59.9),
AS_SET_POS, 3, 120, 42, -138,
AS_SET_POS, 4, 275, 2, -153,
AS_SET_ROTATION, 5, AS_F(1.835), AS_F(1.385), AS_F(-74.06),
AS_SET_POS, 5, 143, 197, 4,
AS_SET_ROTATION, 6, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 6, 34, 10, 6,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(179.995),
AS_SET_POS, 8, 44, 67, 192,
AS_SET_ROTATION, 10, AS_F(-7.76), AS_F(-10.135), AS_F(-105.135),
AS_SET_POS, 10, -14, 98, 2,
AS_SET_ROTATION, 11, AS_F(-1.18), AS_F(0.105), AS_F(-60.005),
AS_SET_POS, 11, -22, 55, -6,
AS_SET_ROTATION, 12, AS_F(-164.93), AS_F(68.38), AS_F(10.26),
AS_SET_POS, 12, 0, 8, 1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-98.77), AS_F(-21.56), AS_F(22.775),
AS_SET_POS, 2, 7, 14, -112,
AS_SET_ROTATION, 3, AS_F(72.33), AS_F(-42.435), AS_F(55.95),
AS_SET_POS, 3, 100, 20, -115,
AS_SET_POS, 4, 276, 1, -153,
AS_SET_ROTATION, 5, AS_F(-178.12), AS_F(177.735), AS_F(79.48),
AS_SET_POS, 5, 217, 189, 7,
AS_SET_POS, 6, 34, 13, 6,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 36, 33, 157,
AS_SET_ROTATION, 10, AS_F(-8.015), AS_F(-7.325), AS_F(-84.84),
AS_SET_POS, 10, -35, 93, 4,
AS_SET_ROTATION, 11, AS_F(0.615), AS_F(0.32), AS_F(-18.365),
AS_SET_POS, 11, -49, 35, -5,
AS_SET_ROTATION, 12, AS_F(-174.285), AS_F(68.805), AS_F(3.91),
AS_SET_POS, 12, 0, 9, 1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(68.705), AS_F(-170.56), AS_F(-112.815),
AS_SET_POS, 2, 37, -65, -100,
AS_SET_ROTATION, 3, AS_F(61.22), AS_F(-30.615), AS_F(49.655),
AS_SET_POS, 3, 78, 9, -89,
AS_SET_POS, 4, 277, 0, -154,
AS_SET_ROTATION, 5, AS_F(-178.475), AS_F(176.94), AS_F(53.005),
AS_SET_POS, 5, 284, 148, 9,
AS_SET_POS, 6, 34, 16, 6,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 30, 68, 132,
AS_SET_ROTATION, 10, AS_F(-7.27), AS_F(-4.605), AS_F(-64.655),
AS_SET_POS, 10, -55, 81, 7,
AS_SET_ROTATION, 11, AS_F(2.11), AS_F(-0.715), AS_F(23.255),
AS_SET_POS, 11, -54, 4, -6,
AS_SET_ROTATION, 12, AS_F(176.19), AS_F(68.84), AS_F(-2.61),
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(68.025), AS_F(172.365), AS_F(-71.78),
AS_SET_POS, 2, 114, -100, -67,
AS_SET_ROTATION, 3, AS_F(49.795), AS_F(-20.005), AS_F(41.61),
AS_SET_POS, 3, 55, 9, -64,
AS_SET_ROTATION, 5, AS_F(-179.145), AS_F(176.38), AS_F(26.51),
AS_SET_POS, 5, 329, 81, 10,
AS_SET_POS, 6, 34, 17, 6,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 40, 93, 175,
AS_SET_ROTATION, 10, AS_F(-5.63), AS_F(-2.3), AS_F(-44.49),
AS_SET_POS, 10, -73, 63, 10,
AS_SET_ROTATION, 11, AS_F(2.54), AS_F(-2.485), AS_F(64.87),
AS_SET_POS, 11, -36, -20, -8,
AS_SET_ROTATION, 12, AS_F(166.78), AS_F(68.495), AS_F(-9.02),
AS_SET_POS, 12, 0, 6, 1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(79.355), AS_F(159.265), AS_F(-27.95),
AS_SET_POS, 2, 192, -69, -33,
AS_SET_ROTATION, 3, AS_F(37.515), AS_F(-11.115), AS_F(31.97),
AS_SET_POS, 3, 36, 21, -41,
AS_SET_ROTATION, 5, AS_F(179.995), AS_F(176.175), AS_F(0.0),
AS_SET_POS, 5, 345, 0, 11,
AS_SET_POS, 6, 34, 16, 6,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(179.995),
AS_SET_POS, 8, 48, 47, 208,
AS_SET_ROTATION, 10, AS_F(-3.3), AS_F(-0.71), AS_F(-24.29),
AS_SET_POS, 10, -88, 40, 12,
AS_SET_ROTATION, 11, AS_F(1.68), AS_F(-4.085), AS_F(106.545),
AS_SET_POS, 11, -5, -28, -9,
AS_SET_ROTATION, 12, AS_F(157.745), AS_F(67.775), AS_F(-15.045),
AS_SET_POS, 12, 0, 3, 1,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(97.66), AS_F(158.04), AS_F(19.785),
AS_SET_POS, 2, 227, 11, -18,
AS_SET_ROTATION, 3, AS_F(24.155), AS_F(-4.505), AS_F(20.84),
AS_SET_POS, 3, 21, 41, -24,
AS_SET_POS, 5, 345, 3, 11,
AS_SET_POS, 6, 34, 13, 6,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 40, 11, 174,
AS_SET_ROTATION, 10, AS_F(-0.565), AS_F(-0.015), AS_F(-4.05),
AS_SET_POS, 10, -96, 27, 13,
AS_SET_ROTATION, 11, AS_F(-0.025), AS_F(-4.72), AS_F(148.31),
AS_SET_POS, 11, 20, -15, -10,
AS_SET_ROTATION, 12, AS_F(163.11), AS_F(68.25), AS_F(-11.485),
AS_SET_POS, 12, 0, 5, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(110.83), AS_F(169.55), AS_F(64.525),
AS_SET_POS, 2, 197, 96, -31,
AS_SET_ROTATION, 3, AS_F(9.84), AS_F(-0.735), AS_F(8.55),
AS_SET_POS, 3, 13, 67, -15,
AS_SET_POS, 5, 345, 6, 11,
AS_SET_POS, 6, 34, 10, 6,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 34, 44, 149,
AS_SET_ROTATION, 10, AS_F(2.235), AS_F(-0.32), AS_F(16.2),
AS_SET_POS, 10, -98, 12, 13,
AS_SET_ROTATION, 11, AS_F(-1.725), AS_F(-4.05), AS_F(-169.93),
AS_SET_POS, 11, 27, 10, -10,
AS_SET_ROTATION, 12, AS_F(168.64), AS_F(68.595), AS_F(-7.76),
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-67.7), AS_F(-6.575), AS_F(-74.39),
AS_SET_POS, 2, 118, 140, -65,
AS_SET_ROTATION, 3, AS_F(-4.935), AS_F(-0.18), AS_F(-4.285),
AS_SET_POS, 3, 14, 94, -16,
AS_SET_POS, 5, 345, 7, 11,
AS_SET_POS, 6, 34, 11, 6,
AS_SET_ROTATION, 8, AS_F(86.98), AS_F(12.745), AS_F(-13.425),
AS_SET_POS, 8, 44, 66, 192,
AS_SET_ROTATION, 10, AS_F(4.765), AS_F(-1.565), AS_F(36.42),
AS_SET_POS, 10, -94, -3, 13,
AS_SET_ROTATION, 11, AS_F(-1.615), AS_F(-4.145), AS_F(-173.265),
AS_SET_POS, 11, 27, 9, -10,
AS_SET_ROTATION, 12, AS_F(174.285), AS_F(68.805), AS_F(-3.91),
AS_SET_POS, 12, 0, 3, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-78.33), AS_F(-20.195), AS_F(-30.885),
AS_SET_POS, 2, 35, 112, -101,
AS_SET_ROTATION, 3, AS_F(-19.47), AS_F(-2.91), AS_F(-16.85),
AS_SET_POS, 3, 22, 120, -25,
AS_SET_POS, 5, 345, 6, 11,
AS_SET_POS, 6, 34, 12, 6,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(153.815), AS_F(179.995),
AS_SET_POS, 8, 52, 18, 225,
AS_SET_ROTATION, 10, AS_F(6.705), AS_F(-3.615), AS_F(56.59),
AS_SET_POS, 10, -84, -17, 11,
AS_SET_ROTATION, 11, AS_F(-1.495), AS_F(-4.235), AS_F(-176.605),
AS_SET_POS, 11, 27, 7, -10,
AS_SET_ROTATION, 12, AS_F(179.995), AS_F(68.875), AS_F(0.0),
AS_SET_POS, 12, 0, 0, 0,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(-96.535), AS_F(-22.305), AS_F(16.79),
AS_SET_POS, 2, -6, 28, -119,
AS_SET_ROTATION, 3, AS_F(-33.185), AS_F(-8.63), AS_F(-28.415),
AS_SET_POS, 3, 36, 139, -42,
AS_SET_POS, 5, 345, 3, 11,
AS_SET_POS, 6, 34, 11, 6,
AS_SET_ROTATION, 8, AS_F(-86.98), AS_F(12.745), AS_F(13.425),
AS_SET_POS, 8, 44, -20, 190,
AS_SET_ROTATION, 10, AS_F(7.83), AS_F(-6.2), AS_F(76.76),
AS_SET_POS, 10, -70, -29, 9,
AS_SET_ROTATION, 11, AS_F(-1.375), AS_F(-4.32), AS_F(-179.945),
AS_SET_POS, 11, 27, 3, -10,
AS_WAIT, 1,
AS_SET_ROTATION, 2, AS_F(69.67), AS_F(-168.57), AS_F(-118.14),
AS_SET_POS, 2, 15, -66, -109,
AS_SET_ROTATION, 3, AS_F(-45.815), AS_F(-16.82), AS_F(-38.575),
AS_SET_POS, 3, 57, 148, -65,
AS_SET_POS, 5, 345, 0, 11,
AS_SET_POS, 6, 34, 10, 6,
AS_SET_ROTATION, 8, AS_F(0.0), AS_F(0.0), AS_F(0.0),
AS_SET_POS, 8, 38, 9, 165,
AS_SET_ROTATION, 10, AS_F(7.985), AS_F(-9.02), AS_F(96.995),
AS_SET_POS, 10, -54, -35, 7,
AS_SET_POS, 11, 27, 0, -10,
AS_WAIT, 1,
AS_SET_ROTATION, 3, AS_F(-57.475), AS_F(-26.915), AS_F(-47.155),
AS_SET_POS, 3, 80, 147, -92,
AS_SET_POS, 5, 345, 1, 11,
AS_SET_ROTATION, 10, AS_F(7.135), AS_F(-11.715), AS_F(117.41),
AS_SET_POS, 10, -38, -29, 5,
AS_WAIT, 1,
AS_SET_ROTATION, 3, AS_F(-68.61), AS_F(-38.385), AS_F(-54.065),
AS_SET_POS, 3, 103, 133, -119,
AS_SET_POS, 5, 345, 2, 11,
AS_SET_ROTATION, 10, AS_F(5.365), AS_F(-13.95), AS_F(138.065),
AS_SET_POS, 10, -24, -18, 3,
AS_WAIT, 1,
AS_SET_ROTATION, 3, AS_F(-80.06), AS_F(-50.77), AS_F(-58.925),
AS_SET_POS, 3, 124, 107, -143,
AS_SET_POS, 5, 345, 1, 11,
AS_SET_ROTATION, 10, AS_F(2.88), AS_F(-15.42), AS_F(158.955),
AS_SET_POS, 10, -14, -7, 2,
AS_WAIT, 1,
AS_SET_ROTATION, 3, AS_F(86.115), AS_F(-116.395), AS_F(119.82),
AS_SET_POS, 3, 140, 71, -161,
AS_SET_POS, 5, 345, 0, 11,
AS_SET_ROTATION, 10, AS_F(0.0), AS_F(-15.935), AS_F(179.995),
AS_SET_POS, 10, -10, 0, 1,
AS_WAIT, 1,
AS_END_LOOP,
AS_END,
};

View File

@ -1,85 +0,0 @@
#include "../area.h"
#define NAMESPACE A(lava_piranha_AnimModel_MainHeadVine)
s32 N(padding) = 0;
StaticAnimatorNode N(8021C308) = {
.displayList = &N(8021C308),
.rot = { 0, 0, 4166 },
.pos = { 102.0f, 99.0f, -10.0f },
};
StaticAnimatorNode N(8021C334) = {
.displayList = &N(8021C308),
.rot = { 0, 0, 11010 },
.pos = { 137.0f, 94.0f, -10.0f },
.sibling = &N(8021C308),
};
StaticAnimatorNode N(8021C360) = {
.displayList = &N(8021C308),
.rot = { 0, 0, -5416 },
.pos = { 127.0f, 56.0f, -10.0f },
.sibling = &N(8021C334),
};
StaticAnimatorNode N(8021C38C) = {
.displayList = &N(8021C308),
.rot = { 0, 0, -3640 },
.pos = { 106.0f, 23.0f, -10.0f },
.sibling = &N(8021C360),
};
StaticAnimatorNode N(8021C3B8) = {
.displayList = &N(8021C308),
.rot = { 0, 0, 5461 },
.pos = { 122.0f, -13.0f, -10.0f },
.sibling = &N(8021C38C),
};
StaticAnimatorNode N(8021C3E4) = {
.displayList = &N(8021C308),
.rot = { 0, 0, 21045 },
.pos = { 120.0f, 108.0f, -11.0f },
.sibling = &N(8021C3B8),
};
StaticAnimatorNode N(8021C410) = {
.displayList = &N(8021C308),
.rot = { 0, 0, 2796 },
.pos = { 140.0f, 73.0f, -11.0f },
.sibling = &N(8021C3E4),
};
StaticAnimatorNode N(8021C43C) = {
.displayList = &N(8021C308),
.rot = { 0, 0, -8169 },
.pos = { 112.0f, 42.0f, -11.0f },
.sibling = &N(8021C410),
};
StaticAnimatorNode N(8021C468) = {
.displayList = &N(8021C308),
.rot = { 0, 0, 910 },
.pos = { 110.0f, 3.0f, -11.0f },
.sibling = &N(8021C43C),
};
StaticAnimatorNode N(8021C494) = {
.child = &N(8021C468),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(8021C494),
&N(8021C468),
&N(8021C43C),
&N(8021C410),
&N(8021C3E4),
&N(8021C3B8),
&N(8021C38C),
&N(8021C360),
&N(8021C334),
&N(8021C308),
NULL,
};

View File

@ -1,69 +0,0 @@
#include "../area.h"
#define NAMESPACE A(lava_piranha_AnimModel_SideHeadVine)
s32 N(padding) = 0;
StaticAnimatorNode N(8021C4F0) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, 13020 },
.pos = { 62.0f, 53.0f, -20.0f },
};
StaticAnimatorNode N(8021C51C) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, 13067 },
.pos = { 97.0f, 51.0f, -20.0f },
.sibling = &N(8021C4F0),
};
StaticAnimatorNode N(8021C548) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, -10126 },
.pos = { 75.0f, 19.0f, -20.0f },
.sibling = &N(8021C51C),
};
StaticAnimatorNode N(8021C574) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, 122 },
.pos = { 69.0f, -19.0f, -20.0f },
.sibling = &N(8021C548),
};
StaticAnimatorNode N(8021C5A0) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, 24663 },
.pos = { 76.0f, 62.0f, -21.0f },
.sibling = &N(8021C574),
};
StaticAnimatorNode N(8021C5CC) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, 1470 },
.pos = { 96.0f, 28.0f, -21.0f },
.sibling = &N(8021C5A0),
};
StaticAnimatorNode N(8021C5F8) = {
.displayList = &N(8021C4F0),
.rot = { 0, 0, -5339 },
.pos = { 67.0f, 0.0f, -21.0f },
.sibling = &N(8021C5CC),
};
StaticAnimatorNode N(8021C624) = {
.child = &N(8021C5F8),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(8021C624),
&N(8021C5F8),
&N(8021C5CC),
&N(8021C5A0),
&N(8021C574),
&N(8021C548),
&N(8021C51C),
&N(8021C4F0),
NULL,
};

View File

@ -1,53 +0,0 @@
#include "../area.h"
#define NAMESPACE A(lava_piranha_AnimModel_ExtraVine)
s32 N(padding) = 0;
StaticAnimatorNode N(8021C678) = {
.displayList = &N(8021C678),
.rot = { 0, 0, 30065 },
.pos = { 132.0f, -5.0f, -5.0f },
};
StaticAnimatorNode N(8021C6A4) = {
.displayList = &N(8021C678),
.rot = { 0, 0, -14585 },
.pos = { 98.0f, 4.0f, -5.0f },
.sibling = &N(8021C678),
};
StaticAnimatorNode N(8021C6D0) = {
.displayList = &N(8021C678),
.rot = { 0, 0, 22784 },
.pos = { 129.0f, -26.0f, -6.0f },
.sibling = &N(8021C6A4),
};
StaticAnimatorNode N(8021C6FC) = {
.displayList = &N(8021C678),
.rot = { 0, 0, -28213 },
.pos = { 120.0f, 12.0f, -6.0f },
.sibling = &N(8021C6D0),
};
StaticAnimatorNode N(8021C728) = {
.displayList = &N(8021C678),
.rot = { 0, 0, -7236 },
.pos = { 87.0f, -13.0f, -6.0f },
.sibling = &N(8021C6FC),
};
StaticAnimatorNode N(8021C754) = {
.child = &N(8021C728),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(8021C754),
&N(8021C728),
&N(8021C6FC),
&N(8021C6D0),
&N(8021C6A4),
&N(8021C678),
NULL,
};

View File

@ -0,0 +1,53 @@
#include "../area.h"
#define NAMESPACE A(lava_piranha_AnimModel_ExtraVine)
s32 N(padding) = 0;
StaticAnimatorNode N(Node05) = {
.displayList = &N(Node05),
.rot = { 0, 0, AS_F(165.157) },
.pos = { 132.0f, -5.0f, -5.0f },
};
StaticAnimatorNode N(Node04) = {
.displayList = &N(Node05),
.rot = { 0, 0, AS_F(-80.120) },
.pos = { 98.0f, 4.0f, -5.0f },
.sibling = &N(Node05),
};
StaticAnimatorNode N(Node03) = {
.displayList = &N(Node05),
.rot = { 0, 0, AS_F(125.160) },
.pos = { 129.0f, -26.0f, -6.0f },
.sibling = &N(Node04),
};
StaticAnimatorNode N(Node02) = {
.displayList = &N(Node05),
.rot = { 0, 0, AS_F(-154.983) },
.pos = { 120.0f, 12.0f, -6.0f },
.sibling = &N(Node03),
};
StaticAnimatorNode N(Node01) = {
.displayList = &N(Node05),
.rot = { 0, 0, AS_F(-39.749) },
.pos = { 87.0f, -13.0f, -6.0f },
.sibling = &N(Node02),
};
StaticAnimatorNode N(Root) = {
.child = &N(Node01),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(Root),
&N(Node01),
&N(Node02),
&N(Node03),
&N(Node04),
&N(Node05),
NULL,
};

View File

@ -0,0 +1,85 @@
#include "../area.h"
#define NAMESPACE A(lava_piranha_AnimModel_MainHeadVine)
s32 N(padding) = 0;
StaticAnimatorNode N(Node09) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(22.885) },
.pos = { 102.0f, 99.0f, -10.0f },
};
StaticAnimatorNode N(Node08) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(60.480) },
.pos = { 137.0f, 94.0f, -10.0f },
.sibling = &N(Node09),
};
StaticAnimatorNode N(Node07) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(-29.750) },
.pos = { 127.0f, 56.0f, -10.0f },
.sibling = &N(Node08),
};
StaticAnimatorNode N(Node06) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(-19.995) },
.pos = { 106.0f, 23.0f, -10.0f },
.sibling = &N(Node07),
};
StaticAnimatorNode N(Node05) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(29.999) },
.pos = { 122.0f, -13.0f, -10.0f },
.sibling = &N(Node06),
};
StaticAnimatorNode N(Node04) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(115.607) },
.pos = { 120.0f, 108.0f, -11.0f },
.sibling = &N(Node05),
};
StaticAnimatorNode N(Node03) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(15.360) },
.pos = { 140.0f, 73.0f, -11.0f },
.sibling = &N(Node04),
};
StaticAnimatorNode N(Node02) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(-44.875) },
.pos = { 112.0f, 42.0f, -11.0f },
.sibling = &N(Node03),
};
StaticAnimatorNode N(Node01) = {
.displayList = &N(Node09),
.rot = { 0, 0, AS_F(4.998) },
.pos = { 110.0f, 3.0f, -11.0f },
.sibling = &N(Node02),
};
StaticAnimatorNode N(Root) = {
.child = &N(Node01),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(Root),
&N(Node01),
&N(Node02),
&N(Node03),
&N(Node04),
&N(Node05),
&N(Node06),
&N(Node07),
&N(Node08),
&N(Node09),
NULL,
};

View File

@ -0,0 +1,69 @@
#include "../area.h"
#define NAMESPACE A(lava_piranha_AnimModel_SideHeadVine)
s32 N(padding) = 0;
StaticAnimatorNode N(Node07) = {
.displayList = &N(Node07),
.rot = { 0, 0, 13020 },
.pos = { 62.0f, 53.0f, -20.0f },
};
StaticAnimatorNode N(Node06) = {
.displayList = &N(Node07),
.rot = { 0, 0, 13067 },
.pos = { 97.0f, 51.0f, -20.0f },
.sibling = &N(Node07),
};
StaticAnimatorNode N(Node05) = {
.displayList = &N(Node07),
.rot = { 0, 0, -10126 },
.pos = { 75.0f, 19.0f, -20.0f },
.sibling = &N(Node06),
};
StaticAnimatorNode N(Node04) = {
.displayList = &N(Node07),
.rot = { 0, 0, 122 },
.pos = { 69.0f, -19.0f, -20.0f },
.sibling = &N(Node05),
};
StaticAnimatorNode N(Node03) = {
.displayList = &N(Node07),
.rot = { 0, 0, 24663 },
.pos = { 76.0f, 62.0f, -21.0f },
.sibling = &N(Node04),
};
StaticAnimatorNode N(Node02) = {
.displayList = &N(Node07),
.rot = { 0, 0, 1470 },
.pos = { 96.0f, 28.0f, -21.0f },
.sibling = &N(Node03),
};
StaticAnimatorNode N(Node01) = {
.displayList = &N(Node07),
.rot = { 0, 0, -5339 },
.pos = { 67.0f, 0.0f, -21.0f },
.sibling = &N(Node02),
};
StaticAnimatorNode N(Root) = {
.child = &N(Node01),
};
StaticAnimatorNode* NAMESPACE[] = {
&N(Root),
&N(Node01),
&N(Node02),
&N(Node03),
&N(Node04),
&N(Node05),
&N(Node06),
&N(Node07),
NULL,
};

View File

@ -1,5 +1,6 @@
#include "area.h"
#include "ld_addrs.h"
#include "actor/boss_common.h"
extern ActorBlueprint A(lava_piranha);
extern ActorBlueprint A(petit_piranha);
@ -49,41 +50,41 @@ StageList A(Stages) = {
world_model_anim_kzn_##name##_VRAM }
DmaTable A(dmaTable)[] = {
PIRANHA_DMA_ENTRY(00),
PIRANHA_DMA_ENTRY(01),
PIRANHA_DMA_ENTRY(02),
PIRANHA_DMA_ENTRY(03),
PIRANHA_DMA_ENTRY(04),
PIRANHA_DMA_ENTRY(05),
PIRANHA_DMA_ENTRY(06),
PIRANHA_DMA_ENTRY(07),
PIRANHA_DMA_ENTRY(08),
PIRANHA_DMA_ENTRY(09),
PIRANHA_DMA_ENTRY(0A),
PIRANHA_DMA_ENTRY(0B),
PIRANHA_DMA_ENTRY(0C),
PIRANHA_DMA_ENTRY(0D),
PIRANHA_DMA_ENTRY(0E),
PIRANHA_DMA_ENTRY(0F),
PIRANHA_DMA_ENTRY(10),
PIRANHA_DMA_ENTRY(11),
PIRANHA_DMA_ENTRY(12),
PIRANHA_DMA_ENTRY(13),
PIRANHA_DMA_ENTRY(14),
PIRANHA_DMA_ENTRY(15),
PIRANHA_DMA_ENTRY(16),
PIRANHA_DMA_ENTRY(17),
PIRANHA_DMA_ENTRY(18),
PIRANHA_DMA_ENTRY(19),
PIRANHA_DMA_ENTRY(1A),
PIRANHA_DMA_ENTRY(1B),
PIRANHA_DMA_ENTRY(1C),
PIRANHA_DMA_ENTRY(1D),
PIRANHA_DMA_ENTRY(1E),
PIRANHA_DMA_ENTRY(1F),
PIRANHA_DMA_ENTRY(20),
PIRANHA_DMA_ENTRY(21),
PIRANHA_DMA_ENTRY(22),
PIRANHA_DMA_ENTRY(23),
PIRANHA_DMA_ENTRY(24),
[VINE_ANIM_BOSS_IDLE] PIRANHA_DMA_ENTRY(00),
[VINE_ANIM_BOSS_TWITCH] PIRANHA_DMA_ENTRY(01),
[VINE_ANIM_BOSS_ATTACK] PIRANHA_DMA_ENTRY(02),
[VINE_ANIM_BOSS_POST_ATTACK] PIRANHA_DMA_ENTRY(03),
[VINE_ANIM_BOSS_STUNNED_HEAVY_HIT] PIRANHA_DMA_ENTRY(04),
[VINE_ANIM_BOSS_STUNNED_LIGHT_HIT] PIRANHA_DMA_ENTRY(05),
[VINE_ANIM_BOSS_HEAVY_HIT] PIRANHA_DMA_ENTRY(06),
[VINE_ANIM_BOSS_LIGHT_HIT] PIRANHA_DMA_ENTRY(07),
[VINE_ANIM_BOSS_STUNNED_DEATH_BEGIN] PIRANHA_DMA_ENTRY(08),
[VINE_ANIM_BOSS_DEATH_BEGIN] PIRANHA_DMA_ENTRY(09),
[VINE_ANIM_BOSS_DEATH_MIDDLE] PIRANHA_DMA_ENTRY(0A),
[VINE_ANIM_BOSS_DEATH_COLLAPSE] PIRANHA_DMA_ENTRY(0B),
[VINE_ANIM_BOSS_EMERGE] PIRANHA_DMA_ENTRY(0C),
[VINE_ANIM_BOSS_STUN] PIRANHA_DMA_ENTRY(0D),
[VINE_ANIM_BOSS_RECOVER] PIRANHA_DMA_ENTRY(0E),
[VINE_ANIM_BOSS_DUP_EMERGE] PIRANHA_DMA_ENTRY(0F),
[VINE_ANIM_BOSS_SINK_AWAY] PIRANHA_DMA_ENTRY(10),
[VINE_ANIM_BOSS_TALK] PIRANHA_DMA_ENTRY(11),
[VINE_ANIM_BUD_ATTACK] PIRANHA_DMA_ENTRY(12),
[VINE_ANIM_BUD_STUNNED_HEAVY_HIT] PIRANHA_DMA_ENTRY(13),
[VINE_ANIM_BUD_STUNNED_LIGHT_HIT] PIRANHA_DMA_ENTRY(14),
[VINE_ANIM_BUD_HEAVY_HIT] PIRANHA_DMA_ENTRY(15),
[VINE_ANIM_BUD_LIGHT_HIT] PIRANHA_DMA_ENTRY(16),
[VINE_ANIM_BUD_STUNNED_DEATH_BEGIN] PIRANHA_DMA_ENTRY(17),
[VINE_ANIM_BUD_DEATH_BEGIN] PIRANHA_DMA_ENTRY(18),
[VINE_ANIM_BUD_DEATH_MIDDLE] PIRANHA_DMA_ENTRY(19),
[VINE_ANIM_BUD_DEATH_COLLAPSE] PIRANHA_DMA_ENTRY(1A),
[VINE_ANIM_BUD_STUN] PIRANHA_DMA_ENTRY(1B),
[VINE_ANIM_BUD_EMERGE] PIRANHA_DMA_ENTRY(1C),
[VINE_ANIM_BUD_RECOVER] PIRANHA_DMA_ENTRY(1D),
[VINE_ANIM_BUD_TWITCH] PIRANHA_DMA_ENTRY(1E),
[VINE_ANIM_BUD_IDLE] PIRANHA_DMA_ENTRY(1F),
[VINE_ANIM_BUD_DUP_EMERGE] PIRANHA_DMA_ENTRY(20),
[VINE_ANIM_BUD_SINK_AWAY] PIRANHA_DMA_ENTRY(21),
[VINE_ANIM_EXTRA_IDLE] PIRANHA_DMA_ENTRY(22),
[VINE_ANIM_EXTRA_DEATH] PIRANHA_DMA_ENTRY(23),
[VINE_ANIM_EXTRA_EMERGE] PIRANHA_DMA_ENTRY(24),
};

View File

@ -274,7 +274,7 @@ EvtScript N(EVS_HandleEvent_Ceiling) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Chan_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Chan_Run)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)
@ -428,7 +428,7 @@ EvtScript N(EVS_HandleEvent_Ground) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Chan_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Chan_Run)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)

View File

@ -295,7 +295,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Lee_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -165,7 +165,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Run)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, EASING_COS_IN_OUT)

View File

@ -163,7 +163,7 @@ EvtScript N(EVS_HandleEvent_Inner) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_TheMaster_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TheMaster_Run)

View File

@ -177,7 +177,7 @@ EvtScript N(EVS_HandleEvent_Inner) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_TheMaster_AscendedHurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TheMaster_AscendedRun)

View File

@ -209,7 +209,7 @@ EvtScript N(EVS_HandleEvent_Inner) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_TheMaster_AscendedHurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_TheMaster_AscendedRun)

View File

@ -377,7 +377,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Anim_Hurt, LVar1)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Anim_Hurt, LVar1)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)
@ -387,7 +387,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Anim_Hurt, LVar1)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Anim_Hurt, LVar1)
EVT_EXEC_WAIT(EVS_Enemy_Death)

File diff suppressed because it is too large Load Diff

View File

@ -236,7 +236,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GeneralGuy_Anim05)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GeneralGuy_Anim0E)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)

View File

@ -1017,7 +1017,7 @@ EvtScript N(shy_guy_handleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_EXEC_WAIT(N(shy_guy_return_home))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)

View File

@ -407,7 +407,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_EXEC_WAIT(N(onHit))
@ -416,7 +416,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
EVT_EXEC_WAIT(N(onDeath))

View File

@ -1,5 +1,6 @@
#include "../area.h"
#include "sprite/npc/CrystalKing.h"
#include "crystal_king_common.h"
#define NAMESPACE A(crystal_bit)
@ -14,28 +15,17 @@ enum N(ActorPartIDs) {
PRT_TARGET = 2,
};
enum N(ActorVars) {
AVAR_ParticlesEffect = 0,
AVAR_Unk_4 = 4,
AVAR_Unk_5 = 5,
AVAR_Unk_6 = 6,
};
enum N(ActorParams) {
DMG_UNK = 0,
};
s32 N(IdleAnimations_1)[] = {
s32 N(CubeAnims)[] = {
STATUS_KEY_NORMAL, ANIM_CrystalKing_Anim0A,
STATUS_END,
};
s32 N(IdleAnimations_2)[] = {
s32 N(SphereAnims)[] = {
STATUS_KEY_NORMAL, ANIM_CrystalKing_Anim0B,
STATUS_END,
};
s32 N(IdleAnimations_3)[] = {
s32 N(PrismAnims)[] = {
STATUS_KEY_NORMAL, ANIM_CrystalKing_Anim0C,
STATUS_END,
};
@ -72,14 +62,14 @@ s32 N(StatusTable)[] = {
STATUS_END,
};
ActorPartBlueprint N(ActorParts_1)[] = {
ActorPartBlueprint N(CubeParts)[] = {
{
.flags = ACTOR_PART_FLAG_NO_TARGET,
.index = PRT_MAIN,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 16 },
.opacity = 255,
.idleAnimations = N(IdleAnimations_1),
.idleAnimations = N(CubeAnims),
.defenseTable = N(DefenseTable),
.eventFlags = ACTOR_EVENT_FLAG_ICY,
.elementImmunityFlags = 0,
@ -99,14 +89,14 @@ ActorPartBlueprint N(ActorParts_1)[] = {
},
};
ActorPartBlueprint N(ActorParts_2)[] = {
ActorPartBlueprint N(SphereParts)[] = {
{
.flags = ACTOR_PART_FLAG_NO_TARGET,
.index = PRT_MAIN,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 16 },
.opacity = 255,
.idleAnimations = N(IdleAnimations_2),
.idleAnimations = N(SphereAnims),
.defenseTable = N(DefenseTable),
.eventFlags = ACTOR_EVENT_FLAG_ICY,
.elementImmunityFlags = 0,
@ -126,14 +116,14 @@ ActorPartBlueprint N(ActorParts_2)[] = {
},
};
ActorPartBlueprint N(ActorParts_3)[] = {
ActorPartBlueprint N(PrismParts)[] = {
{
.flags = ACTOR_PART_FLAG_NO_TARGET,
.index = PRT_MAIN,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 16 },
.opacity = 255,
.idleAnimations = N(IdleAnimations_3),
.idleAnimations = N(PrismAnims),
.defenseTable = N(DefenseTable),
.eventFlags = ACTOR_EVENT_FLAG_ICY,
.elementImmunityFlags = 0,
@ -153,13 +143,13 @@ ActorPartBlueprint N(ActorParts_3)[] = {
},
};
ActorBlueprint N(1) = {
ActorBlueprint N(cube) = {
.flags = ACTOR_FLAG_FLYING | ACTOR_FLAG_NO_ATTACK,
.type = ACTOR_TYPE_CRYSTAL_BIT,
.level = ACTOR_LEVEL_CRYSTAL_BIT,
.maxHP = 1,
.partCount = ARRAY_COUNT(N(ActorParts_1)),
.partsData = N(ActorParts_1),
.partCount = ARRAY_COUNT(N(CubeParts)),
.partsData = N(CubeParts),
.initScript = &N(EVS_Init),
.statusTable = N(StatusTable),
.escapeChance = 0,
@ -176,13 +166,13 @@ ActorBlueprint N(1) = {
.statusTextOffset = { 10, 20 },
};
ActorBlueprint N(2) = {
ActorBlueprint N(sphere) = {
.flags = ACTOR_FLAG_FLYING | ACTOR_FLAG_NO_ATTACK,
.type = ACTOR_TYPE_CRYSTAL_BIT,
.level = ACTOR_LEVEL_CRYSTAL_BIT,
.maxHP = 1,
.partCount = ARRAY_COUNT(N(ActorParts_2)),
.partsData = N(ActorParts_2),
.partCount = ARRAY_COUNT(N(SphereParts)),
.partsData = N(SphereParts),
.initScript = &N(EVS_Init),
.statusTable = N(StatusTable),
.escapeChance = 0,
@ -199,13 +189,13 @@ ActorBlueprint N(2) = {
.statusTextOffset = { 10, 20 },
};
ActorBlueprint N(3) = {
ActorBlueprint N(prism) = {
.flags = ACTOR_FLAG_FLYING | ACTOR_FLAG_NO_ATTACK,
.type = ACTOR_TYPE_CRYSTAL_BIT,
.level = ACTOR_LEVEL_CRYSTAL_BIT,
.maxHP = 1,
.partCount = ARRAY_COUNT(N(ActorParts_3)),
.partsData = N(ActorParts_3),
.partCount = ARRAY_COUNT(N(PrismParts)),
.partsData = N(PrismParts),
.initScript = &N(EVS_Init),
.statusTable = N(StatusTable),
.escapeChance = 0,
@ -254,7 +244,7 @@ API_CALLABLE(N(UpdateCrystalBitEffect)) {
EvtScript N(EVS_Idle) = {
EVT_PLAY_EFFECT(EFFECT_MISC_PARTICLES, 1, NPC_DISPOSE_LOCATION, 24, 24, EVT_FLOAT(1.0), 5, 0, 0, 0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ParticlesEffect, LVarF)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Bit_ParticlesEffect, LVarF)
EVT_CHILD_THREAD
EVT_CALL(N(UpdateCrystalBitEffect), LVarF)
EVT_END_CHILD_THREAD
@ -277,19 +267,19 @@ EvtScript N(EVS_HandleEvent) = {
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_CALL(GetOwnerID, LVar0)
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_4, LVar3)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_CubeBitID, LVar3)
EVT_IF_EQ(LVar0, LVar3)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_CrystalKing_Anim22)
EVT_SET_CONST(LVar2, -1)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_5, LVar3)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_SphereBitID, LVar3)
EVT_IF_EQ(LVar0, LVar3)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_CrystalKing_Anim23)
EVT_SET_CONST(LVar2, -1)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_6, LVar3)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_PrismBitID, LVar3)
EVT_IF_EQ(LVar0, LVar3)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_CrystalKing_Anim24)
@ -314,15 +304,15 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar1, 0, LVar3)
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
EVT_CALL(GetOwnerID, LVar0)
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_4, LVar1)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_CubeBitID, LVar1)
EVT_IF_EQ(LVar0, LVar1)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_CrystalKing_Anim05)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_5, LVar1)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_SphereBitID, LVar1)
EVT_IF_EQ(LVar0, LVar1)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_CrystalKing_Anim06)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_6, LVar1)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_PrismBitID, LVar1)
EVT_IF_EQ(LVar0, LVar1)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_CrystalKing_Anim07)
EVT_END_IF
@ -344,25 +334,25 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CALL(SetPartAlpha, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ParticlesEffect, LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Bit_ParticlesEffect, LVar0)
EVT_CALL(RemoveEffect, LVar0)
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_CALL(GetOwnerID, LVar0)
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_4, LVar3)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_CubeBitID, LVar3)
EVT_IF_EQ(LVar0, LVar3)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_CrystalKing_Anim22)
EVT_SET_CONST(LVar2, -1)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_5, LVar3)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_SphereBitID, LVar3)
EVT_IF_EQ(LVar0, LVar3)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_CrystalKing_Anim23)
EVT_SET_CONST(LVar2, -1)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY0, AVAR_Unk_6, LVar3)
EVT_CALL(GetActorVar, ACTOR_KING, AVAR_King_PrismBitID, LVar3)
EVT_IF_EQ(LVar0, LVar3)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_CrystalKing_Anim24)
@ -393,12 +383,12 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CALL(SetPartAlpha, ACTOR_SELF, PRT_MAIN, LVar0)
EVT_WAIT(1)
EVT_END_LOOP
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ParticlesEffect, LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Bit_ParticlesEffect, LVar0)
EVT_CALL(RemoveEffect, LVar0)
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_CASE_EQ(EVENT_BLOW_AWAY)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_ParticlesEffect, LVar0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Bit_ParticlesEffect, LVar0)
EVT_CALL(RemoveEffect, LVar0)
EVT_RETURN
EVT_CASE_DEFAULT

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
#ifndef _CRYSTAL_KING_COMMON_H_
#define _CRYSTAL_KING_COMMON_H_
enum N(BattleCommon) {
ACTOR_KING = ACTOR_ENEMY0,
ACTOR_BIT_1 = ACTOR_ENEMY1,
ACTOR_BIT_2 = ACTOR_ENEMY2,
ACTOR_BIT_3 = ACTOR_ENEMY3,
AVAR_King_CubeBitID = 4,
AVAR_King_SphereBitID = 5,
AVAR_King_PrismBitID = 6,
AVAR_Bit_ParticlesEffect = 0,
};
#endif // _CRYSTAL_KING_COMMON_H_

View File

@ -1,9 +1,9 @@
#include "area.h"
extern ActorBlueprint A(crystal_king);
extern ActorBlueprint A(crystal_bit_1);
extern ActorBlueprint A(crystal_bit_2);
extern ActorBlueprint A(crystal_bit_3);
extern ActorBlueprint A(crystal_bit_cube);
extern ActorBlueprint A(crystal_bit_sphere);
extern ActorBlueprint A(crystal_bit_prism);
extern Stage A(sam_04);
@ -15,9 +15,9 @@ Vec3i A(CrystalBitPos3) = { 42, 85, -10 };
Formation A(Formation_01) = {
ACTOR_BY_POS(A(crystal_king), A(KingPos), 10),
ACTOR_BY_POS(A(crystal_bit_1), A(CrystalBitPos1), 9),
ACTOR_BY_POS(A(crystal_bit_2), A(CrystalBitPos2), 8),
ACTOR_BY_POS(A(crystal_bit_3), A(CrystalBitPos3), 7),
ACTOR_BY_POS(A(crystal_bit_cube), A(CrystalBitPos1), 9),
ACTOR_BY_POS(A(crystal_bit_sphere), A(CrystalBitPos2), 8),
ACTOR_BY_POS(A(crystal_bit_prism), A(CrystalBitPos3), 7),
};
BattleList A(Formations) = {

View File

@ -341,7 +341,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_FloatToHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -349,7 +349,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(N(EVS_Death))

View File

@ -371,7 +371,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BabyBlooper_Anim02)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_FloatToHome))
EVT_CASE_OR_EQ(EVENT_SHOCK_DEATH)
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
@ -380,7 +380,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BabyBlooper_Anim02)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BabyBlooper_Anim03)
EVT_EXEC_WAIT(N(EVS_Death))

View File

@ -464,7 +464,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_FloatToHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -472,7 +472,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(N(EVS_Death))

View File

@ -419,7 +419,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_FloatToHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_EXEC_WAIT(N(EVS_LoseRage))
@ -428,7 +428,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Blooper_Anim04)
EVT_EXEC_WAIT(N(EVS_Death))

View File

@ -277,12 +277,12 @@ typedef enum ActorType {
ACTOR_TYPE_CRYSTAL_CLONE = 0xBE,
ACTOR_TYPE_CRYSTAL_BIT = 0xBF,
ACTOR_TYPE_INTRO_BOWSER = 0xC0,
ACTOR_TYPE_BOWSER_PHASE_1 = 0xC1,
ACTOR_TYPE_BOWSER_DUP1 = 0xC2,
ACTOR_TYPE_BOWSER_PHASE_2 = 0xC3,
ACTOR_TYPE_BOWSER_DUP2 = 0xC4,
ACTOR_TYPE_BOWSER_PHASE_3 = 0xC5,
ACTOR_TYPE_BOWSER_DUP3 = 0xC6,
ACTOR_TYPE_HALLWAY_BOWSER = 0xC1,
ACTOR_TYPE_HALLWAY_BOWSER_DUP = 0xC2,
ACTOR_TYPE_FINAL_BOWSER_1 = 0xC3,
ACTOR_TYPE_FINAL_BOWSER_1_DUP = 0xC4,
ACTOR_TYPE_FINAL_BOWSER_2 = 0xC5,
ACTOR_TYPE_FINAL_BOWSER_2_DUP = 0xC6,
ACTOR_TYPE_BLOOPER = 0xC7,
ACTOR_TYPE_ELECTRO_BLOOPER1 = 0xC8,
ACTOR_TYPE_ELECTRO_BLOOPER2 = 0xC9,
@ -300,7 +300,8 @@ typedef enum ActorType {
} ActorType;
enum BattleVars {
BTL_VAR_0 = 0, // used by duplighost
BTL_VAR_DuplighostCopyFlags = 0, // used by duplighost
BTL_VAL_Duplighost_HasCopied = 0x4,
BTL_VAR_HyperSync = 1,
BTL_VAL_HyperSync_None = 0,
BTL_VAL_HyperSync_Done = 1,

View File

@ -1954,7 +1954,7 @@ EvtScript EVS_Enemy_FlipBackUp = {
EVT_END
};
EvtScript EVS_Enemy_JumpBack = {
EvtScript EVS_Enemy_Knockback = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, LVar1)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)

View File

@ -180,7 +180,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -169,7 +169,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Dayzee_Amazy_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -190,7 +190,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Black_Anim0C)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)

View File

@ -250,7 +250,7 @@ EvtScript N(EVS_DropCoin) = {
EVT_IF_FLAG(LVar1, BS_FLAGS1_PARTNER_ACTING)
EVT_BREAK_LOOP
EVT_END_IF
EVT_IF_NOT_FLAG(LVar1, BS_FLAGS1_100)
EVT_IF_NOT_FLAG(LVar1, BS_FLAGS1_EXECUTING_MOVE)
EVT_BREAK_LOOP
EVT_END_IF
EVT_WAIT(1)
@ -407,7 +407,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Bandit_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Bandit_Run)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)

View File

@ -250,7 +250,7 @@ EvtScript N(EVS_TrySwitchingSpikyState) = {
EVT_END_IF
EVT_LABEL(0)
EVT_CALL(GetBattleFlags, LVarA)
EVT_IF_FLAG(LVarA, BS_FLAGS1_100)
EVT_IF_FLAG(LVarA, BS_FLAGS1_EXECUTING_MOVE)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_END_IF
@ -356,7 +356,7 @@ EvtScript N(EVS_HandleEvent_SmoothUpright) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BonyBeetle_Anim18)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BonyBeetle_Anim0E)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)
@ -580,7 +580,7 @@ EvtScript N(EVS_HandleEvent_SpikyUpright) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BonyBeetle_Anim19)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BonyBeetle_Anim0F)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)

View File

@ -271,7 +271,7 @@ EvtScript N(EVS_HandleEvent_Ceiling) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BuzzyBeetle_Anim07)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BuzzyBeetle_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)
@ -425,7 +425,7 @@ EvtScript N(EVS_HandleEvent_Ground) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BuzzyBeetle_Anim07)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BuzzyBeetle_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)

View File

@ -265,7 +265,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Bzzap_Anim06)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -279,7 +279,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Cleft_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Cleft_Anim07)

View File

@ -154,7 +154,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
EVT_EXEC_WAIT(EVS_Enemy_ReturnHome)

View File

@ -162,7 +162,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Dayzee_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -452,7 +452,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_KoopaTroopa_Dark_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_KoopaTroopa_Dark_Run)

View File

@ -378,7 +378,7 @@ EvtScript N(EVS_HandleEvent_Flying) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_ParaTroopa_Dark_HurtStill)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_FLYING)
@ -1010,7 +1010,7 @@ EvtScript N(EVS_HandleEvent_Koopa) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_KoopaTroopa_Dark_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_KoopaTroopa_Dark_Run)

View File

@ -211,7 +211,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Duplighost_Anim0A)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)
@ -717,13 +717,15 @@ EvtScript N(EVS_TakeTurn) = {
EVT_CASE_EQ(AVAL_State_ReadyToCopy)
EVT_CALL(RandInt, 1000, LVar0)
EVT_IF_LT(LVar0, 600)
EVT_CALL(GetBattleVar, BTL_VAR_0, LVar0)
EVT_IF_NOT_FLAG(LVar0, 0x4)
EVT_CALL(GetBattleVar, BTL_VAR_0, LVar0)
EVT_BITWISE_OR_CONST(LVar0, 0x4)
EVT_CALL(SetBattleVar, BTL_VAR_0, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_DuplighostCopyFlags, LVar0)
EVT_IF_NOT_FLAG(LVar0, BTL_VAL_Duplighost_HasCopied)
// first time partner is copied, set battle flag and proceed
EVT_CALL(GetBattleVar, BTL_VAR_DuplighostCopyFlags, LVar0)
EVT_BITWISE_OR_CONST(LVar0, BTL_VAL_Duplighost_HasCopied)
EVT_CALL(SetBattleVar, BTL_VAR_DuplighostCopyFlags, LVar0)
EVT_EXEC_WAIT(N(EVS_CopyPartner))
EVT_ELSE
// partner has been copied before, try to avoid copying the same one
EVT_CALL(GetBattleVar, BTL_VAR_LastCopiedPartner, LVar0)
EVT_CALL(N(GetPartnerAndLevel), LVar1, LVar2)
EVT_IF_EQ(LVar0, LVar1)

View File

@ -174,7 +174,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_BattleLakilester_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleLakilester_Run)
EVT_CALL(SetGoalToHome, ACTOR_SELF)
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, EASING_COS_IN_OUT)

View File

@ -400,7 +400,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_LavaBubble_Blue_Anim07)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_FlyHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_EMBER_FLY | SOUND_ID_TRIGGER_CHANGE_SOUND)
@ -534,7 +534,7 @@ EvtScript N(EVS_Attack_Tackle) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_SET(LVar0, PRT_MAIN)
EVT_SET(LVar1, ANIM_LavaBubble_Blue_Anim04)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_WAIT(5)
EVT_EXEC_WAIT(N(EVS_FlyHome))
EVT_END_CASE_GROUP

View File

@ -171,7 +171,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Forest_HurtShock)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Forest_Run)

View File

@ -164,7 +164,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzy_HurtShock)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Run)

View File

@ -214,7 +214,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Goomba_Dark_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Goomba_Dark_Dizzy)

View File

@ -222,7 +222,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Goomba_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Goomba_Dizzy)

View File

@ -202,7 +202,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_GrooveGuy_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)

View File

@ -206,7 +206,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Gulpit_Anim0B)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
EVT_SET_CONST(LVar0, PRT_MAIN)

View File

@ -554,7 +554,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Cleft_Hyper_Anim08)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Cleft_Hyper_Anim07)

View File

@ -478,7 +478,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Goomba_Hyper_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Goomba_Hyper_Dizzy)

View File

@ -586,7 +586,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_FLYING)
EVT_SET_CONST(LVar1, ANIM_Paragoomba_Hyper_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_Paragoomba_Hyper_Dizzy)
EVT_EXEC_WAIT(N(EVS_ReturnHome))
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
@ -1245,7 +1245,7 @@ EvtScript N(EVS_Downed_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Goomba_Hyper_Hurt)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimationRate, ACTOR_SELF, PRT_MAIN, EVT_FLOAT(2.0))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Goomba_Hyper_Dizzy)

View File

@ -175,7 +175,7 @@ EvtScript N(EVS_HandleEvent) = {
EVT_EXEC_WAIT(EVS_Enemy_ShockHit)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Jungle_HurtShock)
EVT_EXEC_WAIT(EVS_Enemy_JumpBack)
EVT_EXEC_WAIT(EVS_Enemy_Knockback)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_SET_CONST(LVar0, PRT_MAIN)
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Jungle_Run)

Some files were not shown because too many files have changed in this diff Show More