b_area_omo2 (#729)

This commit is contained in:
Unnunu 2022-06-12 17:44:36 +03:00 committed by GitHub
parent a335b73d0a
commit 763b320bfb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
46 changed files with 15825 additions and 995 deletions

View File

@ -65,7 +65,7 @@ enum EffectID {
EFFECT_ENERGY_SHOCKWAVE,
EFFECT_SHIMMER_WAVE,
EFFECT_AURA,
EFFECT_3C,
EFFECT_BULB_GLOW,
EFFECT_3D,
EFFECT_BLAST,
EFFECT_FIRE_FLOWER,
@ -775,6 +775,14 @@ typedef struct ButterflyFXData {
/* 0x44 */ f32 unk_44;
} ButterflyFXData; // size = 0x48
typedef struct IceShardFXData {
/* 0x00 */ char unk_00[0x4C];
/* 0x4C */ f32 unk_4C;
/* 0x50 */ f32 unk_50;
/* 0x54 */ f32 unk_54;
/* 0x58 */ f32 unk_58;
} IceShardFXData; // size = ?
typedef struct Effect46FXData {
/* 0x00 */ char unk_00[0x24];
/* 0x04 */ s32 unk_24;
@ -785,6 +793,11 @@ typedef struct ThunderboltRingFXData {
/* 0x30 */ s32 unk_30;
} ThunderboltRingFXData; // size = ?
typedef struct BulbGlowFXData {
/* 0x00 */ s32 unk_00;
/* 0x04 */ Vec3f pos;
} BulbGlowFXData; // size = ?
// fx_quizmo_stage
typedef struct EffectDataQuizStage {
/* 0x00 */ char unk_00[0x4];
@ -961,7 +974,7 @@ EffectInstance* fx_shimmer_burst(s32, f32, f32, f32, f32, s32);
EffectInstance* fx_energy_shockwave(s32, f32, f32, f32, f32, s32);
EffectInstance* fx_shimmer_wave(s32, f32, f32, f32, f32, f32, s32, s32);
void fx_aura(s32, f32, f32, f32, f32, EffectInstance**);
EffectInstance* fx_3C(s32, f32, f32, f32, f32, s32*);
EffectInstance* fx_bulb_glow(s32, f32, f32, f32, f32, s32*);
void fx_3D(s32, f32, f32, f32, f32, f32, f32, s32, s32*);
EffectInstance* fx_blast(s32, f32, f32, f32, f32, s32);
EffectInstance* fx_fire_flower(s32, f32, f32, f32, s32);

View File

@ -88,7 +88,7 @@ FX_MAIN(shimmer_burst_main);
FX_MAIN(energy_shockwave_main);
FX_MAIN(shimmer_wave_main);
void aura_main(s32, f32, f32, f32, f32, EffectInstance**);
FX_MAIN(fx_3C_main);
FX_MAIN(bulb_glow_main);
FX_MAIN(fx_3D_main);
void blast_main(s32, f32, f32, f32, f32, s32);
EffectInstance* fire_flower_main(s32, f32, f32, f32, s32);

View File

@ -566,6 +566,8 @@ enum SoundIDs {
SOUND_167 = 0x00000167,
SOUND_168 = 0x00000168,
SOUND_172 = 0x00000172,
SOUND_173 = 0x00000173,
SOUND_174 = 0x00000174,
SOUND_17B = 0x0000017B,
SOUND_185 = 0x00000185,
SOUND_194 = 0x00000194,
@ -584,6 +586,7 @@ enum SoundIDs {
SOUND_METAL_GATE_CLOSE = 0x000001CA,
SOUND_1CB = 0x000001CB,
SOUND_1CC = 0x000001CC,
SOUND_1E2 = 0x000001E2,
SOUND_211 = 0x00000211,
SOUND_213 = 0x00000213,
SOUND_214 = 0x00000214,
@ -620,13 +623,19 @@ enum SoundIDs {
SOUND_2DE = 0x000002DE,
SOUND_2DF = 0x000002DF,
SOUND_2E0 = 0x000002E0,
SOUND_2E7 = 0x000002E7,
SOUND_2E8 = 0x000002E8,
SOUND_2EA = 0x000002EA,
SOUND_2EF = 0x000002EF,
SOUND_2F1 = 0x000002F1,
SOUND_2F4 = 0x000002F4,
SOUND_2F6 = 0x000002F6,
SOUND_2F7 = 0x000002F7,
SOUND_2F9 = 0x000002F9,
SOUND_CLOSE_SHELL = 0x000002FF,
SOUND_301 = 0x00000301,
SOUND_305 = 0x00000305,
SOUND_306 = 0x00000306,
SOUND_SHY_GUY_SCREAMS1 = 0x0000030C,
SOUND_SHY_GUY_SCREAMS2 = 0x0000030D,
SOUND_SHY_GUY_SCREAMS3 = 0x0000030E,
@ -640,6 +649,8 @@ enum SoundIDs {
SOUND_328 = 0x00000328,
SOUND_32E = 0x0000032E,
SOUND_32F = 0x0000032F,
SOUND_349 = 0x00000349,
SOUND_34E = 0x0000034E,
SOUND_359 = 0x00000359,
SOUND_35D = 0x0000035D,
SOUND_361 = 0x00000361,
@ -652,6 +663,7 @@ enum SoundIDs {
SOUND_368 = 0x00000368,
SOUND_369 = 0x00000369,
SOUND_36E = 0x0000036E,
SOUND_36F = 0x0000036F,
SOUND_372 = 0x00000372,
SOUND_375 = 0x00000375,
SOUND_376 = 0x00000376,
@ -663,7 +675,11 @@ enum SoundIDs {
SOUND_392 = 0x00000392,
SOUND_GENERAL_WHISTLE = 0x00000395,
SOUND_3AB = 0x000003AB,
SOUND_3AD = 0x000003AD,
SOUND_3AE = 0x000003AE,
SOUND_3AF = 0x000003AF,
SOUND_3B4 = 0x000003B4,
SOUND_3D2 = 0x000003D2,
SOUND_OPEN_SHELL = 0x000003D4,
SOUND_3D9 = 0x000003D9,
SOUND_3E0 = 0x000003E0,
@ -673,6 +689,8 @@ enum SoundIDs {
SOUND_DEATH = 0x000003E5,
SOUND_BIG_POWER_UP = 0x000003E6,
SOUND_MOLE_THROW = 0x000003E8,
SOUND_3EB = 0x000003EB,
SOUND_3EC = 0x000003EC,
SOUND_DANGER = 0x000003F1,
SOUND_PERIL = 0x000003F2,
SOUND_3F3 = 0x000003F3,
@ -713,6 +731,13 @@ enum SoundIDs {
SOUND_2039 = 0x00002039,
SOUND_2055 = 0x00002055,
SOUND_205B = 0x0000205B,
SOUND_2064 = 0x00002064,
SOUND_2065 = 0x00002065,
SOUND_2066 = 0x00002066,
SOUND_2067 = 0x00002067,
SOUND_2069 = 0x00002069,
SOUND_206A = 0x0000206A,
SOUND_206B = 0x0000206B,
SOUND_206D = 0x0000206D,
SOUND_2072 = 0x00002072,
SOUND_2073 = 0x00002073,
@ -730,7 +755,9 @@ enum SoundIDs {
SOUND_20A4 = 0x000020A4,
SOUND_20AE = 0x000020AE,
SOUND_20B8 = 0x000020B8,
SOUND_20BA = 0x000020BA,
SOUND_20C1 = 0x000020C1,
SOUND_20C3 = 0x000020C3,
SOUND_20C5 = 0x000020C5,
SOUND_SPELL_CAST1 = 0x000020D4,
SOUND_SPELL_CAST2 = 0x000020D5,
@ -739,6 +766,8 @@ enum SoundIDs {
SOUND_SPELL_CAST5 = 0x000020D8,
SOUND_20DE = 0x000020DE,
SOUND_20E3 = 0x000020E3,
SOUND_20E4 = 0x000020E4,
SOUND_20E5 = 0x000020E5,
SOUND_20E7 = 0x000020E7,
SOUND_20EE = 0x000020EE,
SOUND_20F6 = 0x000020F6,
@ -1323,6 +1352,7 @@ enum DecorationIDs {
enum HitResults {
HIT_RESULT_TRIGGERED_EXPLODE = -1,
HIT_RESULT_HIT = 0,
HIT_RESULT_1 = 1,
HIT_RESULT_QUAKE_IMMUNE = 2,
HIT_RESULT_3 = 3,
HIT_RESULT_LANDED_ON_SPIKE = 4,

View File

@ -145,6 +145,7 @@ ApiStatus GetPartEventFlags(Evt* script, s32 isInitialCall);
ApiStatus HPBarToHome(Evt* script, s32 isInitialCall);
ApiStatus HPBarToCurrent(Evt* script, s32 isInitialCall);
ApiStatus func_8026D940(Evt* script, s32 isInitialCall);
ApiStatus func_8026DA94(Evt* script, s32 isInitialCall);
ApiStatus SummonEnemy(Evt* script, s32 isInitialCall);
ApiStatus GetOwnerID(Evt* script, s32 isInitialCall);
ApiStatus SetOwnerID(Evt* script, s32 isInitialCall);
@ -328,6 +329,10 @@ ApiStatus func_8026EBF8(Evt* script, s32 isInitialCall);
ApiStatus SetupMashMeter(Evt* script, s32 isInitialCall);
ApiStatus SetActionResult(Evt* script, s32 isInitialCall);
ApiStatus BattleCamTargetActorPart(Evt* script, s32 isInitialCall);
ApiStatus func_802537C0(Evt* script, s32 isInitialCall);
ApiStatus CancelEnemyTurn(Evt* script, s32 isInitialCall);
ApiStatus GetAnimatedNodeRotation(Evt* script, s32 isInitialCall);
ApiStatus GetAnimatedNodePosition(Evt* script, s32 isInitialCall);
extern EvtScript PlayerScriptDispatcher;
extern EvtScript PeachScriptDispatcher;

View File

@ -1,7 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo2
#include "common/FadeBackgroundToBlack.inc.c"
#include "common/UnfadeBackgroundToBlack.inc.c"

View File

@ -1,9 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo2
INCLUDE_ASM(s32, "battle/area_omo2/52B7C0", func_80218120_52B7C0);
INCLUDE_ASM(s32, "battle/area_omo2/52B7C0", func_802181F4_52B894);
INCLUDE_ASM(s32, "battle/area_omo2/52B7C0", func_80218250_52B8F0);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,578 @@
#include "common.h"
#include "battle/battle.h"
#include "script_api/battle.h"
#include "effects.h"
#include "animation_script.h"
#include "sprite/npc/general_guy.h"
#include "sprite/npc/general_guy_bomb.h"
#define NAMESPACE b_area_omo2_general_guy
extern ActorBlueprint b_area_omo2_1_shy_squad;
extern AnimScript toy_tank_as_close_hatch;
extern AnimScript toy_tank_as_open_hatch;
extern EvtScript N(init);
extern EvtScript N(takeTurn);
extern EvtScript N(idle);
extern EvtScript N(handleEvent);
extern EvtScript N(attack_throw_bomb);
extern EvtScript N(attack_lightning_shot);
extern s32 N(idleAnimations)[];
extern s32 N(idleAnimations_bomb)[];
extern Formation N(formation_shy_squad);
#include "common/FadeBackgroundToBlack.inc.c"
#include "common/UnfadeBackgroundToBlack.inc.c"
s32 N(defenseTable)[] = {
ELEMENT_NORMAL, 0,
ELEMENT_END,
};
s32 N(statusTable)[] = {
STATUS_NORMAL, 0,
STATUS_DEFAULT, 0,
STATUS_SLEEP, 0,
STATUS_POISON, 0,
STATUS_FROZEN, 0,
STATUS_DIZZY, 0,
STATUS_FEAR, 0,
STATUS_STATIC, 0,
STATUS_PARALYZE, 0,
STATUS_SHRINK, 0,
STATUS_STOP, 0,
STATUS_DEFAULT_TURN_MOD, 0,
STATUS_SLEEP_TURN_MOD, -1,
STATUS_POISON_TURN_MOD, 0,
STATUS_FROZEN_TURN_MOD, 0,
STATUS_DIZZY_TURN_MOD, -1,
STATUS_FEAR_TURN_MOD, 0,
STATUS_STATIC_TURN_MOD, 0,
STATUS_PARALYZE_TURN_MOD, 0,
STATUS_SHRINK_TURN_MOD, -1,
STATUS_STOP_TURN_MOD, -2,
STATUS_END,
};
ActorPartBlueprint N(parts)[] = {
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_MULTI_TARGET | ACTOR_PART_FLAG_20000000,
.index = 1,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 30 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = -1,
.unk_1D = -10,
},
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000 | ACTOR_PART_FLAG_20000000,
.index = 2,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 0 },
.opacity = 255,
.idleAnimations = N(idleAnimations_bomb),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = -1,
.unk_1D = -10,
},
};
ActorBlueprint NAMESPACE = {
.flags = ACTOR_FLAG_40000,
.type = ACTOR_TYPE_GENERAL_GUY,
.level = 73,
.maxHP = 10,
.partCount = ARRAY_COUNT(N(parts)),
.partsData = N(parts),
.script = &N(init),
.statusTable = N(statusTable),
.escapeChance = 0,
.airLiftChance = 0,
.spookChance = 0,
.baseStatusChance = 0,
.upAndAwayChance = 0,
.spinSmashReq = 4,
.powerBounceChance = 75,
.coinReward = 0,
.size = { 30, 30 },
.hpBarOffset = { 20, -3 },
.statusIconOffset = { -10, 20 },
.statusMessageOffset = { 10, 20 },
};
s32 N(idleAnimations)[] = {
STATUS_NORMAL, NPC_ANIM_general_guy_Palette_00_Anim_2,
STATUS_STONE, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_SLEEP, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_POISON, NPC_ANIM_general_guy_Palette_00_Anim_2,
STATUS_STOP, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_STATIC, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_PARALYZE, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_PARALYZE, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_DIZZY, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_DIZZY, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_FEAR, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_END,
};
s32 N(idleAnimations_bomb)[] = {
STATUS_NORMAL, NPC_ANIM_general_guy_bomb_Palette_00_Anim_0,
STATUS_END,
};
s32 N(idleAnimations3)[] = {
STATUS_NORMAL, NPC_ANIM_general_guy_Palette_00_Anim_E,
STATUS_POISON, NPC_ANIM_general_guy_Palette_00_Anim_E,
STATUS_STOP, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_STATIC, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_PARALYZE, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_DIZZY, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_FEAR, NPC_ANIM_general_guy_Palette_00_Anim_0,
STATUS_END,
};
EvtScript N(nextTurn) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
EVT_CALL(GetBattlePhase, LW(0))
EVT_SWITCH(LW(0))
EVT_CASE_EQ(PHASE_PLAYER_BEGIN)
EVT_END_SWITCH
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(init) = {
EVT_CALL(SetActorPos, ACTOR_SELF, 200, 0, 0)
EVT_CALL(ForceHomePos, ACTOR_SELF, 200, 0, 0)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_ADDR(N(takeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_ADDR(N(idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_ADDR(N(handleEvent)))
EVT_CALL(BindNextTurn, ACTOR_SELF, EVT_ADDR(N(nextTurn)))
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 2, 0)
EVT_CALL(LoadBattleSection, 41)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_shy_squad)), 1)
EVT_RETURN
EVT_END
};
EvtScript N(idle) = {
EVT_LABEL(0)
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(handleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LW(0))
EVT_SWITCH(LW(0))
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoNormalHit)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_BURN_HIT)
EVT_SET(LW(0), 1)
EVT_SET(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_8)
EVT_SET(LW(2), NPC_ANIM_general_guy_Palette_00_Anim_9)
EVT_EXEC_WAIT(DoBurnHit)
EVT_CASE_EQ(EVENT_BURN_DEATH)
EVT_SET(LW(0), 1)
EVT_SET(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_8)
EVT_SET(LW(2), NPC_ANIM_general_guy_Palette_00_Anim_9)
EVT_EXEC_WAIT(DoBurnHit)
EVT_WAIT_FRAMES(10)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_9)
EVT_EXEC_WAIT(DoDeath)
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoSpinSmashHit)
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoSpinSmashHit)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoDeath)
EVT_RETURN
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoShockHit)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoJumpBack)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_E)
EVT_EXEC_WAIT(DoReturnHome)
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_EXEC_WAIT(DoImmune)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIKE_TAUNT)
EVT_CASE_EQ(EVENT_DEATH)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoNormalHit)
EVT_WAIT_FRAMES(10)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoDeath)
EVT_RETURN
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_E)
EVT_EXEC_WAIT(DoReturnHome)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_EXEC_WAIT(DoRecover)
EVT_CASE_EQ(EVENT_30)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoNormalHit)
EVT_WAIT_FRAMES(1000)
EVT_CASE_EQ(EVENT_SCARE_AWAY)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_SET_CONST(LW(2), NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_EXEC_WAIT(DoScareAway)
EVT_RETURN
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(takeTurn) = {
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LW(0))
EVT_IF_EQ(LW(0), 0)
EVT_RETURN
EVT_END_IF
EVT_CALL(ActorExists, ACTOR_ENEMY2, LW(0))
EVT_IF_NE(LW(0), FALSE)
EVT_CALL(GetStatusFlags, ACTOR_PARTNER, LW(0))
EVT_IF_NOT_FLAG(LW(0), STATUS_FLAG_KO)
EVT_CALL(RandInt, 100, LW(0))
EVT_IF_LT(LW(0), 60)
EVT_EXEC_WAIT(N(attack_lightning_shot))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_EXEC_WAIT(N(attack_throw_bomb))
EVT_RETURN
EVT_END
};
EvtScript N(attack_throw_bomb) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_15)
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
EVT_CALL(MoveBattleCamOver, 30)
EVT_THREAD
EVT_WAIT_FRAMES(35)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_THREAD
EVT_WAIT_FRAMES(5)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206A)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_B)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_open_hatch))
EVT_WAIT_FRAMES(20)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_general_guy_Palette_00_Anim_B)
EVT_CALL(GetActorPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_SUB(LW(0), 8)
EVT_ADD(LW(1), 27)
EVT_SUB(LW(2), 4)
EVT_CALL(SetPartPos, ACTOR_SELF, 2, LW(0), LW(1), LW(2))
EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_general_guy_bomb_Palette_00_Anim_0)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 0)
EVT_WAIT_FRAMES(15)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_general_guy_Palette_00_Anim_A)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_WAIT_FRAMES(6)
EVT_CALL(GetActorPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_SUB(LW(0), 8)
EVT_ADD(LW(1), 20)
EVT_CALL(SetPartPos, ACTOR_SELF, 2, LW(0), LW(1), LW(2))
EVT_CALL(SetAnimation, ACTOR_SELF, 2, NPC_ANIM_general_guy_bomb_Palette_00_Anim_1)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 0)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LW(0), DAMAGE_TYPE_NO_CONTACT, 0, 4, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LW(0))
EVT_CASE_EQ(HIT_RESULT_MISS)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 2, SOUND_2F9)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_SUB(LW(0), 120)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 2, EVT_FLOAT(12.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(0.1))
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LW(0), LW(1), LW(2), 0, 1)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_CASE_EQ(HIT_RESULT_LUCKY)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 2, SOUND_2F9)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_SUB(LW(0), 50)
EVT_SET(LW(1), -5)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 2, EVT_FLOAT(14.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, 2, LW(0), LW(1), LW(2), 0, 30, 0)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LW(0), DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LW(0), LW(1), LW(2))
EVT_SUB(LW(0), 65)
EVT_SET(LW(1), -5)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 2, EVT_FLOAT(6.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, 2, LW(0), LW(1), LW(2), 0, 15, 0)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_SWITCH
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 2, SOUND_2F9)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 2, EVT_FLOAT(14.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, 2, LW(0), LW(1), LW(2), 0, 15, 0)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_CALL(PlayEffect, EFFECT_BIG_SMOKE_PUFF, LW(0), LW(1), LW(2), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, 2, SOUND_BOMB_BLAST)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_WAIT_FRAMES(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LW(15), DAMAGE_TYPE_BLAST | DAMAGE_TYPE_NO_CONTACT, 0, 0, 4, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LW(15))
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_WAIT_FRAMES(30)
EVT_IF_EQ(LW(15), HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_RETURN
EVT_END_IF
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(attack_lightning_shot) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(GetActorPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_CALL(SetBattleCamTarget, LW(0), LW(1), LW(2))
EVT_CALL(SetBattleCamZoom, 320)
EVT_CALL(SetBattleCamOffsetZ, 30)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(40)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206A)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_B)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_open_hatch))
EVT_WAIT_FRAMES(10)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 7, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(func_80253734, 2)
EVT_END_IF
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_general_guy_Palette_00_Anim_3)
EVT_WAIT_FRAMES(20)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 6, 1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_THREAD
EVT_CALL(N(FadeBackgroundToBlack))
EVT_END_THREAD
EVT_CALL(GetModelCenter, 39)
EVT_THREAD
EVT_LOOP(4)
EVT_CALL(PlaySoundAtActor, LW(8), SOUND_3D2)
EVT_CALL(RandInt, 3, LW(0))
EVT_ADD(LW(0), 3)
EVT_WAIT_FRAMES(LW(0))
EVT_END_LOOP
EVT_END_THREAD
EVT_CALL(PlayEffect, EFFECT_SNAKING_STATIC, 0, LW(0), LW(1), LW(2), EVT_FLOAT(1.0), 40, 0, 0, 0, 0, 0, 0, 0)
EVT_WAIT_FRAMES(40)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LW(0), DAMAGE_TYPE_ELECTRIC | DAMAGE_TYPE_NO_CONTACT, 0, 5, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LW(0))
EVT_CASE_EQ(HIT_RESULT_MISS)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(3), 0, LW(5))
EVT_CALL(PlaySound, SOUND_2069)
EVT_CALL(PlayEffect, EFFECT_LIGHTNING_BOLT, 0, LW(0), LW(1), LW(2), LW(3), LW(4), LW(5), EVT_FLOAT(1.0), 18, 0, 0, 0, 0)
EVT_WAIT_FRAMES(12)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LW(0), DAMAGE_TYPE_ELECTRIC | DAMAGE_TYPE_NO_CONTACT, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_IF_NE(LW(0), HIT_RESULT_MISS)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(3), LW(4), LW(5))
EVT_CALL(PlaySound, SOUND_2069)
EVT_CALL(PlayEffect, EFFECT_LIGHTNING_BOLT, 0, LW(0), LW(1), LW(2), LW(3), LW(4), LW(5), EVT_FLOAT(1.0), 18, 0, 0, 0, 0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 6, 0)
EVT_WAIT_FRAMES(12)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LW(15), DAMAGE_TYPE_ELECTRIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 6, 0)
EVT_WAIT_FRAMES(20)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 7, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(func_80253734, 3)
EVT_END_IF
EVT_CALL(N(UnfadeBackgroundToBlack))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_CASE_EQ(HIT_RESULT_LUCKY)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(3), 0, LW(5))
EVT_CALL(PlaySound, SOUND_2069)
EVT_CALL(PlayEffect, EFFECT_LIGHTNING_BOLT, 0, LW(0), LW(1), LW(2), LW(3), LW(4), LW(5), EVT_FLOAT(1.0), 18, 0, 0, 0, 0)
EVT_WAIT_FRAMES(12)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LW(0), DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(3), 0, LW(5))
EVT_CALL(PlaySound, SOUND_2069)
EVT_CALL(PlayEffect, EFFECT_LIGHTNING_BOLT, 0, LW(0), LW(1), LW(2), LW(3), LW(4), LW(5), EVT_FLOAT(1.0), 18, 0, 0, 0, 0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 6, 0)
EVT_WAIT_FRAMES(12)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 7, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(func_80253734, 3)
EVT_END_IF
EVT_CALL(N(UnfadeBackgroundToBlack))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_SWITCH
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(3), LW(4), LW(5))
EVT_CALL(PlaySound, SOUND_2069)
EVT_CALL(PlayEffect, EFFECT_LIGHTNING_BOLT, 0, LW(0), LW(1), LW(2), LW(3), LW(4), LW(5), EVT_FLOAT(1.0), 18, 0, 0, 0, 0)
EVT_WAIT_FRAMES(12)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LW(15), DAMAGE_TYPE_ELECTRIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, 5, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LW(15))
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_IF_EQ(LW(15), HIT_RESULT_10)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 6, 0)
EVT_WAIT_FRAMES(30)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_RETURN
EVT_END_IF
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LW(3), LW(4), LW(5))
EVT_CALL(PlaySound,SOUND_2069)
EVT_CALL(PlayEffect, EFFECT_LIGHTNING_BOLT, 0, LW(0), LW(1), LW(2), LW(3), LW(4), LW(5), EVT_FLOAT(1.0), 18, 0, 0, 0, 0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 6, 0)
EVT_WAIT_FRAMES(12)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LW(15), DAMAGE_TYPE_ELECTRIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 7, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(func_80253734, 3)
EVT_END_IF
EVT_CALL(N(UnfadeBackgroundToBlack))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
Vec3i N(summon_pos) = { 240, 0, 0 };
Formation N(formation_shy_squad) = {
{ .actor = &b_area_omo2_1_shy_squad, .home = { .vec = &N(summon_pos) }, .priority = 100, }
};

