mirror of
https://github.com/pmret/papermario.git
synced 2024-09-18 23:42:35 +02:00
omo3/pra/dig battle maps (#799)
* area_pra wip * temp * finish area_pra * omo3 map * area_dig * cleaning up * fixed sprite include * removed script
This commit is contained in:
parent
cba14cc73d
commit
f62c83607e
@ -860,19 +860,27 @@ enum SoundIDs {
|
||||
SOUND_2CA = 0x000002CA,
|
||||
SOUND_2CB = 0x000002CB,
|
||||
SOUND_SMOKE_BURST = 0x000002CD,
|
||||
SOUND_2CE = 0x000002CE,
|
||||
SOUND_2D5 = 0x000002D5,
|
||||
SOUND_2D6 = 0x000002D6,
|
||||
SOUND_DAYZEE_SONG = 0x000002D7,
|
||||
SOUND_POWER_UP = 0x000002D8,
|
||||
SOUND_2DB = 0x000002DB,
|
||||
SOUND_2DC = 0x000002DC,
|
||||
SOUND_2DD = 0x000002DD,
|
||||
SOUND_2DE = 0x000002DE,
|
||||
SOUND_2DF = 0x000002DF,
|
||||
SOUND_2E0 = 0x000002E0,
|
||||
SOUND_2E5 = 0x000002E5,
|
||||
SOUND_2E7 = 0x000002E7,
|
||||
SOUND_2E8 = 0x000002E8,
|
||||
SOUND_2E9 = 0x000002E9,
|
||||
SOUND_2EA = 0x000002EA,
|
||||
SOUND_2EB = 0x000002EB,
|
||||
SOUND_2ED = 0x000002ED,
|
||||
SOUND_2EE = 0x000002EE,
|
||||
SOUND_2EF = 0x000002EF,
|
||||
SOUND_2F0 = 0x000002F0,
|
||||
SOUND_2F1 = 0x000002F1,
|
||||
SOUND_2F3 = 0x000002F3,
|
||||
SOUND_2F4 = 0x000002F4,
|
||||
@ -906,7 +914,11 @@ enum SoundIDs {
|
||||
SOUND_332 = 0x00000332,
|
||||
SOUND_333 = 0x00000333,
|
||||
SOUND_334 = 0x00000334,
|
||||
SOUND_342 = 0x00000342,
|
||||
SOUND_343 = 0x00000343,
|
||||
SOUND_344 = 0x00000344,
|
||||
SOUND_345 = 0x00000345,
|
||||
SOUND_346 = 0x00000346,
|
||||
SOUND_349 = 0x00000349,
|
||||
SOUND_34A = 0x0000034A,
|
||||
SOUND_34E = 0x0000034E,
|
||||
@ -968,6 +980,14 @@ enum SoundIDs {
|
||||
SOUND_39F = 0x0000039F,
|
||||
SOUND_3A0 = 0x000003A0,
|
||||
SOUND_3A2 = 0x000003A2,
|
||||
SOUND_3A3 = 0x000003A3,
|
||||
SOUND_3A4 = 0x000003A4,
|
||||
SOUND_3A5 = 0x000003A5,
|
||||
SOUND_3A6 = 0x000003A6,
|
||||
SOUND_3A7 = 0x000003A7,
|
||||
SOUND_3A8 = 0x000003A8,
|
||||
SOUND_3A9 = 0x000003A9,
|
||||
SOUND_3AA = 0x000003AA,
|
||||
SOUND_3AB = 0x000003AB,
|
||||
SOUND_3AC = 0x000003AC,
|
||||
SOUND_3AD = 0x000003AD,
|
||||
@ -982,6 +1002,8 @@ enum SoundIDs {
|
||||
SOUND_3C5 = 0x000003C5,
|
||||
SOUND_3C6 = 0x000003C6,
|
||||
SOUND_3CE = 0x000003CE,
|
||||
SOUND_3CF = 0x000003CF,
|
||||
SOUND_3D0 = 0x000003D0,
|
||||
SOUND_3D1 = 0x000003D1,
|
||||
SOUND_3D2 = 0x000003D2,
|
||||
SOUND_OPEN_SHELL = 0x000003D4,
|
||||
@ -1049,6 +1071,7 @@ enum SoundIDs {
|
||||
SOUND_2019 = 0x00002019,
|
||||
SOUND_201B = 0x0000201B,
|
||||
SOUND_2020 = 0x00002020,
|
||||
SOUND_2021 = 0x00002021,
|
||||
SOUND_202A = 0x0000202A,
|
||||
SOUND_202B = 0x0000202B,
|
||||
SOUND_202C = 0x0000202C,
|
||||
@ -1154,6 +1177,7 @@ enum SoundIDs {
|
||||
SOUND_20B8 = 0x000020B8,
|
||||
SOUND_20BA = 0x000020BA,
|
||||
SOUND_20C1 = 0x000020C1,
|
||||
SOUND_20C2 = 0x000020C2,
|
||||
SOUND_20C3 = 0x000020C3,
|
||||
SOUND_20C4 = 0x000020C4,
|
||||
SOUND_20C5 = 0x000020C5,
|
||||
@ -1161,6 +1185,7 @@ enum SoundIDs {
|
||||
SOUND_20C8 = 0x000020C8,
|
||||
SOUND_20CD = 0x000020CD,
|
||||
SOUND_20D0 = 0x000020D0,
|
||||
SOUND_20D3 = 0x000020D3,
|
||||
SOUND_SPELL_CAST1 = 0x000020D4,
|
||||
SOUND_SPELL_CAST2 = 0x000020D5,
|
||||
SOUND_SPELL_CAST3 = 0x000020D6,
|
||||
@ -1174,6 +1199,7 @@ enum SoundIDs {
|
||||
SOUND_20E4 = 0x000020E4,
|
||||
SOUND_20E5 = 0x000020E5,
|
||||
SOUND_20E7 = 0x000020E7,
|
||||
SOUND_20EA = 0x000020EA,
|
||||
SOUND_20EC = 0x000020EC,
|
||||
SOUND_20ED = 0x000020ED,
|
||||
SOUND_20EE = 0x000020EE,
|
||||
@ -4222,7 +4248,7 @@ enum ColliderFlags {
|
||||
|
||||
// SURFACE_TYPE_DEFAULT = 0,
|
||||
SURFACE_TYPE_HEDGES = 9, ///< used within hedge maze in flo_11
|
||||
SURFACE_TYPE_SNOW = 8,
|
||||
SURFACE_TYPE_SNOW = 8,
|
||||
SURFACE_TYPE_CLOUD = 7, ///< used with clouds in flo_19 and flo_21
|
||||
SURFACE_TYPE_FLOWERS = 6,
|
||||
SURFACE_TYPE_SLIDE = 5,
|
||||
|
@ -315,6 +315,7 @@ ApiStatus ShowRecoveryShimmer(Evt* script, s32 isInitialCall);
|
||||
ApiStatus func_80273444(Evt* script, s32 isInitialCall);
|
||||
ApiStatus GetActionCommandMode(Evt* script, s32 isInitialCall);
|
||||
ApiStatus SetActionCommandMode(Evt* script, s32 isInitialCall);
|
||||
ApiStatus SetCommandAutoSuccess(Evt* script, s32 isInitialCall);
|
||||
ApiStatus func_802693F0(Evt* script, s32 isInitialCall);
|
||||
ApiStatus WaitForState(Evt* script, s32 isInitialCall);
|
||||
ApiStatus func_8026E020(Evt* script, s32 isInitialCall);
|
||||
|
@ -1,288 +1,5 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/BattleClubba.h"
|
||||
|
||||
#define NAMESPACE b_area_dgb_clubba
|
||||
|
||||
extern EvtScript N(init_80218150);
|
||||
extern EvtScript N(takeTurn_802186BC);
|
||||
extern EvtScript N(idle_8021819C);
|
||||
extern EvtScript N(handleEvent_802181AC);
|
||||
|
||||
s32 N(idleAnimations_80218000)[] = {
|
||||
STATUS_NORMAL, ANIM_BattleClubba_Anim01,
|
||||
STATUS_STONE, ANIM_BattleClubba_Anim00,
|
||||
STATUS_SLEEP, ANIM_BattleClubba_Anim03,
|
||||
STATUS_POISON, ANIM_BattleClubba_Anim01,
|
||||
STATUS_STOP, ANIM_BattleClubba_Anim00,
|
||||
STATUS_STATIC, ANIM_BattleClubba_Anim01,
|
||||
STATUS_PARALYZE, ANIM_BattleClubba_Anim00,
|
||||
STATUS_DIZZY, ANIM_BattleClubba_Anim05,
|
||||
STATUS_FEAR, ANIM_BattleClubba_Anim05,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_8021804C)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_80218058)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 90,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 75,
|
||||
STATUS_FEAR, 100,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 90,
|
||||
STATUS_SHRINK, 75,
|
||||
STATUS_STOP, 90,
|
||||
STATUS_DEFAULT_TURN_MOD, 0,
|
||||
STATUS_SLEEP_TURN_MOD, 1,
|
||||
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, 1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, -1,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(partsTable_80218104)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -12, 32 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_80218000),
|
||||
.defenseTable = N(defenseTable_8021804C),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 8,
|
||||
.unk_1D = 0xFD,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_CLUBBA,
|
||||
.level = 13,
|
||||
.maxHP = 8,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_80218104)),
|
||||
.partsData = N(partsTable_80218104),
|
||||
.script = &N(init_80218150),
|
||||
.statusTable = N(statusTable_80218058),
|
||||
.escapeChance = 60,
|
||||
.airLiftChance = 60,
|
||||
.spookChance = 70,
|
||||
.baseStatusChance = 70,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 1,
|
||||
.size = { 42, 42 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 35 },
|
||||
};
|
||||
|
||||
EvtScript N(init_80218150) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_802186BC)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021819C)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_802181AC)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_8021819C) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_802181AC) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim06)
|
||||
EVT_SET_CONST(LVar2, ANIM_BattleClubba_Anim07)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim06)
|
||||
EVT_SET_CONST(LVar2, ANIM_BattleClubba_Anim07)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim07)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_SET_CONST(LVar2, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_802186BC) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 27)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SUB(LVar2, 6)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(15)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim02)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 27, 0, -6)
|
||||
EVT_ELSE
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 10, 0, -6)
|
||||
EVT_END_IF
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim01)
|
||||
EVT_WAIT(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x20C5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim08)
|
||||
EVT_WAIT(10)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_WAIT(20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim09)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x20C5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim0A)
|
||||
EVT_WAIT(2)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 10, EVT_FLOAT(1.5))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(19)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/clubba.inc.c"
|
||||
|
@ -1,5 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
@ -1,5 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#include "common/UnkBattleFunc2.inc.c"
|
@ -1,7 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#define NAMESPACE dup_b_area_dig
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_dig
|
@ -1,7 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#define NAMESPACE dup2_b_area_dig
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_dig
|
@ -1,5 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#include "common/IsSaveVar123.inc.c"
|
@ -1,7 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#include "common/UnkFloatFunc3.inc.c"
|
||||
|
||||
#include "common/GetModelPos.inc.c"
|
@ -1,5 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#include "common/IsGameStatusUnkAA_1.inc.c"
|
@ -1,67 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
ApiStatus func_802186E0_6DE4A0(Evt* script, s32 isInitialCall) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
Actor* player = battleStatus->playerActor;
|
||||
SelectableTarget* selectableTarget;
|
||||
|
||||
battleStatus->moveCategory = 0;
|
||||
battleStatus->selectedMoveID = MOVE_POWER_BOUNCE;
|
||||
battleStatus->selectedItemID = gCurrentEncounter.hitTier;
|
||||
battleStatus->currentTargetListFlags = gMoveTable[MOVE_POWER_BOUNCE].flags;
|
||||
|
||||
player_create_target_list(player);
|
||||
player->selectedTargetIndex = 1;
|
||||
selectableTarget = &player->targetData[player->targetIndexList[player->selectedTargetIndex]];
|
||||
player->targetActorID = selectableTarget->actorID;
|
||||
player->targetPartIndex = selectableTarget->partID;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus func_80218770_6DE530(Evt* script, s32 isInitialCall) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
Actor* partner = battleStatus->partnerActor;
|
||||
SelectableTarget* selectableTarget;
|
||||
|
||||
battleStatus->moveCategory = 6;
|
||||
do {} while (0);
|
||||
battleStatus->selectedItemID = 0;
|
||||
battleStatus->selectedMoveID = MOVE_SHELL_SHOT;
|
||||
battleStatus->currentTargetListFlags = gMoveTable[MOVE_SHELL_SHOT].flags;
|
||||
|
||||
player_create_target_list(partner);
|
||||
partner->selectedTargetIndex = 0;
|
||||
selectableTarget = &partner->targetData[partner->targetIndexList[partner->selectedTargetIndex]];
|
||||
partner->targetActorID = selectableTarget->actorID;
|
||||
partner->targetPartIndex = selectableTarget->partID;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus func_802187F0_6DE5B0(Evt* script, s32 isInitialCall) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
s32 selectedItemID;
|
||||
Actor* player = battleStatus->playerActor;
|
||||
SelectableTarget* selectableTarget;
|
||||
|
||||
battleStatus->moveCategory = 2;
|
||||
battleStatus->selectedItemID = ITEM_THUNDER_RAGE;
|
||||
selectedItemID = battleStatus->selectedItemID;
|
||||
battleStatus->selectedMoveID = 0;
|
||||
battleStatus->currentAttackElement = 0;
|
||||
playerData->invItems[0] = selectedItemID;
|
||||
battleStatus->currentTargetListFlags = gItemTable[playerData->invItems[0]].targetFlags | 0x8000;
|
||||
|
||||
player_create_target_list(player);
|
||||
player->selectedTargetIndex = 0;
|
||||
selectableTarget = &player->targetData[player->targetIndexList[player->selectedTargetIndex]];
|
||||
player->targetActorID = selectableTarget->actorID;
|
||||
player->targetPartIndex = selectableTarget->partID;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
#define NAMESPACE dup_b_area_dig
|
||||
#include "common/Set80218630_Var0.inc.c"
|
||||
#define NAMESPACE b_area_dig
|
5
src/battle/area_dig/actor/bandit.c
Normal file
5
src/battle/area_dig/actor/bandit.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_bandit
|
||||
|
||||
#include "battle/common/actor/bandit.inc.c"
|
5
src/battle/area_dig/actor/fuzzy.c
Normal file
5
src/battle/area_dig/actor/fuzzy.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_fuzzy
|
||||
|
||||
#include "battle/common/actor/fuzzy.inc.c"
|
5
src/battle/area_dig/actor/koopa_troopa.c
Normal file
5
src/battle/area_dig/actor/koopa_troopa.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_koopa_troopa
|
||||
|
||||
#include "battle/common/actor/koopa_troopa.inc.c"
|
5
src/battle/area_dig/actor/monty_mole.c
Normal file
5
src/battle/area_dig/actor/monty_mole.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_monty_mole
|
||||
|
||||
#include "battle/common/actor/monty_mole.inc.c"
|
5
src/battle/area_dig/actor/pokey.c
Normal file
5
src/battle/area_dig/actor/pokey.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_pokey
|
||||
|
||||
#include "battle/common/actor/pokey.inc.c"
|
5
src/battle/area_dig/actor/red_shy_guy.c
Normal file
5
src/battle/area_dig/actor/red_shy_guy.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_red_shy_guy
|
||||
|
||||
#include "battle/common/actor/red_shy_guy.inc.c"
|
483
src/battle/area_dig/actor/tubba_blubba.c
Normal file
483
src/battle/area_dig/actor/tubba_blubba.c
Normal file
@ -0,0 +1,483 @@
|
||||
#include "common.h"
|
||||
#include "effects.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/BattleTubba.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_tubba_blubba
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(handleEvent);
|
||||
extern EvtScript N(nextTurn);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(shakeCam);
|
||||
extern EvtScript N(attackBodyCrush);
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_BattleTubba_Anim02,
|
||||
STATUS_STONE, ANIM_BattleTubba_Anim00,
|
||||
STATUS_SLEEP, ANIM_BattleTubba_Anim00,
|
||||
STATUS_POISON, ANIM_BattleTubba_Anim02,
|
||||
STATUS_STOP, ANIM_BattleTubba_Anim00,
|
||||
STATUS_STATIC, ANIM_BattleTubba_Anim00,
|
||||
STATUS_PARALYZE, ANIM_BattleTubba_Anim00,
|
||||
STATUS_PARALYZE, ANIM_BattleTubba_Anim00,
|
||||
STATUS_DIZZY, ANIM_BattleTubba_Anim00,
|
||||
STATUS_DIZZY, ANIM_BattleTubba_Anim00,
|
||||
STATUS_FEAR, ANIM_BattleTubba_Anim00,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 80,
|
||||
STATUS_POISON, 0,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 80,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 0,
|
||||
STATUS_PARALYZE, 80,
|
||||
STATUS_SHRINK, 90,
|
||||
STATUS_STOP, 80,
|
||||
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_2000 | ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -15, 75 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = -10,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_TUBBA_BLUBBA_INVINCIBLE,
|
||||
.level = 70,
|
||||
.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 = { 110, 100 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -33, 78 },
|
||||
.statusMessageOffset = { 10, 75 },
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(BindNextTurn, ACTOR_SELF, EVT_PTR(N(nextTurn)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_EXEC_GET_TID(N(shakeCam), LVar0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 2, LVar0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(shakeCam) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(ActorExists, ACTOR_SELF, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetAnimation, ACTOR_SELF, 1, LVar0)
|
||||
EVT_IF_EQ(LVar0, ANIM_BattleTubba_Anim06)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(LVar0, ANIM_BattleTubba_Anim07)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_GOTO(0)
|
||||
EVT_LABEL(1)
|
||||
EVT_CALL(ShakeCam, 1, 0, 2, EVT_FLOAT(0.5))
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(nextTurn) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(returnHome) = {
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim02)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim07)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim02)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_IF_EQ(LVar0, HIT_RESULT_MISS)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim07)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim01)
|
||||
EVT_WAIT(30)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_LOOP(12)
|
||||
EVT_ADD(LVar0, 15)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_WAIT(10)
|
||||
EVT_SET(LVar0, 180)
|
||||
EVT_LOOP(12)
|
||||
EVT_SUB(LVar0, 15)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim02)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar1, 80)
|
||||
EVT_CALL(PlayEffect, EFFECT_EMOTE, 2, 0, LVar0, LVar1, LVar2, 30, 315, 30, 0, 0, 0, 0, 0)
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim01)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_LOOP(15)
|
||||
EVT_ADD(LVar0, 12)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim06)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar0, 220)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 2, LVar0)
|
||||
EVT_KILL_THREAD(LVar0)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_20000 | BS_FLAGS1_40000, 1)
|
||||
EVT_CALL(func_8026F60C, 10)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(func_802535B4, 0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 2)
|
||||
EVT_CALL(ActorSpeak, MSG_CH3_0103, ACTOR_SELF, 1, ANIM_BattleTubba_Anim09, ANIM_BattleTubba_Anim02)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim15)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim16)
|
||||
EVT_WAIT(15)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(EndActorSpeech, ACTOR_SELF, 1, -1, -1)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim01)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(func_802535B4, 1)
|
||||
EVT_END_IF
|
||||
EVT_EXEC_WAIT(N(attackBodyCrush))
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackFistDrop) = {
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(SetBattleCamZoom, 150)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim07)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 20, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim15)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim16)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim17)
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(PlayEffect, EFFECT_LANDING_DUST, 4, LVar0, LVar1, LVar2, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(PlayEffect, EFFECT_SHOCKWAVE, 1, LVar0, LVar1, LVar2, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(15.0))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(6)
|
||||
EVT_CASE_OR_EQ(5)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim02)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_IF_EQ(LVarA, 5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
|
||||
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(func_80269EAC, 23)
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, 4, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_SWITCH(LVarF)
|
||||
EVT_CASE_OR_EQ(0)
|
||||
EVT_CASE_OR_EQ(2)
|
||||
EVT_CASE_OR_EQ(10)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim02)
|
||||
EVT_IF_EQ(LVarF, 10)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackBodyCrush) = {
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(SetBattleCamZoom, 180)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim07)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 70, 0, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim0F)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim10)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(6)
|
||||
EVT_CASE_OR_EQ(5)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(12)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim11)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 15)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_ADD(LVar2, 5)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(PlaySound, SOUND_JUMP_3E2)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 23, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim12)
|
||||
EVT_THREAD
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0, 0, 0, 0, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_ADD(LVar2, 5)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0, 0, 0, 0, 0)
|
||||
EVT_IF_EQ(LVarA, 5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim13)
|
||||
EVT_WAIT(4)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_THREAD
|
||||
EVT_WAIT(12)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim11)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(PlaySound, SOUND_JUMP_3E2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
|
||||
EVT_END_SWITCH
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
|
||||
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(func_80269EAC, 24)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20EA)
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 6, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_SET(LVarF, LVar0)
|
||||
EVT_SWITCH(LVarF)
|
||||
EVT_CASE_OR_EQ(0)
|
||||
EVT_CASE_OR_EQ(2)
|
||||
EVT_CASE_OR_EQ(10)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
|
||||
EVT_IF_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, BS_FLAGS1_ATK_BLOCKED)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_STONE)
|
||||
EVT_CALL(LandJump, ACTOR_SELF)
|
||||
EVT_ELSE
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SHOCKWAVE, 0, LVar0, 0, LVar2, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim0D)
|
||||
EVT_THREAD
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0, 0, 0, 0, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_ADD(LVar2, 5)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0, 0, 0, 0, 0)
|
||||
EVT_GOTO(2)
|
||||
EVT_LABEL(1)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar5)
|
||||
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SHOCKWAVE, 1, LVar0, 0, LVar2, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_THREAD
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleTubba_Anim0E)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_IF_NOT_FLAG(LVar5, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 0, LVar0, LVar1, LVar2, 60, 8, 10, 20, 0, 0, 0, 0, 0)
|
||||
EVT_WAIT(8)
|
||||
EVT_END_IF
|
||||
EVT_LABEL(2)
|
||||
EVT_IF_EQ(LVarF, 10)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
5
src/battle/area_dig/actor/whacka.c
Normal file
5
src/battle/area_dig/actor/whacka.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_whacka
|
||||
|
||||
#include "battle/common/actor/whacka.inc.c"
|
72
src/battle/area_dig/area.c
Normal file
72
src/battle/area_dig/area.c
Normal file
@ -0,0 +1,72 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
|
||||
extern ActorBlueprint N(fuzzy);
|
||||
extern ActorBlueprint N(monty_mole);
|
||||
extern ActorBlueprint N(pokey);
|
||||
extern ActorBlueprint N(bandit);
|
||||
extern ActorBlueprint N(red_shy_guy);
|
||||
extern ActorBlueprint N(tubba_blubba);
|
||||
|
||||
extern Stage N(dig_01);
|
||||
extern Stage N(dig_02);
|
||||
extern Stage N(dig_03);
|
||||
extern Stage N(dig_04);
|
||||
extern Stage N(dig_05);
|
||||
|
||||
extern EvtScript N(dig_01_script);
|
||||
extern EvtScript N(dig_02_script);
|
||||
extern EvtScript N(dig_03_script);
|
||||
extern EvtScript N(dig_04_script);
|
||||
extern EvtScript N(dig_05_script);
|
||||
|
||||
Formation N(formation_00) = {
|
||||
{ .actor = &N(fuzzy), .home = { .index = 0 }, .priority = 10, },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 1 }, .priority = 9, },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 2 }, .priority = 8, },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 3 }, .priority = 7, },
|
||||
};
|
||||
|
||||
Formation N(formation_01) = {
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 10, },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 9, },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 3 }, .priority = 8, },
|
||||
};
|
||||
|
||||
Formation N(formation_02) = {
|
||||
{ .actor = &N(pokey), .home = { .index = 1 }, .priority = 10, },
|
||||
{ .actor = &N(bandit), .home = { .index = 2 }, .priority = 9, },
|
||||
{ .actor = &N(pokey), .home = { .index = 3 }, .priority = 8, },
|
||||
};
|
||||
|
||||
Formation N(formation_03) = {
|
||||
{ .actor = &N(red_shy_guy), .home = { .index = 0 }, .priority = 10, },
|
||||
{ .actor = &N(red_shy_guy), .home = { .index = 1 }, .priority = 9, },
|
||||
{ .actor = &N(red_shy_guy), .home = { .index = 2 }, .priority = 8, },
|
||||
{ .actor = &N(red_shy_guy), .home = { .index = 3 }, .priority = 7, },
|
||||
};
|
||||
|
||||
Formation N(formation_04) = {
|
||||
{ .actor = &N(tubba_blubba), .home = { .index = 2 }, .priority = 10, },
|
||||
};
|
||||
|
||||
BattleList N(formationTable) = {
|
||||
BATTLE_WITH_SCRIPT("ダイジェスト01", N(formation_00), &N(dig_01), &N(dig_01_script)),
|
||||
BATTLE_WITH_SCRIPT("ダイジェスト02", N(formation_01), &N(dig_02), &N(dig_02_script)),
|
||||
BATTLE_WITH_SCRIPT("ダイジェスト03", N(formation_02), &N(dig_03), &N(dig_03_script)),
|
||||
BATTLE_WITH_SCRIPT("ダイジェスト04", N(formation_03), &N(dig_04), &N(dig_04_script)),
|
||||
BATTLE_WITH_SCRIPT("ダイジェスト05", N(formation_04), &N(dig_05), &N(dig_05_script)),
|
||||
{},
|
||||
};
|
||||
|
||||
StageList N(stageTable) = {
|
||||
{ "dig_01", &N(dig_01) },
|
||||
{ "dig_02", &N(dig_02) },
|
||||
{ "dig_03", &N(dig_03) },
|
||||
{ "dig_04", &N(dig_04) },
|
||||
{ "dig_05", &N(dig_05) },
|
||||
{},
|
||||
};
|
@ -1,6 +1,7 @@
|
||||
#include "common.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig
|
||||
#define NAMESPACE b_area_dig_dig_01_script
|
||||
|
||||
#include "common/Set80218630_Var0.inc.c"
|
||||
|
||||
@ -22,3 +23,17 @@ ApiStatus func_80218644_6DE404(Evt* script, s32 isInitialCall) {
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript NAMESPACE = {
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(SetCamViewport, 1, 29, 20, 262, 177)
|
||||
EVT_CALL(func_802535B4, 0)
|
||||
EVT_SET(LVar0, 15)
|
||||
EVT_CALL(N(Set80218630_Var0))
|
||||
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
|
||||
EVT_CALL(func_80218644_6DE404)
|
||||
EVT_CALL(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
|
||||
EVT_WAIT(10000)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
41
src/battle/area_dig/script/dig_02.c
Normal file
41
src/battle/area_dig/script/dig_02.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include "common.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_02_script
|
||||
|
||||
ApiStatus func_802186E0_6DE4A0(Evt* script, s32 isInitialCall) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
Actor* player = battleStatus->playerActor;
|
||||
SelectableTarget* selectableTarget;
|
||||
|
||||
battleStatus->moveCategory = 0;
|
||||
battleStatus->selectedMoveID = MOVE_POWER_BOUNCE;
|
||||
battleStatus->selectedItemID = gCurrentEncounter.hitTier;
|
||||
battleStatus->currentTargetListFlags = gMoveTable[MOVE_POWER_BOUNCE].flags;
|
||||
|
||||
player_create_target_list(player);
|
||||
player->selectedTargetIndex = 1;
|
||||
selectableTarget = &player->targetData[player->targetIndexList[player->selectedTargetIndex]];
|
||||
player->targetActorID = selectableTarget->actorID;
|
||||
player->targetPartIndex = selectableTarget->partID;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript NAMESPACE = {
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(SetCamViewport, 1, 29, 20, 262, 177)
|
||||
EVT_CALL(func_802535B4, 0)
|
||||
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
|
||||
EVT_CALL(func_802186E0_6DE4A0)
|
||||
EVT_CALL(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
|
||||
EVT_WAIT(130)
|
||||
EVT_LOOP(30)
|
||||
EVT_CALL(SetCommandAutoSuccess, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
37
src/battle/area_dig/script/dig_03.c
Normal file
37
src/battle/area_dig/script/dig_03.c
Normal file
@ -0,0 +1,37 @@
|
||||
#include "common.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_03_script
|
||||
|
||||
ApiStatus func_80218770_6DE530(Evt* script, s32 isInitialCall) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
Actor* partner = battleStatus->partnerActor;
|
||||
SelectableTarget* selectableTarget;
|
||||
|
||||
battleStatus->moveCategory = 6;
|
||||
battleStatus->selectedItemID = 0;
|
||||
battleStatus->selectedMoveID = MOVE_SHELL_SHOT;
|
||||
battleStatus->currentTargetListFlags = gMoveTable[MOVE_SHELL_SHOT].flags;
|
||||
|
||||
player_create_target_list(partner);
|
||||
partner->selectedTargetIndex = 0;
|
||||
selectableTarget = &partner->targetData[partner->targetIndexList[partner->selectedTargetIndex]];
|
||||
partner->targetActorID = selectableTarget->actorID;
|
||||
partner->targetPartIndex = selectableTarget->partID;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript NAMESPACE = {
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(SetCamViewport, 1, 29, 20, 262, 177)
|
||||
EVT_CALL(func_802535B4, 0)
|
||||
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
|
||||
EVT_CALL(func_80218770_6DE530)
|
||||
EVT_CALL(SetBattleState, BATTLE_STATE_PARTNER_MOVE)
|
||||
EVT_WAIT(90)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
41
src/battle/area_dig/script/dig_04.c
Normal file
41
src/battle/area_dig/script/dig_04.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include "common.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_04_script
|
||||
|
||||
ApiStatus func_802187F0_6DE5B0(Evt* script, s32 isInitialCall) {
|
||||
BattleStatus* battleStatus = &gBattleStatus;
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
s32 selectedItemID;
|
||||
Actor* player = battleStatus->playerActor;
|
||||
SelectableTarget* selectableTarget;
|
||||
|
||||
battleStatus->moveCategory = 2;
|
||||
battleStatus->selectedItemID = ITEM_THUNDER_RAGE;
|
||||
selectedItemID = battleStatus->selectedItemID;
|
||||
battleStatus->selectedMoveID = 0;
|
||||
battleStatus->currentAttackElement = 0;
|
||||
playerData->invItems[0] = selectedItemID;
|
||||
battleStatus->currentTargetListFlags = gItemTable[playerData->invItems[0]].targetFlags | 0x8000;
|
||||
|
||||
player_create_target_list(player);
|
||||
player->selectedTargetIndex = 0;
|
||||
selectableTarget = &player->targetData[player->targetIndexList[player->selectedTargetIndex]];
|
||||
player->targetActorID = selectableTarget->actorID;
|
||||
player->targetPartIndex = selectableTarget->partID;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript NAMESPACE = {
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(SetCamViewport, 1, 29, 20, 262, 177)
|
||||
EVT_CALL(func_802535B4, 0)
|
||||
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
|
||||
EVT_CALL(func_802187F0_6DE5B0)
|
||||
EVT_CALL(SetBattleState, BATTLE_STATE_PLAYER_MOVE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
20
src/battle/area_dig/script/dig_05.c
Normal file
20
src/battle/area_dig/script/dig_05.c
Normal file
@ -0,0 +1,20 @@
|
||||
#include "common.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_05_script
|
||||
|
||||
#include "common/Set80218630_Var0.inc.c"
|
||||
|
||||
EvtScript NAMESPACE = {
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(SetCamViewport, 1, 29, 20, 262, 177)
|
||||
EVT_CALL(func_802535B4, 0)
|
||||
EVT_SET(LocalVar(0), 5)
|
||||
EVT_CALL(N(Set80218630_Var0))
|
||||
EVT_CALL(WaitForState, BATTLE_STATE_PLAYER_MENU)
|
||||
EVT_CALL(SetBattleState, BATTLE_STATE_NEXT_ENEMY)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
30
src/battle/area_dig/stage/dig_01.c
Normal file
30
src/battle/area_dig/stage/dig_01.c
Normal file
@ -0,0 +1,30 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/nok_bt04_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_01
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_ueki2, MODEL_ueki1, MODEL_kabu2, MODEL_kabu1, MODEL_kusa3, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "nok_tex",
|
||||
.shape = "nok_bt04_shape",
|
||||
.hit = "nok_bt04_hit",
|
||||
.bg = "nok_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
32
src/battle/area_dig/stage/dig_02.c
Normal file
32
src/battle/area_dig/stage/dig_02.c
Normal file
@ -0,0 +1,32 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/iwa_bt01_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_02
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetGroupEnabled, MODEL_a, FALSE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_iwa1, MODEL_o331, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "iwa_tex",
|
||||
.shape = "iwa_bt01_shape",
|
||||
.hit = "iwa_bt01_hit",
|
||||
.bg = "iwa_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
64
src/battle/area_dig/stage/dig_03.c
Normal file
64
src/battle/area_dig/stage/dig_03.c
Normal file
@ -0,0 +1,64 @@
|
||||
#include "common.h"
|
||||
#include "effects.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/sbk_bt02_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_03
|
||||
|
||||
#include "common/UnkFloatFunc3.inc.c"
|
||||
|
||||
#include "common/GetModelPos.inc.c"
|
||||
|
||||
EvtScript N(updateModels) = {
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_SET(LVar7, LVar1)
|
||||
EVT_MUL(LVar7, 10)
|
||||
EVT_CALL(N(GetModelPos))
|
||||
EVT_LABEL(0)
|
||||
EVT_ADD(LVar7, 1)
|
||||
EVT_IF_GT(LVar7, 3599)
|
||||
EVT_SUB(LVar7, 3600)
|
||||
EVT_END_IF
|
||||
EVT_CALL(N(UnkFloatFunc3), LVar7, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(TranslateModel, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_SET(LVar0, MODEL_g60)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_SET(LVar0, MODEL_g63)
|
||||
EVT_SET(LVar1, 120)
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_SET(LVar0, MODEL_g62)
|
||||
EVT_SET(LVar1, 240)
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_CALL(PlayEffect, EFFECT_SUN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_o322, MODEL_o321, MODEL_o320, MODEL_o319, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "sbk_tex",
|
||||
.shape = "sbk_bt02_shape",
|
||||
.hit = "sbk_bt02_hit",
|
||||
.bg = "sbk_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
61
src/battle/area_dig/stage/dig_04.c
Normal file
61
src/battle/area_dig/stage/dig_04.c
Normal file
@ -0,0 +1,61 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/omo_bt04_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_04
|
||||
|
||||
extern Formation N(formation_slot_machine);
|
||||
extern ActorBlueprint N(slot_machine_stop);
|
||||
extern ActorBlueprint N(slot_machine_start);
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetTexPanner, 29, 10)
|
||||
EVT_THREAD
|
||||
EVT_SET(LVarE, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_ADD(LVarE, 32768)
|
||||
EVT_CALL(SetTexPanOffset, 10, 0, LVarE, 0)
|
||||
EVT_WAIT(10)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_itigo, MODEL_kisya, MODEL_kusari, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt04_shape",
|
||||
.hit = "omo_bt04_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
.specialFormationSize = 4,
|
||||
.specialFormation = &N(formation_slot_machine),
|
||||
};
|
||||
|
||||
Vec3i N(slot_machine_pos1) = { -49, 56, -68 };
|
||||
Vec3i N(slot_machine_pos2) = { -13, 56, -68 };
|
||||
Vec3i N(slot_machine_pos3) = { 20, 56, -68 };
|
||||
Vec3i N(slot_machine_pos4) = { 53, 56, -68 };
|
||||
|
||||
Formation N(formation_slot_machine) = {
|
||||
{ .actor = &N(slot_machine_start), .home = { .vec = &N(slot_machine_pos1) }, .var0 = 0 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos2) }, .var0 = 1 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos3) }, .var0 = 2 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos4) }, .var0 = 3 },
|
||||
};
|
||||
|
||||
#include "battle/common/actor/slot_machine.inc.c"
|
23
src/battle/area_dig/stage/dig_05.c
Normal file
23
src/battle/area_dig/stage/dig_05.c
Normal file
@ -0,0 +1,23 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_dig_dig_05
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "dgb_tex",
|
||||
.shape = "dgb_bt05_shape",
|
||||
.hit = "dgb_bt05_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
@ -1,429 +1,5 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/MontyMole.h"
|
||||
|
||||
#define NAMESPACE b_area_iwa_monty_mole
|
||||
|
||||
extern s32 N(idleAnimations_8021A59C)[];
|
||||
extern s32 N(idleAnimations_8021A5E8)[];
|
||||
extern EvtScript N(init_8021A7B0);
|
||||
extern EvtScript N(takeTurn_8021AFAC);
|
||||
extern EvtScript N(idle_8021A814);
|
||||
extern EvtScript N(handleEvent_8021A824);
|
||||
|
||||
s32 N(defenseTable_8021A450)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_8021A45C)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 90,
|
||||
STATUS_POISON, 80,
|
||||
STATUS_FROZEN, 100,
|
||||
STATUS_DIZZY, 90,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 10,
|
||||
STATUS_PARALYZE, 100,
|
||||
STATUS_SHRINK, 90,
|
||||
STATUS_STOP, 100,
|
||||
STATUS_DEFAULT_TURN_MOD, 0,
|
||||
STATUS_SLEEP_TURN_MOD, 0,
|
||||
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, 1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, 0,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(partsTable_8021A508)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -2, 16 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021A59C),
|
||||
.defenseTable = N(defenseTable_8021A450),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 249,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_MULTI_TARGET | ACTOR_PART_FLAG_80000000,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 0, -15 },
|
||||
.targetOffset = { -2, 12 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021A59C),
|
||||
.defenseTable = N(defenseTable_8021A450),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 249,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
|
||||
.index = 3,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021A5E8),
|
||||
.defenseTable = N(defenseTable_8021A450),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint N(1) = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_MONTY_MOLE,
|
||||
.level = 8,
|
||||
.maxHP = 3,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8021A508)),
|
||||
.partsData = N(partsTable_8021A508),
|
||||
.script = &N(init_8021A7B0),
|
||||
.statusTable = N(statusTable_8021A45C),
|
||||
.escapeChance = 80,
|
||||
.airLiftChance = 70,
|
||||
.spookChance = 50,
|
||||
.baseStatusChance = 85,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 4,
|
||||
.powerBounceChance = 100,
|
||||
.coinReward = 1,
|
||||
.size = { 34, 18 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8021A59C)[] = {
|
||||
STATUS_NORMAL, ANIM_MontyMole_Anim01,
|
||||
STATUS_STONE, ANIM_MontyMole_Anim00,
|
||||
STATUS_SLEEP, ANIM_MontyMole_Anim14,
|
||||
STATUS_POISON, ANIM_MontyMole_Anim01,
|
||||
STATUS_STOP, ANIM_MontyMole_Anim00,
|
||||
STATUS_STATIC, ANIM_MontyMole_Anim01,
|
||||
STATUS_PARALYZE, ANIM_MontyMole_Anim00,
|
||||
STATUS_DIZZY, ANIM_MontyMole_Anim14,
|
||||
STATUS_FEAR, ANIM_MontyMole_Anim14,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8021A5E8)[] = {
|
||||
STATUS_NORMAL, ANIM_MontyMole_Anim0F,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8021A5F4)[] = {
|
||||
STATUS_NORMAL, ANIM_MontyMole_Anim12,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(unk_missing_8021A600)[] = {
|
||||
0x00000001, 0x002F0006, 0x00000000,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(partsTable_8021A60C)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_2000 | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021A5F4),
|
||||
.defenseTable = NULL,
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
EvtScript N(init_8021A630) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 1, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
ActorBlueprint N(2) = {
|
||||
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_40000 | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY,
|
||||
.type = ACTOR_TYPE_MONTY_HOLE,
|
||||
.level = 9,
|
||||
.maxHP = 5,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8021A60C)),
|
||||
.partsData = N(partsTable_8021A60C),
|
||||
.script = &N(init_8021A630),
|
||||
.statusTable = NULL,
|
||||
.escapeChance = 80,
|
||||
.airLiftChance = 0,
|
||||
.spookChance = 80,
|
||||
.baseStatusChance = 80,
|
||||
.upAndAwayChance = 90,
|
||||
.spinSmashReq = 4,
|
||||
.powerBounceChance = 90,
|
||||
.coinReward = 2,
|
||||
.size = { 32, 18 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
Vec3i N(vector3D_8021A6B8) = { 0, 0xFFFFFC18, 0, };
|
||||
|
||||
Formation N(specialFormation_8021A6C4) = {
|
||||
{ .actor = &N(2), .home = { .vec = &N(vector3D_8021A6B8) },},
|
||||
};
|
||||
|
||||
Formation N(specialFormation_8021A6E0) = {
|
||||
{ .actor = &N(2), .home = { .vec = &N(vector3D_8021A6B8) }, .var0 = 1 },
|
||||
};
|
||||
|
||||
EvtScript N(8021A6FC) = {
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SummonEnemy, EVT_PTR(N(specialFormation_8021A6E0)), 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SummonEnemy, EVT_PTR(N(specialFormation_8021A6C4)), 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
|
||||
EVT_SUB(LVar3, 1)
|
||||
EVT_CALL(SetActorPos, LVar0, LVar1, LVar2, LVar3)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init_8021A7B0) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021AFAC)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021A814)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021A824)))
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_NO_SHADOW, 1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_8021A814) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_8021A824) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastElement, LVarE)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_IF_FLAG(LVarE, DAMAGE_TYPE_SMASH)
|
||||
EVT_CHILD_THREAD
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim07)
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim06)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim08)
|
||||
EVT_WAIT(10)
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim05)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_IF
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_MontyMole_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_MontyMole_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_EXEC_WAIT(N(8021A6FC))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim0C)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, DAMAGE_TYPE_SMASH)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
|
||||
EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FLOAT(2.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim11)
|
||||
EVT_WAIT(80)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
|
||||
EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim10)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim14)
|
||||
EVT_WAIT(20)
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_IF
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim05)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim06)
|
||||
EVT_WAIT(10)
|
||||
EVT_EXEC_WAIT(N(8021A6FC))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim06)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim07)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim08)
|
||||
EVT_WAIT(8)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim06)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim07)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim08)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_TARGET_ONLY | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021A5F4)))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_MontyMole_Anim05)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_EXEC_WAIT(N(8021A6FC))
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -5, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim19)
|
||||
EVT_ELSE
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -9, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, -23, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim09)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1000)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
|
||||
EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FLOAT(2.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim11)
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
|
||||
EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim10)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim14)
|
||||
EVT_WAIT(20)
|
||||
EVT_CASE_EQ(EVENT_UP_AND_AWAY)
|
||||
EVT_EXEC_WAIT(N(8021A6FC))
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_8021AFAC) = {
|
||||
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(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_END_IF
|
||||
EVT_CHILD_THREAD
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_SURFACE)
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_MontyMole_Anim04)
|
||||
EVT_WAIT(37)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 3, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 3, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 3, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_END_IF
|
||||
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, 3, SOUND_MOLE_THROW)
|
||||
EVT_CALL(SetPartSounds, ACTOR_SELF, 3, 1, 0, 0)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 100)
|
||||
EVT_SET(LVar1, -5)
|
||||
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 3, EVT_FLOAT(12.0))
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 3, EVT_FLOAT(0.1))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 3, ANIM_MontyMole_Anim0F)
|
||||
EVT_CALL(FlyPartTo, ACTOR_SELF, 3, LVar0, LVar1, LVar2, 0, 30, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 3, EVT_FLOAT(12.0))
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 3, EVT_FLOAT(0.1))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 3, ANIM_MontyMole_Anim0F)
|
||||
EVT_CALL(FlyPartTo, ACTOR_SELF, 3, LVar0, LVar1, LVar2, 0, 20, 0)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 55)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 3, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 3, EVT_FLOAT(0.1))
|
||||
EVT_CALL(FlyPartTo, ACTOR_SELF, 3, LVar0, LVar1, LVar2, 0, 25, 0)
|
||||
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, 3, EVT_FLOAT(4.0))
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(FlyPartTo, ACTOR_SELF, 3, LVar0, LVar1, LVar2, 0, 21, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/monty_mole.inc.c"
|
||||
|
@ -1,311 +1,5 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/Whacka.h"
|
||||
|
||||
#define NAMESPACE b_area_iwa_whacka
|
||||
|
||||
extern EvtScript N(init_8021FDA0);
|
||||
extern EvtScript N(takeTurn_80220634);
|
||||
extern EvtScript N(idle_8021FE5C);
|
||||
extern EvtScript N(handleEvent_8021FE90);
|
||||
extern EvtScript N(80220684);
|
||||
extern EvtScript N(80220764);
|
||||
|
||||
s32 N(idleAnimations_8021FC50)[] = {
|
||||
STATUS_NORMAL, ANIM_Whacka_Idle,
|
||||
STATUS_STONE, ANIM_Whacka_Still,
|
||||
STATUS_SLEEP, ANIM_Whacka_Idle,
|
||||
STATUS_POISON, ANIM_Whacka_Idle,
|
||||
STATUS_STOP, ANIM_Whacka_Still,
|
||||
STATUS_STATIC, ANIM_Whacka_Idle,
|
||||
STATUS_PARALYZE, ANIM_Whacka_Still,
|
||||
STATUS_DIZZY, ANIM_Whacka_Idle,
|
||||
STATUS_FEAR, ANIM_Whacka_Idle,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_8021FC9C)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_8021FCA8)[] = {
|
||||
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(partsTable_8021FD54)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 30 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021FC50),
|
||||
.defenseTable = N(defenseTable_8021FC9C),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 251,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_40000,
|
||||
.type = ACTOR_TYPE_WHACKA,
|
||||
.level = 0,
|
||||
.maxHP = 99,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8021FD54)),
|
||||
.partsData = N(partsTable_8021FD54),
|
||||
.script = &N(init_8021FDA0),
|
||||
.statusTable = N(statusTable_8021FCA8),
|
||||
.escapeChance = 0,
|
||||
.airLiftChance = 0,
|
||||
.spookChance = 0,
|
||||
.baseStatusChance = 0,
|
||||
.upAndAwayChance = 0,
|
||||
.spinSmashReq = 4,
|
||||
.powerBounceChance = 50,
|
||||
.coinReward = 0,
|
||||
.size = { 47, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -20, 40 },
|
||||
.statusMessageOffset = { 10, 30 },
|
||||
};
|
||||
|
||||
#include "common/IsSaveVar123.inc.c"
|
||||
|
||||
EvtScript N(init_8021FDA0) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_80220634)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021FE5C)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021FE90)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_CALL(N(IsSaveVar123))
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_8021FE5C) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_8021FE90) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2073)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CASE_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Hurt)
|
||||
EVT_EXEC_WAIT(N(80220684))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(N(80220684))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(N(80220684))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CASE_EQ(EVENT_IMMUNE)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Hurt)
|
||||
EVT_EXEC_WAIT(N(80220684))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_80220634) = {
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80220764))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80220684) = {
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2073)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Whacka_Idle)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 5)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_ADD(LVar2, 10)
|
||||
EVT_CALL(MakeItemEntity, ITEM_WHACKAS_BUMP, LVar0, LVar1, LVar2, 12, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80220764) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Whacka_Burrow)
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_CALL(SetBattleFlagBits2, 0x10000000, 1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/whacka.inc.c"
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define NAMESPACE b_area_iwa
|
||||
|
||||
extern ActorBlueprint N(cleft);
|
||||
extern ActorBlueprint N(monty_mole_1);
|
||||
extern ActorBlueprint N(monty_mole);
|
||||
extern ActorBlueprint N(whacka);
|
||||
extern ActorBlueprint N(buzzar);
|
||||
|
||||
@ -29,52 +29,52 @@ Formation N(formation_02) = {
|
||||
|
||||
Formation N(formation_03) = {
|
||||
{ .actor = &N(cleft), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 2 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_04) = {
|
||||
{ .actor = &N(cleft), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 8 },
|
||||
};
|
||||
|
||||
Formation N(formation_05) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 10 },
|
||||
};
|
||||
|
||||
Formation N(formation_06) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 2 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_07) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 8 },
|
||||
};
|
||||
|
||||
Formation N(formation_08) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 3 }, .priority = 7 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 3 }, .priority = 7 },
|
||||
};
|
||||
|
||||
Formation N(formation_09) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(cleft), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_0A) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(cleft), .home = { .index = 2 }, .priority = 8 },
|
||||
};
|
||||
|
||||
Formation N(formation_0B) = {
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(cleft), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 2 }, .priority = 8 },
|
||||
};
|
||||
|
||||
Vec3i N(vector3D_8021853C) = { 90, 70, 0, };
|
||||
@ -85,7 +85,7 @@ Formation N(formation_0C) = {
|
||||
|
||||
Formation N(formation_0D) = {
|
||||
{ .actor = &N(cleft), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(monty_mole_1), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(monty_mole), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(whacka), .home = { .index = 2 }, .priority = 8 },
|
||||
};
|
||||
|
||||
|
@ -8,12 +8,6 @@
|
||||
|
||||
extern ActorBlueprint N(whacka);
|
||||
extern Formation N(specialFormation_802208E4);
|
||||
extern EvtScript N(init_80220A50);
|
||||
extern EvtScript N(takeTurn_802212E4);
|
||||
extern EvtScript N(idle_80220B0C);
|
||||
extern EvtScript N(handleEvent_80220B40);
|
||||
extern EvtScript N(80221414);
|
||||
extern EvtScript N(80221334);
|
||||
|
||||
EvtScript N(beforeBattle_80220860) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
@ -50,300 +44,6 @@ Formation N(specialFormation_802208E4) = {
|
||||
{ .actor = &N(whacka), .home = { .vec = &N(vector3D_802208D8) }},
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_80220900)[] = {
|
||||
STATUS_NORMAL, ANIM_Whacka_Idle,
|
||||
STATUS_STONE, ANIM_Whacka_Still,
|
||||
STATUS_SLEEP, ANIM_Whacka_Idle,
|
||||
STATUS_POISON, ANIM_Whacka_Idle,
|
||||
STATUS_STOP, ANIM_Whacka_Still,
|
||||
STATUS_STATIC, ANIM_Whacka_Idle,
|
||||
STATUS_PARALYZE, ANIM_Whacka_Still,
|
||||
STATUS_DIZZY, ANIM_Whacka_Idle,
|
||||
STATUS_FEAR, ANIM_Whacka_Idle,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_8022094C)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_80220958)[] = {
|
||||
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(partsTable_80220A04)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 30 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_80220900),
|
||||
.defenseTable = N(defenseTable_8022094C),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 251,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint N(whacka) = {
|
||||
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_40000,
|
||||
.type = ACTOR_TYPE_WHACKA,
|
||||
.level = 0,
|
||||
.maxHP = 99,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_80220A04)),
|
||||
.partsData = N(partsTable_80220A04),
|
||||
.script = &N(init_80220A50),
|
||||
.statusTable = N(statusTable_80220958),
|
||||
.escapeChance = 0,
|
||||
.airLiftChance = 0,
|
||||
.spookChance = 0,
|
||||
.baseStatusChance = 0,
|
||||
.upAndAwayChance = 0,
|
||||
.spinSmashReq = 4,
|
||||
.powerBounceChance = 50,
|
||||
.coinReward = 0,
|
||||
.size = { 47, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -20, 40 },
|
||||
.statusMessageOffset = { 10, 30 },
|
||||
};
|
||||
|
||||
#include "common/IsSaveVar123.inc.c"
|
||||
|
||||
EvtScript N(init_80220A50) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_802212E4)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_80220B0C)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_80220B40)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_CALL(N(IsSaveVar123))
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_80220B0C) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_80220B40) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2073)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CASE_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Hurt)
|
||||
EVT_EXEC_WAIT(N(80221334))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(N(80221334))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(N(80221334))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CASE_EQ(EVENT_IMMUNE)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Hurt)
|
||||
EVT_EXEC_WAIT(N(80221334))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_802212E4) = {
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80221414))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80221334) = {
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2073)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Whacka_Idle)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 5)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_ADD(LVar2, 10)
|
||||
EVT_CALL(MakeItemEntity, ITEM_WHACKAS_BUMP, LVar0, LVar1, LVar2, 12, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80221414) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Whacka_Burrow)
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_CALL(SetBattleFlagBits2, 0x10000000, 1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#define NAMESPACE b_area_iwa_iwa_01_whacka
|
||||
#include "battle/common/actor/whacka.inc.c"
|
||||
#define NAMESPACE b_area_iwa_iwa_01
|
||||
|
@ -7,12 +7,6 @@
|
||||
#define NAMESPACE b_area_iwa_iwa_02
|
||||
|
||||
extern ActorBlueprint N(whacka);
|
||||
extern EvtScript N(init_8022176C);
|
||||
extern EvtScript N(takeTurn_80222000);
|
||||
extern EvtScript N(idle_80221828);
|
||||
extern EvtScript N(handleEvent_8022185C);
|
||||
extern EvtScript N(80222050);
|
||||
extern EvtScript N(80222130);
|
||||
|
||||
EvtScript N(beforeBattle_80221590) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
@ -45,300 +39,6 @@ Formation N(specialFormation_whacka) = {
|
||||
{ .actor = &N(whacka), .home = { .vec = &N(D_802215F4_4B17E4) }},
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8022161C)[] = {
|
||||
STATUS_NORMAL, ANIM_Whacka_Idle,
|
||||
STATUS_STONE, ANIM_Whacka_Still,
|
||||
STATUS_SLEEP, ANIM_Whacka_Idle,
|
||||
STATUS_POISON, ANIM_Whacka_Idle,
|
||||
STATUS_STOP, ANIM_Whacka_Still,
|
||||
STATUS_STATIC, ANIM_Whacka_Idle,
|
||||
STATUS_PARALYZE, ANIM_Whacka_Still,
|
||||
STATUS_DIZZY, ANIM_Whacka_Idle,
|
||||
STATUS_FEAR, ANIM_Whacka_Idle,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_80221668)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_80221674)[] = {
|
||||
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(partsTable_80221720)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 30 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8022161C),
|
||||
.defenseTable = N(defenseTable_80221668),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 251,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint N(whacka) = {
|
||||
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_40000,
|
||||
.type = ACTOR_TYPE_WHACKA,
|
||||
.level = 0,
|
||||
.maxHP = 99,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_80221720)),
|
||||
.partsData = N(partsTable_80221720),
|
||||
.script = &N(init_8022176C),
|
||||
.statusTable = N(statusTable_80221674),
|
||||
.escapeChance = 0,
|
||||
.airLiftChance = 0,
|
||||
.spookChance = 0,
|
||||
.baseStatusChance = 0,
|
||||
.upAndAwayChance = 0,
|
||||
.spinSmashReq = 4,
|
||||
.powerBounceChance = 50,
|
||||
.coinReward = 0,
|
||||
.size = { 47, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -20, 40 },
|
||||
.statusMessageOffset = { 10, 30 },
|
||||
};
|
||||
|
||||
#include "common/IsSaveVar123.inc.c"
|
||||
|
||||
EvtScript N(init_8022176C) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_80222000)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_80221828)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8022185C)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_CALL(N(IsSaveVar123))
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_80221828) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_8022185C) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2073)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CASE_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Hurt)
|
||||
EVT_EXEC_WAIT(N(80222050))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(N(80222050))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(N(80222050))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CASE_EQ(EVENT_IMMUNE)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Hurt)
|
||||
EVT_EXEC_WAIT(N(80222050))
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_IF_GE(100, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_SET_CONST(LVar2, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Whacka_Idle)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_80222000) = {
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LE(LVar0, 100)
|
||||
EVT_EXEC_WAIT(N(80222130))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80222050) = {
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2073)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Whacka_Idle)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 5)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_ADD(LVar2, 10)
|
||||
EVT_CALL(MakeItemEntity, ITEM_WHACKAS_BUMP, LVar0, LVar1, LVar2, 12, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80222130) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_BURROW_DIG)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Whacka_Burrow)
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_CALL(SetBattleFlagBits2, 0x10000000, 1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY, 1)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#define NAMESPACE b_area_iwa_iwa_02_whacka
|
||||
#include "battle/common/actor/whacka.inc.c"
|
||||
#define NAMESPACE b_area_iwa_iwa_02
|
||||
|
@ -1,446 +1,5 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/Fuzzy.h"
|
||||
|
||||
#define NAMESPACE b_area_nok_fuzzy
|
||||
|
||||
s32 N(defenseTable_80222050)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_8022205C)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 95,
|
||||
STATUS_POISON, 90,
|
||||
STATUS_FROZEN, 100,
|
||||
STATUS_DIZZY, 90,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 70,
|
||||
STATUS_PARALYZE, 75,
|
||||
STATUS_SHRINK, 75,
|
||||
STATUS_STOP, 100,
|
||||
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,
|
||||
};
|
||||
|
||||
extern s32 N(idleAnimations_80222154)[];
|
||||
|
||||
ActorPartBlueprint N(partsTable_80222108)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 20 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_80222154),
|
||||
.defenseTable = N(defenseTable_80222050),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 246,
|
||||
},
|
||||
};
|
||||
|
||||
extern EvtScript N(init_802221A0);
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_FUZZY,
|
||||
.level = 6,
|
||||
.maxHP = 3,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_80222108)),
|
||||
.partsData = N(partsTable_80222108),
|
||||
.script = &N(init_802221A0),
|
||||
.statusTable = N(statusTable_8022205C),
|
||||
.escapeChance = 50,
|
||||
.airLiftChance = 95,
|
||||
.spookChance = 95,
|
||||
.baseStatusChance = 95,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 100,
|
||||
.coinReward = 1,
|
||||
.size = { 33, 28 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_80222154)[] = {
|
||||
STATUS_NORMAL, ANIM_Fuzzy_Anim01,
|
||||
STATUS_STONE, ANIM_Fuzzy_Anim00,
|
||||
STATUS_SLEEP, ANIM_Fuzzy_Anim0E,
|
||||
STATUS_POISON, ANIM_Fuzzy_Anim01,
|
||||
STATUS_STOP, ANIM_Fuzzy_Anim00,
|
||||
STATUS_STATIC, ANIM_Fuzzy_Anim01,
|
||||
STATUS_PARALYZE, ANIM_Fuzzy_Anim00,
|
||||
STATUS_DIZZY, ANIM_Fuzzy_Anim0F,
|
||||
STATUS_FEAR, ANIM_Fuzzy_Anim0F,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
extern EvtScript N(takeTurn_80222860);
|
||||
extern EvtScript N(idle_802221EC);
|
||||
extern EvtScript N(handleEvent_802221FC);
|
||||
|
||||
EvtScript N(init_802221A0) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_80222860)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_802221EC)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_802221FC)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_802221EC) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_802221FC) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(9)
|
||||
EVT_CASE_OR_EQ(10)
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, 0x20)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_END_IF
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(14)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim10)
|
||||
EVT_SET_CONST(LVar2, ANIM_Fuzzy_Anim12)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(36)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim10)
|
||||
EVT_SET_CONST(LVar2, ANIM_Fuzzy_Anim12)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim12)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(11)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(33)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(47)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_EXEC_WAIT(D_8029C0A4)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.6))
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CASE_EQ(38)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(23)
|
||||
EVT_CASE_OR_EQ(25)
|
||||
EVT_CASE_OR_EQ(31)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(32)
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, 0x20)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(49)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(57)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_SET_CONST(LVar2, ANIM_Fuzzy_Anim09)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(58)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(22)
|
||||
EVT_SET_CONST(LVar0, 0x00000001)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
#include "common/UnkBattleFunc2.inc.c"
|
||||
|
||||
EvtScript N(takeTurn_80222860) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_GOTO(100)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim03)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_EXEC_WAIT(D_8029C12C)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim01)
|
||||
EVT_LABEL(100)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 10, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim04)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 9, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 8, 0)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_IGNORE_DEFENSE, 0, 1, 16)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(6)
|
||||
EVT_CASE_OR_EQ(5)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 5)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SUB(LVar2, 5)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim05)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 11, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim09)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 15)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(4)
|
||||
EVT_WAIT(5)
|
||||
EVT_IF_EQ(LVarA, 5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim03)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_EXEC_WAIT(D_8029C12C)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(7)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, 0x2000)
|
||||
EVT_SET(LocalFlag(0), 0)
|
||||
EVT_ELSE
|
||||
EVT_SET(LocalFlag(0), 1)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, -3, -12, -15)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim05)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_IF_EQ(LocalFlag(0), 1)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_IGNORE_DEFENSE, 0, 0, 0, 32)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, 0x03000C)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x3E0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim07)
|
||||
EVT_WAIT(21)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim00)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 330)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x3E0)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, -3, -2, 0)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.9), EVT_FLOAT(1.2), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.8), EVT_FLOAT(1.3), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.4), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.5), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.6), EVT_FLOAT(1.6), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(10)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_IGNORE_DEFENSE, 0, 0, 1, 32)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim01)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(0)
|
||||
EVT_CASE_OR_EQ(2)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(GetLastDamage, 0, LVar3)
|
||||
EVT_IF_NE(LVar3, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x206D)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x214)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar1, 10)
|
||||
EVT_CALL(N(UnkBattleFunc2), LVar0, LVar1, LVar2, LVar3)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_25C)
|
||||
EVT_CALL(N(UnkBattleFunc2_2), LVar0, LVar1, LVar2, LVar3)
|
||||
EVT_END_THREAD
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_CALL(PlayEffect, 0x40, 0, LVar0, LVar1, LVar2, LVar3, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(GetActorHP, -127, LVar0)
|
||||
EVT_ADD(LVar0, LVar3)
|
||||
EVT_CALL(SetEnemyHP, -127, LVar0)
|
||||
EVT_END_IF
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.6), EVT_FLOAT(0.6), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotationOffset, -127, 0, 10, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 330)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.5), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 300)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 270)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(0.7), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 240)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 210)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.4), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 180)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(0.7), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.2), EVT_FLOAT(0.5), EVT_FLOAT(1.0))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.4), EVT_FLOAT(0.2), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.2), EVT_FLOAT(0.5), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 150)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 120)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 90)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 60)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 30)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetActorRotationOffset, -127, 0, 0, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim03)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_EXEC_WAIT(D_8029C12C)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim01)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/fuzzy.inc.c"
|
||||
|
@ -1,495 +1,5 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/ShyGuy.h"
|
||||
|
||||
#define NAMESPACE b_area_omo_red_shy_guy
|
||||
|
||||
extern s32 N(idleAnimations_8021931C)[];
|
||||
extern EvtScript N(init_80219368);
|
||||
extern EvtScript N(takeTurn_8021ACB4);
|
||||
extern EvtScript N(idle_802193B4);
|
||||
extern EvtScript N(handleEvent_80219528);
|
||||
|
||||
s32 N(defenseTable_80219210)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_SHOCK, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_80219224)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 70,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 90,
|
||||
STATUS_FEAR, 100,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 90,
|
||||
STATUS_SHRINK, 75,
|
||||
STATUS_STOP, 90,
|
||||
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, 1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, 0,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(partsTable_802192D0)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 24 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021931C),
|
||||
.defenseTable = N(defenseTable_80219210),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0xFF,
|
||||
.unk_1D = 0xF6,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_SHY_GUY,
|
||||
.level = 14,
|
||||
.maxHP = 7,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_802192D0)),
|
||||
.partsData = N(partsTable_802192D0),
|
||||
.script = &N(init_80219368),
|
||||
.statusTable = N(statusTable_80219224),
|
||||
.escapeChance = 60,
|
||||
.airLiftChance = 85,
|
||||
.spookChance = 80,
|
||||
.baseStatusChance = 80,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 100,
|
||||
.coinReward = 1,
|
||||
.size = { 28, 24 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8021931C)[] = {
|
||||
STATUS_NORMAL, ANIM_ShyGuy_Red_Anim01,
|
||||
STATUS_STONE, ANIM_ShyGuy_Red_Anim00,
|
||||
STATUS_SLEEP, ANIM_ShyGuy_Red_Anim12,
|
||||
STATUS_POISON, ANIM_ShyGuy_Red_Anim01,
|
||||
STATUS_STOP, ANIM_ShyGuy_Red_Anim00,
|
||||
STATUS_STATIC, ANIM_ShyGuy_Red_Anim01,
|
||||
STATUS_PARALYZE, ANIM_ShyGuy_Red_Anim00,
|
||||
STATUS_DIZZY, ANIM_ShyGuy_Red_Anim13,
|
||||
STATUS_FEAR, ANIM_ShyGuy_Red_Anim13,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
EvtScript N(init_80219368) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021ACB4)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_802193B4)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_80219528)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
|
||||
EvtScript N(idle_802193B4) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SLEEP)
|
||||
EVT_CALL(SetTargetOffset, ACTOR_SELF, 1, -4, 14)
|
||||
EVT_CALL(func_8027D4C8, ACTOR_SELF, 1, 0, 0)
|
||||
EVT_CALL(N(UnkBattleFunc1), -10, 13, 10, 13)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetTargetOffset, ACTOR_SELF, 1, 0, 24)
|
||||
EVT_CALL(func_8027D4C8, ACTOR_SELF, 1, -1, -10)
|
||||
EVT_CALL(N(UnkBattleFunc1), -10, 20, 10, 20)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(802194C4) = {
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim03)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_80219528) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0D)
|
||||
EVT_SET_CONST(LVar2, ANIM_ShyGuy_Red_Anim0E)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0D)
|
||||
EVT_SET_CONST(LVar2, ANIM_ShyGuy_Red_Anim0E)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0E)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_EXEC_WAIT(N(802194C4))
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim03)
|
||||
EVT_SET_CONST(LVar2, ANIM_ShyGuy_Red_Anim14)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim0C)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80219A04) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim03)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 2, 751, 0)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 0, 8378, 948)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 4, 10, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim04)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim05)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim04)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_THREAD
|
||||
EVT_WAIT(3)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x2EF)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 0, 8378, 948)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 4, 10, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim04)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim05)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_EXEC_WAIT(N(802194C4))
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(8021A12C) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x234)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim09)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim03)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 80)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 0, 8378, 948)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 4, 10, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim04)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(5.0))
|
||||
EVT_SUB(LVar0, 40)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim09)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(12)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim0A)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 24, FALSE, TRUE, FALSE)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim05)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim04)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim09)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(9)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim0A)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 18, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetActorRotationOffset, ACTOR_SELF, 0, 14, 0)
|
||||
EVT_SET(LVar3, 0)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar3, 30)
|
||||
EVT_IF_LT(LVar3, 0)
|
||||
EVT_ADD(LVar3, 360)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, LVar3)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_ATK_BLOCKED)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetLastDamage, ACTOR_PLAYER, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 20, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x349)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x749)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim09)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim07)
|
||||
EVT_WAIT(15)
|
||||
EVT_GOTO(2)
|
||||
EVT_LABEL(1)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 20, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x20E4)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim10)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x20C3)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(RandInt, 100, LVar0)
|
||||
EVT_IF_LT(LVar0, 50)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim11)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim13)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(25)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_LABEL(2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_ShyGuy_Red_Anim04)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_ShyGuy_Red_Anim01)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_8021ACB4) = {
|
||||
EVT_CALL(RandInt, 1, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_EXEC_WAIT(N(80219A04))
|
||||
EVT_ELSE
|
||||
EVT_EXEC_WAIT(N(8021A12C))
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/red_shy_guy.inc.c"
|
||||
|
@ -1,28 +1,81 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt01_shape.h"
|
||||
#include "model.h"
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_01
|
||||
|
||||
ApiStatus func_80218FB0_513580(Evt* script, s32 isInitialCall);
|
||||
INCLUDE_ASM(s32, "battle/area_omo/513580", func_80218FB0_513580);
|
||||
extern EvtScript N(updateModels);
|
||||
|
||||
s32 D_8022DA30_528000 = 25;
|
||||
s32 N(modelList)[] = { MODEL_uma };
|
||||
|
||||
EvtScript N(8022DA34) = {
|
||||
EVT_CALL(func_80218FB0_513580)
|
||||
typedef struct Omo01Struct {
|
||||
/* 0x00 */ f32 offsetX;
|
||||
/* 0x04 */ f32 offsetZ;
|
||||
/* 0x08 */ f32 rotSpeed;
|
||||
/* 0x0C */ f32 angle;
|
||||
/* 0x10 */ s32 modelID;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
} Omo01Struct; // size = 0x18
|
||||
|
||||
ApiStatus N(update_model_uma)(Evt* script, s32 isInitialCall) {
|
||||
Omo01Struct* ptr;
|
||||
Model* model;
|
||||
f32 rotZ;
|
||||
f32 offsetY;
|
||||
s32 i;
|
||||
Matrix4f mtx1;
|
||||
Matrix4f mtx2;
|
||||
|
||||
if (isInitialCall) {
|
||||
ptr = heap_malloc(sizeof(*ptr));
|
||||
script->functionTempPtr[0] = ptr;
|
||||
|
||||
for (i = 0; i == 0; i++, ptr++) {
|
||||
ptr->modelID = N(modelList)[i];
|
||||
ptr->unk_14 = ((s32*)N(updateModels))[i]; // WTF ???
|
||||
model = get_model_from_list_index(get_model_list_index_from_tree_index(ptr->modelID));
|
||||
ptr->offsetX = 0.0f;
|
||||
ptr->offsetZ = 0.0f;
|
||||
ptr->rotSpeed = 3.5f;
|
||||
ptr->angle = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
ptr = script->functionTempPtr[0];
|
||||
for (i = 0; i == 0; i++, ptr++) {
|
||||
ptr->angle += ptr->rotSpeed;
|
||||
ptr->angle = clamp_angle(ptr->angle);
|
||||
|
||||
rotZ = sin_rad(ptr->angle * 3.14f / 180.0f) * 20.0f; // the value of PI xD
|
||||
offsetY = SQ(rotZ) / 90.0f;
|
||||
|
||||
model = get_model_from_list_index(get_model_list_index_from_tree_index(ptr->modelID));
|
||||
model->flags |= MODEL_FLAGS_USES_TRANSFORM_MATRIX | MODEL_FLAGS_HAS_TRANSFORM_APPLIED;
|
||||
guTranslateF(mtx1, -ptr->offsetX, 0.0f, -ptr->offsetZ);
|
||||
guRotateF(mtx2, rotZ, 0.0f, 0.0f, 1.0f);
|
||||
guMtxCatF(mtx1, mtx2, model->transformMatrix);
|
||||
guTranslateF(mtx1, ptr->offsetX, offsetY, ptr->offsetZ);
|
||||
guMtxCatF(model->transformMatrix, mtx1, model->transformMatrix);
|
||||
}
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
EvtScript N(updateModels) = {
|
||||
EVT_CALL(N(update_model_uma))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle_8022DA50) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_THREAD
|
||||
EVT_SETF(LVar0, EVT_FLOAT(0.0))
|
||||
EVT_SETF(LVar1, EVT_FLOAT(0.0))
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(RotateModel, 23, LVar1, 0, 0, 1)
|
||||
EVT_CALL(RotateModel, 21, LVar0, 0, 0, 1)
|
||||
EVT_CALL(RotateModel, MODEL_o367, LVar1, 0, 0, 1)
|
||||
EVT_CALL(RotateModel, MODEL_hari, LVar0, 0, 0, 1)
|
||||
EVT_SUBF(LVar0, EVT_FLOAT(0.6))
|
||||
EVT_SUBF(LVar1, EVT_FLOAT(7.2))
|
||||
EVT_CALL(ClampAngleFloat, LVar0)
|
||||
@ -30,12 +83,12 @@ EvtScript N(beforeBattle_8022DA50) = {
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_EXEC(N(8022DA34))
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022DB68) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
@ -45,6 +98,6 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt01_shape",
|
||||
.hit = "omo_bt01_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022DA50),
|
||||
.postBattle = &N(afterBattle_8022DB68),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
||||
|
@ -3,14 +3,14 @@
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_02
|
||||
|
||||
EvtScript N(beforeBattle_8022DBA0) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022DBDC) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
@ -20,6 +20,6 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt02_shape",
|
||||
.hit = "omo_bt02_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022DBA0),
|
||||
.postBattle = &N(afterBattle_8022DBDC),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_03
|
||||
|
||||
EvtScript N(beforeBattle_8022DC20) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 18, 0)
|
||||
@ -11,7 +11,7 @@ EvtScript N(beforeBattle_8022DC20) = {
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022DC70) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
@ -21,6 +21,6 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt03_shape",
|
||||
.hit = "omo_bt03_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022DC20),
|
||||
.postBattle = &N(afterBattle_8022DC70),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
||||
|
@ -3,14 +3,14 @@
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_03b
|
||||
|
||||
EvtScript N(beforeBattle_8022DCB0) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022DCEC) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
@ -20,6 +20,6 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt03_shape",
|
||||
.hit = "omo_bt03_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022DCB0),
|
||||
.postBattle = &N(afterBattle_8022DCEC),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
||||
|
@ -1,21 +1,15 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/omo_bt04_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_04
|
||||
|
||||
extern Formation N(specialFormation_8022DE64);
|
||||
extern Formation N(fromation_slot_machine);
|
||||
extern ActorBlueprint N(slot_machine_stop);
|
||||
extern ActorBlueprint N(slot_machine_start);
|
||||
extern EvtScript N(init_8022E060);
|
||||
extern EvtScript N(takeTurn_8022F4A8);
|
||||
extern EvtScript N(idle_8022E1F8);
|
||||
extern EvtScript N(handleEvent_8022ED54);
|
||||
|
||||
BSS char D_80231110[0x250];
|
||||
BSS s32 D_80231360[10];
|
||||
|
||||
EvtScript N(beforeBattle_8022DD30) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetTexPanner, 29, 10)
|
||||
@ -31,13 +25,13 @@ EvtScript N(beforeBattle_8022DD30) = {
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022DDEC) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList_8022DDFC)[] = {
|
||||
0x00000012, 0x00000011, 0x0000000D, 0x00000000,
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_itigo, MODEL_kisya, MODEL_kusari, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
@ -45,473 +39,25 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt04_shape",
|
||||
.hit = "omo_bt04_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022DD30),
|
||||
.postBattle = &N(afterBattle_8022DDEC),
|
||||
.foregroundModelList = N(foregroundModelList_8022DDFC),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
.specialFormationSize = 4,
|
||||
.specialFormation = &N(specialFormation_8022DE64),
|
||||
.specialFormation = &N(fromation_slot_machine),
|
||||
};
|
||||
|
||||
Vec3i N(vector3D_8022DE34) = { 0xFFFFFFCF, 56, 0xFFFFFFBC };
|
||||
Vec3i N(slot_machine_pos1) = { -49, 56, -68 };
|
||||
Vec3i N(slot_machine_pos2) = { -13, 56, -68 };
|
||||
Vec3i N(slot_machine_pos3) = { 20, 56, -68 };
|
||||
Vec3i N(slot_machine_pos4) = { 53, 56, -68 };
|
||||
|
||||
Vec3i N(vector3D_8022DE40) = { 0xFFFFFFF3, 56, 0xFFFFFFBC };
|
||||
|
||||
Vec3i N(vector3D_8022DE4C) = { 20, 56, 0xFFFFFFBC };
|
||||
|
||||
Vec3i N(vector3D_8022DE58) = { 53, 56, 0xFFFFFFBC };
|
||||
|
||||
Formation N(specialFormation_8022DE64) = {
|
||||
{ .actor = &N(slot_machine_start), .home = { .vec = &N(vector3D_8022DE34) }, .var0 = 0 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(vector3D_8022DE40) }, .var0 = 1 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(vector3D_8022DE4C) }, .var0 = 2 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(vector3D_8022DE58) }, .var0 = 3 },
|
||||
Formation N(fromation_slot_machine) = {
|
||||
{ .actor = &N(slot_machine_start), .home = { .vec = &N(slot_machine_pos1) }, .var0 = 0 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos2) }, .var0 = 1 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos3) }, .var0 = 2 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos4) }, .var0 = 3 },
|
||||
};
|
||||
|
||||
s32 N(intTable_8022DED4)[] = {
|
||||
0, 1, 0, 2, 0, 2, 0, 2,
|
||||
};
|
||||
BSS char N(unused)[0x250];
|
||||
|
||||
s32 N(intTable_8022DEF4)[] = {
|
||||
0, 1, 0, 2, 1, 2, 0, 2,
|
||||
};
|
||||
|
||||
s32 N(intTable_8022DF14)[] = {
|
||||
0, 1, 0, 2, 0, 2, 0, 2,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_8022DF34)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_8022DF40)[] = {
|
||||
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(partsTable_8022DFEC)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = NULL,
|
||||
.defenseTable = N(defenseTable_8022DF34),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint N(slot_machine_stop) = {
|
||||
.flags = ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_TARGET_ONLY | ACTOR_FLAG_40000 | ACTOR_FLAG_NO_ATTACK,
|
||||
.type = ACTOR_TYPE_SLOT_MACHINE_STOP,
|
||||
.level = 99,
|
||||
.maxHP = 99,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8022DFEC)),
|
||||
.partsData = N(partsTable_8022DFEC),
|
||||
.script = &N(init_8022E060),
|
||||
.statusTable = N(statusTable_8022DF40),
|
||||
.escapeChance = 0,
|
||||
.airLiftChance = 0,
|
||||
.spookChance = 0,
|
||||
.baseStatusChance = 0,
|
||||
.upAndAwayChance = 0,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 0,
|
||||
.coinReward = 0,
|
||||
.size = { 44, 40 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
ActorBlueprint N(slot_machine_start) = {
|
||||
.flags = ACTOR_FLAG_DISABLED | ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_TARGET_ONLY | ACTOR_FLAG_40000 | ACTOR_FLAG_NO_ATTACK,
|
||||
.type = ACTOR_TYPE_SLOT_MACHINE_START,
|
||||
.level = 99,
|
||||
.maxHP = 99,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8022DFEC)),
|
||||
.partsData = N(partsTable_8022DFEC),
|
||||
.script = &N(init_8022E060),
|
||||
.statusTable = N(statusTable_8022DF40),
|
||||
.escapeChance = 0,
|
||||
.airLiftChance = 0,
|
||||
.spookChance = 0,
|
||||
.baseStatusChance = 0,
|
||||
.upAndAwayChance = 0,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 0,
|
||||
.coinReward = 0,
|
||||
.size = { 44, 40 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
#include "common/IsGameStatusUnkAA_1.inc.c"
|
||||
|
||||
EvtScript N(init_8022E060) = {
|
||||
EVT_USE_ARRAY(D_80231360)
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8022F4A8)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8022E1F8)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8022ED54)))
|
||||
EVT_SET(ArrayVar(1), 0)
|
||||
EVT_SET(ArrayVar(2), 0)
|
||||
EVT_SET(ArrayVar(3), 0)
|
||||
EVT_SET(ArrayVar(4), 0)
|
||||
EVT_CALL(RandInt, 8, LVar0)
|
||||
EVT_MUL(LVar0, 45)
|
||||
EVT_SET(ArrayVar(5), LVar0)
|
||||
EVT_CALL(RandInt, 8, LVar0)
|
||||
EVT_MUL(LVar0, 45)
|
||||
EVT_SET(ArrayVar(6), LVar0)
|
||||
EVT_CALL(RandInt, 8, LVar0)
|
||||
EVT_MUL(LVar0, 45)
|
||||
EVT_SET(ArrayVar(7), LVar0)
|
||||
EVT_CALL(N(IsGameStatusUnkAA_1))
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_SET(ArrayVar(1), 1)
|
||||
EVT_SET(ArrayVar(2), 1)
|
||||
EVT_SET(ArrayVar(3), 1)
|
||||
EVT_SET(ArrayVar(4), 1)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_8022E1F8) = {
|
||||
EVT_USE_ARRAY(D_80231360)
|
||||
EVT_CALL(EnableTexPanning, 45, 1)
|
||||
EVT_SET(LVarE, 0)
|
||||
EVT_SET(LVarF, 0)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_SWITCH(ArrayVar(2))
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_ADD(ArrayVar(5), 5)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_IF_GT(ArrayVar(8), 0)
|
||||
EVT_ADD(ArrayVar(5), 5)
|
||||
EVT_SUB(ArrayVar(8), 5)
|
||||
EVT_BREAK_SWITCH
|
||||
EVT_END_IF
|
||||
EVT_SET(LVar0, ArrayVar(5))
|
||||
EVT_MOD(LVar0, 45)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_ADD(ArrayVar(5), 5)
|
||||
EVT_ELSE
|
||||
EVT_SET(ArrayVar(2), 3)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(RotateModel, 32, ArrayVar(5), 1, 0, 0)
|
||||
EVT_CALL(RotateModel, 33, ArrayVar(5), 1, 0, 0)
|
||||
EVT_CALL(RotateModel, 34, ArrayVar(5), 1, 0, 0)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_SWITCH(ArrayVar(3))
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_ADD(ArrayVar(6), 5)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_IF_GT(ArrayVar(9), 0)
|
||||
EVT_ADD(ArrayVar(6), 5)
|
||||
EVT_SUB(ArrayVar(9), 5)
|
||||
EVT_BREAK_SWITCH
|
||||
EVT_END_IF
|
||||
EVT_SET(LVar0, ArrayVar(6))
|
||||
EVT_MOD(LVar0, 45)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_ADD(ArrayVar(6), 5)
|
||||
EVT_ELSE
|
||||
EVT_SET(ArrayVar(3), 3)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(RotateModel, 36, ArrayVar(6), 1, 0, 0)
|
||||
EVT_CALL(RotateModel, 37, ArrayVar(6), 1, 0, 0)
|
||||
EVT_CALL(RotateModel, 38, ArrayVar(6), 1, 0, 0)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_SWITCH(ArrayVar(4))
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_ADD(ArrayVar(7), 5)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_IF_GT(ArrayVar(10), 0)
|
||||
EVT_ADD(ArrayVar(7), 5)
|
||||
EVT_SUB(ArrayVar(10), 5)
|
||||
EVT_BREAK_SWITCH
|
||||
EVT_END_IF
|
||||
EVT_SET(LVar0, ArrayVar(7))
|
||||
EVT_MOD(LVar0, 45)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_ADD(ArrayVar(7), 5)
|
||||
EVT_ELSE
|
||||
EVT_SET(ArrayVar(4), 3)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(RotateModel, 40, ArrayVar(7), 1, 0, 0)
|
||||
EVT_CALL(RotateModel, 41, ArrayVar(7), 1, 0, 0)
|
||||
EVT_CALL(RotateModel, 42, ArrayVar(7), 1, 0, 0)
|
||||
EVT_END_SWITCH
|
||||
EVT_IF_GE(ArrayVar(5), 360)
|
||||
EVT_SUB(ArrayVar(5), 360)
|
||||
EVT_END_IF
|
||||
EVT_IF_GE(ArrayVar(6), 360)
|
||||
EVT_SUB(ArrayVar(6), 360)
|
||||
EVT_END_IF
|
||||
EVT_IF_GE(ArrayVar(7), 360)
|
||||
EVT_SUB(ArrayVar(7), 360)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(ArrayVar(1), 0)
|
||||
EVT_ADD(LVarF, -277)
|
||||
EVT_CALL(SetTexPanOffset, 11, 0, 0, LVarF)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(ArrayVar(1), 1)
|
||||
EVT_ADD(LVarF, -1110)
|
||||
EVT_CALL(SetTexPanOffset, 11, 0, 0, LVarF)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(ArrayVar(1), 2)
|
||||
EVT_ADD(LVarF, -3330)
|
||||
EVT_CALL(SetTexPanOffset, 11, 0, 0, LVarF)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(ArrayVar(1), 2)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(ArrayVar(1), 0)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_GOTO(1)
|
||||
EVT_END_IF
|
||||
EVT_SET(LVar0, ArrayVar(2))
|
||||
EVT_ADD(LVar0, ArrayVar(3))
|
||||
EVT_ADD(LVar0, ArrayVar(4))
|
||||
EVT_IF_EQ(LVar0, 9)
|
||||
EVT_SET(LVar0, ArrayVar(5))
|
||||
EVT_DIV(LVar0, 45)
|
||||
EVT_USE_BUF(EVT_PTR(N(intTable_8022DED4)))
|
||||
EVT_BUF_PEEK(LVarA, LVar0)
|
||||
EVT_SET(LVar0, ArrayVar(6))
|
||||
EVT_DIV(LVar0, 45)
|
||||
EVT_USE_BUF(EVT_PTR(N(intTable_8022DEF4)))
|
||||
EVT_BUF_PEEK(LVarB, LVar0)
|
||||
EVT_SET(LVar0, ArrayVar(7))
|
||||
EVT_DIV(LVar0, 45)
|
||||
EVT_USE_BUF(EVT_PTR(N(intTable_8022DF14)))
|
||||
EVT_BUF_PEEK(LVarC, LVar0)
|
||||
EVT_LOOP(0)
|
||||
EVT_IF_NE(LVarA, LVarB)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_IF_NE(LVarA, LVarC)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_IF_NE(LVarB, LVarC)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_THREAD
|
||||
EVT_CALL(func_8026BF48, 1)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_19)
|
||||
EVT_CALL(SetBattleCamTarget, 0, 100, 0)
|
||||
EVT_CALL(SetBattleCamOffsetZ, 0)
|
||||
EVT_CALL(SetBattleCamZoom, 340)
|
||||
EVT_CALL(MoveBattleCamOver, 10)
|
||||
EVT_SWITCH(LVarA)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_LOOP(10)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, -7, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 17, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 42, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(10)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_LOOP(10)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, -7, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 17, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 42, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(10)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_LOOP(10)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, -7, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 17, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(MakeItemEntity, ITEM_COIN, 42, 105, -74, 26, 0)
|
||||
EVT_CALL(N(Add1Coin))
|
||||
EVT_WAIT(10)
|
||||
EVT_END_LOOP
|
||||
EVT_END_SWITCH
|
||||
EVT_SET(ArrayVar(1), 0)
|
||||
EVT_SET(ArrayVar(2), 0)
|
||||
EVT_SET(ArrayVar(3), 0)
|
||||
EVT_SET(ArrayVar(4), 0)
|
||||
EVT_CALL(func_8026BF48, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_SET(ArrayVar(1), 2)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_LOOP
|
||||
EVT_END_IF
|
||||
EVT_LABEL(1)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_8022ED54) = {
|
||||
EVT_USE_ARRAY(D_80231360)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
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_SHOCK_HIT)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(TranslateModel, 28, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 28, 0, -6, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 28, 0, -7, 0)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(TranslateModel, 28, 0, -4, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 28, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 28, 0, -1, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 28, 0, 0, 0)
|
||||
EVT_SET(ArrayVar(1), 1)
|
||||
EVT_SET(ArrayVar(2), 1)
|
||||
EVT_SET(ArrayVar(3), 1)
|
||||
EVT_SET(ArrayVar(4), 1)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -6, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -7, 0)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(TranslateModel, 29, 0, -4, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -1, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, 0, 0)
|
||||
EVT_IF_EQ(ArrayVar(2), 1)
|
||||
EVT_SET(ArrayVar(8), 100)
|
||||
EVT_SET(ArrayVar(9), 150)
|
||||
EVT_SET(ArrayVar(10), 200)
|
||||
EVT_SET(ArrayVar(2), 2)
|
||||
EVT_SET(ArrayVar(3), 2)
|
||||
EVT_SET(ArrayVar(4), 2)
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_CALL(TranslateModel, 29, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -6, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -7, 0)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(TranslateModel, 29, 0, -4, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -1, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, 0, 0)
|
||||
EVT_IF_EQ(ArrayVar(3), 1)
|
||||
EVT_SET(ArrayVar(8), 150)
|
||||
EVT_SET(ArrayVar(9), 100)
|
||||
EVT_SET(ArrayVar(10), 200)
|
||||
EVT_SET(ArrayVar(2), 2)
|
||||
EVT_SET(ArrayVar(3), 2)
|
||||
EVT_SET(ArrayVar(4), 2)
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_CALL(TranslateModel, 29, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -6, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -7, 0)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(TranslateModel, 29, 0, -4, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -2, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, -1, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(TranslateModel, 29, 0, 0, 0)
|
||||
EVT_IF_EQ(ArrayVar(4), 1)
|
||||
EVT_SET(ArrayVar(8), 200)
|
||||
EVT_SET(ArrayVar(9), 150)
|
||||
EVT_SET(ArrayVar(10), 100)
|
||||
EVT_SET(ArrayVar(2), 2)
|
||||
EVT_SET(ArrayVar(3), 2)
|
||||
EVT_SET(ArrayVar(4), 2)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_CASE_OR_EQ(EVENT_DEATH)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIKE_CONTACT)
|
||||
EVT_CASE_OR_EQ(EVENT_BURN_CONTACT)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_8022F4A8) = {
|
||||
EVT_USE_ARRAY(D_80231360)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/slot_machine.inc.c"
|
||||
|
@ -1,9 +1,10 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt05_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_05
|
||||
|
||||
EvtScript N(beforeBattle_8022F4D0) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 24, 0)
|
||||
@ -12,13 +13,13 @@ EvtScript N(beforeBattle_8022F4D0) = {
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022F534) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList_8022F544)[] = {
|
||||
0x00000027, 0x00000026, 0x00000000,
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_itigo, MODEL_kisya, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
@ -26,7 +27,7 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt05_shape",
|
||||
.hit = "omo_bt05_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022F4D0),
|
||||
.postBattle = &N(afterBattle_8022F534),
|
||||
.foregroundModelList = N(foregroundModelList_8022F544),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
||||
|
@ -1,9 +1,10 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt05_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_05b
|
||||
|
||||
EvtScript N(beforeBattle_8022F580) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 35, 0)
|
||||
@ -12,13 +13,13 @@ EvtScript N(beforeBattle_8022F580) = {
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022F5E4) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList_8022F5F4)[] = {
|
||||
0x0000001B, 0x00000000,
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_mae2, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
@ -26,7 +27,7 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt05_shape",
|
||||
.hit = "omo_bt05_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022F580),
|
||||
.postBattle = &N(afterBattle_8022F5E4),
|
||||
.foregroundModelList = N(foregroundModelList_8022F5F4),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
||||
|
@ -1,9 +1,10 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt06_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_06
|
||||
|
||||
EvtScript N(8022F630) = {
|
||||
EvtScript N(updateModels) = {
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_SET(LVar9, LVar1)
|
||||
EVT_SET(LVar8, LVar2)
|
||||
@ -31,31 +32,31 @@ EvtScript N(8022F630) = {
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle_8022F790) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_THREAD
|
||||
EVT_SET(LVar0, 26)
|
||||
EVT_SET(LVar1, -50)
|
||||
EVT_SET(LVar2, 120)
|
||||
EVT_EXEC(N(8022F630))
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_WAIT(10)
|
||||
EVT_SET(LVar0, 30)
|
||||
EVT_SET(LVar1, -80)
|
||||
EVT_SET(LVar2, 150)
|
||||
EVT_EXEC(N(8022F630))
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022F860) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList_8022F870)[] = {
|
||||
0x00000027, 0x00000026, 0x00000000,
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_kuruma, MODEL_hosi, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
@ -63,7 +64,7 @@ Stage NAMESPACE = {
|
||||
.shape = "omo_bt06_shape",
|
||||
.hit = "omo_bt06_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle_8022F790),
|
||||
.postBattle = &N(afterBattle_8022F860),
|
||||
.foregroundModelList = N(foregroundModelList_8022F870),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
||||
|
@ -3,14 +3,14 @@
|
||||
|
||||
#define NAMESPACE b_area_omo_omo_07
|
||||
|
||||
EvtScript N(beforeBattle_8022F8B0) = {
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle_8022F8EC) = {
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
@ -19,6 +19,6 @@ Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt07_shape",
|
||||
.hit = "omo_bt07_hit",
|
||||
.preBattle = &N(beforeBattle_8022F8B0),
|
||||
.postBattle = &N(afterBattle_8022F8EC),
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
||||
|
@ -1,17 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
ApiStatus func_80218000_5573E0(Evt* script, s32 isInitialCall) {
|
||||
get_actor(script->owner1.actorID);
|
||||
|
||||
set_screen_overlay_params_back(13, 220.0f);
|
||||
set_screen_overlay_alpha(1, 200.0f);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "battle/area_omo3/5573E0", func_80218038_557418);
|
||||
|
||||
INCLUDE_ASM(s32, "battle/area_omo3/5573E0", func_80218070_557450);
|
||||
|
||||
INCLUDE_ASM(s32, "battle/area_omo3/5573E0", func_80218490_557870);
|
@ -1,5 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
#include "common/IsGameStatusUnkAA_1.inc.c"
|
@ -1,8 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
#include "common/BattleAreaAngleStuff.inc.c"
|
||||
|
||||
#include "common/UnkBattleFunc2.inc.c"
|
||||
|
@ -1,5 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
@ -1,9 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
#define NAMESPACE dup_b_area_omo3
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
@ -1,7 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
#define NAMESPACE dup2_b_area_omo3
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_omo3
|
875
src/battle/area_omo3/actor/big_lantern_ghost.c
Normal file
875
src/battle/area_omo3/actor/big_lantern_ghost.c
Normal file
@ -0,0 +1,875 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/BigLanternGhost.h"
|
||||
#include "effects.h"
|
||||
#include "sprite.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_big_lantern_ghost
|
||||
|
||||
extern s32 N(idleAnimations)[];
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(handleEvent);
|
||||
extern EvtScript N(nextTurn);
|
||||
extern EvtScript N(updateEffectThread);
|
||||
extern EvtScript N(setGhostNoTarget);
|
||||
extern EvtScript N(onHit);
|
||||
extern EvtScript N(checkExtinguish);
|
||||
extern EvtScript N(onDeath);
|
||||
extern EvtScript N(returnHome);
|
||||
|
||||
enum N(ActorVars) {
|
||||
N(VAR_LANTERN_BRIGHTNESS) = 0,
|
||||
N(VAR_DARKENING) = 1,
|
||||
N(VAR_LANTERN_X) = 2,
|
||||
N(VAR_LANTERN_Y) = 3,
|
||||
N(VAR_LANTERN_Z) = 4,
|
||||
N(VAR_EXTINGUISHED_ONCE) = 5,
|
||||
N(VAR_6) = 6,
|
||||
N(VAR_SPEAK_FLAGS) = 7,
|
||||
N(VAR_EFFECT) = 10,
|
||||
N(VAR_MOVE_ID) = 11,
|
||||
N(VAR_LIGHT_BEAM_COUNTER) = 12,
|
||||
N(VAR_HIT_SOUND_COUNTER) = 13,
|
||||
};
|
||||
|
||||
enum N(MoveIds) {
|
||||
N(MOVE_HEAVY_JUMP) = 0,
|
||||
N(MOVE_EXTINGUISH) = 1,
|
||||
N(MOVE_LIGHT_BEAM) = 2,
|
||||
};
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable2)[] = {
|
||||
ELEMENT_NORMAL, 99,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 40,
|
||||
STATUS_POISON, 0,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 50,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 0,
|
||||
STATUS_PARALYZE, 60,
|
||||
STATUS_SHRINK, 0,
|
||||
STATUS_STOP, 60,
|
||||
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, -1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, -2,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 54 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -5,
|
||||
.unk_1D = -10,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_2000,
|
||||
.index = 2,
|
||||
.posOffset = { -40, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable2),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = -9,
|
||||
.unk_20 = 2687103,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_BIG_LANTERN_GHOST,
|
||||
.level = 42,
|
||||
.maxHP = 40,
|
||||
.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 = { 86, 60 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -30, 55 },
|
||||
.statusMessageOffset = { 20, 45 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_BigLanternGhost_Anim01,
|
||||
STATUS_STONE, ANIM_BigLanternGhost_Anim00,
|
||||
STATUS_SLEEP, ANIM_BigLanternGhost_Anim0C,
|
||||
STATUS_POISON, ANIM_BigLanternGhost_Anim01,
|
||||
STATUS_STOP, ANIM_BigLanternGhost_Anim00,
|
||||
STATUS_STATIC, ANIM_BigLanternGhost_Anim00,
|
||||
STATUS_PARALYZE, ANIM_BigLanternGhost_Anim00,
|
||||
STATUS_PARALYZE, ANIM_BigLanternGhost_Anim00,
|
||||
STATUS_DIZZY, ANIM_BigLanternGhost_Anim0D,
|
||||
STATUS_FEAR, ANIM_BigLanternGhost_Anim0D,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ApiStatus N(init_overlay)(Evt* script, s32 isInitialCall) {
|
||||
get_actor(script->owner1.actorID);
|
||||
|
||||
set_screen_overlay_params_back(13, 220.0f);
|
||||
set_screen_overlay_alpha(1, 200.0f);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
s32 N(get_darkening)(ActorState* actorState, s32 targetDarkening) {
|
||||
s32 delta = targetDarkening - actorState->varTable[N(VAR_DARKENING)];
|
||||
|
||||
if (delta >= 4) {
|
||||
actorState->varTable[N(VAR_DARKENING)] += 4;
|
||||
} else if (delta >= -4) {
|
||||
actorState->varTable[N(VAR_DARKENING)] = targetDarkening;
|
||||
} else {
|
||||
actorState->varTable[N(VAR_DARKENING)] -= 4;
|
||||
}
|
||||
|
||||
return actorState->varTable[N(VAR_DARKENING)];
|
||||
}
|
||||
|
||||
ApiStatus N(update_effect)(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
EffectInstance* effect = (EffectInstance*)evt_get_variable(script, *args++);
|
||||
Actor* actor = get_actor(script->owner1.actorID);
|
||||
ActorState* actorState;
|
||||
ActorPart* actorPart;
|
||||
BulbGlowFXData* effectData;
|
||||
s32 partX, partY, partZ;
|
||||
f32 posX, posY, posZ;
|
||||
f32 rotX, rotY, rotZ;
|
||||
f32 yaw;
|
||||
f32 f24, f22;
|
||||
s32 opacity;
|
||||
s32 compListIdx;
|
||||
|
||||
if (actor == NULL) {
|
||||
set_screen_overlay_alpha(1, 0.0f);
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
actorState = &actor->state;
|
||||
if (effect != NULL) {
|
||||
effectData = effect->data.bulbGlow;
|
||||
}
|
||||
|
||||
posX = actor->currentPos.x;
|
||||
posY = actor->currentPos.y;
|
||||
posZ = actor->currentPos.z;
|
||||
|
||||
rotX = actor->rotation.x;
|
||||
rotY = actor->rotation.y + actor->yaw;
|
||||
rotZ = actor->rotation.z;
|
||||
|
||||
actorPart = get_actor_part(actor, 1);
|
||||
if (actorPart->currentAnimation == ANIM_BigLanternGhost_Anim0C) {
|
||||
func_802DE8DC(actor->partsTable->unk_84, 0, &partX, &partY, &partZ);
|
||||
} else {
|
||||
func_802DE8DC(actor->partsTable->unk_84, 1, &partX, &partY, &partZ);
|
||||
}
|
||||
|
||||
|
||||
partY += 20;
|
||||
|
||||
f24 = (f32)partX * SPRITE_WORLD_SCALE_D;
|
||||
f22 = (f32)partY * SPRITE_WORLD_SCALE_D;
|
||||
|
||||
f24 *= cos_deg(rotY);
|
||||
f22 *= sin_deg(rotX + 90.0);
|
||||
|
||||
partX = f24 * cos_deg(rotZ) + f22 * sin_deg(rotZ);
|
||||
partY = f24 * -sin_deg(rotZ) + f22 * cos_deg(rotZ);
|
||||
|
||||
switch (actorState->varTable[N(VAR_LANTERN_BRIGHTNESS)]) {
|
||||
case 0:
|
||||
opacity = N(get_darkening)(actorState, 290);
|
||||
break;
|
||||
case 1:
|
||||
opacity = N(get_darkening)(actorState, 250) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 2:
|
||||
opacity = N(get_darkening)(actorState, 240) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 3:
|
||||
opacity = N(get_darkening)(actorState, 230) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 4:
|
||||
opacity = N(get_darkening)(actorState, 220) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 5:
|
||||
opacity = N(get_darkening)(actorState, 210) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 6:
|
||||
opacity = N(get_darkening)(actorState, 180) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 7:
|
||||
opacity = N(get_darkening)(actorState, 140) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 8:
|
||||
opacity = N(get_darkening)(actorState, 100) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 9:
|
||||
opacity = N(get_darkening)(actorState, 70) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 10:
|
||||
opacity = N(get_darkening)(actorState, 40) + (rand_int(0x4000) % 5);
|
||||
break;
|
||||
case 11:
|
||||
opacity = N(get_darkening)(actorState, 20);
|
||||
opacity = N(get_darkening)(actorState, 20);
|
||||
opacity = N(get_darkening)(actorState, 20);
|
||||
break;
|
||||
default:
|
||||
opacity = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
set_screen_overlay_alpha(1, opacity);
|
||||
set_screen_overlay_center_worldpos(1, 0, posX + partX, posY + partY, posZ + partZ);
|
||||
|
||||
actorState->varTable[N(VAR_LANTERN_X)] = posX + partX;
|
||||
actorState->varTable[N(VAR_LANTERN_Y)] = posY + partY;
|
||||
actorState->varTable[N(VAR_LANTERN_Z)] = posZ + partZ;
|
||||
|
||||
actorPart = get_actor_part(actor, 2);
|
||||
actorPart->partOffset.x = partX - 5;
|
||||
actorPart->partOffset.y = partY + 5;
|
||||
|
||||
if (effect != NULL) {
|
||||
effectData->pos.x = actorState->varTable[N(VAR_LANTERN_X)];
|
||||
effectData->pos.y = actorState->varTable[N(VAR_LANTERN_Y)];
|
||||
effectData->pos.z = actorState->varTable[N(VAR_LANTERN_Z)] + 25;
|
||||
}
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(BindNextTurn, ACTOR_SELF, EVT_PTR(N(nextTurn)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_EXTINGUISHED_ONCE), 0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_6), 10)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), 2)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_DARKENING), 240)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_SPEAK_FLAGS), 0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), N(MOVE_HEAVY_JUMP))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LIGHT_BEAM_COUNTER), 0)
|
||||
EVT_CALL(PlayEffect, EFFECT_BULB_GLOW, 1, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), LVar0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_EFFECT), LVar0)
|
||||
EVT_CALL(N(init_overlay))
|
||||
EVT_EXEC(N(updateEffectThread))
|
||||
EVT_EXEC_WAIT(N(setGhostNoTarget))
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(nextTurn) = {
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(PHASE_PLAYER_BEGIN)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_SPEAK_FLAGS), LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, 1)
|
||||
EVT_BITWISE_OR_CONST(LVar0, 1)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_SPEAK_FLAGS), LVar0)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(SetBattleCamOffsetZ, 40)
|
||||
EVT_CALL(MoveBattleCamOver, 30)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(ActorSpeak, MSG_CH4_0051, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim05, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(PHASE_ENEMY_BEGIN)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(updateEffectThread) = {
|
||||
EVT_SET_PRIORITY(99)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(ActorExists, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_EFFECT), LVar0)
|
||||
EVT_ELSE
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(N(update_effect), LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(ActorExists, ACTOR_ENEMY0, LVar0)
|
||||
EVT_IF_NE(LVar0, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_EXEC_WAIT(N(onHit))
|
||||
EVT_EXEC_WAIT(N(checkExtinguish))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_EXEC_WAIT(N(onHit))
|
||||
EVT_EXEC_WAIT(N(checkExtinguish))
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_SET(LVar1, 7143434)
|
||||
EVT_SET(LVar2, 7143435)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_EXEC_WAIT(N(onHit))
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_SET(LVar1, 7143434)
|
||||
EVT_SET(LVar2, 7143435)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim0B)
|
||||
EVT_EXEC_WAIT(N(onDeath))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_EXEC_WAIT(N(onHit))
|
||||
EVT_EXEC_WAIT(N(checkExtinguish))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(N(onDeath))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_EXEC_WAIT(N(onHit))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_EXEC_WAIT(N(onHit))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(N(onDeath))
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CALL(func_8026E914, LVar0, LVar1)
|
||||
EVT_IF_EQ(LVar1, 2)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar2)
|
||||
EVT_IF_LT(LVar2, 10)
|
||||
EVT_ADD(LVar2, 2)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A3)
|
||||
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), 1)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A4)
|
||||
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), 1)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A5)
|
||||
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), 1)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A6)
|
||||
EVT_CALL(AddActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), 1)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_IF_GT(LVar2, 10)
|
||||
EVT_SET(LVar2, 10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar2)
|
||||
EVT_EXEC_WAIT(N(setGhostNoTarget))
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar0)
|
||||
EVT_IF_GE(LVar0, 6)
|
||||
EVT_EXEC_WAIT(N(checkExtinguish))
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CASE_EQ(EVENT_SPIKE_TAUNT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(N(onDeath))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_CALL(HPBarToHome, ACTOR_SELF)
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_30)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(1000)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_SET_CONST(LVar2, ANIM_BigLanternGhost_Anim09)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(onHit) = {
|
||||
EVT_CALL(func_8026E914, LVar0, LVar1)
|
||||
EVT_IF_NE(LVar1, 1)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetLastDamage, ACTOR_SELF, LVar1)
|
||||
EVT_MUL(LVar1, 10)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_6), LVar0)
|
||||
EVT_ADD(LVar0, LVar1)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_6), LVar0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(checkExtinguish) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), LVar0)
|
||||
EVT_IF_NE(LVar0, N(MOVE_LIGHT_BEAM))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), N(MOVE_EXTINGUISH))
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackHeavyJump) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar0)
|
||||
EVT_IF_GE(LVar0, 6)
|
||||
EVT_EXEC_WAIT(N(checkExtinguish))
|
||||
EVT_END_IF
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(SetBattleCamZoom, 260)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim06)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 2, 999, 0)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVarA)
|
||||
EVT_CASE_OR_EQ(6)
|
||||
EVT_CASE_OR_EQ(5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim10)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim11)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 20, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_37D)
|
||||
EVT_CALL(ResetActorSounds, ACTOR_SELF, 2)
|
||||
EVT_SUB(LVar0, 15)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 12, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_37D)
|
||||
EVT_WAIT(8)
|
||||
EVT_IF_EQ(LVarA, 5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim10)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(7)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim11)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 5, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SET(LVarF, LVar0)
|
||||
EVT_SWITCH(LVarF)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_37D)
|
||||
EVT_CALL(ResetActorSounds, ACTOR_SELF, 2)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(SetBattleCamZoom, 320)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim10)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 12, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_37D)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_37D)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackLightBeam) = {
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), N(MOVE_HEAVY_JUMP))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LIGHT_BEAM_COUNTER), 3)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
|
||||
EVT_CALL(SetBattleCamZoom, 240)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 80)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim06)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_F)
|
||||
EVT_CALL(SetBattleCamZoom, 350)
|
||||
EVT_CALL(SetBattleCamOffsetZ, 35)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 8)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2EB)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim0F)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar5)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), 11)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_X), LVar0)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_Y), LVar1)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_Z), LVar2)
|
||||
EVT_ADD(LVar1, 10)
|
||||
EVT_ADD(LVar2, 2)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(PlayEffect, EFFECT_LIGHT_RAYS, 2, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), LVarB, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(RemoveEffect, LVarB)
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(PlayEffect, EFFECT_RADIATING_ENERGY_ORB, 1, LVar0, LVar1, LVar2, EVT_FLOAT(1.5), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVarA)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVarA)
|
||||
EVT_CASE_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(ActorExists, ACTOR_PARTNER, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarD, 0, 65535, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarE, DAMAGE_TYPE_NO_OTHER_DAMAGE_POPUPS, 65535, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(ActorExists, ACTOR_PARTNER, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarD, DAMAGE_TYPE_NO_OTHER_DAMAGE_POPUPS, 65535, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar5)
|
||||
EVT_THREAD
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), LVar0)
|
||||
EVT_WAIT(10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3AA)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A9)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A8)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A7)
|
||||
EVT_END_SWITCH
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim14)
|
||||
EVT_WAIT(60)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(extinguish) = {
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_EXTINGUISHED_ONCE), 1)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_6), 1000)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), N(MOVE_LIGHT_BEAM))
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_SPEAK_FLAGS), LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, 2)
|
||||
EVT_BITWISE_OR_CONST(LVar0, 2)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_SPEAK_FLAGS), LVar0)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
|
||||
EVT_CALL(SetBattleCamOffsetZ, 40)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 30)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(GetEnemyMaxHP, ACTOR_SELF, LVar0)
|
||||
EVT_CALL(GetActorHP, ACTOR_SELF, LVar1)
|
||||
EVT_IF_EQ(LVar0, LVar1)
|
||||
EVT_CALL(ActorSpeak, MSG_CH4_0053, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim05, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_ELSE
|
||||
EVT_CALL(ActorSpeak, MSG_CH4_0052, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim05, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_13)
|
||||
EVT_CALL(SetBattleCamZoom, 230)
|
||||
EVT_CALL(SetBattleCamOffsetZ, 25)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 20)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3CF)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim0F)
|
||||
EVT_WAIT(8)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3D0)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim0E)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), 2)
|
||||
EVT_THREAD
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), LVar0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_HIT_SOUND_COUNTER), 0)
|
||||
EVT_WAIT(10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(4)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3AA)
|
||||
EVT_CASE_EQ(3)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A9)
|
||||
EVT_CASE_EQ(2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A8)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3A7)
|
||||
EVT_END_SWITCH
|
||||
EVT_END_THREAD
|
||||
EVT_WAIT(14)
|
||||
EVT_WAIT(1)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_EXEC_WAIT(N(setGhostNoTarget))
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LIGHT_BEAM_COUNTER), LVar0)
|
||||
EVT_IF_GT(LVar0, 0)
|
||||
EVT_SUB(LVar0, 1)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_LIGHT_BEAM_COUNTER), LVar0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(N(MOVE_LIGHT_BEAM))
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LIGHT_BEAM_COUNTER), LVar0)
|
||||
EVT_IF_GT(LVar0, 0)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), N(MOVE_HEAVY_JUMP))
|
||||
EVT_END_IF
|
||||
EVT_CASE_EQ(N(MOVE_EXTINGUISH))
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar0)
|
||||
EVT_IF_LT(LVar0, 6)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), N(MOVE_HEAVY_JUMP))
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_MOVE_ID), LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(N(MOVE_LIGHT_BEAM))
|
||||
EVT_EXEC_WAIT(N(attackLightBeam))
|
||||
EVT_CASE_EQ(N(MOVE_EXTINGUISH))
|
||||
EVT_EXEC_WAIT(N(extinguish))
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_EXEC_WAIT(N(attackHeavyJump))
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(returnHome) = {
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BigLanternGhost_Anim07)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BigLanternGhost_Anim01)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(setGhostNoTarget) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_LANTERN_BRIGHTNESS), LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_LT(5)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_CASE_LT(8)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 0)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_NO_TARGET, 0)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(onDeath) = {
|
||||
EVT_EXEC_WAIT(D_8029AF08)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, N(VAR_EFFECT), LVar0)
|
||||
EVT_CALL(RemoveEffect, LVar0)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
5
src/battle/area_omo3/actor/clubba.c
Normal file
5
src/battle/area_omo3/actor/clubba.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_clubba
|
||||
|
||||
#include "battle/common/actor/clubba.inc.c"
|
5
src/battle/area_omo3/actor/fuzzy.c
Normal file
5
src/battle/area_omo3/actor/fuzzy.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_fuzzy
|
||||
|
||||
#include "battle/common/actor/fuzzy.inc.c"
|
5
src/battle/area_omo3/actor/goomba.c
Normal file
5
src/battle/area_omo3/actor/goomba.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_goomba
|
||||
|
||||
#include "battle/common/actor/goomba.inc.c"
|
595
src/battle/area_omo3/actor/hammer_bro.c
Normal file
595
src/battle/area_omo3/actor/hammer_bro.c
Normal file
@ -0,0 +1,595 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/HammerBros.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_hammer_bro
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(handleEvent);
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_HammerBros_Anim02,
|
||||
STATUS_STONE, ANIM_HammerBros_Anim00,
|
||||
STATUS_SLEEP, ANIM_HammerBros_Anim11,
|
||||
STATUS_POISON, ANIM_HammerBros_Anim02,
|
||||
STATUS_STOP, ANIM_HammerBros_Anim00,
|
||||
STATUS_STATIC, ANIM_HammerBros_Anim02,
|
||||
STATUS_PARALYZE, ANIM_HammerBros_Anim00,
|
||||
STATUS_DIZZY, ANIM_HammerBros_Anim12,
|
||||
STATUS_FEAR, ANIM_HammerBros_Anim12,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations2)[] = {
|
||||
STATUS_NORMAL, ANIM_HammerBros_Anim0D,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 1,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 50,
|
||||
STATUS_POISON, 60,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 70,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 80,
|
||||
STATUS_PARALYZE, 70,
|
||||
STATUS_SHRINK, 70,
|
||||
STATUS_STOP, 80,
|
||||
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, 0,
|
||||
STATUS_STOP_TURN_MOD, -2,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -3, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -3,
|
||||
.unk_1D = -10,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations2),
|
||||
.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_USE_ABSOLUTE_POSITION,
|
||||
.index = 3,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations2),
|
||||
.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_USE_ABSOLUTE_POSITION,
|
||||
.index = 4,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations2),
|
||||
.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_USE_ABSOLUTE_POSITION,
|
||||
.index = 5,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations2),
|
||||
.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_USE_ABSOLUTE_POSITION,
|
||||
.index = 6,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations2),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_HAMMER_BROS,
|
||||
.level = 27,
|
||||
.maxHP = 12,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 30,
|
||||
.airLiftChance = 75,
|
||||
.spookChance = 60,
|
||||
.baseStatusChance = 40,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 2,
|
||||
.size = { 28, 38 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 35 },
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 8, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_FLAG(STATUS_FLAG_SLEEP)
|
||||
EVT_CALL(SetTargetOffset, ACTOR_SELF, 1, -5, 15)
|
||||
EVT_CALL(func_8027D4C8, ACTOR_SELF, 1, 0, 0)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 8, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(SetTargetOffset, ACTOR_SELF, 1, -3, 35)
|
||||
EVT_CALL(func_8027D4C8, ACTOR_SELF, 1, -3, -10)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(SetTargetOffset, ACTOR_SELF, 1, -5, 15)
|
||||
EVT_CALL(func_8027D4C8, ACTOR_SELF, 1, 0, 0)
|
||||
EVT_END_SWITCH
|
||||
EVT_END_SWITCH
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0F)
|
||||
EVT_SET_CONST(LVar2, ANIM_HammerBros_Anim10)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0F)
|
||||
EVT_SET_CONST(LVar2, ANIM_HammerBros_Anim10)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim10)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim15)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim17)
|
||||
EVT_WAIT(10)
|
||||
EVT_END_IF
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim02)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim07)
|
||||
EVT_SET_CONST(LVar2, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim07)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, -2, 1, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, -5, 3, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim0E)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_HammerBros_Anim02)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackHammerThrow) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CHILD_THREAD
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_LABEL(0)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_MOD(LVar0, 360)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 2, 0, 0, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 2, 0, 50, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim0C)
|
||||
EVT_GOTO(100)
|
||||
EVT_END_IF
|
||||
EVT_CHILD_THREAD
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_LABEL(0)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_MOD(LVar0, 360)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 2, 0, 0, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_CHILD_THREAD
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 23)
|
||||
EVT_ADD(LVar1, 23)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 2, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim0C)
|
||||
EVT_WAIT(8)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_LABEL(100)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim02)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 2, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 2, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetPartSounds, ACTOR_SELF, 2, 2, 0, 0)
|
||||
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, 2, SOUND_2E9)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_SET(LVar1, 10)
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(1.3))
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 15, 1)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarA, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_SUB(LVar0, 40)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 15, 1)
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 10, 1)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 5, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetPartSounds, ACTOR_SELF, 2, 2, 0, 0)
|
||||
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, 2, SOUND_2E9)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(1.3))
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 15, 1)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0x00000002 | 0x00000010 | STATUS_FLAG_20 | STATUS_FLAG_100 | STATUS_FLAG_200 | STATUS_FLAG_SHRINK | STATUS_FLAG_80000000, 5, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(GetPartOffset, ACTOR_SELF, 2, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 50)
|
||||
EVT_SET(LVar1, 10)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 20, 1)
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 10, 1)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVar0, LVar1, LVar2, 5, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(hammerMiss) = {
|
||||
EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FLOAT(2.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim02)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim0C)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, LVar0, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(SetPartSounds, ACTOR_SELF, LVar0, 2, 0, 0)
|
||||
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, LVar0, SOUND_2E9)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar1, LVar2, LVar3)
|
||||
EVT_SET(LVar2, 10)
|
||||
EVT_CALL(RandInt, 60, LVar4)
|
||||
EVT_SET(LVar5, 30)
|
||||
EVT_SUB(LVar5, LVar4)
|
||||
EVT_ADD(LVar1, LVar5)
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, LVar0, EVT_FLOAT(1.3))
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 15, 1)
|
||||
EVT_SUB(LVar1, 50)
|
||||
EVT_SET(LVar2, 10)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 20, 1)
|
||||
EVT_SUB(LVar1, 30)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 10, 1)
|
||||
EVT_SUB(LVar1, 20)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 5, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, LVar0, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(hammerHit) = {
|
||||
EVT_CALL(SetAnimationRate, ACTOR_SELF, 1, EVT_FLOAT(2.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim02)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim0C)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, LVar0, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(SetPartSounds, ACTOR_SELF, LVar0, 2, 0, 0)
|
||||
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, LVar0, SOUND_2E9)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, LVar0, EVT_FLOAT(1.3))
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 15, 1)
|
||||
EVT_SUB(LVar1, 50)
|
||||
EVT_SET(LVar2, 10)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 20, 1)
|
||||
EVT_SUB(LVar1, 30)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 10, 1)
|
||||
EVT_SUB(LVar1, 20)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, LVar0, LVar1, LVar2, LVar3, 5, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, LVar0, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackHammerSurge) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_THREAD
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_LOOP(100)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_MOD(LVar0, 360)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 2, 0, 0, LVar0)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 3, 0, 0, LVar0)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 4, 0, 0, LVar0)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 5, 0, 0, LVar0)
|
||||
EVT_CALL(SetPartRotation, ACTOR_SELF, 6, 0, 0, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 23)
|
||||
EVT_ADD(LVar1, 23)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 2, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 3, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 4, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 5, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 6, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 2, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 3, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 4, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 5, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 6, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 2, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 3, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 4, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 5, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 6, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_SET(LVar0, 2)
|
||||
EVT_EXEC(N(hammerMiss))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 3)
|
||||
EVT_EXEC(N(hammerMiss))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 4)
|
||||
EVT_EXEC(N(hammerMiss))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 5)
|
||||
EVT_EXEC(N(hammerMiss))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 6)
|
||||
EVT_EXEC(N(hammerMiss))
|
||||
EVT_WAIT(5)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim02)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_THREAD
|
||||
EVT_SET(LVar0, 2)
|
||||
EVT_EXEC(N(hammerHit))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 3)
|
||||
EVT_EXEC(N(hammerHit))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 4)
|
||||
EVT_EXEC(N(hammerHit))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 5)
|
||||
EVT_EXEC(N(hammerHit))
|
||||
EVT_WAIT(5)
|
||||
EVT_SET(LVar0, 6)
|
||||
EVT_EXEC(N(hammerHit))
|
||||
EVT_END_THREAD
|
||||
EVT_WAIT(21)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_10)
|
||||
EVT_WAIT(5)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_40)
|
||||
EVT_WAIT(5)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_40)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_HammerBros_Anim02)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_40)
|
||||
EVT_WAIT(5)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0x00000002 | 0x00000010 | STATUS_FLAG_20 | STATUS_FLAG_100 | STATUS_FLAG_200 | STATUS_FLAG_SHRINK | STATUS_FLAG_80000000, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
|
||||
EVT_CALL(GetEnemyMaxHP, ACTOR_SELF, LVar1)
|
||||
EVT_MULF(LVar0, EVT_FLOAT(100.0))
|
||||
EVT_DIVF(LVar0, LVar1)
|
||||
EVT_IF_GT(LVar0, 34)
|
||||
EVT_EXEC_WAIT(N(attackHammerThrow))
|
||||
EVT_ELSE
|
||||
EVT_EXEC_WAIT(N(attackHammerSurge))
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
1350
src/battle/area_omo3/actor/koopatrol.c
Normal file
1350
src/battle/area_omo3/actor/koopatrol.c
Normal file
File diff suppressed because it is too large
Load Diff
5
src/battle/area_omo3/actor/pokey.c
Normal file
5
src/battle/area_omo3/actor/pokey.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_pokey
|
||||
|
||||
#include "battle/common/actor/pokey.inc.c"
|
5
src/battle/area_omo3/actor/red_shy_guy.c
Normal file
5
src/battle/area_omo3/actor/red_shy_guy.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_red_shy_guy
|
||||
|
||||
#include "battle/common/actor/red_shy_guy.inc.c"
|
107
src/battle/area_omo3/area.c
Normal file
107
src/battle/area_omo3/area.c
Normal file
@ -0,0 +1,107 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3
|
||||
|
||||
extern Stage N(omo_01);
|
||||
extern Stage N(omo_02);
|
||||
extern Stage N(omo_03);
|
||||
extern Stage N(omo_03b);
|
||||
extern Stage N(omo_04);
|
||||
extern Stage N(omo_05);
|
||||
extern Stage N(omo_05b);
|
||||
extern Stage N(omo_06);
|
||||
extern Stage N(omo_07);
|
||||
|
||||
extern ActorBlueprint N(big_lantern_ghost);
|
||||
extern ActorBlueprint N(goomba);
|
||||
extern ActorBlueprint N(clubba);
|
||||
extern ActorBlueprint N(fuzzy);
|
||||
extern ActorBlueprint N(hammer_bro);
|
||||
extern ActorBlueprint N(pokey);
|
||||
extern ActorBlueprint N(koopatrol);
|
||||
extern ActorBlueprint N(red_shy_guy);
|
||||
|
||||
Vec3i N(big_lantern_ghost_pos) = { 30, 0, 10 };
|
||||
|
||||
Formation N(formation_00) = {
|
||||
{ .actor = &N(big_lantern_ghost), .home = { .vec = &N(big_lantern_ghost_pos) }, .priority = 10, },
|
||||
};
|
||||
|
||||
Formation N(formation_01) = {
|
||||
{ .actor = &N(goomba), .home = { .index = 1 }, .priority = 10 },
|
||||
};
|
||||
|
||||
Formation N(formation_02) = {
|
||||
{ .actor = &N(goomba), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(goomba), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_03) = {
|
||||
{ .actor = &N(clubba), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(clubba), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_04) = {
|
||||
{ .actor = &N(fuzzy), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_05) = {
|
||||
{ .actor = &N(fuzzy), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(fuzzy), .home = { .index = 3 }, .priority = 7 },
|
||||
};
|
||||
|
||||
Formation N(formation_06) = {
|
||||
{ .actor = &N(hammer_bro), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(hammer_bro), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_07) = {
|
||||
{ .actor = &N(hammer_bro), .home = { .index = 1 }, .priority = 10 },
|
||||
};
|
||||
|
||||
Formation N(formation_08) = {
|
||||
{ .actor = &N(pokey), .home = { .index = 1 }, .priority = 10, .var1 = 1 },
|
||||
{ .actor = &N(pokey), .home = { .index = 2 }, .priority = 9, .var1 = 1 },
|
||||
};
|
||||
|
||||
Formation N(formation_09) = {
|
||||
{ .actor = &N(koopatrol), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(koopatrol), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_0A) = {
|
||||
{ .actor = &N(red_shy_guy), .home = { .index = 1 }, .priority = 10 },
|
||||
};
|
||||
|
||||
BattleList N(formationTable) = {
|
||||
BATTLE("ビッグカンテラくん", N(formation_00), &N(omo_03)),
|
||||
BATTLE("クリボー(ピーチへん)", N(formation_01), &N(omo_04)),
|
||||
BATTLE("クリボーx2(ピーチへん)", N(formation_02), &N(omo_04)),
|
||||
BATTLE("ガボンへいx2(ピーチへん)", N(formation_03), &N(omo_04)),
|
||||
BATTLE("チョロボンx2(ピーチへん)", N(formation_04), &N(omo_04)),
|
||||
BATTLE("チョロボンx4(ピーチへん)", N(formation_05), &N(omo_04)),
|
||||
BATTLE("ハンマーブロスx2(ピーチへん)", N(formation_06), &N(omo_04)),
|
||||
BATTLE("ハンマーブロス(ピーチへん)", N(formation_07), &N(omo_04)),
|
||||
BATTLE("サンボx2(ピーチへん)", N(formation_08), &N(omo_04)),
|
||||
BATTLE("トゲノコx2(ピーチへん)", N(formation_09), &N(omo_04)),
|
||||
BATTLE("ヘイホー", N(formation_0A), &N(omo_01)),
|
||||
{},
|
||||
};
|
||||
|
||||
StageList N(stageTable) = {
|
||||
{ "omo_01", &N(omo_01) },
|
||||
{ "omo_02", &N(omo_02) },
|
||||
{ "omo_03", &N(omo_03) },
|
||||
{ "omo_03b", &N(omo_03b) },
|
||||
{ "omo_04", &N(omo_04) },
|
||||
{ "omo_05", &N(omo_05) },
|
||||
{ "omo_05b", &N(omo_05b) },
|
||||
{ "omo_06", &N(omo_06) },
|
||||
{ "omo_07", &N(omo_07) },
|
||||
{},
|
||||
};
|
103
src/battle/area_omo3/stage/omo_01.c
Normal file
103
src/battle/area_omo3/stage/omo_01.c
Normal file
@ -0,0 +1,103 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt01_shape.h"
|
||||
#include "model.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_01
|
||||
|
||||
extern EvtScript N(updateModels);
|
||||
|
||||
s32 N(modelList)[] = { MODEL_uma };
|
||||
|
||||
typedef struct Omo01Struct {
|
||||
/* 0x00 */ f32 offsetX;
|
||||
/* 0x04 */ f32 offsetZ;
|
||||
/* 0x08 */ f32 rotSpeed;
|
||||
/* 0x0C */ f32 angle;
|
||||
/* 0x10 */ s32 modelID;
|
||||
/* 0x14 */ s32 unk_14;
|
||||
} Omo01Struct; // size = 0x18
|
||||
|
||||
ApiStatus N(update_model_uma)(Evt* script, s32 isInitialCall) {
|
||||
Omo01Struct* ptr;
|
||||
Model* model;
|
||||
f32 rotZ;
|
||||
f32 offsetY;
|
||||
s32 i;
|
||||
Matrix4f mtx1;
|
||||
Matrix4f mtx2;
|
||||
|
||||
if (isInitialCall) {
|
||||
ptr = heap_malloc(sizeof(*ptr));
|
||||
script->functionTempPtr[0] = ptr;
|
||||
|
||||
for (i = 0; i == 0; i++, ptr++) {
|
||||
ptr->modelID = N(modelList)[i];
|
||||
ptr->unk_14 = ((s32*)N(updateModels))[i]; // WTF ???
|
||||
model = get_model_from_list_index(get_model_list_index_from_tree_index(ptr->modelID));
|
||||
ptr->offsetX = 0.0f;
|
||||
ptr->offsetZ = 0.0f;
|
||||
ptr->rotSpeed = 3.5f;
|
||||
ptr->angle = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
ptr = script->functionTempPtr[0];
|
||||
for (i = 0; i == 0; i++, ptr++) {
|
||||
ptr->angle += ptr->rotSpeed;
|
||||
ptr->angle = clamp_angle(ptr->angle);
|
||||
|
||||
rotZ = sin_rad(ptr->angle * 3.14f / 180.0f) * 20.0f; // the value of PI xD
|
||||
offsetY = SQ(rotZ) / 90.0f;
|
||||
|
||||
model = get_model_from_list_index(get_model_list_index_from_tree_index(ptr->modelID));
|
||||
model->flags |= MODEL_FLAGS_USES_TRANSFORM_MATRIX | MODEL_FLAGS_HAS_TRANSFORM_APPLIED;
|
||||
guTranslateF(mtx1, -ptr->offsetX, 0.0f, -ptr->offsetZ);
|
||||
guRotateF(mtx2, rotZ, 0.0f, 0.0f, 1.0f);
|
||||
guMtxCatF(mtx1, mtx2, model->transformMatrix);
|
||||
guTranslateF(mtx1, ptr->offsetX, offsetY, ptr->offsetZ);
|
||||
guMtxCatF(model->transformMatrix, mtx1, model->transformMatrix);
|
||||
}
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
EvtScript N(updateModels) = {
|
||||
EVT_CALL(N(update_model_uma))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_THREAD
|
||||
EVT_SETF(LVar0, EVT_FLOAT(0.0))
|
||||
EVT_SETF(LVar1, EVT_FLOAT(0.0))
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(RotateModel, MODEL_o367, LVar1, 0, 0, 1)
|
||||
EVT_CALL(RotateModel, MODEL_hari, LVar0, 0, 0, 1)
|
||||
EVT_SUBF(LVar0, EVT_FLOAT(0.6))
|
||||
EVT_SUBF(LVar1, EVT_FLOAT(7.2))
|
||||
EVT_CALL(ClampAngleFloat, LVar0)
|
||||
EVT_CALL(ClampAngleFloat, LVar1)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt01_shape",
|
||||
.hit = "omo_bt01_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
25
src/battle/area_omo3/stage/omo_02.c
Normal file
25
src/battle/area_omo3/stage/omo_02.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_02
|
||||
|
||||
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_bt02_shape",
|
||||
.hit = "omo_bt02_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
26
src/battle/area_omo3/stage/omo_03.c
Normal file
26
src/battle/area_omo3/stage/omo_03.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_03
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 18, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt03_shape",
|
||||
.hit = "omo_bt03_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
25
src/battle/area_omo3/stage/omo_03b.c
Normal file
25
src/battle/area_omo3/stage/omo_03b.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_03b
|
||||
|
||||
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_bt03_shape",
|
||||
.hit = "omo_bt03_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
61
src/battle/area_omo3/stage/omo_04.c
Normal file
61
src/battle/area_omo3/stage/omo_04.c
Normal file
@ -0,0 +1,61 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/omo_bt04_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_04
|
||||
|
||||
extern Formation N(fromation_slot_machine);
|
||||
extern ActorBlueprint N(slot_machine_stop);
|
||||
extern ActorBlueprint N(slot_machine_start);
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetTexPanner, 29, 10)
|
||||
EVT_THREAD
|
||||
EVT_SET(LVarE, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_ADD(LVarE, 32768)
|
||||
EVT_CALL(SetTexPanOffset, 10, 0, LVarE, 0)
|
||||
EVT_WAIT(10)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_itigo, MODEL_kisya, MODEL_kusari, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt04_shape",
|
||||
.hit = "omo_bt04_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
.specialFormationSize = 4,
|
||||
.specialFormation = &N(fromation_slot_machine),
|
||||
};
|
||||
|
||||
Vec3i N(slot_machine_pos1) = { -49, 56, -68 };
|
||||
Vec3i N(slot_machine_pos2) = { -13, 56, -68 };
|
||||
Vec3i N(slot_machine_pos3) = { 20, 56, -68 };
|
||||
Vec3i N(slot_machine_pos4) = { 53, 56, -68 };
|
||||
|
||||
Formation N(fromation_slot_machine) = {
|
||||
{ .actor = &N(slot_machine_start), .home = { .vec = &N(slot_machine_pos1) }, .var0 = 0 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos2) }, .var0 = 1 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos3) }, .var0 = 2 },
|
||||
{ .actor = &N(slot_machine_stop), .home = { .vec = &N(slot_machine_pos4) }, .var0 = 3 },
|
||||
};
|
||||
|
||||
#include "battle/common/actor/slot_machine.inc.c"
|
33
src/battle/area_omo3/stage/omo_05.c
Normal file
33
src/battle/area_omo3/stage/omo_05.c
Normal file
@ -0,0 +1,33 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt05_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_05
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 24, 0)
|
||||
EVT_CALL(SetGroupEnabled, 28, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_itigo, MODEL_kisya, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt05_shape",
|
||||
.hit = "omo_bt05_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
33
src/battle/area_omo3/stage/omo_05b.c
Normal file
33
src/battle/area_omo3/stage/omo_05b.c
Normal file
@ -0,0 +1,33 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt05_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_05b
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 35, 0)
|
||||
EVT_CALL(SetGroupEnabled, 45, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_mae2, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt05_shape",
|
||||
.hit = "omo_bt05_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
70
src/battle/area_omo3/stage/omo_06.c
Normal file
70
src/battle/area_omo3/stage/omo_06.c
Normal file
@ -0,0 +1,70 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "mapfs/omo_bt06_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_omo_06
|
||||
|
||||
EvtScript N(updateModels) = {
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_SET(LVar9, LVar1)
|
||||
EVT_SET(LVar8, LVar2)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(MakeLerp, 0, LVar9, LVar8, 10)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(UpdateLerp)
|
||||
EVT_CALL(TranslateGroup, LVarA, 0, LVar0, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_IF_EQ(LVar1, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(MakeLerp, LVar9, 0, LVar8, 10)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(UpdateLerp)
|
||||
EVT_CALL(TranslateGroup, LVarA, 0, LVar0, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_IF_EQ(LVar1, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_END_LOOP
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_THREAD
|
||||
EVT_SET(LVar0, 26)
|
||||
EVT_SET(LVar1, -50)
|
||||
EVT_SET(LVar2, 120)
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_WAIT(10)
|
||||
EVT_SET(LVar0, 30)
|
||||
EVT_SET(LVar1, -80)
|
||||
EVT_SET(LVar2, 150)
|
||||
EVT_EXEC(N(updateModels))
|
||||
EVT_END_THREAD
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_kuruma, MODEL_hosi, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "omo_tex",
|
||||
.shape = "omo_bt06_shape",
|
||||
.hit = "omo_bt06_hit",
|
||||
.bg = "omo_bg",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
24
src/battle/area_omo3/stage/omo_07.c
Normal file
24
src/battle/area_omo3/stage/omo_07.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_omo3_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),
|
||||
};
|
@ -1,7 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
|
||||
#include "common/UnkBattleFunc2.inc.c"
|
@ -1,19 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
INCLUDE_ASM(s32, "battle/area_pra/649050", func_80218240_649050);
|
||||
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
|
||||
#define NAMESPACE dup3_b_area_pra
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup_b_area_pra
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
|
||||
#include "world/common/UnkFunc52.inc.c"
|
@ -1,23 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup_b_area_pra
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup4_b_area_pra
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup2_b_area_pra
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup_b_area_pra
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup_b_area_pra
|
||||
#include "world/common/UnkFunc52.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
@ -1,23 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup2_b_area_pra
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup2_b_area_pra
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup3_b_area_pra
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup2_b_area_pra
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup2_b_area_pra
|
||||
#include "world/common/UnkFunc52.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
@ -1,21 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup3_b_area_pra
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
|
||||
#define NAMESPACE dup4_b_area_pra
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup3_b_area_pra
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup3_b_area_pra
|
||||
#include "world/common/UnkFunc52.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
@ -1,27 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup4_b_area_pra
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup_b_area_pra
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup5_b_area_pra
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup4_b_area_pra
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#define NAMESPACE dup4_b_area_pra
|
||||
#include "world/common/UnkFunc52.inc.c"
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
#include "common/GetBootsHammerLevel.inc.c"
|
||||
|
||||
#include "common/UnkBattleFunc5.inc.c"
|
321
src/battle/area_pra/actor/albino_dino.c
Normal file
321
src/battle/area_pra/actor/albino_dino.c
Normal file
@ -0,0 +1,321 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "effects.h"
|
||||
#include "sprite/npc/AlbinoDino.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_albino_dino
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(handleEvent);
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_AlbinoDino_Anim03,
|
||||
STATUS_STONE, ANIM_AlbinoDino_Anim00,
|
||||
STATUS_SLEEP, ANIM_AlbinoDino_Anim03,
|
||||
STATUS_POISON, ANIM_AlbinoDino_Anim03,
|
||||
STATUS_STOP, ANIM_AlbinoDino_Anim00,
|
||||
STATUS_STATIC, ANIM_AlbinoDino_Anim03,
|
||||
STATUS_PARALYZE, ANIM_AlbinoDino_Anim00,
|
||||
STATUS_DIZZY, ANIM_AlbinoDino_Anim00,
|
||||
STATUS_FEAR, ANIM_AlbinoDino_Anim00,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 4,
|
||||
ELEMENT_FIRE, 99,
|
||||
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, 75,
|
||||
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, 0,
|
||||
STATUS_STOP_TURN_MOD, 0,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -9, 46 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -6,
|
||||
.unk_1D = -17,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_ALBINO_DINO,
|
||||
.level = 23,
|
||||
.maxHP = 8,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 15,
|
||||
.spookChance = 10,
|
||||
.baseStatusChance = 25,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 100,
|
||||
.coinReward = 1,
|
||||
.size = { 64, 56 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -22, 24 },
|
||||
.statusMessageOffset = { 11, 40 },
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(returnHome) = {
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_AlbinoDino_Anim05)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_AlbinoDino_Anim03)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_AlbinoDino_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_AlbinoDino_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim0B)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim03)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim03)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim05)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_AlbinoDino_Anim08)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(stamp) = {
|
||||
EVT_SET(LVarA, 0)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetActorYaw, ACTOR_SELF, LVar3)
|
||||
EVT_IF_EQ(LVar3, 0)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_ELSE
|
||||
EVT_ADD(LVar0, -20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_IMPACT, 1, LVar0, LVar1, LVar2, 25, 8, 45, 20, 0, 0, 0, 0, 0)
|
||||
EVT_IF_GT(LVarA, 3)
|
||||
EVT_CALL(ShakeCam, 1, 0, 2, EVT_FLOAT(0.2))
|
||||
EVT_SET(LVarA, 0)
|
||||
EVT_END_IF
|
||||
EVT_ADD(LVarA, 1)
|
||||
EVT_WAIT(2)
|
||||
EVT_GOTO(0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_EXEC_GET_TID(N(stamp), LVar9)
|
||||
EVT_THREAD
|
||||
EVT_LOOP(3)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_30B)
|
||||
EVT_WAIT(4)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2FD)
|
||||
EVT_WAIT(4)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_AlbinoDino_Anim05)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVarF, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVarF)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, -100, 0, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(12.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_KILL_THREAD(LVar9)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(30)
|
||||
EVT_IF_EQ(LVarF, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(40)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 12, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 30, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(12.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 4, EVT_FLOAT(1.5))
|
||||
EVT_END_THREAD
|
||||
EVT_KILL_THREAD(LVar9)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, 0, 0, STATUS_FLAG_8 | 0x00000010, 4, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVarF)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2FD)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_AlbinoDino_Anim03)
|
||||
EVT_CALL(ShakeCam, 1, 0, 3, EVT_FLOAT(1.0))
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_EXEC_WAIT(N(returnHome))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
5
src/battle/area_pra/actor/gray_magikoopa.c
Normal file
5
src/battle/area_pra/actor/gray_magikoopa.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_gray_magikoopa
|
||||
|
||||
#include "battle/common/actor/gray_magikoopa.inc.c"
|
902
src/battle/area_pra/actor/green_magikoopa.c
Normal file
902
src/battle/area_pra/actor/green_magikoopa.c
Normal file
@ -0,0 +1,902 @@
|
||||
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "effects.h"
|
||||
#include "sprite/npc/Magikoopa.h"
|
||||
#include "sprite/npc/FlyingMagikoopa.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_green_magikoopa
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(init_flying);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(handleEvent);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(flee);
|
||||
|
||||
extern s32 N(idleAnimations)[];
|
||||
extern s32 N(idleAnimations2)[];
|
||||
extern s32 N(idleAnimations3)[];
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_flying)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 50,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 75,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 75,
|
||||
STATUS_SHRINK, 80,
|
||||
STATUS_STOP, 90,
|
||||
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, -1,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_flying)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 50,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 100,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 75,
|
||||
STATUS_SHRINK, 80,
|
||||
STATUS_STOP, 90,
|
||||
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, -1,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 2, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -5,
|
||||
.unk_1D = -12,
|
||||
},
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts_flying)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 2, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable_flying),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -5,
|
||||
.unk_1D = -12,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -10, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations2),
|
||||
.defenseTable = N(defenseTable_flying),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_800000,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = -8,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 3,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations3),
|
||||
.defenseTable = N(defenseTable_flying),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_GREEN_MAGIKOOPA,
|
||||
.level = 21,
|
||||
.maxHP = 11,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 80,
|
||||
.spookChance = 70,
|
||||
.baseStatusChance = 40,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 75,
|
||||
.coinReward = 2,
|
||||
.size = { 36, 40 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 32 },
|
||||
};
|
||||
|
||||
ActorBlueprint N(flying) = {
|
||||
.flags = ACTOR_FLAG_FLYING,
|
||||
.type = ACTOR_TYPE_FLYING_GREEN_MAGIKOOPA,
|
||||
.level = 21,
|
||||
.maxHP = 11,
|
||||
.partCount = ARRAY_COUNT(N(parts_flying)),
|
||||
.partsData = N(parts_flying),
|
||||
.script = &N(init_flying),
|
||||
.statusTable = N(statusTable_flying),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 95,
|
||||
.spookChance = 75,
|
||||
.baseStatusChance = 40,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 75,
|
||||
.coinReward = 2,
|
||||
.size = { 48, 40 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -25, 20 },
|
||||
.statusMessageOffset = { 1, 34 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_Magikoopa_Green_Anim01,
|
||||
STATUS_STONE, ANIM_Magikoopa_Green_Anim00,
|
||||
STATUS_SLEEP, ANIM_Magikoopa_Green_Anim08,
|
||||
STATUS_POISON, ANIM_Magikoopa_Green_Anim01,
|
||||
STATUS_STOP, ANIM_Magikoopa_Green_Anim00,
|
||||
STATUS_STATIC, ANIM_Magikoopa_Green_Anim01,
|
||||
STATUS_PARALYZE, ANIM_Magikoopa_Green_Anim00,
|
||||
STATUS_DIZZY, ANIM_Magikoopa_Green_Anim07,
|
||||
STATUS_FEAR, ANIM_Magikoopa_Green_Anim07,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations2)[] = {
|
||||
STATUS_NORMAL, ANIM_FlyingMagikoopa_Green_Anim01,
|
||||
STATUS_STONE, ANIM_FlyingMagikoopa_Green_Anim00,
|
||||
STATUS_SLEEP, ANIM_FlyingMagikoopa_Green_Anim08,
|
||||
STATUS_POISON, ANIM_FlyingMagikoopa_Green_Anim01,
|
||||
STATUS_STOP, ANIM_FlyingMagikoopa_Green_Anim00,
|
||||
STATUS_STATIC, ANIM_FlyingMagikoopa_Green_Anim01,
|
||||
STATUS_PARALYZE, ANIM_FlyingMagikoopa_Green_Anim00,
|
||||
STATUS_DIZZY, ANIM_FlyingMagikoopa_Green_Anim07,
|
||||
STATUS_FEAR, ANIM_FlyingMagikoopa_Green_Anim07,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations3)[] = {
|
||||
STATUS_NORMAL, ANIM_FlyingMagikoopa_Green_Anim0A,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
#include "world/common/UnkFunc52.inc.c"
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_Magikoopa_Green_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_Magikoopa_Green_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim06)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim02)
|
||||
EVT_EXEC_WAIT(N(flee))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim02)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 1, 0, 2, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 1, -4, 5, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(canBeKnockedOff) = {
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, BS_FLAGS1_80000)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_40 | BS_FLAGS1_200)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_CALL(N(GetSelectedMoveID), LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(MOVE_HEADBONK1)
|
||||
EVT_CASE_OR_EQ(MOVE_HEADBONK2)
|
||||
EVT_CASE_OR_EQ(MOVE_HEADBONK3)
|
||||
EVT_CASE_OR_EQ(MOVE_MULTIBONK)
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_40 | BS_FLAGS1_200)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_END_IF
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(knockOff) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, DAMAGE_TYPE_POW)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 3, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_MULTI_TARGET, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_MULTI_TARGET, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar2, 1)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 3, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_301)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(N(StartRumbleWithParams), 150, 10)
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(0.7))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar3)
|
||||
EVT_IF_EQ(LVar3, EVENT_15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim04)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar3, LVar4, LVar5)
|
||||
EVT_ADD(LVar4, 10)
|
||||
EVT_ADD(LVar5, 5)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_BURST, 0, LVar3, LVar4, LVar5, EVT_FLOAT(1.0), 10, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_LOOP(20)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim01)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING, 0)
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(SetActorType, ACTOR_SELF, ACTOR_TYPE_GREEN_MAGIKOOPA)
|
||||
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(statusTable)))
|
||||
EVT_CALL(N(UnkBattleFunc1), -10, 20, 10, 32)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_1000, 1)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_CALL(GetIndexFromPos, ACTOR_SELF, LVar0)
|
||||
EVT_MOD(LVar0, 4)
|
||||
EVT_CALL(SetGoalToIndex, ACTOR_SELF, LVar0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(ForceHomePos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(HPBarToHome, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_flying) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_EXEC_WAIT(N(canBeKnockedOff))
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_FALL_TRIGGER)
|
||||
EVT_EXEC_WAIT(N(canBeKnockedOff))
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_EXEC_WAIT(N(knockOff))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_15)
|
||||
EVT_EXEC_WAIT(N(canBeKnockedOff))
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_FlyingMagikoopa_Green_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_EXEC_WAIT(N(knockOff))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_FlyingMagikoopa_Green_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim06)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, 20, 0, 0)
|
||||
EVT_CALL(HPBarToCurrent, ACTOR_SELF)
|
||||
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim01)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 0, 1, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim01)
|
||||
EVT_CALL(HPBarToHome, ACTOR_SELF)
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim02)
|
||||
EVT_EXEC_WAIT(N(flee))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim02)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 2, -3, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 2, -15, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Green_Anim04)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackMagicBlast) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_ELSE
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST1)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 12)
|
||||
EVT_ADD(LVar1, 14)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_ADD(LVar1, 36)
|
||||
EVT_END_IF
|
||||
EVT_CALL(PlayEffect, EFFECT_GATHER_MAGIC, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.5), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim02)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim03)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar9)
|
||||
EVT_IF_FLAG(LVar9, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 8)
|
||||
EVT_ADD(LVar1, 8)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
|
||||
EVT_SUB(LVar3, 50)
|
||||
EVT_SET(LVar4, 0)
|
||||
EVT_CALL(N(ShrinkActor), LVar0, LVar1, LVar5, LVar3, LVar4, LVar5, 25)
|
||||
EVT_WAIT(50)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(14)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 2, 0, 2)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 2, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim03)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 8)
|
||||
EVT_ADD(LVar1, 8)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
|
||||
EVT_SUB(LVar3, 10)
|
||||
EVT_CALL(N(ShrinkActor), LVar0, LVar1, LVar5, LVar3, LVar4, LVar5, 20)
|
||||
EVT_WAIT(18)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_WAIT(19)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackWandStrike) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2DB)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim02)
|
||||
EVT_SET(LVar0, 200)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_ADD(LVar0, 5)
|
||||
EVT_ELSE
|
||||
EVT_ADD(LVar0, 25)
|
||||
EVT_END_IF
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, 10)
|
||||
EVT_SET(LVar0, 55)
|
||||
EVT_LOOP(20)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, 255)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim03)
|
||||
EVT_WAIT(11)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2DC)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(15)
|
||||
EVT_SET(LVar0, 200)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim01)
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, 10)
|
||||
EVT_SET(LVar0, 55)
|
||||
EVT_LOOP(20)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, 255)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET(LVar0, 200)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim01)
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 20, 0, 10)
|
||||
EVT_SET(LVar0, 55)
|
||||
EVT_LOOP(20)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, 255)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(flee) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NE(LVar0, EVENT_SCARE_AWAY)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_B)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(EnableActorBlur, ACTOR_SELF, 1)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(10.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 200)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_EXEC_WAIT(ForceNextTarget)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(GetBattleVar, 2, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetBattleVar, 2, -1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init_flying) = {
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_flying)))
|
||||
EVT_CALL(GetBattleVar, 2, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetBattleVar, 2, -1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_SET(LocalFlag(0), 0)
|
||||
EVT_LABEL(10)
|
||||
EVT_CALL(EnemyCreateTargetList, 32770)
|
||||
EVT_CALL(InitTargetIterator)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
|
||||
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
|
||||
EVT_CALL(GetBattleVar, 2, LVar2)
|
||||
EVT_IF_GT(LVar1, LVar2)
|
||||
EVT_CALL(N(UnkFunc52), LVar0, LVar3)
|
||||
EVT_IF_EQ(LVar3, 0)
|
||||
EVT_CALL(GetActorDefenseBoost, LVar0, LVar4)
|
||||
EVT_IF_LT(LVar4, 3)
|
||||
EVT_SET(LVar8, LVar0)
|
||||
EVT_CALL(SetBattleVar, 2, LVar1)
|
||||
EVT_GOTO(100)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CALL(ChooseNextTarget, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, -1)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(LocalFlag(0), 0)
|
||||
EVT_SET(LocalFlag(0), 1)
|
||||
EVT_CALL(SetBattleVar, 2, -1)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(CountPlayerTargets, ACTOR_SELF, 32770, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_EXEC_WAIT(N(flee))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_EXEC_WAIT(N(attackMagicBlast))
|
||||
EVT_ELSE
|
||||
EVT_EXEC_WAIT(N(attackWandStrike))
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_LABEL(100)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim02)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim02)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST1)
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 6)
|
||||
EVT_ADD(LVar1, 12)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_RADIAL_SHIMMER, 5, LVar0, LVar1, LVar2, EVT_FLOAT(0.12), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 16)
|
||||
EVT_ADD(LVar1, 31)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_RADIAL_SHIMMER, 5, LVar0, LVar1, LVar2, EVT_FLOAT(0.3), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 12)
|
||||
EVT_ADD(LVar1, 14)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_RADIAL_SHIMMER, 5, LVar0, LVar1, LVar2, EVT_FLOAT(0.12), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_ADD(LVar1, 36)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_RADIAL_SHIMMER, 5, LVar0, LVar1, LVar2, EVT_FLOAT(0.3), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Green_Anim01)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Green_Anim01)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(PlaySoundAtActor, LVar8, SOUND_2DD)
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(func_8026BF48, 1)
|
||||
EVT_CALL(BoostDefense, LVar8, 1)
|
||||
EVT_CALL(func_8026BF48, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(WaitForBuffDone)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
21
src/battle/area_pra/actor/red_magikoopa.c
Normal file
21
src/battle/area_pra/actor/red_magikoopa.c
Normal file
@ -0,0 +1,21 @@
|
||||
#include "common.h"
|
||||
#include "effects.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_red_magikoopa
|
||||
|
||||
ApiStatus func_80218240_649050(Evt* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
EffectInstance* effect = (EffectInstance*)evt_get_variable(script, *args++);
|
||||
f32 var1 = evt_get_variable(script, *args++);
|
||||
f32 var2 = evt_get_variable(script, *args++);
|
||||
f32 var3 = evt_get_variable(script, *args++);
|
||||
|
||||
// function is never called, so the effect type can't be inferred
|
||||
((f32*)effect->data.any)[14] = var1;
|
||||
((f32*)effect->data.any)[15] = var2;
|
||||
((f32*)effect->data.any)[16] = var3;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
#include "battle/common/actor/red_magikoopa.inc.c"
|
5
src/battle/area_pra/actor/swoopula.c
Normal file
5
src/battle/area_pra/actor/swoopula.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_swoopula
|
||||
|
||||
#include "battle/common/actor/swoopula.inc.c"
|
5
src/battle/area_pra/actor/white_clubba.c
Normal file
5
src/battle/area_pra/actor/white_clubba.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_white_clubba
|
||||
|
||||
#include "battle/common/actor/white_clubba.inc.c"
|
5
src/battle/area_pra/actor/white_magikoopa.c
Normal file
5
src/battle/area_pra/actor/white_magikoopa.c
Normal file
@ -0,0 +1,5 @@
|
||||
#include "common.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_white_magikoopa
|
||||
|
||||
#include "battle/common/actor/white_magikoopa.inc.c"
|
904
src/battle/area_pra/actor/yellow_magikoopa.c
Normal file
904
src/battle/area_pra/actor/yellow_magikoopa.c
Normal file
@ -0,0 +1,904 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "effects.h"
|
||||
#include "sprite/npc/Magikoopa.h"
|
||||
#include "sprite/npc/FlyingMagikoopa.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_yellow_magikoopa
|
||||
|
||||
extern s32 N(idleAnimations)[];
|
||||
extern s32 N(idleAnimations_flying)[];
|
||||
extern s32 N(80225248)[];
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(init_flying);
|
||||
extern EvtScript N(flee);
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_flying)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 50,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 75,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 75,
|
||||
STATUS_SHRINK, 80,
|
||||
STATUS_STOP, 90,
|
||||
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, -1,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_flying)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 50,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 100,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 75,
|
||||
STATUS_SHRINK, 80,
|
||||
STATUS_STOP, 90,
|
||||
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, -1,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 2, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -5,
|
||||
.unk_1D = -12,
|
||||
},
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts_flying)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 2, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable_flying),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = -5,
|
||||
.unk_1D = -12,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -10, 35 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_flying),
|
||||
.defenseTable = N(defenseTable_flying),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_800000,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = -8,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 3,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(80225248),
|
||||
.defenseTable = N(defenseTable_flying),
|
||||
.eventFlags = 0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_YELLOW_MAGIKOOPA,
|
||||
.level = 21,
|
||||
.maxHP = 11,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 80,
|
||||
.spookChance = 70,
|
||||
.baseStatusChance = 40,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 2,
|
||||
.size = { 36, 40 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 32 },
|
||||
};
|
||||
|
||||
ActorBlueprint N(flying) = {
|
||||
.flags = ACTOR_FLAG_FLYING,
|
||||
.type = ACTOR_TYPE_FLYING_YELLOW_MAGIKOOPA,
|
||||
.level = 21,
|
||||
.maxHP = 11,
|
||||
.partCount = ARRAY_COUNT(N(parts_flying)),
|
||||
.partsData = N(parts_flying),
|
||||
.script = &N(init_flying),
|
||||
.statusTable = N(statusTable_flying),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 95,
|
||||
.spookChance = 75,
|
||||
.baseStatusChance = 40,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 2,
|
||||
.size = { 48, 40 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -25, 20 },
|
||||
.statusMessageOffset = { 1, 34 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_Magikoopa_Yellow_Anim01,
|
||||
STATUS_STONE, ANIM_Magikoopa_Yellow_Anim00,
|
||||
STATUS_SLEEP, ANIM_Magikoopa_Yellow_Anim08,
|
||||
STATUS_POISON, ANIM_Magikoopa_Yellow_Anim01,
|
||||
STATUS_STOP, ANIM_Magikoopa_Yellow_Anim00,
|
||||
STATUS_STATIC, ANIM_Magikoopa_Yellow_Anim01,
|
||||
STATUS_PARALYZE, ANIM_Magikoopa_Yellow_Anim00,
|
||||
STATUS_DIZZY, ANIM_Magikoopa_Yellow_Anim07,
|
||||
STATUS_FEAR, ANIM_Magikoopa_Yellow_Anim07,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_flying)[] = {
|
||||
STATUS_NORMAL, ANIM_FlyingMagikoopa_Yellow_Anim01,
|
||||
STATUS_STONE, ANIM_FlyingMagikoopa_Yellow_Anim00,
|
||||
STATUS_SLEEP, ANIM_FlyingMagikoopa_Yellow_Anim08,
|
||||
STATUS_POISON, ANIM_FlyingMagikoopa_Yellow_Anim01,
|
||||
STATUS_STOP, ANIM_FlyingMagikoopa_Yellow_Anim00,
|
||||
STATUS_STATIC, ANIM_FlyingMagikoopa_Yellow_Anim01,
|
||||
STATUS_PARALYZE, ANIM_FlyingMagikoopa_Yellow_Anim00,
|
||||
STATUS_DIZZY, ANIM_FlyingMagikoopa_Yellow_Anim07,
|
||||
STATUS_FEAR, ANIM_FlyingMagikoopa_Yellow_Anim07,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(80225248)[] = {
|
||||
STATUS_NORMAL, ANIM_FlyingMagikoopa_Yellow_Anim0A,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
#include "common/ShrinkActor.inc.c"
|
||||
#include "common/GetSelectedMoveID.inc.c"
|
||||
#include "common/UnkBattleFunc1.inc.c"
|
||||
#include "common/StartRumbleWithParams.inc.c"
|
||||
#include "world/common/UnkFunc52.inc.c"
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_Magikoopa_Yellow_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_Magikoopa_Yellow_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim06)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim02)
|
||||
EVT_EXEC_WAIT(N(flee))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim02)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 1, 0, 2, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 1, -4, 5, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(canBeKnockedOff) = {
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, BS_FLAGS1_80000)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_40 | BS_FLAGS1_200)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_CALL(N(GetSelectedMoveID), LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(MOVE_HEADBONK1)
|
||||
EVT_CASE_OR_EQ(MOVE_HEADBONK2)
|
||||
EVT_CASE_OR_EQ(MOVE_HEADBONK3)
|
||||
EVT_CASE_OR_EQ(MOVE_MULTIBONK)
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_40 | BS_FLAGS1_200)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_END_IF
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(knockOff) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, DAMAGE_TYPE_POW)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartScale, ACTOR_SELF, 3, EVT_FLOAT(0.4), EVT_FLOAT(0.4), EVT_FLOAT(0.4))
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_MULTI_TARGET, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 1, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_MULTI_TARGET, 0)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar2, 1)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 3, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_301)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(N(StartRumbleWithParams), 150, 10)
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(0.7))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar3)
|
||||
EVT_IF_EQ(LVar3, EVENT_15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim04)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar3, LVar4, LVar5)
|
||||
EVT_ADD(LVar4, 10)
|
||||
EVT_ADD(LVar5, 5)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMOKE_BURST, 0, LVar3, LVar4, LVar5, EVT_FLOAT(1.0), 10, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_LOOP(20)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 3, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim01)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING, 0)
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(SetActorType, ACTOR_SELF, ACTOR_TYPE_YELLOW_MAGIKOOPA)
|
||||
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(statusTable)))
|
||||
EVT_CALL(N(UnkBattleFunc1), -10, 20, 10, 32)
|
||||
EVT_CALL(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_1000, 1)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_CALL(GetIndexFromPos, ACTOR_SELF, LVar0)
|
||||
EVT_MOD(LVar0, 4)
|
||||
EVT_CALL(SetGoalToIndex, ACTOR_SELF, LVar0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(ForceHomePos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(HPBarToHome, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_flying) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_EXEC_WAIT(N(canBeKnockedOff))
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_FALL_TRIGGER)
|
||||
EVT_EXEC_WAIT(N(canBeKnockedOff))
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_EXEC_WAIT(N(knockOff))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_15)
|
||||
EVT_EXEC_WAIT(N(canBeKnockedOff))
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_FlyingMagikoopa_Yellow_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_EXEC_WAIT(N(knockOff))
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim05)
|
||||
EVT_SET_CONST(LVar2, ANIM_FlyingMagikoopa_Yellow_Anim06)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim06)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_FIRST_STRIKE)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, 20, 0, 0)
|
||||
EVT_CALL(HPBarToCurrent, ACTOR_SELF)
|
||||
EVT_CASE_EQ(EVENT_END_FIRST_STRIKE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim01)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 0, 1, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim01)
|
||||
EVT_CALL(HPBarToHome, ACTOR_SELF)
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim02)
|
||||
EVT_EXEC_WAIT(N(flee))
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim02)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SLEEP | STATUS_FLAG_FROZEN | STATUS_FLAG_FEAR | STATUS_FLAG_PARALYZE | STATUS_FLAG_DIZZY | STATUS_FLAG_STONE | STATUS_FLAG_STOP)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 2, -3, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetPartDispOffset, ACTOR_SELF, 2, -15, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_SET_CONST(LVar0, 2)
|
||||
EVT_SET_CONST(LVar1, ANIM_FlyingMagikoopa_Yellow_Anim04)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackMagicBlast) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 1)
|
||||
EVT_ELSE
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(MoveBattleCamOver, 10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST1)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 12)
|
||||
EVT_ADD(LVar1, 14)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_ADD(LVar1, 36)
|
||||
EVT_END_IF
|
||||
EVT_CALL(PlayEffect, EFFECT_GATHER_MAGIC, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.5), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim02)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim03)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar9)
|
||||
EVT_IF_FLAG(LVar9, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 8)
|
||||
EVT_ADD(LVar1, 8)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
|
||||
EVT_SUB(LVar3, 50)
|
||||
EVT_SET(LVar4, 0)
|
||||
EVT_CALL(N(ShrinkActor), LVar0, LVar1, LVar5, LVar3, LVar4, LVar5, 25)
|
||||
EVT_WAIT(50)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(14)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 2, 0, 2)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 2, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_SPELL_CAST2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim03)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 8)
|
||||
EVT_ADD(LVar1, 8)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
|
||||
EVT_SUB(LVar3, 10)
|
||||
EVT_CALL(N(ShrinkActor), LVar0, LVar1, LVar5, LVar3, LVar4, LVar5, 20)
|
||||
EVT_WAIT(18)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_MAGIC | DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_WAIT(19)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(attackWandStrike) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2DB)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim02)
|
||||
EVT_SET(LVar0, 200)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_ADD(LVar0, 5)
|
||||
EVT_ELSE
|
||||
EVT_ADD(LVar0, 25)
|
||||
EVT_END_IF
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, 10)
|
||||
EVT_SET(LVar0, 55)
|
||||
EVT_LOOP(20)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, 255)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim03)
|
||||
EVT_WAIT(11)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2DC)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(15)
|
||||
EVT_SET(LVar0, 200)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim01)
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 30, 0, 10)
|
||||
EVT_SET(LVar0, 55)
|
||||
EVT_LOOP(20)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, 255)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET(LVar0, 200)
|
||||
EVT_LOOP(20)
|
||||
EVT_SUB(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim01)
|
||||
EVT_CALL(FlyToGoal, ACTOR_SELF, 20, 0, 10)
|
||||
EVT_SET(LVar0, 55)
|
||||
EVT_LOOP(20)
|
||||
EVT_ADD(LVar0, 10)
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, LVar0)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CALL(SetPartAlpha, ACTOR_SELF, 1, 255)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(flee) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NE(LVar0, EVENT_SCARE_AWAY)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_B)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(1.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(EnableActorBlur, ACTOR_SELF, 1)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(10.0))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 200)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_EXEC_WAIT(ForceNextTarget)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(GetBattleVar, 2, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetBattleVar, 2, -1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init_flying) = {
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_flying)))
|
||||
EVT_CALL(GetBattleVar, 2, LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_CALL(SetBattleVar, 2, -1)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_SET(LocalFlag(0), 0)
|
||||
EVT_LABEL(10)
|
||||
EVT_CALL(EnemyCreateTargetList, 32770)
|
||||
EVT_CALL(InitTargetIterator)
|
||||
EVT_LABEL(0)
|
||||
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
|
||||
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
|
||||
EVT_CALL(GetBattleVar, 2, LVar2)
|
||||
EVT_IF_GT(LVar1, LVar2)
|
||||
EVT_CALL(N(UnkFunc52), LVar0, LVar3)
|
||||
EVT_IF_EQ(LVar3, 0)
|
||||
EVT_CALL(GetStatusFlags, LVar0, LVar4)
|
||||
EVT_IF_NOT_FLAG(LVar4, STATUS_FLAG_STATIC | STATUS_FLAG_TRANSPARENT)
|
||||
EVT_SET(LVar8, LVar0)
|
||||
EVT_CALL(SetBattleVar, 2, LVar1)
|
||||
EVT_GOTO(100)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_CALL(ChooseNextTarget, 0, LVar0)
|
||||
EVT_IF_NE(LVar0, -1)
|
||||
EVT_GOTO(0)
|
||||
EVT_END_IF
|
||||
EVT_IF_EQ(LocalFlag(0), 0)
|
||||
EVT_SET(LocalFlag(0), 1)
|
||||
EVT_CALL(SetBattleVar, 2, -1)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(CountPlayerTargets, ACTOR_SELF, 32770, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_EXEC_WAIT(N(flee))
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_EXEC_WAIT(N(attackMagicBlast))
|
||||
EVT_ELSE
|
||||
EVT_EXEC_WAIT(N(attackWandStrike))
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_LABEL(100)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_14)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(MoveBattleCamOver, 15)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim02)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim02)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_2F0)
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 6)
|
||||
EVT_ADD(LVar1, 12)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SNAKING_STATIC, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.12), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 16)
|
||||
EVT_ADD(LVar1, 31)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SNAKING_STATIC, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.3), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVarA)
|
||||
EVT_IF_FLAG(LVarA, STATUS_FLAG_SHRINK)
|
||||
EVT_SUB(LVar0, 12)
|
||||
EVT_ADD(LVar1, 14)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SNAKING_STATIC, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.12), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_ADD(LVar1, 36)
|
||||
EVT_SUB(LVar2, 2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SNAKING_STATIC, 0, LVar0, LVar1, LVar2, EVT_FLOAT(0.3), 30, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(GetActorFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, ACTOR_FLAG_FLYING)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Magikoopa_Yellow_Anim01)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 2, ANIM_FlyingMagikoopa_Yellow_Anim01)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(10)
|
||||
EVT_LOOP(4)
|
||||
EVT_CALL(PlaySoundAtActor, LVar8, SOUND_3D2)
|
||||
EVT_CALL(RandInt, 3, LVar0)
|
||||
EVT_ADD(LVar0, 3)
|
||||
EVT_WAIT(LVar0)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(func_8026BF48, 1)
|
||||
EVT_CALL(ElectrifyActor, LVar8, 3)
|
||||
EVT_CALL(func_8026BF48, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(WaitForBuffDone)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
162
src/battle/area_pra/area.c
Normal file
162
src/battle/area_pra/area.c
Normal file
@ -0,0 +1,162 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_pra
|
||||
|
||||
extern ActorBlueprint N(swoopula);
|
||||
extern ActorBlueprint N(red_magikoopa);
|
||||
extern ActorBlueprint N(gray_magikoopa);
|
||||
extern ActorBlueprint N(white_magikoopa);
|
||||
extern ActorBlueprint N(white_magikoopa_flying);
|
||||
extern ActorBlueprint N(green_magikoopa);
|
||||
extern ActorBlueprint N(yellow_magikoopa);
|
||||
extern ActorBlueprint N(yellow_magikoopa_flying);
|
||||
extern ActorBlueprint N(white_clubba);
|
||||
extern ActorBlueprint N(albino_dino);
|
||||
|
||||
extern Stage N(pra_01);
|
||||
extern Stage N(pra_02);
|
||||
extern Stage N(pra_03);
|
||||
extern Stage N(pra_03b);
|
||||
extern Stage N(pra_03c);
|
||||
extern Stage N(pra_04);
|
||||
|
||||
|
||||
Vec3i N(pos_swoopula)[] = {
|
||||
{ 15, 133, -25 },
|
||||
{ 55, 133, -25 },
|
||||
{ 95, 133, -25 },
|
||||
{ 135, 133, -25 },
|
||||
};
|
||||
|
||||
Formation N(formation_01) = {
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula)[1] }, .priority = 10 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula)[2] }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_02) = {
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula)[0] }, .priority = 10 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula)[1] }, .priority = 9 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula)[2] }, .priority = 8 },
|
||||
};
|
||||
|
||||
Vec3i N(pos_swoopula_2)[] = {
|
||||
{ 0, 133, -25 },
|
||||
{ 40, 133, -25 },
|
||||
{ 80, 133, -25 },
|
||||
{ 120, 133, -25 },
|
||||
};
|
||||
|
||||
Formation N(formation_03) = {
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_2)[0] }, .priority = 10 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_2)[1] }, .priority = 9 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_2)[2] }, .priority = 8 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_2)[3] }, .priority = 7 },
|
||||
};
|
||||
|
||||
Vec3i N(pos_swoopula_3)[] = {
|
||||
{ 0, 133, -25 },
|
||||
{ 40, 133, -25 },
|
||||
{ 80, 133, -25 },
|
||||
};
|
||||
|
||||
Vec3i N(pos_magikoopa) = { 120, 55, 25 };
|
||||
|
||||
Formation N(formation_04) = {
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_3)[0] }, .priority = 10, .var0 = 0xFFFFFFFF },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_3)[1] }, .priority = 9, .var0 = 0xFFFFFFFF },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula_3)[2] }, .priority = 8, .var0 = 0xFFFFFFFF },
|
||||
{ .actor = &N(yellow_magikoopa_flying), .home = { .vec = &N(pos_magikoopa) }, .priority = 7 },
|
||||
};
|
||||
|
||||
Formation N(formation_05) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 10 },
|
||||
};
|
||||
|
||||
Formation N(formation_06) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_07) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 2 }, .priority = 8 },
|
||||
};
|
||||
|
||||
Formation N(formation_08) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(swoopula), .home = { .vec = &N(pos_swoopula)[2] }, .priority = 8 },
|
||||
};
|
||||
|
||||
Formation N(formation_09) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(yellow_magikoopa), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_0A) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(white_magikoopa), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_0B) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(white_magikoopa), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(red_magikoopa), .home = { .index = 3 }, .priority = 7 },
|
||||
};
|
||||
|
||||
Formation N(formation_0C) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 10 },
|
||||
{ .actor = &N(gray_magikoopa), .home = { .index = 2 }, .priority = 9 },
|
||||
};
|
||||
|
||||
Formation N(formation_0D) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(green_magikoopa), .home = { .index = 3 }, .priority = 7 },
|
||||
};
|
||||
|
||||
Formation N(formation_0E) = {
|
||||
{ .actor = &N(white_clubba), .home = { .index = 0 }, .priority = 10 },
|
||||
{ .actor = &N(white_clubba), .home = { .index = 1 }, .priority = 9 },
|
||||
{ .actor = &N(green_magikoopa), .home = { .index = 2 }, .priority = 8 },
|
||||
{ .actor = &N(white_magikoopa_flying), .home = { .index = 7 }, .priority = 7 },
|
||||
};
|
||||
|
||||
Formation N(formation_0F) = {
|
||||
{ .actor = &N(albino_dino), .home = { .index = 1 }, .priority = 10, }
|
||||
};
|
||||
|
||||
BattleList N(formationTable) = {
|
||||
BATTLE("バサバサチュルルx2", N(formation_01), &N(pra_01)),
|
||||
BATTLE("バサバサチュルルx3", N(formation_02), &N(pra_01)),
|
||||
BATTLE("バサバサチュルルx4", N(formation_03), &N(pra_01)),
|
||||
BATTLE("バサバサチュルルx3,イエローカメック(そら)", N(formation_04), &N(pra_01)),
|
||||
BATTLE("ホワイトガボン", N(formation_05), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx2", N(formation_06), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx3", N(formation_07), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx2,バサバサチュルル", N(formation_08), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx2,イエローカメック", N(formation_09), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx2,ホワイトカメック", N(formation_0A), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx2,ホワイトカメック,レッドカメック", N(formation_0B), &N(pra_01)),
|
||||
BATTLE("ホワイトガボン,グレイカメック", N(formation_0C), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx3,グリーンカメック", N(formation_0D), &N(pra_01)),
|
||||
BATTLE("ホワイトガボンx2,グリーンカメック,ホワイトカメック(そら)", N(formation_0E), &N(pra_01)),
|
||||
BATTLE("セキゾー", N(formation_0F), &N(pra_01)),
|
||||
{},
|
||||
};
|
||||
|
||||
StageList N(stageTable) = {
|
||||
{ "pra_01", &N(pra_01) },
|
||||
{ "pra_02", &N(pra_02) },
|
||||
{ "pra_03", &N(pra_03) },
|
||||
{ "pra_03b", &N(pra_03b) },
|
||||
{ "pra_03c", &N(pra_03c) },
|
||||
{ "pra_04", &N(pra_04) },
|
||||
{},
|
||||
};
|
32
src/battle/area_pra/stage/pra_01.c
Normal file
32
src/battle/area_pra/stage/pra_01.c
Normal file
@ -0,0 +1,32 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/pra_bt01_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_pra_01
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(func_802536A8, 1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_o383, MODEL_o384, MODEL_o385, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "pra_tex",
|
||||
.shape = "pra_bt01_shape",
|
||||
.hit = "pra_bt01_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
95
src/battle/area_pra/stage/pra_02.c
Normal file
95
src/battle/area_pra/stage/pra_02.c
Normal file
@ -0,0 +1,95 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "mapfs/pra_bt02_shape.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_pra_02
|
||||
|
||||
EvtScript N(80231B40) = {
|
||||
EVT_SET(LVarA, LVar1)
|
||||
EVT_SET(LVarB, LVar2)
|
||||
EVT_SET(LVarC, LVar3)
|
||||
EVT_CALL(SetTexPanner, LVar0, LVar1)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 0, LVar0, LVar1)
|
||||
EVT_ADD(LVar0, LVarB)
|
||||
EVT_ADD(LVar1, LVarC)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80231C10) = {
|
||||
EVT_SET(LVarA, LVar1)
|
||||
EVT_SET(LVarB, LVar2)
|
||||
EVT_SET(LVarC, LVar3)
|
||||
EVT_CALL(SetTexPanner, LVar0, LVar1)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 0, LVar0, 0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 1, LVar1, 0)
|
||||
EVT_ADD(LVar0, LVarB)
|
||||
EVT_ADD(LVar1, LVarC)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(80231CFC) = {
|
||||
EVT_SET(LVarA, LVar1)
|
||||
EVT_SET(LVarB, LVar2)
|
||||
EVT_SET(LVarC, LVar3)
|
||||
EVT_CALL(SetTexPanner, LVar0, LVar1)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 0, 0, LVar0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 1, 0, LVar1)
|
||||
EVT_ADD(LVar0, LVarB)
|
||||
EVT_ADD(LVar1, LVarC)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(func_802536A8, 1)
|
||||
EVT_SET(LVar0, 17)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SET(LVar2, 3000)
|
||||
EVT_SET(LVar3, 0)
|
||||
EVT_EXEC(N(80231B40))
|
||||
EVT_SET(LVar0, 18)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SET(LVar2, 3000)
|
||||
EVT_SET(LVar3, 0)
|
||||
EVT_EXEC(N(80231B40))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
s32 N(foregroundModelList)[] = {
|
||||
MODEL_o383, MODEL_o384, MODEL_o385, 0,
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "pra_tex",
|
||||
.shape = "pra_bt02_shape",
|
||||
.hit = "pra_bt02_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
.foregroundModelList = N(foregroundModelList),
|
||||
};
|
24
src/battle/area_pra/stage/pra_03.c
Normal file
24
src/battle/area_pra/stage/pra_03.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_pra_03
|
||||
|
||||
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 = "pra_tex",
|
||||
.shape = "pra_bt03_shape",
|
||||
.hit = "pra_bt03_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
25
src/battle/area_pra/stage/pra_03b.c
Normal file
25
src/battle/area_pra/stage/pra_03b.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_pra_03b
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 33, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "pra_tex",
|
||||
.shape = "pra_bt03_shape",
|
||||
.hit = "pra_bt03_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
26
src/battle/area_pra/stage/pra_03c.c
Normal file
26
src/battle/area_pra/stage/pra_03c.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_pra_03c
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_CALL(SetGroupEnabled, 33, 0)
|
||||
EVT_CALL(SetGroupEnabled, 38, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "pra_tex",
|
||||
.shape = "pra_bt03_shape",
|
||||
.hit = "pra_bt03_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
89
src/battle/area_pra/stage/pra_04.c
Normal file
89
src/battle/area_pra/stage/pra_04.c
Normal file
@ -0,0 +1,89 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
|
||||
#define NAMESPACE b_area_pra_pra_04
|
||||
|
||||
EvtScript N(802320D0) = {
|
||||
EVT_SET(LVarA, LVar1)
|
||||
EVT_SET(LVarB, LVar2)
|
||||
EVT_SET(LVarC, LVar3)
|
||||
EVT_CALL(SetTexPanner, LVar0, LVar1)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 0, LVar0, LVar1)
|
||||
EVT_ADD(LVar0, LVarB)
|
||||
EVT_ADD(LVar1, LVarC)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(802321A0) = {
|
||||
EVT_SET(LVarA, LVar1)
|
||||
EVT_SET(LVarB, LVar2)
|
||||
EVT_SET(LVarC, LVar3)
|
||||
EVT_CALL(SetTexPanner, LVar0, LVar1)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 0, LVar0, 0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 1, LVar1, 0)
|
||||
EVT_ADD(LVar0, LVarB)
|
||||
EVT_ADD(LVar1, LVarC)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(8023228C) = {
|
||||
EVT_SET(LVarA, LVar1)
|
||||
EVT_SET(LVarB, LVar2)
|
||||
EVT_SET(LVarC, LVar3)
|
||||
EVT_CALL(SetTexPanner, LVar0, LVar1)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 0, 0, LVar0)
|
||||
EVT_CALL(SetTexPanOffset, LVarA, 1, 0, LVar1)
|
||||
EVT_ADD(LVar0, LVarB)
|
||||
EVT_ADD(LVar1, LVarC)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(beforeBattle) = {
|
||||
EVT_CALL(SetSpriteShading, -1)
|
||||
EVT_CALL(SetCamBGColor, 1, 0, 0, 0)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SET(LVar2, 3000)
|
||||
EVT_SET(LVar3, 0)
|
||||
EVT_EXEC(N(802320D0))
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_SET(LVar1, 1)
|
||||
EVT_SET(LVar2, 3000)
|
||||
EVT_SET(LVar3, 0)
|
||||
EVT_EXEC(N(802320D0))
|
||||
EVT_CALL(func_802536A8, 1)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(afterBattle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
Stage NAMESPACE = {
|
||||
.texture = "pra_tex",
|
||||
.shape = "pra_bt04_shape",
|
||||
.hit = "pra_bt04_hit",
|
||||
.preBattle = &N(beforeBattle),
|
||||
.postBattle = &N(afterBattle),
|
||||
};
|
@ -1,683 +1,5 @@
|
||||
#include "common.h"
|
||||
#include "effects.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/Bandit.h"
|
||||
#include "sprite/npc/WorldParakarry.h"
|
||||
|
||||
#define NAMESPACE b_area_sbk_bandit
|
||||
|
||||
extern EvtScript N(init_8021D750);
|
||||
extern EvtScript N(init_8021D7C4);
|
||||
extern EvtScript N(takeTurn_8021E900);
|
||||
extern EvtScript N(idle_8021D810);
|
||||
extern EvtScript N(handleEvent_8021DF88);
|
||||
|
||||
BSS s32 D_80220160;
|
||||
|
||||
s32 N(idleAnimations_8021D510)[] = {
|
||||
STATUS_NORMAL, ANIM_Bandit_Anim01,
|
||||
STATUS_STONE, ANIM_Bandit_Anim00,
|
||||
STATUS_SLEEP, ANIM_Bandit_Anim10,
|
||||
STATUS_POISON, ANIM_Bandit_Anim01,
|
||||
STATUS_STOP, ANIM_Bandit_Anim00,
|
||||
STATUS_STATIC, ANIM_Bandit_Anim01,
|
||||
STATUS_PARALYZE, ANIM_Bandit_Anim00,
|
||||
STATUS_DIZZY, ANIM_Bandit_Anim11,
|
||||
STATUS_FEAR, ANIM_Bandit_Anim11,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8021D55C)[] = {
|
||||
STATUS_NORMAL, ANIM_Bandit_Anim02,
|
||||
STATUS_STONE, ANIM_Bandit_Anim04,
|
||||
STATUS_SLEEP, ANIM_Bandit_Anim10,
|
||||
STATUS_POISON, ANIM_Bandit_Anim02,
|
||||
STATUS_STOP, ANIM_Bandit_Anim04,
|
||||
STATUS_STATIC, ANIM_Bandit_Anim02,
|
||||
STATUS_PARALYZE, ANIM_Bandit_Anim04,
|
||||
STATUS_DIZZY, ANIM_Bandit_Anim11,
|
||||
STATUS_FEAR, ANIM_Bandit_Anim11,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_8021D5A8)[] = {
|
||||
STATUS_NORMAL, ANIM_Bandit_Anim14,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable_8021D5B4)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable_8021D5C0)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 70,
|
||||
STATUS_POISON, 20,
|
||||
STATUS_FROZEN, 100,
|
||||
STATUS_DIZZY, 90,
|
||||
STATUS_FEAR, 50,
|
||||
STATUS_STATIC, 30,
|
||||
STATUS_PARALYZE, 100,
|
||||
STATUS_SHRINK, 90,
|
||||
STATUS_STOP, 100,
|
||||
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, 1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, 0,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(partsTable_8021D66C)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -2, 28 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021D510),
|
||||
.defenseTable = N(defenseTable_8021D5B4),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 244,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 30, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021D5A8),
|
||||
.defenseTable = N(defenseTable_8021D5B4),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(partsTable_8021D6B4)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_8021D5A8),
|
||||
.defenseTable = N(defenseTable_8021D5B4),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_BANDIT,
|
||||
.level = 9,
|
||||
.maxHP = 5,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8021D66C)),
|
||||
.partsData = N(partsTable_8021D66C),
|
||||
.script = &N(init_8021D750),
|
||||
.statusTable = N(statusTable_8021D5C0),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 90,
|
||||
.spookChance = 90,
|
||||
.baseStatusChance = 90,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 1,
|
||||
.size = { 26, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 25 },
|
||||
.statusMessageOffset = { 10, 25 },
|
||||
};
|
||||
|
||||
ActorBlueprint N(2) = {
|
||||
.flags = ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY,
|
||||
.type = ACTOR_TYPE_BANDIT,
|
||||
.level = 9,
|
||||
.maxHP = 5,
|
||||
.partCount = ARRAY_COUNT(N(partsTable_8021D6B4)),
|
||||
.partsData = N(partsTable_8021D6B4),
|
||||
.script = &N(init_8021D7C4),
|
||||
.statusTable = N(statusTable_8021D5C0),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 90,
|
||||
.spookChance = 90,
|
||||
.baseStatusChance = 90,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 1,
|
||||
.size = { 26, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 25 },
|
||||
.statusMessageOffset = { 10, 25 },
|
||||
};
|
||||
|
||||
Vec3i N(vector3D_8021D728) = { 0, 0xFFFFFC18, 0 };
|
||||
|
||||
Formation N(specialFormation_8021D734) = {
|
||||
{ .actor = &N(2), .home = { .vec = &N(vector3D_8021D728) }},
|
||||
};
|
||||
|
||||
EvtScript N(init_8021D750) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn_8021E900)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle_8021D810)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021DF88)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent_8021D7B4) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init_8021D7C4) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(handleEvent_8021D7B4)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(handleEvent_8021D7B4)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent_8021D7B4)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle_8021D810) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(8021D820) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021D510)))
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 0)
|
||||
EVT_CALL(SummonEnemy, EVT_PTR(N(specialFormation_8021D734)), 0)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(GetPartOffset, ACTOR_SELF, 2, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetActorPos, LVarA, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_CALL(SetActorVar, LVarA, 1, LVar0)
|
||||
EVT_CALL(SetActorJumpGravity, LVarA, EVT_FLOAT(1.0))
|
||||
EVT_CALL(RandInt, 360, LVar0)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
|
||||
EVT_ADD(LVar2, 30)
|
||||
EVT_CALL(SetActorPos, LVarA, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetActorSounds, LVarA, 2, 0, 0)
|
||||
EVT_CALL(AddVectorPolar, LVar1, LVar3, EVT_FLOAT(40.0), LVar0)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar1, 0, LVar3)
|
||||
EVT_CALL(JumpToGoal, LVarA, 20, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_CALL(AddVectorPolar, LVar1, LVar3, EVT_FLOAT(20.0), LVar0)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar1, 0, LVar3)
|
||||
EVT_CALL(JumpToGoal, LVarA, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_CALL(AddVectorPolar, LVar1, LVar3, EVT_FLOAT(10.0), LVar0)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar1, 0, LVar3)
|
||||
EVT_CALL(JumpToGoal, LVarA, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(GetBattleFlags, LVar1)
|
||||
EVT_IF_FLAG(LVar1, BS_FLAGS1_80000)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_IF_NOT_FLAG(LVar1, BS_FLAGS1_100)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetActorJumpGravity, LVarA, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorSpeed, LVarA, EVT_FLOAT(6.0))
|
||||
EVT_SET(LVar0, -70)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SET(LVar2, 10)
|
||||
EVT_LABEL(5)
|
||||
EVT_CALL(GetActorPos, LVarA, LVar3, LVar4, LVar5)
|
||||
EVT_IF_EQ(LVar3, LVar0)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_IF_LT(LVar3, LVar0)
|
||||
EVT_SET(LVar4, LVar0)
|
||||
EVT_SUB(LVar4, LVar3)
|
||||
EVT_IF_LT(LVar4, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_ELSE
|
||||
EVT_SET(LVar4, LVar3)
|
||||
EVT_ADD(LVar3, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar3, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 0, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_SET(LVar4, LVar3)
|
||||
EVT_SUB(LVar4, LVar0)
|
||||
EVT_IF_LT(LVar4, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar3, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar3, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 0, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x212)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_GOTO(5)
|
||||
EVT_LABEL(10)
|
||||
EVT_CALL(EnableActorBlur, LVarA, 1)
|
||||
EVT_CALL(SetTargetActor, LVarA, ACTOR_PLAYER)
|
||||
EVT_CALL(SetGoalToTarget, LVarA)
|
||||
EVT_CALL(JumpToGoal, LVarA, 15, FALSE, FALSE, FALSE)
|
||||
EVT_CALL(GetGoalPos, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMALL_GOLD_SPARKLE, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x211)
|
||||
EVT_CALL(GetActorVar, LVarA, 1, LVar0)
|
||||
EVT_CALL(AddCoin, LVar0)
|
||||
EVT_CALL(RemoveActor, LVarA)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
|
||||
EvtScript N(handleEvent_8021DF88) = {
|
||||
EVT_USE_ARRAY(&D_80220160)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_LAUNCH_HIT)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_Bandit_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_Bandit_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim0B)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim07)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.6))
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim01)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim02)
|
||||
EVT_END_SWITCH
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_OR_EQ(EVENT_DEATH)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_LAUNCH_DEATH)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim07)
|
||||
EVT_SET_CONST(LVar2, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_EXEC_GET_TID(N(8021D820), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_SET_CONST(LVar2, ANIM_WorldParakarry_Still)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn_8021E900) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim08)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(10.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, 300, 0, 0)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_40000, 1)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_WAIT(6)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(2.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim05)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 35, 0, 0)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x20C2)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0D)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(5)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0D)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(GetLastDamage, ACTOR_PLAYER, LVar0)
|
||||
EVT_IF_LE(LVar0, 0)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_ATK_BLOCKED)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_STONE)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(AddCoin, 0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_CASE_LT(10)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_SET(LVar0, 2)
|
||||
EVT_CASE_GE(10)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 10)
|
||||
EVT_SET(LVar0, 2)
|
||||
EVT_END_SWITCH
|
||||
EVT_LABEL(10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0E)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x20C3)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim10)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVarA, LVarB, LVarC)
|
||||
EVT_ADD(LVarA, 30)
|
||||
EVT_SET(LVarB, 0)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_MUL(LVar0, -1)
|
||||
EVT_CALL(AddCoin, LVar0)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 2, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(1.0))
|
||||
EVT_ADD(LVarB, 30)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVarA, LVarB, LVarC, 22, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_LOOP(LVar0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, 0x212)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVarA, LVarB, LVarC)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_8021D55C)))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0E)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_WAIT(7)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0F)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim08)
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
#include "battle/common/actor/bandit.inc.c"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -114,14 +114,14 @@ BattleArea gBattleAreas[] = {
|
||||
[BTL_AREA_OMO2] = {
|
||||
BTL_AREA(area_omo2),
|
||||
.name = "エリア OMO2",
|
||||
.battles = 0x8022FBF4,
|
||||
.stages = 0x8022FC1C,
|
||||
.battles = &b_area_omo2_formationTable,
|
||||
.stages = &b_area_omo2_stageTable,
|
||||
},
|
||||
[BTL_AREA_OMO3] = {
|
||||
BTL_AREA(area_omo3),
|
||||
.name = "エリア OMO3",
|
||||
.battles = 0x8022EA2C,
|
||||
.stages = 0x8022EB1C,
|
||||
.battles = &b_area_omo3_formationTable,
|
||||
.stages = &b_area_omo3_stageTable,
|
||||
},
|
||||
[BTL_AREA_KGR] = {
|
||||
BTL_AREA(area_kgr),
|
||||
@ -193,14 +193,14 @@ BattleArea gBattleAreas[] = {
|
||||
[BTL_AREA_SAM2] = {
|
||||
BTL_AREA(area_sam2),
|
||||
.name = "エリア SAM2",
|
||||
.battles = 0x802234F0,
|
||||
.stages = 0x8022352C,
|
||||
.battles = &b_area_sam2_formationTable,
|
||||
.stages = &b_area_sam2_stageTable,
|
||||
},
|
||||
[BTL_AREA_PRA] = {
|
||||
BTL_AREA(area_pra),
|
||||
.name = "エリア PRA",
|
||||
.battles = 0x8022F4D4,
|
||||
.stages = 0x8022F614,
|
||||
.battles = &b_area_pra_formationTable,
|
||||
.stages = &b_area_pra_stageTable,
|
||||
},
|
||||
[BTL_AREA_PRA2] = {
|
||||
BTL_AREA(area_pra2),
|
||||
@ -247,8 +247,8 @@ BattleArea gBattleAreas[] = {
|
||||
[BTL_AREA_DIG] = {
|
||||
BTL_AREA(area_dig),
|
||||
.name = "エリア DIG",
|
||||
.battles = 0x8022A7C4,
|
||||
.stages = 0x8022A83C,
|
||||
.battles = &b_area_dig_formationTable,
|
||||
.stages = &b_area_dig_stageTable,
|
||||
},
|
||||
[BTL_AREA_OMO2_1] = {
|
||||
BTL_AREA(area_omo2_1),
|
||||
|
@ -367,6 +367,7 @@ typedef struct BattleArea {
|
||||
extern BattleArea gBattleAreas[0x30];
|
||||
|
||||
#define BATTLE(name, formation, stage) { name, ARRAY_COUNT(formation), (Formation*) formation, stage }
|
||||
#define BATTLE_WITH_SCRIPT(name, formation, stage, script) { name, ARRAY_COUNT(formation), (Formation*) formation, stage, script }
|
||||
|
||||
// TODO: enum for home position (0..3 are floor, 4..7 are air, etc.)
|
||||
|
||||
|
@ -55,6 +55,12 @@ extern StageList b_area_dgb_stageTable;
|
||||
extern BattleList b_area_omo_formationTable;
|
||||
extern StageList b_area_omo_stageTable;
|
||||
|
||||
extern BattleList b_area_omo2_formationTable;
|
||||
extern StageList b_area_omo2_stageTable;
|
||||
|
||||
extern BattleList b_area_omo3_formationTable;
|
||||
extern StageList b_area_omo3_stageTable;
|
||||
|
||||
extern BattleList b_area_kgr_formationTable;
|
||||
extern StageList b_area_kgr_stageTable;
|
||||
|
||||
@ -70,10 +76,19 @@ extern StageList b_area_kzn_stageTable;
|
||||
extern BattleList b_area_sam_formationTable;
|
||||
extern StageList b_area_sam_stageTable;
|
||||
|
||||
extern BattleList b_area_sam2_formationTable;
|
||||
extern StageList b_area_sam2_stageTable;
|
||||
|
||||
extern BattleList b_area_pra_formationTable;
|
||||
extern StageList b_area_pra_stageTable;
|
||||
|
||||
extern BattleList b_area_pra2_formationTable;
|
||||
extern StageList b_area_pra2_stageTable;
|
||||
|
||||
extern BattleList b_area_pra3_formationTable;
|
||||
extern StageList b_area_pra3_stageTable;
|
||||
|
||||
extern BattleList b_area_dig_formationTable;
|
||||
extern StageList b_area_dig_stageTable;
|
||||
|
||||
#endif
|
||||
|
681
src/battle/common/actor/bandit.inc.c
Normal file
681
src/battle/common/actor/bandit.inc.c
Normal file
@ -0,0 +1,681 @@
|
||||
#include "common.h"
|
||||
#include "effects.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/Bandit.h"
|
||||
#include "sprite/npc/WorldParakarry.h"
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(init_coin);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(handleEvent);
|
||||
|
||||
BSS s32 N(thread_dropCoin)[1];
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_Bandit_Anim01,
|
||||
STATUS_STONE, ANIM_Bandit_Anim00,
|
||||
STATUS_SLEEP, ANIM_Bandit_Anim10,
|
||||
STATUS_POISON, ANIM_Bandit_Anim01,
|
||||
STATUS_STOP, ANIM_Bandit_Anim00,
|
||||
STATUS_STATIC, ANIM_Bandit_Anim01,
|
||||
STATUS_PARALYZE, ANIM_Bandit_Anim00,
|
||||
STATUS_DIZZY, ANIM_Bandit_Anim11,
|
||||
STATUS_FEAR, ANIM_Bandit_Anim11,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_holdCoin)[] = {
|
||||
STATUS_NORMAL, ANIM_Bandit_Anim02,
|
||||
STATUS_STONE, ANIM_Bandit_Anim04,
|
||||
STATUS_SLEEP, ANIM_Bandit_Anim10,
|
||||
STATUS_POISON, ANIM_Bandit_Anim02,
|
||||
STATUS_STOP, ANIM_Bandit_Anim04,
|
||||
STATUS_STATIC, ANIM_Bandit_Anim02,
|
||||
STATUS_PARALYZE, ANIM_Bandit_Anim04,
|
||||
STATUS_DIZZY, ANIM_Bandit_Anim11,
|
||||
STATUS_FEAR, ANIM_Bandit_Anim11,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(idleAnimations_coin)[] = {
|
||||
STATUS_NORMAL, ANIM_Bandit_Anim14,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 70,
|
||||
STATUS_POISON, 20,
|
||||
STATUS_FROZEN, 100,
|
||||
STATUS_DIZZY, 90,
|
||||
STATUS_FEAR, 50,
|
||||
STATUS_STATIC, 30,
|
||||
STATUS_PARALYZE, 100,
|
||||
STATUS_SHRINK, 90,
|
||||
STATUS_STOP, 100,
|
||||
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, 1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, 0,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -2, 28 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 244,
|
||||
},
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 30, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_coin),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts_coin)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_NO_TARGET,
|
||||
.index = 2,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 0 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations_coin),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 0,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_BANDIT,
|
||||
.level = 9,
|
||||
.maxHP = 5,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 90,
|
||||
.spookChance = 90,
|
||||
.baseStatusChance = 90,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 1,
|
||||
.size = { 26, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 25 },
|
||||
.statusMessageOffset = { 10, 25 },
|
||||
};
|
||||
|
||||
ActorBlueprint N(coin) = {
|
||||
.flags = ACTOR_FLAG_NO_ATTACK | ACTOR_FLAG_NO_DMG_APPLY,
|
||||
.type = ACTOR_TYPE_BANDIT,
|
||||
.level = 9,
|
||||
.maxHP = 5,
|
||||
.partCount = ARRAY_COUNT(N(parts_coin)),
|
||||
.partsData = N(parts_coin),
|
||||
.script = &N(init_coin),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 40,
|
||||
.airLiftChance = 90,
|
||||
.spookChance = 90,
|
||||
.baseStatusChance = 90,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 1,
|
||||
.size = { 26, 32 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 25 },
|
||||
.statusMessageOffset = { 10, 25 },
|
||||
};
|
||||
|
||||
Vec3i N(coin_pos) = { 0, -1000, 0 };
|
||||
|
||||
Formation N(formation_coin) = {
|
||||
{ .actor = &N(coin), .home = { .vec = &N(coin_pos) }},
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(dummy) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(init_coin) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(dummy)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(dummy)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(dummy)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(dropCoin) = {
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 0)
|
||||
EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations)))
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 0)
|
||||
EVT_CALL(SummonEnemy, EVT_PTR(N(formation_coin)), 0)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(GetPartOffset, ACTOR_SELF, 2, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetActorPos, LVarA, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 1)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_CALL(SetActorVar, LVarA, 1, LVar0)
|
||||
EVT_CALL(SetActorJumpGravity, LVarA, EVT_FLOAT(1.0))
|
||||
EVT_CALL(RandInt, 360, LVar0)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar1, LVar2, LVar3)
|
||||
EVT_ADD(LVar2, 30)
|
||||
EVT_CALL(SetActorPos, LVarA, LVar1, LVar2, LVar3)
|
||||
EVT_CALL(SetActorSounds, LVarA, 2, 0, 0)
|
||||
EVT_CALL(AddVectorPolar, LVar1, LVar3, EVT_FLOAT(40.0), LVar0)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar1, 0, LVar3)
|
||||
EVT_CALL(JumpToGoal, LVarA, 20, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_CALL(AddVectorPolar, LVar1, LVar3, EVT_FLOAT(20.0), LVar0)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar1, 0, LVar3)
|
||||
EVT_CALL(JumpToGoal, LVarA, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_CALL(AddVectorPolar, LVar1, LVar3, EVT_FLOAT(10.0), LVar0)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar1, 0, LVar3)
|
||||
EVT_CALL(JumpToGoal, LVarA, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_LOOP(0)
|
||||
EVT_CALL(GetBattleFlags, LVar1)
|
||||
EVT_IF_FLAG(LVar1, BS_FLAGS1_80000)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_IF_NOT_FLAG(LVar1, BS_FLAGS1_100)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(SetActorJumpGravity, LVarA, EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorSpeed, LVarA, EVT_FLOAT(6.0))
|
||||
EVT_SET(LVar0, -70)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SET(LVar2, 10)
|
||||
EVT_LABEL(5)
|
||||
EVT_CALL(GetActorPos, LVarA, LVar3, LVar4, LVar5)
|
||||
EVT_IF_EQ(LVar3, LVar0)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_IF_LT(LVar3, LVar0)
|
||||
EVT_SET(LVar4, LVar0)
|
||||
EVT_SUB(LVar4, LVar3)
|
||||
EVT_IF_LT(LVar4, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_ELSE
|
||||
EVT_SET(LVar4, LVar3)
|
||||
EVT_ADD(LVar3, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar3, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 0, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_END_IF
|
||||
EVT_ELSE
|
||||
EVT_SET(LVar4, LVar3)
|
||||
EVT_SUB(LVar4, LVar0)
|
||||
EVT_IF_LT(LVar4, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_ELSE
|
||||
EVT_SUB(LVar3, 30)
|
||||
EVT_CALL(SetGoalPos, LVarA, LVar3, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, LVarA, 0, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, SOUND_212)
|
||||
EVT_END_IF
|
||||
EVT_END_IF
|
||||
EVT_GOTO(5)
|
||||
EVT_LABEL(10)
|
||||
EVT_CALL(EnableActorBlur, LVarA, 1)
|
||||
EVT_CALL(SetTargetActor, LVarA, ACTOR_PLAYER)
|
||||
EVT_CALL(SetGoalToTarget, LVarA)
|
||||
EVT_CALL(JumpToGoal, LVarA, 15, FALSE, FALSE, FALSE)
|
||||
EVT_CALL(GetGoalPos, LVarA, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(PlayEffect, EFFECT_SMALL_GOLD_SPARKLE, 0, LVar0, LVar1, LVar2, EVT_FLOAT(1.0), 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(PlaySoundAtActor, LVarA, 0x211)
|
||||
EVT_CALL(GetActorVar, LVarA, 1, LVar0)
|
||||
EVT_CALL(AddCoin, LVar0)
|
||||
EVT_CALL(RemoveActor, LVarA)
|
||||
EVT_END_SWITCH
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_USE_ARRAY(EVT_PTR(N(thread_dropCoin)))
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(EVENT_HIT_COMBO)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_LAUNCH_HIT)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_Bandit_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim0A)
|
||||
EVT_SET_CONST(LVar2, ANIM_Bandit_Anim0B)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim0B)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim07)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.6))
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim01)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim02)
|
||||
EVT_END_SWITCH
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_OR_EQ(EVENT_DEATH)
|
||||
EVT_CASE_OR_EQ(EVENT_SPIN_SMASH_LAUNCH_DEATH)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim07)
|
||||
EVT_SET_CONST(LVar2, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_EXEC_GET_TID(N(dropCoin), ArrayVar(0))
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_LOOP(0)
|
||||
EVT_IS_THREAD_RUNNING(ArrayVar(0), LVar0)
|
||||
EVT_IF_EQ(LVar0, 0)
|
||||
EVT_BREAK_LOOP
|
||||
EVT_END_IF
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Bandit_Anim09)
|
||||
EVT_SET_CONST(LVar2, ANIM_WorldParakarry_Still)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 0, LVar0)
|
||||
EVT_IF_EQ(LVar0, 1)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim08)
|
||||
EVT_WAIT(30)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(10.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, 300, 0, 0)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetBattleFlagBits, BS_FLAGS1_40000, 1)
|
||||
EVT_CALL(func_8027D32C, ACTOR_SELF)
|
||||
EVT_CALL(RemoveActor, ACTOR_SELF)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 50, 0, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_WAIT(6)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(2.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim05)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 35, 0, 0)
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20C2)
|
||||
EVT_CALL(SetActorSounds, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0D)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(0.5))
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 30)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(5)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0D)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(ResetAllActorSounds, ACTOR_SELF)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(GetLastDamage, ACTOR_PLAYER, LVar0)
|
||||
EVT_IF_LE(LVar0, 0)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetBattleFlags, LVar0)
|
||||
EVT_IF_FLAG(LVar0, BS_FLAGS1_ATK_BLOCKED)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(GetStatusFlags, ACTOR_PLAYER, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_STONE)
|
||||
EVT_SET(LVar0, 0)
|
||||
EVT_GOTO(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(AddCoin, 0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_SET(LVar0, 1)
|
||||
EVT_CASE_LT(10)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_SET(LVar0, 2)
|
||||
EVT_CASE_GE(10)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 1, 10)
|
||||
EVT_SET(LVar0, 2)
|
||||
EVT_END_SWITCH
|
||||
EVT_LABEL(10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_EQ(0)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim01)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CASE_EQ(1)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0E)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20C3)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim10)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim07)
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVarA, LVarB, LVarC)
|
||||
EVT_ADD(LVarA, 30)
|
||||
EVT_SET(LVarB, 0)
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_MUL(LVar0, -1)
|
||||
EVT_CALL(AddCoin, LVar0)
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_INVISIBLE, 0)
|
||||
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartPos, ACTOR_SELF, 2, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, 2, EVT_FLOAT(1.0))
|
||||
EVT_ADD(LVarB, 30)
|
||||
EVT_CALL(JumpPartTo, ACTOR_SELF, 2, LVarA, LVarB, LVarC, 22, 1)
|
||||
EVT_CALL(SetPartFlagBits, ACTOR_SELF, 2, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_THREAD
|
||||
EVT_CALL(GetActorVar, ACTOR_SELF, 1, LVar0)
|
||||
EVT_LOOP(LVar0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_212)
|
||||
EVT_WAIT(1)
|
||||
EVT_END_LOOP
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVarA, LVarB, LVarC)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetIdleAnimations, ACTOR_SELF, 1, EVT_PTR(N(idleAnimations_holdCoin)))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0E)
|
||||
EVT_CALL(SetActorVar, ACTOR_SELF, 0, 1)
|
||||
EVT_WAIT(7)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim0F)
|
||||
EVT_WAIT(20)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Bandit_Anim08)
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
286
src/battle/common/actor/clubba.inc.c
Normal file
286
src/battle/common/actor/clubba.inc.c
Normal file
@ -0,0 +1,286 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/BattleClubba.h"
|
||||
|
||||
extern EvtScript N(init);
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(handleEvent);
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_BattleClubba_Anim01,
|
||||
STATUS_STONE, ANIM_BattleClubba_Anim00,
|
||||
STATUS_SLEEP, ANIM_BattleClubba_Anim03,
|
||||
STATUS_POISON, ANIM_BattleClubba_Anim01,
|
||||
STATUS_STOP, ANIM_BattleClubba_Anim00,
|
||||
STATUS_STATIC, ANIM_BattleClubba_Anim01,
|
||||
STATUS_PARALYZE, ANIM_BattleClubba_Anim00,
|
||||
STATUS_DIZZY, ANIM_BattleClubba_Anim05,
|
||||
STATUS_FEAR, ANIM_BattleClubba_Anim05,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 90,
|
||||
STATUS_POISON, 50,
|
||||
STATUS_FROZEN, 0,
|
||||
STATUS_DIZZY, 75,
|
||||
STATUS_FEAR, 100,
|
||||
STATUS_STATIC, 50,
|
||||
STATUS_PARALYZE, 90,
|
||||
STATUS_SHRINK, 75,
|
||||
STATUS_STOP, 90,
|
||||
STATUS_DEFAULT_TURN_MOD, 0,
|
||||
STATUS_SLEEP_TURN_MOD, 1,
|
||||
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, 1,
|
||||
STATUS_SHRINK_TURN_MOD, 0,
|
||||
STATUS_STOP_TURN_MOD, -1,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { -12, 32 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1C = 8,
|
||||
.unk_1D = 0xFD,
|
||||
},
|
||||
};
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_CLUBBA,
|
||||
.level = 13,
|
||||
.maxHP = 8,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 60,
|
||||
.airLiftChance = 60,
|
||||
.spookChance = 70,
|
||||
.baseStatusChance = 70,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 80,
|
||||
.coinReward = 1,
|
||||
.size = { 42, 42 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 35 },
|
||||
};
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim06)
|
||||
EVT_SET_CONST(LVar2, ANIM_BattleClubba_Anim07)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim06)
|
||||
EVT_SET_CONST(LVar2, ANIM_BattleClubba_Anim07)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim07)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_SET_CONST(LVar2, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim04)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 27)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SUB(LVar2, 6)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(15)
|
||||
EVT_ELSE
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim02)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(4.0))
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_SHRINK)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 27, 0, -6)
|
||||
EVT_ELSE
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, 10, 0, -6)
|
||||
EVT_END_IF
|
||||
EVT_CALL(RunToGoal, ACTOR_SELF, 0, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim01)
|
||||
EVT_WAIT(10)
|
||||
EVT_END_IF
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_10)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20C5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim08)
|
||||
EVT_WAIT(10)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_WAIT(20)
|
||||
EVT_END_IF
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim09)
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_20C5)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_BattleClubba_Anim0A)
|
||||
EVT_WAIT(2)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 0, 3, BS_FLAGS1_SP_EVT_ACTIVE)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_THREAD
|
||||
EVT_CALL(ShakeCam, 1, 0, 10, EVT_FLOAT(1.5))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_WAIT(19)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_BattleClubba_Anim02)
|
||||
EVT_EXEC_WAIT(DoReturnHome)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
445
src/battle/common/actor/fuzzy.inc.c
Normal file
445
src/battle/common/actor/fuzzy.inc.c
Normal file
@ -0,0 +1,445 @@
|
||||
#include "common.h"
|
||||
#include "battle/battle.h"
|
||||
#include "script_api/battle.h"
|
||||
#include "sprite/npc/Fuzzy.h"
|
||||
#include "effects.h"
|
||||
|
||||
s32 N(defenseTable)[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
ELEMENT_END,
|
||||
};
|
||||
|
||||
s32 N(statusTable)[] = {
|
||||
STATUS_NORMAL, 0,
|
||||
STATUS_DEFAULT, 0,
|
||||
STATUS_SLEEP, 95,
|
||||
STATUS_POISON, 90,
|
||||
STATUS_FROZEN, 100,
|
||||
STATUS_DIZZY, 90,
|
||||
STATUS_FEAR, 0,
|
||||
STATUS_STATIC, 70,
|
||||
STATUS_PARALYZE, 75,
|
||||
STATUS_SHRINK, 75,
|
||||
STATUS_STOP, 100,
|
||||
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,
|
||||
};
|
||||
|
||||
extern s32 N(idleAnimations)[];
|
||||
|
||||
ActorPartBlueprint N(parts)[] = {
|
||||
{
|
||||
.flags = ACTOR_PART_FLAG_MULTI_TARGET,
|
||||
.index = 1,
|
||||
.posOffset = { 0, 0, 0 },
|
||||
.targetOffset = { 0, 20 },
|
||||
.opacity = 255,
|
||||
.idleAnimations = N(idleAnimations),
|
||||
.defenseTable = N(defenseTable),
|
||||
.eventFlags = ACTOR_EVENT_FLAG_0,
|
||||
.elementImmunityFlags = 0,
|
||||
.unk_1D = 246,
|
||||
},
|
||||
};
|
||||
|
||||
extern EvtScript N(init);
|
||||
|
||||
ActorBlueprint NAMESPACE = {
|
||||
.flags = 0,
|
||||
.type = ACTOR_TYPE_FUZZY,
|
||||
.level = 6,
|
||||
.maxHP = 3,
|
||||
.partCount = ARRAY_COUNT(N(parts)),
|
||||
.partsData = N(parts),
|
||||
.script = &N(init),
|
||||
.statusTable = N(statusTable),
|
||||
.escapeChance = 50,
|
||||
.airLiftChance = 95,
|
||||
.spookChance = 95,
|
||||
.baseStatusChance = 95,
|
||||
.upAndAwayChance = 95,
|
||||
.spinSmashReq = 0,
|
||||
.powerBounceChance = 100,
|
||||
.coinReward = 1,
|
||||
.size = { 33, 28 },
|
||||
.hpBarOffset = { 0, 0 },
|
||||
.statusIconOffset = { -10, 20 },
|
||||
.statusMessageOffset = { 10, 20 },
|
||||
};
|
||||
|
||||
s32 N(idleAnimations)[] = {
|
||||
STATUS_NORMAL, ANIM_Fuzzy_Anim01,
|
||||
STATUS_STONE, ANIM_Fuzzy_Anim00,
|
||||
STATUS_SLEEP, ANIM_Fuzzy_Anim0E,
|
||||
STATUS_POISON, ANIM_Fuzzy_Anim01,
|
||||
STATUS_STOP, ANIM_Fuzzy_Anim00,
|
||||
STATUS_STATIC, ANIM_Fuzzy_Anim01,
|
||||
STATUS_PARALYZE, ANIM_Fuzzy_Anim00,
|
||||
STATUS_DIZZY, ANIM_Fuzzy_Anim0F,
|
||||
STATUS_FEAR, ANIM_Fuzzy_Anim0F,
|
||||
STATUS_END,
|
||||
};
|
||||
|
||||
extern EvtScript N(takeTurn);
|
||||
extern EvtScript N(idle);
|
||||
extern EvtScript N(handleEvent);
|
||||
|
||||
EvtScript N(init) = {
|
||||
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(takeTurn)))
|
||||
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(idle)))
|
||||
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(handleEvent)))
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(idle) = {
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
EvtScript N(handleEvent) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT_COMBO)
|
||||
EVT_CASE_OR_EQ(EVENT_HIT)
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, DAMAGE_TYPE_ELECTRIC)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_END_IF
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_BURN_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim10)
|
||||
EVT_SET_CONST(LVar2, ANIM_Fuzzy_Anim12)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_CASE_EQ(EVENT_BURN_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim10)
|
||||
EVT_SET_CONST(LVar2, ANIM_Fuzzy_Anim12)
|
||||
EVT_EXEC_WAIT(DoBurnHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim12)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoSpinSmashHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_SHOCK_HIT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoJumpBack)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_EXEC_WAIT(D_8029C0A4)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.6))
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CASE_EQ(EVENT_SHOCK_DEATH)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoShockHit)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_RETURN
|
||||
EVT_CASE_OR_EQ(EVENT_UNKNOWN_TRIGGER)
|
||||
EVT_CASE_OR_EQ(EVENT_IMMUNE)
|
||||
EVT_CASE_OR_EQ(EVENT_AIR_LIFT_FAILED)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim01)
|
||||
EVT_EXEC_WAIT(DoImmune)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(EVENT_DEATH)
|
||||
EVT_CALL(GetLastElement, LVar0)
|
||||
EVT_IF_FLAG(LVar0, DAMAGE_TYPE_ELECTRIC)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim13)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_ELSE
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoNormalHit)
|
||||
EVT_WAIT(10)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim08)
|
||||
EVT_EXEC_WAIT(DoDeath)
|
||||
EVT_END_IF
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_RECOVER_STATUS)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim01)
|
||||
EVT_EXEC_WAIT(DoRecover)
|
||||
EVT_CASE_EQ(EVENT_SCARE_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_SET_CONST(LVar2, ANIM_Fuzzy_Anim09)
|
||||
EVT_EXEC_WAIT(DoScareAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_EQ(EVENT_BEGIN_AIR_LIFT)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_EXEC_WAIT(DoAirLift)
|
||||
EVT_CASE_EQ(EVENT_BLOW_AWAY)
|
||||
EVT_SET_CONST(LVar0, 1)
|
||||
EVT_SET_CONST(LVar1, ANIM_Fuzzy_Anim03)
|
||||
EVT_EXEC_WAIT(DoBlowAway)
|
||||
EVT_RETURN
|
||||
EVT_CASE_DEFAULT
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
||||
|
||||
#include "common/UnkBattleFunc2.inc.c"
|
||||
|
||||
EvtScript N(takeTurn) = {
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 0)
|
||||
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_63)
|
||||
EVT_CALL(BattleCamTargetActor, ACTOR_SELF)
|
||||
EVT_CALL(func_8024ECF8, -1, 1, 0)
|
||||
EVT_CALL(GetBattlePhase, LVar0)
|
||||
EVT_IF_EQ(LVar0, PHASE_FIRST_STRIKE)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_GOTO(100)
|
||||
EVT_END_IF
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim03)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 50)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(6.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_EXEC_WAIT(D_8029C12C)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim01)
|
||||
EVT_LABEL(100)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 10, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim04)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 9, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 8, 0)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_IGNORE_DEFENSE, 0, 1, 16)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_MISS)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_LUCKY)
|
||||
EVT_SET(LVarA, LVar0)
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 5)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_SUB(LVar2, 5)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim05)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 11, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim09)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 20)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_SUB(LVar0, 15)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_WAIT(4)
|
||||
EVT_WAIT(5)
|
||||
EVT_IF_EQ(LVarA, HIT_RESULT_LUCKY)
|
||||
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
|
||||
EVT_END_IF
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 180)
|
||||
EVT_CALL(AddActorDecoration, ACTOR_SELF, 1, 0, 2)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim03)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_EXEC_WAIT(D_8029C12C)
|
||||
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, 1, 0)
|
||||
EVT_CALL(SetActorYaw, ACTOR_SELF, 0)
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_CASE_EQ(HIT_RESULT_HIT_STATIC)
|
||||
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
|
||||
EVT_IF_FLAG(LVar0, STATUS_FLAG_STATIC)
|
||||
EVT_SET(LocalFlag(0), 0)
|
||||
EVT_ELSE
|
||||
EVT_SET(LocalFlag(0), 1)
|
||||
EVT_END_IF
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
|
||||
EVT_CALL(AddGoalPos, ACTOR_SELF, -3, -12, -15)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(3.0))
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim05)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_IF_EQ(LocalFlag(0), 1)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_IGNORE_DEFENSE, 0, 0, 0, 32)
|
||||
EVT_RETURN
|
||||
EVT_END_IF
|
||||
EVT_WAIT(10)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_PLAYER, FALSE)
|
||||
EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario_3000C)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3E0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim07)
|
||||
EVT_WAIT(21)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim00)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 330)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_3E0)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, -3, -2, 0)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.9), EVT_FLOAT(1.2), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.8), EVT_FLOAT(1.3), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.4), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.5), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.6), EVT_FLOAT(1.6), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(10)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_IGNORE_DEFENSE, 0, 0, 1, 32)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim01)
|
||||
EVT_SWITCH(LVar0)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
|
||||
EVT_CASE_OR_EQ(HIT_RESULT_QUAKE_IMMUNE)
|
||||
EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_C)
|
||||
EVT_CALL(GetLastDamage, 0, LVar3)
|
||||
EVT_IF_NE(LVar3, 0)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_206D)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_214)
|
||||
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar1, 10)
|
||||
EVT_CALL(N(UnkBattleFunc2), LVar0, LVar1, LVar2, LVar3)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(15)
|
||||
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_25C)
|
||||
EVT_CALL(N(UnkBattleFunc2_2), LVar0, LVar1, LVar2, LVar3)
|
||||
EVT_END_THREAD
|
||||
EVT_ADD(LVar0, 20)
|
||||
EVT_ADD(LVar1, 20)
|
||||
EVT_CALL(PlayEffect, EFFECT_RECOVER, 0, LVar0, LVar1, LVar2, LVar3, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
EVT_CALL(GetActorHP, ACTOR_SELF, LVar0)
|
||||
EVT_ADD(LVar0, LVar3)
|
||||
EVT_CALL(SetEnemyHP, ACTOR_SELF, LVar0)
|
||||
EVT_END_IF
|
||||
EVT_THREAD
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.6), EVT_FLOAT(0.6), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotationOffset, -127, 0, 10, 0)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 330)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.5), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 300)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 270)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(0.7), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 240)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 210)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(0.7), EVT_FLOAT(1.4), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 180)
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(0.7), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(2)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.2), EVT_FLOAT(0.5), EVT_FLOAT(1.0))
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 40)
|
||||
EVT_SET(LVar1, 0)
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.4), EVT_FLOAT(0.2), EVT_FLOAT(1.0))
|
||||
EVT_WAIT(1)
|
||||
EVT_THREAD
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.2), EVT_FLOAT(0.5), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 150)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorScale, ACTOR_SELF, EVT_FLOAT(1.0), EVT_FLOAT(1.0), EVT_FLOAT(1.0))
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 120)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 90)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 60)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 30)
|
||||
EVT_WAIT(1)
|
||||
EVT_CALL(SetActorRotation, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetActorRotationOffset, -127, 0, 0, 0)
|
||||
EVT_END_THREAD
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_ADD(LVar0, 30)
|
||||
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
|
||||
EVT_WAIT(5)
|
||||
EVT_CALL(YieldTurn)
|
||||
EVT_CALL(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim03)
|
||||
EVT_CALL(SetGoalToHome, ACTOR_SELF)
|
||||
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
|
||||
EVT_CALL(SetActorSpeed, ACTOR_SELF, EVT_FLOAT(8.0))
|
||||
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(1.8))
|
||||
EVT_EXEC_WAIT(D_8029C12C)
|
||||
EVT_CALL(SetAnimation, ACTOR_SELF, 1, ANIM_Fuzzy_Anim01)
|
||||
EVT_END_CASE_GROUP
|
||||
EVT_END_SWITCH
|
||||
EVT_CALL(EnableIdleScript, ACTOR_SELF, 1)
|
||||
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
|
||||
EVT_RETURN
|
||||
EVT_END
|
||||
};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user