View File

@ -0,0 +1,395 @@
#include "common.h"
#include "battle/battle.h"
#include "script_api/battle.h"
#include "effects.h"
#include "animation_script.h"
#define NAMESPACE b_area_omo2_light_bulb
typedef struct IceShardBlueprint {
/* 0x00 */ s32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
} IceShardBlueprint; // size = 0x28
extern AnimScript toy_tank_as_close_hatch;
extern EvtScript N(init);
extern EvtScript N(takeTurn);
extern EvtScript N(idle);
extern EvtScript N(handleEvent);
extern EvtScript N(onHit);
extern EvtScript N(shake_tank);
extern EvtScript N(onDeath);
s32 N(defenseTable)[] = {
ELEMENT_NORMAL, 1,
ELEMENT_SHOCK, 0,
ELEMENT_END,
};
s32 N(statusTable)[] = {
STATUS_NORMAL, 0,
STATUS_DEFAULT, 0,
STATUS_SLEEP, 0,
STATUS_POISON, 0,
STATUS_FROZEN, 0,
STATUS_DIZZY, 0,
STATUS_FEAR, 0,
STATUS_STATIC, 0,
STATUS_PARALYZE, 0,
STATUS_SHRINK, 0,
STATUS_STOP, 0,
STATUS_DEFAULT_TURN_MOD, 0,
STATUS_SLEEP_TURN_MOD, 0,
STATUS_POISON_TURN_MOD, 0,
STATUS_FROZEN_TURN_MOD, 0,
STATUS_DIZZY_TURN_MOD, 0,
STATUS_FEAR_TURN_MOD, 0,
STATUS_STATIC_TURN_MOD, 0,
STATUS_PARALYZE_TURN_MOD, 0,
STATUS_SHRINK_TURN_MOD, 0,
STATUS_STOP_TURN_MOD, 0,
STATUS_END,
};
ActorPartBlueprint N(parts)[] = {
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_MULTI_TARGET,
.index = 1,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 35 },
.opacity = 255,
.idleAnimations = NULL,
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = -14,
},
};
ActorBlueprint NAMESPACE = {
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_80 | ACTOR_FLAG_40000,
.type = ACTOR_TYPE_LIGHT_BULB,
.level = 0,
.maxHP = 8,
.partCount = ARRAY_COUNT(N(parts)),
.partsData = N(parts),
.script = &N(init),
.statusTable = N(statusTable),
.escapeChance = 0,
.airLiftChance = 0,
.spookChance = 0,
.baseStatusChance = 0,
.upAndAwayChance = 0,
.spinSmashReq = 4,
.powerBounceChance = 80,
.coinReward = 0,
.size = { 30, 30 },
.hpBarOffset = { 0, 0 },
.statusIconOffset = { -10, 20 },
.statusMessageOffset = { 10, 20 },
};
EvtScript N(init) = {
EVT_CALL(SetActorPos, ACTOR_SELF, 116, 70, 0)
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_ADDR(N(takeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_ADDR(N(idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_ADDR(N(handleEvent)))
EVT_RETURN
EVT_END
};
EvtScript N(idle) = {
EVT_LABEL(0)
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(handleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LW(0))
EVT_SWITCH(LW(0))
EVT_CASE_EQ(EVENT_HIT_COMBO)
EVT_EXEC_WAIT(N(onHit))
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
EVT_EXEC_WAIT(N(onHit))
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_EXEC_WAIT(N(onHit))
EVT_CASE_EQ(EVENT_UNKNOWN_TRIGGER)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 9, LW(0))
EVT_IF_EQ(LW(0), 0)
EVT_CALL(func_8026E914, LW(0), LW(1))
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_WAIT_FRAMES(30)
EVT_END_IF
EVT_CASE_EQ(EVENT_IMMUNE)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 9, LW(0))
EVT_IF_EQ(LW(0), 0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_WAIT_FRAMES(30)
EVT_END_IF
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
EVT_CASE_OR_EQ(EVENT_DEATH)
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_EXEC_WAIT(N(onDeath))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_EXEC_WAIT(N(onDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIKE_CONTACT)
EVT_CASE_EQ(EVENT_BURN_CONTACT)
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(takeTurn) = {
EVT_RETURN
EVT_END
};
EvtScript N(onHit) = {
EVT_EXEC_WAIT(N(shake_tank))
EVT_RETURN
EVT_END
};
EvtScript N(shake_tank) = {
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 9, LW(0))
EVT_IF_EQ(LW(0), 0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_WAIT_FRAMES(30)
EVT_END_IF
EVT_RETURN
EVT_END
};
ApiStatus func_80218250_52B8F0(Evt* script, s32 isInitialCall) {
s32 i;
IceShardBlueprint bpArray[] = {
{
.unk_00 = 1,
.unk_04 = 117.0f,
.unk_08 = 102.0f,
.unk_0C = 0.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.3f,
.unk_1C = 0.7f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 82.0f,
.unk_0C = 11.0f,
.unk_10 = 0.5f,
.unk_14 = 20,
.unk_18 = 0.3f,
.unk_1C = 0.9f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 92.0f,
.unk_0C = 14.0f,
.unk_10 = 0.4f,
.unk_14 = 20,
.unk_18 = 0.3f,
.unk_1C = 0.8f,
.unk_20 = 0.3f,
.unk_24 = -0.3f,
},
{
.unk_00 = 1,
.unk_04 = 125.0f,
.unk_08 = 82.0f,
.unk_0C = 0.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.5f,
.unk_1C = 0.9f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 108.0f,
.unk_08 = 82.0f,
.unk_0C = 0.0f,
.unk_10 = 0.3f,
.unk_14 = 20,
.unk_18 = -0.2f,
.unk_1C = 0.9f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 105.0f,
.unk_08 = 92.0f,
.unk_0C = 0.0f,
.unk_10 = 0.4f,
.unk_14 = 20,
.unk_18 = -0.1f,
.unk_1C = 0.8f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
},
{
.unk_00 = 1,
.unk_04 = 127.0f,
.unk_08 = 92.0f,
.unk_0C = 0.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.7f,
.unk_1C = 0.8f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 97.0f,
.unk_0C = 7.0f,
.unk_10 = 0.1f,
.unk_14 = 20,
.unk_18 = 0.7f,
.unk_1C = 0.8f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 87.0f,
.unk_0C = 7.0f,
.unk_10 = 0.3f,
.unk_14 = 20,
.unk_18 = 0.7f,
.unk_1C = 0.8f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 111.0f,
.unk_08 = 97.0f,
.unk_0C = 3.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.0f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 111.0f,
.unk_08 = 92.0f,
.unk_0C = 7.0f,
.unk_10 = 0.1f,
.unk_14 = 20,
.unk_18 = 0.0f,
.unk_1C = 1.0f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 111.0f,
.unk_08 = 87.0f,
.unk_0C = 3.0f,
.unk_10 = 0.5f,
.unk_14 = 20,
.unk_18 = 0.0f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
},
{
.unk_00 = 1,
.unk_04 = 123.0f,
.unk_08 = 97.0f,
.unk_0C = 3.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.1f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 123.0f,
.unk_08 = 92.0f,
.unk_0C = 7.0f,
.unk_10 = 0.4f,
.unk_14 = 20,
.unk_18 = 0.1f,
.unk_1C = 1.0f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 123.0f,
.unk_08 = 87.0f,
.unk_0C = 3.0f,
.unk_10 = 0.3f,
.unk_14 = 20,
.unk_18 = 0.1f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
},
};
for (i = 0; i < ARRAY_COUNT(bpArray); i++) {
EffectInstance* effect = fx_ice_shard(bpArray[i].unk_00, bpArray[i].unk_04, bpArray[i].unk_08,
bpArray[i].unk_0C, bpArray[i].unk_10, bpArray[i].unk_14);
((IceShardFXData*)effect->data)->unk_4C = bpArray[i].unk_18;
((IceShardFXData*)effect->data)->unk_50 = bpArray[i].unk_1C;
((IceShardFXData*)effect->data)->unk_54 = bpArray[i].unk_20;
((IceShardFXData*)effect->data)->unk_58 = bpArray[i].unk_24;
}
return ApiStatus_DONE2;
}
EvtScript N(onDeath) = {
EVT_CALL(PlaySoundAtActor, ACTOR_ENEMY2, SOUND_3AE)
EVT_CALL(func_80218250_52B8F0)
EVT_CALL(EnableModel, 39, 0)
EVT_CALL(EnableModel, 41, 0)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, 5, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(RemoveEffect, LW(0))
EVT_CALL(SetActorVar, ACTOR_ENEMY1, 5, 0)
EVT_END_IF
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_END
};

View File

@ -0,0 +1,886 @@
#include "common.h"
#include "battle/battle.h"
#include "script_api/battle.h"
#include "effects.h"
#include "message_ids.h"
#include "sprite/npc/general_guy.h"
#include "sprite/npc/tank_guy.h"
#include "mapfs/omo_bt07_shape.h"
#define NAMESPACE b_area_omo2_toy_tank
extern ActorBlueprint b_area_omo2_4_signal_guy;
extern ActorBlueprint b_area_omo2_2_stilt_guy;
extern ActorBlueprint b_area_omo2_3_shy_stack;
extern ActorBlueprint b_area_omo2_5_shy_squad_dup;
extern EvtScript N(init);
extern EvtScript N(takeTurn);
extern EvtScript N(idle);
extern EvtScript N(handleEvent);
extern EvtScript N(onHit);
extern EvtScript N(shake_tank);
extern EvtScript N(select_phase);
extern EvtScript N(update_phase);
extern EvtScript N(start_stilt_guys_phase);
extern EvtScript N(start_shy_stack_phase);
extern EvtScript N(summon_stilt_guys);
extern EvtScript N(summon_tank_squad);
extern EvtScript N(start_battle_with_tank);
extern EvtScript N(onDeath);
extern EvtScript N(8022F4D0);
extern EvtScript N(8022F458);
extern EvtScript N(8022F2BC);
extern Formation N(formation_signal_guy);
extern Formation N(formation_stilt_guy_1);
extern Formation N(formation_stilt_guy_2);
extern Formation N(formation_shy_stack_1);
extern Formation N(formation_shy_stack_2);
extern Formation N(formation_shy_squad_dup);
ApiStatus N(UpdateBulbGlow)(Evt* script, s32 isInitialCall) {
Bytecode *args = script->ptrReadPos;
s32 x = evt_get_variable(script, *args++);
s32 y = evt_get_variable(script, *args++);
s32 z = evt_get_variable(script, *args++);
s32 rotation = evt_get_variable(script, *args++);
BulbGlowFXData* effectData = ((EffectInstance*) evt_get_variable(script, *args++))->data;
effectData->pos.x = x;
effectData->pos.y = y;
effectData->pos.z = z + 2;
return ApiStatus_DONE2;
}
ApiStatus func_802181F4_52B894(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
get_actor(script->owner1.actorID);
set_screen_overlay_params_back(13, evt_get_variable(script, *args));
return ApiStatus_DONE2;
}
#include "animation.inc.c"
s32 N(defenseTable)[] = {
ELEMENT_NORMAL, 2,
ELEMENT_END,
};
s32 N(statusTable)[] = {
STATUS_NORMAL, 0,
STATUS_DEFAULT, 0,
STATUS_SLEEP, 0,
STATUS_POISON, 0,
STATUS_FROZEN, 0,
STATUS_DIZZY, 0,
STATUS_FEAR, 0,
STATUS_STATIC, 0,
STATUS_PARALYZE, 0,
STATUS_SHRINK, 0,
STATUS_STOP, 0,
STATUS_DEFAULT_TURN_MOD, 0,
STATUS_SLEEP_TURN_MOD, 0,
STATUS_POISON_TURN_MOD, 0,
STATUS_FROZEN_TURN_MOD, 0,
STATUS_DIZZY_TURN_MOD, 0,
STATUS_FEAR_TURN_MOD, 0,
STATUS_STATIC_TURN_MOD, 0,
STATUS_PARALYZE_TURN_MOD, 0,
STATUS_SHRINK_TURN_MOD, 0,
STATUS_STOP_TURN_MOD, 0,
STATUS_END,
};
ActorPartBlueprint N(parts)[] = {
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
.index = 1,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 60 },
.opacity = 255,
.idleAnimations = NULL,
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000 | ACTOR_PART_FLAG_MULTI_TARGET,
.index = 2,
.posOffset = { 0, 30, 0 },
.targetOffset = { 0, 50 },
.opacity = 255,
.idleAnimations = NULL,
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
.unk_20 = MSG_actor_general_guy_dup,
},
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 3,
.posOffset = { -5, 0, 0 },
.targetOffset = { -10, 20 },
.opacity = 255,
.idleAnimations = NULL,
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
.unk_20 = MSG_actor_general_guy_dup,
},
};
ActorBlueprint NAMESPACE = {
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_40000,
.type = ACTOR_TYPE_TOY_TANK,
.level = 0,
.maxHP = 30,
.partCount = ARRAY_COUNT(N(parts)),
.partsData = N(parts),
.script = &N(init),
.statusTable = N(statusTable),
.escapeChance = 0,
.airLiftChance = 0,
.spookChance = 0,
.baseStatusChance = 0,
.upAndAwayChance = 0,
.spinSmashReq = 4,
.powerBounceChance = 75,
.coinReward = 0,
.size = { 48, 78 },
.hpBarOffset = { 20, -3 },
.statusIconOffset = { -10, 20 },
.statusMessageOffset = { 10, 20 },
};
EvtScript N(init) = {
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 2, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 3, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 4, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 6, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, 7, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 8, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 9, 0)
EVT_CALL(SetActorDispOffset, ACTOR_ENEMY0, 0, 7, 0)
EVT_CALL(SetActorPos, ACTOR_SELF, 85, 0, 0)
EVT_CALL(SetHomePos, ACTOR_SELF, 85, 0, 0)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_CALL(SetPartPos, ACTOR_SELF, 2, 85, 30, 0)
EVT_CALL(SetPartPos, ACTOR_SELF, 3, 80, 0, 0)
EVT_CALL(LoadAnimatedModel, 0, EVT_ADDR(toy_tank_model))
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_idle))
EVT_CALL(EnableModel, 62, 0)
EVT_CALL(SetAnimatedModelRootPosition, 0, 200, 0, 0)
EVT_CALL(SetPartTargetFlagBits, ACTOR_SELF, 3, 1, 1)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(PlayEffect, EFFECT_BULB_GLOW, 2, LW(0), LW(1), LW(2), EVT_FLOAT(1.0), LW(5), 0, 0, 0, 0, 0, 0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 5, LW(5))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_ADDR(N(takeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_ADDR(N(idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_ADDR(N(handleEvent)))
EVT_EXEC(N(select_phase))
EVT_RETURN
EVT_END
};
EvtScript N(idle) = {
EVT_LABEL(0)
EVT_CALL(ActorExists, ACTOR_ENEMY1, LW(0))
EVT_IF_NE(LW(0), FALSE)
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(GetAnimatedNodePosition, 0, 62, LW(0), LW(1), LW(2))
EVT_CALL(SetActorPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(GetAnimatedNodeRotation, 0, 62, LW(0), LW(1), LW(2))
EVT_CALL(SetActorRotation, ACTOR_ENEMY0, LW(0), 0, LW(2))
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 5, LW(5))
EVT_IF_NE(LW(5), 0)
EVT_CALL(ActorExists, ACTOR_ENEMY2, LW(0))
EVT_IF_NE(LW(0), FALSE)
EVT_CALL(GetAnimatedNodeRotation, 0, 62, LW(0), LW(1), LW(3))
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetActorVar, ACTOR_SELF, 6, LW(6))
EVT_IF_EQ(LW(6), 0)
EVT_CALL(GetActorVar, ACTOR_SELF, 7, LW(10))
EVT_IF_NE(LW(10), 0)
EVT_SET(LW(0), 1000)
EVT_END_IF
EVT_END_IF
EVT_CALL(N(UpdateBulbGlow), LW(0), LW(1), LW(2), LW(3), LW(5))
EVT_END_IF
EVT_END_IF
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(handleEvent) = {
EVT_CALL(SetActorVar, ACTOR_SELF, 9, 1)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LW(0))
EVT_SWITCH(LW(0))
EVT_CASE_EQ(EVENT_HIT_COMBO)
EVT_EXEC_WAIT(N(onHit))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetEnemyTargetOffset, ACTOR_SELF, 2, 0, 35)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
EVT_EXEC_WAIT(N(onHit))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetEnemyTargetOffset, ACTOR_SELF, 2, 0, 35)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_EXEC_WAIT(N(onHit))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetEnemyTargetOffset, ACTOR_SELF, 2, 0, 35)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CASE_EQ(EVENT_UNKNOWN_TRIGGER)
EVT_CALL(func_8026E914, LW(0), LW(1))
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_WAIT_FRAMES(30)
EVT_CASE_EQ(EVENT_IMMUNE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_WAIT_FRAMES(30)
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_WAIT_FRAMES(30)
EVT_CASE_OR_EQ(EVENT_DEATH)
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(onDeath))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(onDeath))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIKE_CONTACT)
EVT_CASE_EQ(EVENT_BURN_CONTACT)
EVT_CASE_EQ(EVENT_SHOCK_HIT)
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CASE_DEFAULT
EVT_END_SWITCH
EVT_CALL(SetActorVar, ACTOR_SELF, 9, 0)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(takeTurn) = {
EVT_RETURN
EVT_END
};
EvtScript N(onHit) = {
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY0, FALSE)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 0)
EVT_CALL(SetEnemyTargetOffset, ACTOR_SELF, 2, 0, 50)
EVT_EXEC_WAIT(N(shake_tank))
EVT_CALL(GetActorVar, ACTOR_ENEMY0, 1, LW(0))
EVT_CALL(func_80269E80, LW(1))
EVT_SWITCH(LW(1))
EVT_CASE_EQ(19)
EVT_IF_NOT_FLAG(LW(0), 0x2)
EVT_BITWISE_OR_CONST(LW(0), 0xE)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 1, LW(0))
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamZoom, 260)
EVT_CALL(SetBattleCamTarget, 85, 80, 0)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT_FRAMES(20)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x0072), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_IF
EVT_CASE_OR_EQ(3)
EVT_CASE_OR_EQ(4)
EVT_IF_NOT_FLAG(LW(0), 0x4)
EVT_BITWISE_OR_CONST(LW(0), 0xC)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 1, LW(0))
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamZoom, 260)
EVT_CALL(SetBattleCamTarget, 85, 80, 0)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT_FRAMES(20)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x0073), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_IF
EVT_END_CASE_GROUP
EVT_CASE_DEFAULT
EVT_IF_NOT_FLAG(LW(0), 0x8)
EVT_BITWISE_OR_CONST(LW(0), 0xC)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 1, LW(0))
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamZoom, 260)
EVT_CALL(SetBattleCamTarget, 85, 80, 0)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT_FRAMES(20)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x0074), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_IF
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY0, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(shake_tank) = {
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_shake))
EVT_WAIT_FRAMES(30)
EVT_RETURN
EVT_END
};
EvtScript N(select_phase) = {
EVT_LABEL(0)
EVT_CALL(ActorExists, ACTOR_ENEMY1, LW(0))
EVT_IF_EQ(LW(0), FALSE)
EVT_GOTO(99)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LW(0))
EVT_IF_EQ(LW(0), 1)
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 2)
EVT_CALL(CancelEnemyTurn, 1)
EVT_EXEC_WAIT(N(update_phase))
EVT_EXEC_WAIT(N(start_stilt_guys_phase))
EVT_ELSE
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_END_IF
EVT_LABEL(1)
EVT_CALL(ActorExists, ACTOR_ENEMY1, LW(0))
EVT_IF_EQ(LW(0), FALSE)
EVT_GOTO(99)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 2, LW(0))
EVT_IF_EQ(LW(0), 2)
EVT_CALL(SetActorVar, ACTOR_SELF, 2, 3)
EVT_CALL(CancelEnemyTurn, 1)
EVT_EXEC_WAIT(N(update_phase))
EVT_EXEC_WAIT(N(start_shy_stack_phase))
EVT_ELSE
EVT_WAIT_FRAMES(1)
EVT_GOTO(1)
EVT_END_IF
EVT_LABEL(2)
EVT_CALL(ActorExists, ACTOR_ENEMY1, LW(0))
EVT_IF_EQ(LW(0), FALSE)
EVT_GOTO(99)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 3, LW(0))
EVT_IF_NE(LW(0), 2)
EVT_WAIT_FRAMES(1)
EVT_GOTO(2)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, 4, 2)
EVT_CALL(CancelEnemyTurn, 1)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 2, 8)
EVT_EXEC_WAIT(N(start_battle_with_tank))
EVT_GOTO(99)
EVT_LABEL(3) // unreachable code
EVT_CALL(ActorExists, ACTOR_ENEMY1, LW(0))
EVT_IF_EQ(LW(0), FALSE)
EVT_GOTO(99)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 2, LW(0))
EVT_IF_NE(LW(0), 2)
EVT_WAIT_FRAMES(1)
EVT_GOTO(3)
EVT_END_IF
EVT_CALL(GetCurrentPartnerID, LW(0))
EVT_IF_EQ(LW(0), PARTNER_WATT)
EVT_CALL(SetActorVar, ACTOR_SELF, 2, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, 3, 0)
EVT_CALL(CancelEnemyTurn, 1)
EVT_EXEC_WAIT(N(update_phase))
EVT_EXEC_WAIT(N(start_shy_stack_phase))
EVT_WAIT_FRAMES(1)
EVT_GOTO(2)
EVT_ELSE
EVT_CALL(SetActorVar, ACTOR_SELF, 3, 3)
EVT_CALL(SetActorVar, ACTOR_SELF, 2, 3)
EVT_CALL(CancelEnemyTurn, 1)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 2, 7)
EVT_EXEC_WAIT(N(summon_tank_squad))
EVT_WAIT_FRAMES(1)
EVT_GOTO(10)
EVT_END_IF
EVT_LABEL(10)
EVT_CALL(ActorExists, ACTOR_ENEMY1, LW(0))
EVT_IF_EQ(LW(0), FALSE)
EVT_GOTO(99)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 4, LW(0))
EVT_IF_EQ(LW(0), 1)
EVT_CALL(SetActorVar, ACTOR_SELF, 4, 2)
EVT_CALL(CancelEnemyTurn, 1)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 2, 8)
EVT_EXEC_WAIT(N(start_battle_with_tank))
EVT_END_IF
EVT_WAIT_FRAMES(1)
EVT_GOTO(10)
EVT_LABEL(99)
EVT_RETURN
EVT_END
};
EvtScript N(update_phase) = {
EVT_CALL(GetActorVar, ACTOR_ENEMY0, 2, LW(0))
EVT_SWITCH(LW(0))
EVT_CASE_EQ(6)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 2, 5)
EVT_CASE_DEFAULT
EVT_ADD(LW(0), 1)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 2, LW(0))
EVT_END_SWITCH
EVT_RETURN
EVT_END
};
EvtScript N(start_stilt_guys_phase) = {
EVT_CALL(func_802535B4, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT_FRAMES(30)
EVT_CALL(GetActorVar, ACTOR_ENEMY0, 1, LW(0))
EVT_IF_NOT_FLAG(LW(0), 0x1)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x0069), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_0, NPC_ANIM_general_guy_Palette_00_Anim_0)
EVT_ELSE // shy squad has fleed
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x006A), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_C, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_END_IF
EVT_CALL(LoadBattleSection, 44)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_signal_guy)), 1)
EVT_WAIT_FRAMES(60)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_TOY_TANK_MOVE1)
EVT_WAIT_FRAMES(5)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_move_forward))
EVT_CALL(SetAnimatedModelRootPosition, 0, 20, 0, 0)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_3)
EVT_WAIT_FRAMES(25)
EVT_WAIT_FRAMES(2)
EVT_CALL(SetOwnerTarget, LW(0), 1)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LW(1), DAMAGE_TYPE_IGNORE_DEFENSE, 0, 0, 4, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_10)
EVT_WAIT_FRAMES(16)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_4)
EVT_WAIT_FRAMES(16)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_TOY_TANK_MOVE2)
EVT_WAIT_FRAMES(4)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_WAIT_FRAMES(20)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_idle))
EVT_WAIT_FRAMES(26)
EVT_EXEC_WAIT(N(summon_stilt_guys))
EVT_CALL(GetActorPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(SetHomePos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(HPBarToHome, ACTOR_ENEMY0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_CALL(func_802535B4, 1)
EVT_CALL(func_8026BF48, 0)
EVT_RETURN
EVT_END
};
EvtScript N(start_shy_stack_phase) = {
EVT_CALL(func_802535B4, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY0)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(40)
EVT_CALL(GetActorVar, ACTOR_ENEMY0, 2, LW(0))
EVT_IF_EQ(LW(0), 2)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x006E), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_C, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_ELSE
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT_FRAMES(10)
EVT_CALL(LoadBattleSection, 43)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_shy_stack_1)), 1)
EVT_WAIT_FRAMES(124)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_shy_stack_2)), 1)
EVT_WAIT_FRAMES(114)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_idle))
EVT_LABEL(0)
EVT_CALL(GetActorVar, ACTOR_SELF, 2, LW(0))
EVT_IF_NE(LW(0), 4)
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(GetActorPos, ACTOR_ENEMY4, LW(0), LW(1), LW(2))
EVT_CALL(SetBattleCamTarget, LW(0), LW(1), LW(2))
EVT_CALL(SetBattleCamZoom, 320)
EVT_CALL(SetBattleCamOffsetZ, 60)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(40)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x006F), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_C, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_ENEMY3, LW(0), LW(1), LW(2))
EVT_CALL(SetActorJumpGravity, ACTOR_ENEMY3, EVT_FLOAT(1.5))
EVT_CALL(SetGoalPos, ACTOR_ENEMY3, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_ENEMY3, 10, FALSE, TRUE, FALSE)
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY3, FALSE)
EVT_CALL(SetPartScale, ACTOR_ENEMY3, 1, EVT_FLOAT(1.1), EVT_FLOAT(0.9), EVT_FLOAT(1.0))
EVT_WAIT_FRAMES(1)
EVT_CALL(SetPartScale, ACTOR_ENEMY3, 1, EVT_FLOAT(1.2), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT_FRAMES(1)
EVT_CALL(SetPartScale, ACTOR_ENEMY3, 1, EVT_FLOAT(1.1), EVT_FLOAT(0.9), EVT_FLOAT(1.0))
EVT_WAIT_FRAMES(1)
EVT_CALL(SetPartScale, ACTOR_ENEMY3, 1, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY3, TRUE)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_ENEMY4, LW(0), LW(1), LW(2))
EVT_CALL(SetActorJumpGravity, ACTOR_ENEMY4, EVT_FLOAT(1.5))
EVT_CALL(SetGoalPos, ACTOR_ENEMY4, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_ENEMY4, 10, FALSE, TRUE, FALSE)
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY4, FALSE)
EVT_CALL(SetPartScale, ACTOR_ENEMY4, 1, EVT_FLOAT(1.1), EVT_FLOAT(0.9), EVT_FLOAT(1.0))
EVT_WAIT_FRAMES(1)
EVT_CALL(SetPartScale, ACTOR_ENEMY4, 1, EVT_FLOAT(1.2), EVT_FLOAT(0.8), EVT_FLOAT(1.0))
EVT_WAIT_FRAMES(1)
EVT_CALL(SetPartScale, ACTOR_ENEMY4, 1, EVT_FLOAT(1.1), EVT_FLOAT(0.9), EVT_FLOAT(1.0))
EVT_WAIT_FRAMES(1)
EVT_CALL(SetPartScale, ACTOR_ENEMY4, 1, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY4, TRUE)
EVT_END_THREAD
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x0070), ACTOR_ENEMY4, 1, -1, -1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT_FRAMES(30)
EVT_CALL(func_802535B4, 1)
EVT_CALL(func_8026BF48, 0)
EVT_RETURN
EVT_END
};
EvtScript N(summon_stilt_guys) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY0)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(40)
EVT_CALL(func_8024ECF8, 0, 1, 0)
EVT_CALL(GetActorVar, ACTOR_ENEMY0, 2, LW(0))
EVT_IF_EQ(LW(0), 1)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x006B), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_C, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_ELSE
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT_FRAMES(10)
EVT_CALL(LoadBattleSection, 42)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_stilt_guy_1)), 1)
EVT_WAIT_FRAMES(60)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_stilt_guy_2)), 1)
EVT_WAIT_FRAMES(60)
EVT_LABEL(1)
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LW(0))
EVT_IF_NE(LW(0), 3)
EVT_WAIT_FRAMES(1)
EVT_GOTO(1)
EVT_END_IF
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
EVT_CALL(SetBattleCamTarget, 50, 1, 0)
EVT_CALL(SetBattleCamZoom, 320)
EVT_CALL(SetBattleCamOffsetZ, 60)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(40)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x006C), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_C, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_ENEMY3, LW(0), LW(1), LW(2))
EVT_CALL(SetActorJumpGravity, ACTOR_ENEMY3, EVT_FLOAT(1.5))
EVT_CALL(SetGoalPos, ACTOR_ENEMY3, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_ENEMY3, 10, FALSE, TRUE, FALSE)
EVT_END_THREAD
EVT_THREAD
EVT_CALL(GetActorPos, ACTOR_ENEMY4, LW(0), LW(1), LW(2))
EVT_CALL(SetActorJumpGravity, ACTOR_ENEMY4, EVT_FLOAT(1.5))
EVT_CALL(SetGoalPos, ACTOR_ENEMY4, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_ENEMY4, 10, FALSE, TRUE, FALSE)
EVT_END_THREAD
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x006D), ACTOR_ENEMY4, 1, -1, -1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_CALL(func_8026BF48, 0)
EVT_RETURN
EVT_END
};
EvtScript N(summon_tank_squad) = {
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT_FRAMES(30)
EVT_CALL(SetActorYaw, ACTOR_ENEMY0, 180)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_3)
EVT_CALL(SetActorVar, ACTOR_SELF, 6, 0)
EVT_WAIT_FRAMES(10)
EVT_CALL(func_80253734, 1)
EVT_CALL(SetActorVar, ACTOR_SELF, 7, 1)
EVT_EXEC(N(8022F2BC))
EVT_WAIT_FRAMES(30)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY0)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(20)
EVT_CALL(func_8024ECF8, 0, 1, 0)
EVT_CALL(EndActorSpeech, ACTOR_ENEMY0, 1, -1, -1)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetActorYaw, ACTOR_ENEMY0, 0)
EVT_WAIT_FRAMES(20)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT_FRAMES(30)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(LoadBattleSection, 45)
EVT_CALL(SummonEnemy, EVT_ADDR(N(formation_shy_squad_dup)), 1)
EVT_WAIT_FRAMES(155)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(SetBattleCamZoom, 350)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY0)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT_FRAMES(40)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_3)
EVT_CALL(EndActorSpeech, ACTOR_ENEMY0, 1, -1, -1)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(SetBattleCamZoom, 300)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY3)
EVT_CALL(MoveBattleCamOver, 30)
EVT_WAIT_FRAMES(20)
EVT_SET(LW(0), 2)
EVT_LOOP(15)
EVT_CALL(RandInt, 3, LW(1))
EVT_SWITCH(LW(1))
EVT_CASE_EQ(0)
EVT_SET(LW(1), NPC_ANIM_tank_guy_Palette_00_Anim_8)
EVT_CASE_EQ(1)
EVT_SET(LW(1), NPC_ANIM_tank_guy_Palette_00_Anim_9)
EVT_CASE_EQ(2)
EVT_SET(LW(1), NPC_ANIM_tank_guy_Palette_00_Anim_A)
EVT_CASE_DEFAULT
EVT_SET(LW(1), NPC_ANIM_tank_guy_Palette_00_Anim_6)
EVT_END_SWITCH
EVT_CALL(SetAnimation, ACTOR_ENEMY3, LW(0), LW(1))
EVT_ADD(LW(0), 1)
EVT_END_LOOP
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_4)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 20)
EVT_WAIT_FRAMES(20)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_SET(LW(0), 2)
EVT_LOOP(15)
EVT_CALL(SetAnimation, ACTOR_ENEMY3, LW(0), NPC_ANIM_tank_guy_Palette_00_Anim_1)
EVT_ADD(LW(0), 1)
EVT_END_LOOP
EVT_CALL(func_8026BF48, 0)
EVT_RETURN
EVT_END
};
EvtScript N(start_battle_with_tank) = {
EVT_CALL(func_802535B4, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY0)
EVT_CALL(MoveBattleCamOver, 60)
EVT_WAIT_FRAMES(60)
EVT_CALL(ActorSpeak, MESSAGE_ID(0x0F, 0x0071), ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_0, NPC_ANIM_general_guy_Palette_00_Anim_0)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_CALL(EndActorSpeech, ACTOR_ENEMY0, 1, -1, -1)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_20000000, 0)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY2, 1, ACTOR_PART_FLAG_NO_TARGET, 0)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY1, 2, ACTOR_PART_FLAG_NO_TARGET, 0)
EVT_CALL(SetActorFlagBits, ACTOR_ENEMY1, ACTOR_FLAG_40000, 0)
EVT_CALL(HPBarToHome, ACTOR_ENEMY1)
EVT_CALL(SetActorVar, ACTOR_ENEMY0, 0, 1)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_2)
EVT_CALL(SetEnemyTargetOffset, ACTOR_SELF, 2, 0, 35)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, 1, ACTOR_PART_FLAG_INVISIBLE, 1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, 1, SOUND_206B)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_CALL(func_802535B4, 1)
EVT_CALL(func_8026BF48, 0)
EVT_RETURN
EVT_END
};
EvtScript N(onDeath) = {
EVT_WAIT_FRAMES(15)
EVT_CALL(PlaySoundAtActor, ACTOR_ENEMY1, SOUND_36F)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_fall_apart))
EVT_CALL(GetActorVar, ACTOR_SELF, 5, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_CALL(RemoveEffect, LW(0))
EVT_CALL(SetActorVar, ACTOR_SELF, 5, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 6, 0)
EVT_END_IF
EVT_WAIT_FRAMES(45)
EVT_WAIT_FRAMES(10)
EVT_CALL(UseIdleAnimation, ACTOR_ENEMY0, FALSE)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_WAIT_FRAMES(15)
EVT_CALL(PlayEffect, EFFECT_EXPLOSION, 2, 102, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
EVT_CALL(BattleCamTargetActor, ACTOR_ENEMY0)
EVT_CALL(MoveBattleCamOver, 60)
EVT_CALL(PlaySoundAtActor, ACTOR_ENEMY1, SOUND_34E)
EVT_CALL(SetActorJumpGravity, ACTOR_ENEMY0, EVT_FLOAT(0.6))
EVT_CALL(SetActorDispOffset, ACTOR_ENEMY0, 0, 0, 0)
EVT_CALL(GetActorPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_SET(LW(1), 0)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_5)
EVT_THREAD
EVT_WAIT_FRAMES(25)
EVT_CALL(SetAnimatedModelRootPosition, 0, 380, 0, 0)
EVT_END_THREAD
EVT_CALL(SetGoalPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_ENEMY0, 50, FALSE, TRUE, FALSE)
EVT_CALL(PlaySoundAtActor, ACTOR_ENEMY0, SOUND_20E4)
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
EVT_CALL(MoveBattleCamOver, 30)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_10)
EVT_CALL(GetActorPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_ADD(LW(0), 18)
EVT_CALL(ForceHomePos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(SetEnemyHP, ACTOR_ENEMY0, 1)
EVT_CALL(SetPartDispOffset, ACTOR_ENEMY0, 1, 0, 0, 0)
EVT_CALL(SetActorRotation, ACTOR_ENEMY0, 0, 0, 0)
EVT_CALL(SetActorJumpGravity, ACTOR_ENEMY0, EVT_FLOAT(1.0))
EVT_CALL(GetActorPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(SetGoalPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_ENEMY0, 12, FALSE, TRUE, FALSE)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, 1, NPC_ANIM_general_guy_Palette_00_Anim_7)
EVT_CALL(ShakeCam, 1, 0, 6, EVT_FLOAT(1.0))
EVT_CALL(GetActorPos, ACTOR_ENEMY0, LW(0), LW(1), LW(2))
EVT_ADD(LW(0), 10)
EVT_ADD(LW(1), 30)
EVT_CALL(PlayEffect, EFFECT_STARS_ORBITING, 0, LW(0), LW(1), LW(2), 20, 4, LW(15), 0, 0, 0, 0, 0, 0)
EVT_CALL(PlaySoundAtActor, ACTOR_ENEMY0, SOUND_20E5)
EVT_CALL(DropStarPoints, 512)
EVT_WAIT_FRAMES(30)
EVT_CALL(RemoveEffect, LW(15))
EVT_CALL(ActorExists, ACTOR_ENEMY2, LW(0))
EVT_IF_NE(LW(0), FALSE)
EVT_CALL(SetActorFlagBits, ACTOR_ENEMY2, ACTOR_FLAG_NO_DMG_APPLY, 1)
EVT_END_IF
EVT_CALL(SetActorFlagBits, ACTOR_ENEMY0, ACTOR_FLAG_NO_DMG_APPLY, 1)
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_END
};
EvtScript N(8022F2BC) = {
EVT_LABEL(0)
EVT_CALL(ActorExists, ACTOR_SELF, LW(0))
EVT_IF_EQ(LW(0), FALSE)
EVT_RETURN
EVT_END_IF
EVT_CALL(func_802537C0, LW(0), LW(1))
EVT_IF_EQ(LW(0), 1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 7, LW(0))
EVT_IF_EQ(LW(0), 0)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_SELF, 8, LW(1))
EVT_CALL(GetCurrentPartnerID, LW(0))
EVT_IF_EQ(LW(0), PARTNER_WATT)
EVT_EXEC_WAIT(N(8022F458))
EVT_ELSE
EVT_CALL(GetActorVar, ACTOR_SELF, 6, LW(0))
EVT_IF_NE(LW(0), 0)
EVT_EXEC_WAIT(N(8022F458))
EVT_ELSE
EVT_EXEC_WAIT(N(8022F4D0))
EVT_END_IF
EVT_END_IF
EVT_CALL(func_802181F4_52B894, LW(1))
EVT_LABEL(10)
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(8022F458) = {
EVT_IF_NE(LW(1), 0)
EVT_SUB(LW(1), 5)
EVT_IF_LT(LW(1), 0)
EVT_SET(LW(1), 0)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, 8, LW(1))
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(8022F4D0) = {
EVT_IF_NE(LW(1), 215)
EVT_ADD(LW(1), 5)
EVT_IF_GT(LW(1), 215)
EVT_SET(LW(1), 215)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, 8, LW(1))
EVT_END_IF
EVT_RETURN
EVT_END
};
Vec3i N(summon_pos) = { 240, 0, 0 };
Formation N(formation_signal_guy) = {
{ .actor = &b_area_omo2_4_signal_guy, .home = { .vec = &N(summon_pos) }, .priority = 95, }
};
Formation N(formation_stilt_guy_1) = {
{ .actor = &b_area_omo2_2_stilt_guy, .home = { .vec = &N(summon_pos) }, .priority = 95, }
};
Formation N(formation_stilt_guy_2) = {
{ .actor = &b_area_omo2_2_stilt_guy, .home = { .vec = &N(summon_pos) }, .priority = 90, .var0 = 1, }
};
Formation N(formation_shy_stack_1) = {
{ .actor = &b_area_omo2_3_shy_stack, .home = { .vec = &N(summon_pos) }, .priority = 95, }
};
Formation N(formation_shy_stack_2) = {
{ .actor = &b_area_omo2_3_shy_stack, .home = { .vec = &N(summon_pos) }, .priority = 90, .var0 = 1, }
};
Formation N(formation_shy_squad_dup) = {
{ .actor = &b_area_omo2_5_shy_squad_dup, .home = { .vec = &N(summon_pos) }, .priority = 95, }
};

View File

@ -0,0 +1,26 @@
#include "common.h"
#include "battle/battle.h"
#define NAMESPACE b_area_omo2
extern ActorBlueprint N(general_guy);
extern ActorBlueprint N(toy_tank);
extern ActorBlueprint N(light_bulb);
extern Stage N(omo_07);
Formation N(formation_01) = {
{ .actor = &N(general_guy), .home = { .index = 2 }, .priority = 70, },
{ .actor = &N(toy_tank), .home = { .index = 1 }, .priority = 80, },
{ .actor = &N(light_bulb), .home = { .index = 7 }, .priority = 90, },
};
BattleList N(formationTable) = {
BATTLE("しょうぐんヘイホー", N(formation_01), &N(omo_07)),
{},
};
StageList N(stageTable) = {
{ "omo_07", &N(omo_07) },
{},
};

View File

@ -0,0 +1,24 @@
#include "common.h"
#include "battle/battle.h"
#define NAMESPACE b_area_omo2_omo_07
EvtScript N(beforeBattle) = {
EVT_CALL(SetSpriteShading, -1)
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
EVT_RETURN
EVT_END
};
EvtScript N(afterBattle) = {
EVT_RETURN
EVT_END
};
Stage NAMESPACE = {
.texture = "omo_tex",
.shape = "omo_bt07_shape",
.hit = "omo_bt07_hit",
.preBattle = &N(beforeBattle),
.postBattle = &N(afterBattle),
};

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo2_1
INCLUDE_ASM(s32, "battle/area_omo2_1/543570", func_80231000_543570);

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo2_2
#include "common/GetSelectedMoveID.inc.c"
INCLUDE_ASM(s32, "battle/area_omo2_2/5483E0", func_8023102C_54840C);
#include "common/UnkBattleFunc1.inc.c"

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo2_3
ApiStatus func_80231000_54CC70(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
evt_get_variable(script, args[1]);
return ApiStatus_DONE2;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,196 @@
#include "common.h"
#include "battle/battle.h"
#include "script_api/battle.h"
#include "effects.h"
#include "sprite/npc/marshal_guy.h"
#define NAMESPACE b_area_omo2_4_signal_guy
extern s32 N(idleAnimations)[];
extern EvtScript N(init);
extern EvtScript N(takeTurn);
extern EvtScript N(idle);
extern EvtScript N(handleEvent);
s32 N(defenseTable)[] = {
ELEMENT_NORMAL, 0,
ELEMENT_END,
};
s32 N(statusTable)[] = {
STATUS_NORMAL, 0,
STATUS_DEFAULT, 0,
STATUS_SLEEP, 0,
STATUS_POISON, 0,
STATUS_FROZEN, 0,
STATUS_DIZZY, 0,
STATUS_FEAR, 0,
STATUS_STATIC, 0,
STATUS_PARALYZE, 0,
STATUS_SHRINK, 0,
STATUS_STOP, 0,
STATUS_DEFAULT_TURN_MOD, 0,
STATUS_SLEEP_TURN_MOD, 0,
STATUS_POISON_TURN_MOD, 0,
STATUS_FROZEN_TURN_MOD, 0,
STATUS_DIZZY_TURN_MOD, 0,
STATUS_FEAR_TURN_MOD, 0,
STATUS_STATIC_TURN_MOD, 0,
STATUS_PARALYZE_TURN_MOD, 0,
STATUS_SHRINK_TURN_MOD, 0,
STATUS_STOP_TURN_MOD, 0,
STATUS_END,
};
ActorPartBlueprint N(parts)[] = {
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_MULTI_TARGET | ACTOR_PART_FLAG_20000000,
.index = 1,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = -1,
.unk_1D = -10,
},
};
ActorBlueprint NAMESPACE = {
.flags = ACTOR_FLAG_NO_DMG_POPUP,
.type = ACTOR_TYPE_SIGNAL_GUY,
.level = 0,
.maxHP = 8,
.partCount = ARRAY_COUNT(N(parts)),
.partsData = N(parts),
.script = &N(init),
.statusTable = N(statusTable),
.escapeChance = 0,
.airLiftChance = 0,
.spookChance = 0,
.baseStatusChance = 0,
.upAndAwayChance = 0,
.spinSmashReq = 4,
.powerBounceChance = 80,
.coinReward = 0,
.size = { 30, 30 },
.hpBarOffset = { 0, 0 },
.statusIconOffset = { -10, 20 },
.statusMessageOffset = { 10, 20 },
};
s32 N(idleAnimations)[] = {
STATUS_NORMAL, NPC_ANIM_marshal_guy_Palette_00_Anim_1,
STATUS_END,
};
EvtScript N(init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_ADDR(N(takeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_ADDR(N(idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_ADDR(N(handleEvent)))
EVT_CALL(SetActorPos, ACTOR_SELF, 180, 0, 0)
EVT_CALL(ForceHomePos, ACTOR_SELF, 180, 0, 0)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_THREAD
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_F)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(5.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, 0, 0, 0)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_GENERAL_WHISTLE)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_4)
EVT_WAIT_FRAMES(20)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_5)
EVT_WAIT_FRAMES(15)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_9)
EVT_END_THREAD
EVT_RETURN
EVT_END
};
EvtScript N(idle) = {
EVT_LABEL(0)
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(handleEvent) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(GetLastEvent, ACTOR_SELF, LW(0))
EVT_SWITCH(LW(0))
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_HIT)
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_CASE_OR_EQ(EVENT_SHOCK_HIT)
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
EVT_CASE_OR_EQ(EVENT_IMMUNE)
EVT_CASE_OR_EQ(EVENT_SPIKE_TAUNT)
EVT_CASE_OR_EQ(EVENT_DEATH)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_A)
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.5))
EVT_CALL(GetActorPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_SUB(LW(0), 35)
EVT_CALL(SetGoalPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_2)
EVT_WAIT_FRAMES(24)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_3)
EVT_CALL(GetActorPos, ACTOR_SELF, LW(0), LW(1), LW(2))
EVT_ADD(LW(0), 5)
EVT_ADD(LW(1), 10)
EVT_LOOP(4)
EVT_CALL(PlayEffect, EFFECT_SWEAT, 0, LW(0), LW(1), LW(2), 10, 45, 4, 0, 0, 0, 0, 0, 0)
EVT_WAIT_FRAMES(6)
EVT_END_LOOP
EVT_CALL(SetActorSounds, ACTOR_SELF, 0, SOUND_20BA, SOUND_3B4)
EVT_CALL(SetActorSounds, ACTOR_SELF, 4, 10, 0)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, NPC_ANIM_marshal_guy_Palette_00_Anim_C)
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 8)
EVT_CALL(SetGoalPos, ACTOR_SELF, -200, 0, 20)
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, LW(0), 0)
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_marshal_guy_Palette_00_Anim_1)
EVT_EXEC_WAIT(DoRecover)
EVT_CASE_EQ(EVENT_30)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_marshal_guy_Palette_00_Anim_A)
EVT_EXEC_WAIT(DoNormalHit)
EVT_WAIT_FRAMES(1000)
EVT_CASE_EQ(EVENT_SCARE_AWAY)
EVT_SET_CONST(LW(0), 1)
EVT_SET_CONST(LW(1), NPC_ANIM_marshal_guy_Palette_00_Anim_1)
EVT_SET_CONST(LW(2), NPC_ANIM_marshal_guy_Palette_00_Anim_A)
EVT_EXEC_WAIT(DoScareAway)
EVT_RETURN
EVT_CASE_DEFAULT
EVT_SET_CONST(LW(1), NPC_ANIM_marshal_guy_Palette_00_Anim_A)
EVT_CALL(SetAnimation, ACTOR_SELF, 1, LW(1))
EVT_WAIT_FRAMES(20)
EVT_END_SWITCH
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(takeTurn) = {
EVT_RETURN
EVT_END
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,281 @@
#include "common.h"
#include "battle/battle.h"
#include "script_api/battle.h"
#include "sprite/npc/tank_guy.h"
#define NAMESPACE b_area_omo2_6_shy_guy_dup
extern s32 N(idleAnimations)[];
extern EvtScript N(init);
extern EvtScript N(takeTurn);
extern EvtScript N(idle);
extern EvtScript N(handleEvent);
extern EvtScript N(run_to_pos);
s32 N(defenseTable)[] = {
ELEMENT_NORMAL, 0,
ELEMENT_END,
};
s32 N(statusTable)[] = {
STATUS_NORMAL, 0,
STATUS_DEFAULT, 0,
STATUS_SLEEP, 0,
STATUS_POISON, 0,
STATUS_FROZEN, 0,
STATUS_DIZZY, 0,
STATUS_FEAR, 0,
STATUS_STATIC, 0,
STATUS_PARALYZE, 0,
STATUS_SHRINK, 0,
STATUS_STOP, 0,
STATUS_DEFAULT_TURN_MOD, 0,
STATUS_SLEEP_TURN_MOD, 0,
STATUS_POISON_TURN_MOD, 0,
STATUS_FROZEN_TURN_MOD, 0,
STATUS_DIZZY_TURN_MOD, 0,
STATUS_FEAR_TURN_MOD, 0,
STATUS_STATIC_TURN_MOD, 0,
STATUS_PARALYZE_TURN_MOD, 0,
STATUS_SHRINK_TURN_MOD, 0,
STATUS_STOP_TURN_MOD, 0,
STATUS_END,
};
ActorPartBlueprint N(parts)[] = {
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_MULTI_TARGET,
.index = 1,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = NULL,
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 2,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 3,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 4,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 5,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 6,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 7,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 8,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_100000,
.index = 9,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
.idleAnimations = N(idleAnimations),
.defenseTable = N(defenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
.unk_1C = 0,
.unk_1D = 0,
},
};
ActorBlueprint NAMESPACE = {
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_40000,
.type = ACTOR_TYPE_SHY_GUY_DUP,
.level = 0,
.maxHP = 10,
.partCount = ARRAY_COUNT(N(parts)),
.partsData = N(parts),
.script = &N(init),
.statusTable = N(statusTable),
.escapeChance = 0,
.airLiftChance = 0,
.spookChance = 0,
.baseStatusChance = 0,
.upAndAwayChance = 0,
.spinSmashReq = 4,
.powerBounceChance = 80,
.coinReward = 0,
.size = { 30, 30 },
.hpBarOffset = { 0, 0 },
.statusIconOffset = { -10, 20 },
.statusMessageOffset = { 10, 20 },
};
s32 N(idleAnimations)[] = {
STATUS_NORMAL, NPC_ANIM_tank_guy_Palette_00_Anim_1,
STATUS_STONE, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_SLEEP, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_POISON, NPC_ANIM_tank_guy_Palette_00_Anim_1,
STATUS_STOP, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_STATIC, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_PARALYZE, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_PARALYZE, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_DIZZY, NPC_ANIM_tank_guy_Palette_00_Anim_1,
STATUS_DIZZY, NPC_ANIM_tank_guy_Palette_00_Anim_1,
STATUS_FEAR, NPC_ANIM_tank_guy_Palette_00_Anim_0,
STATUS_END,
};
EvtScript N(init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_ADDR(N(takeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_ADDR(N(idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_ADDR(N(handleEvent)))
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 2, 0, 0)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 2, 1, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 3, 0, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 3, 1, -30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 4, 0, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 4, 1, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 5, 0, 20)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 5, 1, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 6, 0, 30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 6, 1, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 7, 0, 30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 7, 1, -30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 8, 0, 40)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 8, 1, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 9, 0, 50)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, 9, 1, 10)
EVT_SET(LW(0), 2)
EVT_LOOP(8)
EVT_CALL(SetPartPos, ACTOR_SELF, LW(0), 185, 0, 47)
EVT_ADD(LW(0), 1)
EVT_END_LOOP
EVT_CALL(ForceHomePos, ACTOR_SELF, 20, 0, -10)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_SET(LW(0), 2)
EVT_SET(LW(1), NPC_ANIM_tank_guy_Palette_00_Anim_3)
EVT_SET(LW(4), EVT_FLOAT(4.0))
EVT_SET(LW(5), 5)
EVT_LOOP(8)
EVT_THREAD
EVT_CALL(GetPartMovementVar, ACTOR_SELF, LW(0), 0, LW(2))
EVT_CALL(GetPartMovementVar, ACTOR_SELF, LW(0), 1, LW(3))
EVT_SET(LW(5), 20)
EVT_EXEC_WAIT(N(run_to_pos))
EVT_CALL(SetAnimation, ACTOR_SELF, LW(0), NPC_ANIM_tank_guy_Palette_00_Anim_1)
EVT_END_THREAD
EVT_ADD(LW(0), 1)
EVT_END_LOOP
EVT_RETURN
EVT_END
};
EvtScript N(idle) = {
EVT_LABEL(0)
EVT_WAIT_FRAMES(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(run_to_pos) = {
EVT_CALL(GetPartOffset, ACTOR_SELF, LW(0), LW(6), 0, LW(7))
EVT_IF_LT(LW(6), LW(2))
EVT_CALL(SetPartYaw, ACTOR_SELF, LW(0), 180)
EVT_ELSE
EVT_CALL(SetPartYaw, ACTOR_SELF, LW(0), 0)
EVT_END_IF
EVT_CALL(GetDist2D, LW(9), LW(6), LW(7), LW(2), LW(3))
EVT_IF_GE(LW(9), LW(4))
EVT_CALL(SetAnimation, ACTOR_SELF, LW(0), LW(1))
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, LW(0), LW(4))
EVT_CALL(RunPartTo, ACTOR_SELF, LW(0), LW(2), 0, LW(3), LW(5))
EVT_END_IF
EVT_RETURN
EVT_END
};
EvtScript N(handleEvent) = {
EVT_RETURN
EVT_END
};
EvtScript N(takeTurn) = {
EVT_RETURN
EVT_END
};

View File

@ -87,7 +87,7 @@ EffectTableEntry gEffectTable[] = {
/* 0x39 */ FX_ENTRY(energy_shockwave, _375510),
/* 0x3A */ FX_ENTRY(shimmer_wave, _337FC0),
/* 0x3B */ FX_ENTRY(aura, _377F80),
/* 0x3C */ FX_ENTRY_NUMBERED(3C, _37ADD0),
/* 0x3C */ FX_ENTRY(bulb_glow, _37ADD0),
/* 0x3D */ FX_ENTRY_NUMBERED(3D, _37D180),
/* 0x3E */ FX_ENTRY(blast, _37D9D0),
/* 0x3F */ FX_ENTRY(fire_flower, _3803A0),

View File

@ -1,27 +1,23 @@
#include "common.h"
#include "effects_internal.h"
typedef struct Effect60 {
/* 0x00 */ s32 unk_00;
} Effect60; // size = 0x??
void bulb_glow_appendGfx(void* effect);
void fx_3C_appendGfx(void* effect);
INCLUDE_ASM(s32, "effects/bulb_glow", bulb_glow_main);
INCLUDE_ASM(s32, "effects/effect_3C", fx_3C_main);
void fx_3C_init(void) {
void bulb_glow_init(void) {
}
INCLUDE_ASM(s32, "effects/effect_3C", fx_3C_update);
INCLUDE_ASM(s32, "effects/bulb_glow", bulb_glow_update);
void fx_3C_render(EffectInstance* effect) {
Effect60* effect60 = effect->data;
void bulb_glow_render(EffectInstance* effect) {
BulbGlowFXData* effect60 = effect->data;
RenderTask renderTask;
RenderTask* renderTaskPtr = &renderTask;
RenderTask* retTask;
renderTask.appendGfxArg = effect;
renderTask.appendGfx = fx_3C_appendGfx;
renderTask.appendGfx = bulb_glow_appendGfx;
if (effect60->unk_00 == 5) {
renderTask.distance = 0;
renderTaskPtr->renderMode = RENDER_MODE_SURFACE_OPA;
@ -37,4 +33,4 @@ void fx_3C_render(EffectInstance* effect) {
void func_E0078274(void) {
}
INCLUDE_ASM(s32, "effects/effect_3C", fx_3C_appendGfx);
INCLUDE_ASM(s32, "effects/bulb_glow", bulb_glow_appendGfx);

View File

@ -543,8 +543,8 @@ ApiStatus PlayEffect(Evt* script, s32 isInitialCall) {
fx_aura(iVar1, fVar2, fVar3, fVar4, fVar5, &sp34);
evt_set_variable(script, a6, sp34);
break;
case EFFECT_3C:
fx_3C(iVar1, fVar2, fVar3, fVar4, fVar5, &sp34);
case EFFECT_BULB_GLOW:
fx_bulb_glow(iVar1, fVar2, fVar3, fVar4, fVar5, &sp34);
evt_set_variable(script, a6, sp34);
break;
case EFFECT_3D:

View File

@ -39,7 +39,7 @@ def parse(f):
elif op == 17:
print(f'{indent}AS_SET_SCALE, {read(f)}, AS_F({i2f(read(f))}), AS_F({i2f(read(f))}), AS_F({i2f(read(f))}),')
elif op == 18:
print(f'{indent}AS_SET_RENDER_MODE, {read(f)}')
print(f'{indent}AS_SET_RENDER_MODE, {read(f)},')
elif op == 19:
print(f'{indent}AS_OP_19,')
else:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,27 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_80231000_552440
.word 0x00000001, 0x00000000, 0x00000000
dlabel D_8023100C_55244C
.word 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000006, 0x00000000, 0x00000009, 0x00000000, 0x00000007, 0x00000000, 0x00000004, 0x00000000, 0x00000003, 0x00000000, 0x0000000B, 0x00000000, 0x00000005, 0x00000000, 0x0000000A, 0x00000000, 0x00000008, 0x00000000, 0x0000001F, 0x00000000, 0x00000020, 0x00000000, 0x00000025, 0x00000000, 0x00000022, 0x00000000, 0x00000024, 0x00000000, 0x00000023, 0x00000000, 0x00000021, 0x00000000, 0x00000026, 0x00000000, 0x00000027, 0x00000000, 0x00000029, 0x00000000, 0x00000000
dlabel D_802310B8_5524F8
.word 0x20820000, 0x01000000, 0x001800FF, D_80231104_552544, D_80231000_552440, 0x00000000, 0x00000000, 0xFFF60000, 0x00000000, 0x02000000, 0x00AC0008, 0x00010000, D_802310B8_5524F8, D_80231110_552550, D_8023100C_55244C, 0x00000000, 0x00045000, 0x1E1E0000, 0xF6140A14
dlabel D_80231104_552544
.word 0x00000001, 0x006F0001, 0x00000000
dlabel D_80231110_552550
.word 0x00000043, 0x00000003, BindTakeTurn, 0xFFFFFF81, D_80231754_552B94, 0x00000043, 0x00000003, BindIdle, 0xFFFFFF81, D_8023129C_5526DC, 0x00000043, 0x00000003, BindHandleEvent, 0xFFFFFF81, D_802312D0_552710, 0x00000043, 0x00000005, SetActorPos, 0xFFFFFF81, 0x000000B4, 0x00000000, 0x00000000, 0x00000043, 0x00000005, ForceHomePos, 0xFFFFFF81, 0x000000B4, 0x00000000, 0x00000000, 0x00000043, 0x00000002, HPBarToHome, 0xFFFFFF81, 0x00000056, 0x00000000, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F000F, 0x00000043, 0x00000003, SetActorSpeed, 0xFFFFFF81, 0xF24A8E80, 0x00000043, 0x00000005, SetGoalPos, 0xFFFFFF81, 0x00000000, 0x00000000, 0x00000000, 0x00000043, 0x00000004, RunToGoal, 0xFFFFFF81, 0x00000000, 0x00000000, 0x00000043, 0x00000003, SetActorYaw, 0xFFFFFF81, 0x000000B4, 0x00000043, 0x00000003, PlaySoundAtActor, 0xFFFFFF81, 0x00000395, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F0004, 0x00000008, 0x00000001, 0x00000014, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F0005, 0x00000008, 0x00000001, 0x0000000F, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F0009, 0x00000057, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_8023129C_5526DC
.word 0x00000003, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_802312D0_552710
.word 0x00000043, 0x00000003, UseIdleAnimation, 0xFFFFFF81, 0x00000000, 0x00000043, 0x00000003, GetLastEvent, 0xFFFFFF81, 0xFE363C80, 0x00000014, 0x00000001, 0xFE363C80, 0x00000016, 0x00000001, 0x00000038, 0x0000001D, 0x00000001, 0x00000009, 0x0000001D, 0x00000001, 0x0000000A, 0x0000001D, 0x00000001, 0x0000000E, 0x0000001D, 0x00000001, 0x00000024, 0x0000001D, 0x00000001, 0x0000000B, 0x0000001D, 0x00000001, 0x00000021, 0x0000001D, 0x00000001, 0x0000002F, 0x0000001D, 0x00000001, 0x00000017, 0x0000001D, 0x00000001, 0x00000019, 0x0000001D, 0x00000001, 0x0000001B, 0x0000001D, 0x00000001, 0x00000020, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F000A, 0x00000043, 0x00000003, SetActorJumpGravity, 0xFFFFFF81, 0xF24A8080, 0x00000043, 0x00000005, GetActorPos, 0xFFFFFF81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000028, 0x00000002, 0xFE363C80, 0x00000023, 0x00000043, 0x00000005, SetGoalPos, 0xFFFFFF81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000043, 0x00000006, JumpToGoal, 0xFFFFFF81, 0x00000008, 0x00000000, 0x00000001, 0x00000000, 0x00000043, 0x00000003, SetActorYaw, 0xFFFFFF81, 0x00000000, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F0002, 0x00000008, 0x00000001, 0x00000018, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F0003, 0x00000043, 0x00000005, GetActorPos, 0xFFFFFF81, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x00000027, 0x00000002, 0xFE363C80, 0x00000005, 0x00000027, 0x00000002, 0xFE363C81, 0x0000000A, 0x00000005, 0x00000001, 0x00000004, 0x00000043, 0x0000000F, PlayEffect, 0x00000028, 0x00000000, 0xFE363C80, 0xFE363C81, 0xFE363C82, 0x0000000A, 0x0000002D, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000008, 0x00000001, 0x00000006, 0x00000006, 0x00000000, 0x00000043, 0x00000005, SetActorSounds, 0xFFFFFF81, 0x00000000, 0x000020BA, 0x000003B4, 0x00000043, 0x00000005, SetActorSounds, 0xFFFFFF81, 0x00000004, 0x0000000A, 0x00000000, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0x006F000C, 0x00000043, 0x00000003, SetActorSpeed, 0xFFFFFF81, 0xF24A9280, 0x00000043, 0x00000005, AddActorDecoration, 0xFFFFFF81, 0x00000001, 0x00000000, 0x00000008, 0x00000043, 0x00000005, SetGoalPos, 0xFFFFFF81, 0xFFFFFF38, 0x00000000, 0x00000014, 0x00000043, 0x00000004, RunToGoal, 0xFFFFFF81, 0x00000000, 0x00000000, 0x00000043, 0x00000004, RemoveActorDecoration, 0xFFFFFF81, 0xFE363C80, 0x00000000, 0x00000043, 0x00000002, RemoveActor, 0xFFFFFF81, 0x00000002, 0x00000000, 0x00000020, 0x00000000, 0x00000016, 0x00000001, 0x00000035, 0x00000043, 0x00000002, HPBarToHome, 0xFFFFFF81, 0x00000016, 0x00000001, 0x00000031, 0x00000025, 0x00000002, 0xFE363C80, 0x00000001, 0x00000025, 0x00000002, 0xFE363C81, 0x006F0001, 0x00000046, 0x00000001, DoRecover, 0x00000016, 0x00000001, 0x00000030, 0x00000025, 0x00000002, 0xFE363C80, 0x00000001, 0x00000025, 0x00000002, 0xFE363C81, 0x006F000A, 0x00000046, 0x00000001, DoNormalHit, 0x00000008, 0x00000001, 0x000003E8, 0x00000016, 0x00000001, 0x00000039, 0x00000025, 0x00000002, 0xFE363C80, 0x00000001, 0x00000025, 0x00000002, 0xFE363C81, 0x006F0001, 0x00000025, 0x00000002, 0xFE363C82, 0x006F000A, 0x00000046, 0x00000001, DoScareAway, 0x00000002, 0x00000000, 0x0000001C, 0x00000000, 0x00000025, 0x00000002, 0xFE363C81, 0x006F000A, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0x00000001, 0xFE363C81, 0x00000008, 0x00000001, 0x00000014, 0x00000023, 0x00000000, 0x00000043, 0x00000003, UseIdleAnimation, 0xFFFFFF81, 0x00000001, 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_80231754_552B94
.word 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000

File diff suppressed because one or more lines are too long

View File

@ -1,30 +0,0 @@
.include "macro.inc"
.section .data
dlabel D_80231000_556C90
.word 0x00000001, 0x00000000, 0x00000000
dlabel D_8023100C_556C9C
.word 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000006, 0x00000000, 0x00000009, 0x00000000, 0x00000007, 0x00000000, 0x00000004, 0x00000000, 0x00000003, 0x00000000, 0x0000000B, 0x00000000, 0x00000005, 0x00000000, 0x0000000A, 0x00000000, 0x00000008, 0x00000000, 0x0000001F, 0x00000000, 0x00000020, 0x00000000, 0x00000025, 0x00000000, 0x00000022, 0x00000000, 0x00000024, 0x00000000, 0x00000023, 0x00000000, 0x00000021, 0x00000000, 0x00000026, 0x00000000, 0x00000027, 0x00000000, 0x00000029, 0x00000000, 0x00000000
dlabel D_802310B8_556D48
.word 0x00820001, 0x01000000, 0x001800FF, 0x00000000, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x02000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x03000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x04000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x05000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x06000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x07000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x08000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00120000, 0x09000000, 0x001800FF, D_80231224_556EB4, D_80231000_556C90, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00040004, 0x00AE000A, 0x00090000, D_802310B8_556D48, D_80231280_556F10, D_8023100C_556C9C, 0x00000000, 0x00045000, 0x1E1E0000, 0xF6140A14
dlabel D_80231224_556EB4
.word 0x00000001, 0x00780001, 0x0000000C, 0x00780000, 0x00000006, 0x00780000, 0x00000009, 0x00780001, 0x00000008, 0x00780000, 0x0000000B, 0x00780000, 0x00000005, 0x00780000, 0x00000005, 0x00780000, 0x00000004, 0x00780001, 0x00000004, 0x00780001, 0x00000003, 0x00780000, 0x00000000
dlabel D_80231280_556F10
.word 0x00000043, 0x00000003, BindTakeTurn, 0xFFFFFF81, D_8023173C_5573CC, 0x00000043, 0x00000003, BindIdle, 0xFFFFFF81, D_802315EC_55727C, 0x00000043, 0x00000003, BindHandleEvent, 0xFFFFFF81, D_8023172C_5573BC, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000002, 0x00000000, 0x00000000, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000002, 0x00000001, 0xFFFFFFF6, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000003, 0x00000000, 0x0000000A, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000003, 0x00000001, 0xFFFFFFE2, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000004, 0x00000000, 0x0000000A, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000004, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000005, 0x00000000, 0x00000014, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000005, 0x00000001, 0xFFFFFFF6, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000006, 0x00000000, 0x0000001E, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000006, 0x00000001, 0x0000000A, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000007, 0x00000000, 0x0000001E, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000007, 0x00000001, 0xFFFFFFE2, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000008, 0x00000000, 0x00000028, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000008, 0x00000001, 0xFFFFFFF6, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000009, 0x00000000, 0x00000032, 0x00000043, 0x00000005, SetPartMovementVar, 0xFFFFFF81, 0x00000009, 0x00000001, 0x0000000A, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000005, 0x00000001, 0x00000008, 0x00000043, 0x00000006, SetPartPos, 0xFFFFFF81, 0xFE363C80, 0x000000B9, 0x00000000, 0x0000002F, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000043, 0x00000005, ForceHomePos, 0xFFFFFF81, 0x00000014, 0x00000000, 0xFFFFFFF6, 0x00000043, 0x00000002, HPBarToHome, 0xFFFFFF81, 0x00000024, 0x00000002, 0xFE363C80, 0x00000002, 0x00000024, 0x00000002, 0xFE363C81, 0x00780003, 0x00000024, 0x00000002, 0xFE363C84, 0xF24A8A80, 0x00000024, 0x00000002, 0xFE363C85, 0x00000005, 0x00000005, 0x00000001, 0x00000008, 0x00000056, 0x00000000, 0x00000043, 0x00000005, GetPartMovementVar, 0xFFFFFF81, 0xFE363C80, 0x00000000, 0xFE363C82, 0x00000043, 0x00000005, GetPartMovementVar, 0xFFFFFF81, 0xFE363C80, 0x00000001, 0xFE363C83, 0x00000024, 0x00000002, 0xFE363C85, 0x00000014, 0x00000046, 0x00000001, D_80231620_5572B0, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0xFE363C80, 0x00780001, 0x00000057, 0x00000000, 0x00000027, 0x00000002, 0xFE363C80, 0x00000001, 0x00000006, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_802315EC_55727C
.word 0x00000003, 0x00000001, 0x00000000, 0x00000008, 0x00000001, 0x00000001, 0x00000004, 0x00000001, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_80231620_5572B0
.word 0x00000043, 0x00000006, GetPartOffset, 0xFFFFFF81, 0xFE363C80, 0xFE363C86, 0x00000000, 0xFE363C87, 0x0000000C, 0x00000002, 0xFE363C86, 0xFE363C82, 0x00000043, 0x00000004, SetPartYaw, 0xFFFFFF81, 0xFE363C80, 0x000000B4, 0x00000012, 0x00000000, 0x00000043, 0x00000004, SetPartYaw, 0xFFFFFF81, 0xFE363C80, 0x00000000, 0x00000013, 0x00000000, 0x00000043, 0x00000006, GetDist2D, 0xFE363C89, 0xFE363C86, 0xFE363C87, 0xFE363C82, 0xFE363C83, 0x0000000F, 0x00000002, 0xFE363C89, 0xFE363C84, 0x00000043, 0x00000004, SetAnimation, 0xFFFFFF81, 0xFE363C80, 0xFE363C81, 0x00000043, 0x00000004, SetPartMoveSpeed, 0xFFFFFF81, 0xFE363C80, 0xFE363C84, 0x00000043, 0x00000007, RunPartTo, 0xFFFFFF81, 0xFE363C80, 0xFE363C82, 0x00000000, 0xFE363C83, 0xFE363C85, 0x00000013, 0x00000000, 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_8023172C_5573BC
.word 0x00000002, 0x00000000, 0x00000001, 0x00000000
dlabel D_8023173C_5573CC
.word 0x00000002, 0x00000000, 0x00000001, 0x00000000, 0x00000000

View File

@ -1,57 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80218120_52B7C0
/* 52B7C0 80218120 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 52B7C4 80218124 AFB20018 */ sw $s2, 0x18($sp)
/* 52B7C8 80218128 0080902D */ daddu $s2, $a0, $zero
/* 52B7CC 8021812C AFBF0024 */ sw $ra, 0x24($sp)
/* 52B7D0 80218130 AFB40020 */ sw $s4, 0x20($sp)
/* 52B7D4 80218134 AFB3001C */ sw $s3, 0x1c($sp)
/* 52B7D8 80218138 AFB10014 */ sw $s1, 0x14($sp)
/* 52B7DC 8021813C AFB00010 */ sw $s0, 0x10($sp)
/* 52B7E0 80218140 8E50000C */ lw $s0, 0xc($s2)
/* 52B7E4 80218144 8E050000 */ lw $a1, ($s0)
/* 52B7E8 80218148 0C0B1EAF */ jal evt_get_variable
/* 52B7EC 8021814C 26100004 */ addiu $s0, $s0, 4
/* 52B7F0 80218150 8E050000 */ lw $a1, ($s0)
/* 52B7F4 80218154 26100004 */ addiu $s0, $s0, 4
/* 52B7F8 80218158 0240202D */ daddu $a0, $s2, $zero
/* 52B7FC 8021815C 0C0B1EAF */ jal evt_get_variable
/* 52B800 80218160 0040A02D */ daddu $s4, $v0, $zero
/* 52B804 80218164 8E050000 */ lw $a1, ($s0)
/* 52B808 80218168 26100004 */ addiu $s0, $s0, 4
/* 52B80C 8021816C 0240202D */ daddu $a0, $s2, $zero
/* 52B810 80218170 0C0B1EAF */ jal evt_get_variable
/* 52B814 80218174 0040982D */ daddu $s3, $v0, $zero
/* 52B818 80218178 8E050000 */ lw $a1, ($s0)
/* 52B81C 8021817C 26100004 */ addiu $s0, $s0, 4
/* 52B820 80218180 0240202D */ daddu $a0, $s2, $zero
/* 52B824 80218184 0C0B1EAF */ jal evt_get_variable
/* 52B828 80218188 0040882D */ daddu $s1, $v0, $zero
/* 52B82C 8021818C 8E050000 */ lw $a1, ($s0)
/* 52B830 80218190 0C0B1EAF */ jal evt_get_variable
/* 52B834 80218194 0240202D */ daddu $a0, $s2, $zero
/* 52B838 80218198 8C43000C */ lw $v1, 0xc($v0)
/* 52B83C 8021819C 24020002 */ addiu $v0, $zero, 2
/* 52B840 802181A0 44940000 */ mtc1 $s4, $f0
/* 52B844 802181A4 00000000 */ nop
/* 52B848 802181A8 46800020 */ cvt.s.w $f0, $f0
/* 52B84C 802181AC 02228821 */ addu $s1, $s1, $v0
/* 52B850 802181B0 E4600004 */ swc1 $f0, 4($v1)
/* 52B854 802181B4 44930000 */ mtc1 $s3, $f0
/* 52B858 802181B8 00000000 */ nop
/* 52B85C 802181BC 46800020 */ cvt.s.w $f0, $f0
/* 52B860 802181C0 E4600008 */ swc1 $f0, 8($v1)
/* 52B864 802181C4 44910000 */ mtc1 $s1, $f0
/* 52B868 802181C8 00000000 */ nop
/* 52B86C 802181CC 46800020 */ cvt.s.w $f0, $f0
/* 52B870 802181D0 E460000C */ swc1 $f0, 0xc($v1)
/* 52B874 802181D4 8FBF0024 */ lw $ra, 0x24($sp)
/* 52B878 802181D8 8FB40020 */ lw $s4, 0x20($sp)
/* 52B87C 802181DC 8FB3001C */ lw $s3, 0x1c($sp)
/* 52B880 802181E0 8FB20018 */ lw $s2, 0x18($sp)
/* 52B884 802181E4 8FB10014 */ lw $s1, 0x14($sp)
/* 52B888 802181E8 8FB00010 */ lw $s0, 0x10($sp)
/* 52B88C 802181EC 03E00008 */ jr $ra
/* 52B890 802181F0 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,27 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802181F4_52B894
/* 52B894 802181F4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 52B898 802181F8 AFB00010 */ sw $s0, 0x10($sp)
/* 52B89C 802181FC 0080802D */ daddu $s0, $a0, $zero
/* 52B8A0 80218200 AFBF0018 */ sw $ra, 0x18($sp)
/* 52B8A4 80218204 AFB10014 */ sw $s1, 0x14($sp)
/* 52B8A8 80218208 8E040148 */ lw $a0, 0x148($s0)
/* 52B8AC 8021820C 0C09A75B */ jal get_actor
/* 52B8B0 80218210 8E11000C */ lw $s1, 0xc($s0)
/* 52B8B4 80218214 8E250000 */ lw $a1, ($s1)
/* 52B8B8 80218218 0C0B1EAF */ jal evt_get_variable
/* 52B8BC 8021821C 0200202D */ daddu $a0, $s0, $zero
/* 52B8C0 80218220 44820000 */ mtc1 $v0, $f0
/* 52B8C4 80218224 00000000 */ nop
/* 52B8C8 80218228 46800020 */ cvt.s.w $f0, $f0
/* 52B8CC 8021822C 44050000 */ mfc1 $a1, $f0
/* 52B8D0 80218230 0C04DF69 */ jal set_screen_overlay_params_back
/* 52B8D4 80218234 2404000D */ addiu $a0, $zero, 0xd
/* 52B8D8 80218238 8FBF0018 */ lw $ra, 0x18($sp)
/* 52B8DC 8021823C 8FB10014 */ lw $s1, 0x14($sp)
/* 52B8E0 80218240 8FB00010 */ lw $s0, 0x10($sp)
/* 52B8E4 80218244 24020002 */ addiu $v0, $zero, 2
/* 52B8E8 80218248 03E00008 */ jr $ra
/* 52B8EC 8021824C 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,62 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80218250_52B8F0
/* 52B8F0 80218250 27BDFD80 */ addiu $sp, $sp, -0x280
/* 52B8F4 80218254 27A30018 */ addiu $v1, $sp, 0x18
/* 52B8F8 80218258 3C028023 */ lui $v0, %hi(D_8022FC30_5432D0)
/* 52B8FC 8021825C 2442FC30 */ addiu $v0, $v0, %lo(D_8022FC30_5432D0)
/* 52B900 80218260 24440250 */ addiu $a0, $v0, 0x250
/* 52B904 80218264 AFBF0278 */ sw $ra, 0x278($sp)
/* 52B908 80218268 AFB10274 */ sw $s1, 0x274($sp)
/* 52B90C 8021826C AFB00270 */ sw $s0, 0x270($sp)
.L80218270:
/* 52B910 80218270 8C480000 */ lw $t0, ($v0)
/* 52B914 80218274 8C490004 */ lw $t1, 4($v0)
/* 52B918 80218278 8C4A0008 */ lw $t2, 8($v0)
/* 52B91C 8021827C 8C4B000C */ lw $t3, 0xc($v0)
/* 52B920 80218280 AC680000 */ sw $t0, ($v1)
/* 52B924 80218284 AC690004 */ sw $t1, 4($v1)
/* 52B928 80218288 AC6A0008 */ sw $t2, 8($v1)
/* 52B92C 8021828C AC6B000C */ sw $t3, 0xc($v1)
/* 52B930 80218290 24420010 */ addiu $v0, $v0, 0x10
/* 52B934 80218294 1444FFF6 */ bne $v0, $a0, .L80218270
/* 52B938 80218298 24630010 */ addiu $v1, $v1, 0x10
/* 52B93C 8021829C 8C480000 */ lw $t0, ($v0)
/* 52B940 802182A0 8C490004 */ lw $t1, 4($v0)
/* 52B944 802182A4 AC680000 */ sw $t0, ($v1)
/* 52B948 802182A8 AC690004 */ sw $t1, 4($v1)
/* 52B94C 802182AC 0000882D */ daddu $s1, $zero, $zero
/* 52B950 802182B0 27B00018 */ addiu $s0, $sp, 0x18
.L802182B4:
/* 52B954 802182B4 C6000010 */ lwc1 $f0, 0x10($s0)
/* 52B958 802182B8 E7A00010 */ swc1 $f0, 0x10($sp)
/* 52B95C 802182BC 8E020014 */ lw $v0, 0x14($s0)
/* 52B960 802182C0 AFA20014 */ sw $v0, 0x14($sp)
/* 52B964 802182C4 8E040000 */ lw $a0, ($s0)
/* 52B968 802182C8 8E050004 */ lw $a1, 4($s0)
/* 52B96C 802182CC 8E060008 */ lw $a2, 8($s0)
/* 52B970 802182D0 8E07000C */ lw $a3, 0xc($s0)
/* 52B974 802182D4 0C01C994 */ jal fx_ice_shard
/* 52B978 802182D8 26310001 */ addiu $s1, $s1, 1
/* 52B97C 802182DC 8C43000C */ lw $v1, 0xc($v0)
/* 52B980 802182E0 C6000018 */ lwc1 $f0, 0x18($s0)
/* 52B984 802182E4 E460004C */ swc1 $f0, 0x4c($v1)
/* 52B988 802182E8 8C43000C */ lw $v1, 0xc($v0)
/* 52B98C 802182EC C600001C */ lwc1 $f0, 0x1c($s0)
/* 52B990 802182F0 E4600050 */ swc1 $f0, 0x50($v1)
/* 52B994 802182F4 8C43000C */ lw $v1, 0xc($v0)
/* 52B998 802182F8 C6000020 */ lwc1 $f0, 0x20($s0)
/* 52B99C 802182FC E4600054 */ swc1 $f0, 0x54($v1)
/* 52B9A0 80218300 8C42000C */ lw $v0, 0xc($v0)
/* 52B9A4 80218304 C6000024 */ lwc1 $f0, 0x24($s0)
/* 52B9A8 80218308 E4400058 */ swc1 $f0, 0x58($v0)
/* 52B9AC 8021830C 2A22000F */ slti $v0, $s1, 0xf
/* 52B9B0 80218310 1440FFE8 */ bnez $v0, .L802182B4
/* 52B9B4 80218314 26100028 */ addiu $s0, $s0, 0x28
/* 52B9B8 80218318 8FBF0278 */ lw $ra, 0x278($sp)
/* 52B9BC 8021831C 8FB10274 */ lw $s1, 0x274($sp)
/* 52B9C0 80218320 8FB00270 */ lw $s0, 0x270($sp)
/* 52B9C4 80218324 24020002 */ addiu $v0, $zero, 2
/* 52B9C8 80218328 03E00008 */ jr $ra
/* 52B9CC 8021832C 27BD0280 */ addiu $sp, $sp, 0x280

View File

@ -1,49 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80231000_543570
/* 543570 80231000 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 543574 80231004 AFB3001C */ sw $s3, 0x1c($sp)
/* 543578 80231008 0080982D */ daddu $s3, $a0, $zero
/* 54357C 8023100C AFBF0020 */ sw $ra, 0x20($sp)
/* 543580 80231010 AFB20018 */ sw $s2, 0x18($sp)
/* 543584 80231014 AFB10014 */ sw $s1, 0x14($sp)
/* 543588 80231018 AFB00010 */ sw $s0, 0x10($sp)
/* 54358C 8023101C 8E71000C */ lw $s1, 0xc($s3)
/* 543590 80231020 8E250000 */ lw $a1, ($s1)
/* 543594 80231024 0C0B1EAF */ jal evt_get_variable
/* 543598 80231028 26310004 */ addiu $s1, $s1, 4
/* 54359C 8023102C 0040802D */ daddu $s0, $v0, $zero
/* 5435A0 80231030 8E250000 */ lw $a1, ($s1)
/* 5435A4 80231034 26310004 */ addiu $s1, $s1, 4
/* 5435A8 80231038 0C0B1EAF */ jal evt_get_variable
/* 5435AC 8023103C 0260202D */ daddu $a0, $s3, $zero
/* 5435B0 80231040 0040902D */ daddu $s2, $v0, $zero
/* 5435B4 80231044 2402FF81 */ addiu $v0, $zero, -0x7f
/* 5435B8 80231048 16020002 */ bne $s0, $v0, .L80231054
/* 5435BC 8023104C 00000000 */ nop
/* 5435C0 80231050 8E700148 */ lw $s0, 0x148($s3)
.L80231054:
/* 5435C4 80231054 0C09A75B */ jal get_actor
/* 5435C8 80231058 0200202D */ daddu $a0, $s0, $zero
/* 5435CC 8023105C 0040202D */ daddu $a0, $v0, $zero
/* 5435D0 80231060 0C099117 */ jal get_actor_part
/* 5435D4 80231064 0240282D */ daddu $a1, $s2, $zero
/* 5435D8 80231068 8E250000 */ lw $a1, ($s1)
/* 5435DC 8023106C 26310004 */ addiu $s1, $s1, 4
/* 5435E0 80231070 0040802D */ daddu $s0, $v0, $zero
/* 5435E4 80231074 92060073 */ lbu $a2, 0x73($s0)
/* 5435E8 80231078 0C0B2026 */ jal evt_set_variable
/* 5435EC 8023107C 0260202D */ daddu $a0, $s3, $zero
/* 5435F0 80231080 8E250000 */ lw $a1, ($s1)
/* 5435F4 80231084 92060072 */ lbu $a2, 0x72($s0)
/* 5435F8 80231088 0C0B2026 */ jal evt_set_variable
/* 5435FC 8023108C 0260202D */ daddu $a0, $s3, $zero
/* 543600 80231090 8FBF0020 */ lw $ra, 0x20($sp)
/* 543604 80231094 8FB3001C */ lw $s3, 0x1c($sp)
/* 543608 80231098 8FB20018 */ lw $s2, 0x18($sp)
/* 54360C 8023109C 8FB10014 */ lw $s1, 0x14($sp)
/* 543610 802310A0 8FB00010 */ lw $s0, 0x10($sp)
/* 543614 802310A4 24020002 */ addiu $v0, $zero, 2
/* 543618 802310A8 03E00008 */ jr $ra
/* 54361C 802310AC 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,14 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8023102C_54840C
/* 54840C 8023102C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 548410 80231030 AFBF0010 */ sw $ra, 0x10($sp)
/* 548414 80231034 0C09A75B */ jal get_actor
/* 548418 80231038 8C840148 */ lw $a0, 0x148($a0)
/* 54841C 8023103C 8C430008 */ lw $v1, 8($v0)
/* 548420 80231040 A0600006 */ sb $zero, 6($v1)
/* 548424 80231044 8FBF0010 */ lw $ra, 0x10($sp)
/* 548428 80231048 24020002 */ addiu $v0, $zero, 2
/* 54842C 8023104C 03E00008 */ jr $ra
/* 548430 80231050 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -52,7 +52,7 @@ glabel func_80238668_704158
/* 704214 80238724 3C028024 */ lui $v0, %hi(D_8023C1B0)
/* 704218 80238728 2442C1B0 */ addiu $v0, $v0, %lo(D_8023C1B0)
/* 70421C 8023872C AFA20014 */ sw $v0, 0x14($sp)
/* 704220 80238730 0C01C3C4 */ jal fx_3C
/* 704220 80238730 0C01C3C4 */ jal fx_bulb_glow
/* 704224 80238734 E7A00010 */ swc1 $f0, 0x10($sp)
.L80238738:
/* 704228 80238738 8E020070 */ lw $v0, 0x70($s0)

View File

@ -1,7 +1,7 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fx_3C_appendGfx
glabel bulb_glow_appendGfx
/* 37A66C E007827C 27BDFFA0 */ addiu $sp, $sp, -0x60
/* 37A670 E0078280 0080302D */ daddu $a2, $a0, $zero
/* 37A674 E0078284 AFBF005C */ sw $ra, 0x5c($sp)

View File

@ -1,7 +1,7 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fx_3C_main
glabel bulb_glow_main
/* 37A3F0 E0078000 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 37A3F4 E0078004 F7B40038 */ sdc1 $f20, 0x38($sp)
/* 37A3F8 E0078008 4485A000 */ mtc1 $a1, $f20
@ -12,14 +12,14 @@ glabel fx_3C_main
/* 37A40C E007801C 27A40010 */ addiu $a0, $sp, 0x10
/* 37A410 E0078020 F7B80048 */ sdc1 $f24, 0x48($sp)
/* 37A414 E0078024 4487C000 */ mtc1 $a3, $f24
/* 37A418 E0078028 3C02E008 */ lui $v0, %hi(fx_3C_init)
/* 37A41C E007802C 24428124 */ addiu $v0, $v0, %lo(fx_3C_init)
/* 37A418 E0078028 3C02E008 */ lui $v0, %hi(bulb_glow_init)
/* 37A41C E007802C 24428124 */ addiu $v0, $v0, %lo(bulb_glow_init)
/* 37A420 E0078030 AFA20018 */ sw $v0, 0x18($sp)
/* 37A424 E0078034 3C02E008 */ lui $v0, %hi(fx_3C_update)
/* 37A428 E0078038 2442812C */ addiu $v0, $v0, %lo(fx_3C_update)
/* 37A424 E0078034 3C02E008 */ lui $v0, %hi(bulb_glow_update)
/* 37A428 E0078038 2442812C */ addiu $v0, $v0, %lo(bulb_glow_update)
/* 37A42C E007803C AFA2001C */ sw $v0, 0x1c($sp)
/* 37A430 E0078040 3C02E008 */ lui $v0, %hi(fx_3C_render)
/* 37A434 E0078044 24428210 */ addiu $v0, $v0, %lo(fx_3C_render)
/* 37A430 E0078040 3C02E008 */ lui $v0, %hi(bulb_glow_render)
/* 37A434 E0078044 24428210 */ addiu $v0, $v0, %lo(bulb_glow_render)
/* 37A438 E0078048 AFA20020 */ sw $v0, 0x20($sp)
/* 37A43C E007804C 2402003C */ addiu $v0, $zero, 0x3c
/* 37A440 E0078050 AFBF0034 */ sw $ra, 0x34($sp)

View File

@ -1,7 +1,7 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel fx_3C_update
glabel bulb_glow_update
/* 37A51C E007812C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 37A520 E0078130 AFBF0010 */ sw $ra, 0x10($sp)
/* 37A524 E0078134 8C850000 */ lw $a1, ($a0)

View File

@ -107,7 +107,7 @@ glabel lightning_main
/* 36E358 E006C188 3C07429A */ lui $a3, 0x429a
/* 36E35C E006C18C 0000202D */ daddu $a0, $zero, $zero
/* 36E360 E006C190 E7B40010 */ swc1 $f20, 0x10($sp)
/* 36E364 E006C194 0C01E000 */ jal fx_3C_main
/* 36E364 E006C194 0C01E000 */ jal bulb_glow_main
/* 36E368 E006C198 AFB20014 */ sw $s2, 0x14($sp)
/* 36E36C E006C19C 0801B087 */ j .LE006C21C
/* 36E370 E006C1A0 2A820003 */ slti $v0, $s4, 3

View File

@ -58,7 +58,7 @@
- fx_energy_shockwave
- fx_shimmer_wave
- fx_aura
- fx_3C
- fx_bulb_glow
- fx_3D
- fx_blast
- fx_fire_flower

View File

@ -2968,15 +2968,15 @@ segments:
- [0x377070, c, aura]
- [0x377F00]
- [0x377F80, bin] # aura gfx
- name: effect_effect_3C
- name: effect_bulb_glow
dir: effects
type: code
start: 0x37A3F0
vram: 0xE0078000
subsegments:
- [0x37A3F0, c, effect_3C]
- [0x37A3F0, c, bulb_glow]
- [0x37ACF0, data]
- [0x37ADD0, bin] # effect_3C gfx
- [0x37ADD0, bin] # bulb_glow gfx
- name: effect_effect_3D
dir: effects
type: code
@ -4344,54 +4344,53 @@ segments:
vram: 0x80218000
overlay: True
subsegments:
- [0x52B6A0, c]
- [0x52B7C0, c]
- [0x52B9D0, data]
- [0x52B6A0, c, actor/general_guy]
- [0x52B7C0, c, actor/toy_tank]
- [0x52B8F0, c, actor/light_bulb]
- [0x52B9D0, c, stage/omo_07]
- [0x52B9D0, c, area]
- dir: battle/area_omo2_1
type: code
start: 0x543570
vram: 0x80231000
overlay: True
subsegments:
- [0x543570, c]
- [0x543620, data]
- [0x543570, c, actor/shy_squad]
- dir: battle/area_omo2_2
type: code
start: 0x5483E0
vram: 0x80231000
overlay: True
subsegments:
- [0x5483E0, c]
- [0x548500, data]
- [0x5483E0, c, actor/stilt_guy]
- dir: battle/area_omo2_3
type: code
start: 0x54CC70
vram: 0x80231000
overlay: True
subsegments:
- [0x54CC70, c]
- [0x54CCA0, data]
- [0x54CC70, c, actor/shy_stack]
- dir: battle/area_omo2_4
type: code
start: 0x552440
vram: 0x80231000
overlay: True
subsegments:
- [0x552440, data]
- [0x552440, c, actor/signal_guy]
- dir: battle/area_omo2_5
type: code
start: 0x552BB0
vram: 0x80231000
overlay: True
subsegments:
- [0x552BB0, data]
- [0x552BB0, c, actor/shy_squad_dup]
- dir: battle/area_omo2_6
type: code
start: 0x556C90
vram: 0x80231000
overlay: True
subsegments:
- [0x556C90, data]
- [0x556C90, c, actor/shy_guy_dup]
- dir: battle/area_omo3
type: code
start: 0x5573E0

View File

@ -1206,7 +1206,7 @@ fx_shimmer_burst = 0x80070D90; // type:func rom:0x4C190
fx_energy_shockwave = 0x80070DF0; // type:func rom:0x4C1F0
fx_shimmer_wave = 0x80070E50; // type:func rom:0x4C250
fx_aura = 0x80070EB0; // type:func rom:0x4C2B0
fx_3C = 0x80070F10; // type:func rom:0x4C310
bulb_glow = 0x80070F10; // type:func rom:0x4C310
fx_3D = 0x80070F70; // type:func rom:0x4C370
fx_blast = 0x80070FD0; // type:func rom:0x4C3D0
fx_fire_flower = 0x80071030; // type:func rom:0x4C430
@ -7837,12 +7837,12 @@ D_E0076EA0 = 0xE0076EA0; // type:data rom:0x377F10
D_E0076EB0 = 0xE0076EB0; // type:data rom:0x377F20
D_E0076EC0 = 0xE0076EC0; // type:data rom:0x377F30
D_E0076ED0 = 0xE0076ED0; // type:data rom:0x377F40
fx_3C_main = 0xE0078000; // type:func rom:0x37A3F0
fx_3C_init = 0xE0078124; // type:func rom:0x37A514
fx_3C_update = 0xE007812C; // type:func rom:0x37A51C
fx_3C_render = 0xE0078210; // type:func rom:0x37A600
bulb_glow_main = 0xE0078000; // type:func rom:0x37A3F0
bulb_glow_init = 0xE0078124; // type:func rom:0x37A514
bulb_glow_update = 0xE007812C; // type:func rom:0x37A51C
bulb_glow_render = 0xE0078210; // type:func rom:0x37A600
func_E0078274 = 0xE0078274; // type:func rom:0x37A664
fx_3C_appendGfx = 0xE007827C; // type:func rom:0x37A66C
bulb_glow_appendGfx = 0xE007827C; // type:func rom:0x37A66C
fx_3D_main = 0xE007A000; // type:func rom:0x37C540
fx_3D_init = 0xE007A504; // type:func rom:0x37CA44
fx_3D_update = 0xE007A50C; // type:func rom:0x37CA4C
@ -11201,7 +11201,7 @@ b_area_omo2_UnfadeBackgroundToBlack = 0x80218098; // type:func rom:0x52B738
func_80218120_52B7C0 = 0x80218120; // type:func rom:0x52B7C0
func_802181F4_52B894 = 0x802181F4; // type:func rom:0x52B894
func_80218250_52B8F0 = 0x80218250; // type:func rom:0x52B8F0
func_80231000_543570 = 0x80231000; // type:func rom:0x543570
b_area_omo2_1_shy_squad_GetActorPartSize = 0x80231000; // type:func rom:0x543570
b_area_omo2_2_GetSelectedMoveID = 0x80231000; // type:func rom:0x5483E0
func_8023102C_54840C = 0x8023102C; // type:func rom:0x54840C
b_area_omo2_2_UnkBattleFunc1 = 0x80231054; // type:func rom:0x548434