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:
Unnunu 2022-10-04 04:10:23 +03:00 committed by GitHub
parent cba14cc73d
commit f62c83607e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
122 changed files with 13088 additions and 7686 deletions

View File

@ -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,

View File

@ -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);

View File

@ -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"

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_dig
#include "common/UnkBattleFunc1.inc.c"

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_dig
#include "common/UnkBattleFunc2.inc.c"

View File

@ -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

View File

@ -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

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_dig
#include "common/IsSaveVar123.inc.c"

View File

@ -1,7 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_dig
#include "common/UnkFloatFunc3.inc.c"
#include "common/GetModelPos.inc.c"

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_dig
#include "common/IsGameStatusUnkAA_1.inc.c"

View File

@ -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;
}

View File

@ -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

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_dig_bandit
#include "battle/common/actor/bandit.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_dig_fuzzy
#include "battle/common/actor/fuzzy.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_dig_koopa_troopa
#include "battle/common/actor/koopa_troopa.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_dig_monty_mole
#include "battle/common/actor/monty_mole.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_dig_pokey
#include "battle/common/actor/pokey.inc.c"

View 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"

View 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
};

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_dig_whacka
#include "battle/common/actor/whacka.inc.c"

View 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) },
{},
};

View File

@ -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
};

View 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
};

View 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
};

View 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
};

View 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
};

View 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),
};

View 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),
};

View 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),
};

View 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"

View 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),
};

View File

@ -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"

View File

@ -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"

View File

@ -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 },
};

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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),
};

View File

@ -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),
};

View File

@ -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),
};

View File

@ -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),
};

View File

@ -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"

View File

@ -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),
};

View File

@ -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),
};

View File

@ -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),
};

View File

@ -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),
};

View File

@ -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);

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo3
#include "common/IsGameStatusUnkAA_1.inc.c"

View File

@ -1,8 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo3
#include "common/BattleAreaAngleStuff.inc.c"
#include "common/UnkBattleFunc2.inc.c"

View File

@ -1,5 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_omo3
#include "common/UnkBattleFunc1.inc.c"

View File

@ -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"

View File

@ -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

View 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
};

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_omo3_clubba
#include "battle/common/actor/clubba.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_omo3_fuzzy
#include "battle/common/actor/fuzzy.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_omo3_goomba
#include "battle/common/actor/goomba.inc.c"

View 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
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_omo3_pokey
#include "battle/common/actor/pokey.inc.c"

View 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
View 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("クリボーxピーチへん", N(formation_02), &N(omo_04)),
BATTLE("ガボンへいxピーチへん", N(formation_03), &N(omo_04)),
BATTLE("チョロボンxピーチへん", N(formation_04), &N(omo_04)),
BATTLE("チョロボンxピーチへん", N(formation_05), &N(omo_04)),
BATTLE("ハンマーブロスxピーチへん", N(formation_06), &N(omo_04)),
BATTLE("ハンマーブロス(ピーチへん)", N(formation_07), &N(omo_04)),
BATTLE("サンボxピーチへん", N(formation_08), &N(omo_04)),
BATTLE("トゲコxピーチへん", 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) },
{},
};

View 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),
};

View 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),
};

View 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),
};

View 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),
};

View 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"

View 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),
};

View 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),
};

View 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),
};

View 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),
};

View File

@ -1,7 +0,0 @@
#include "common.h"
#define NAMESPACE b_area_pra
#include "common/UnkBattleFunc1.inc.c"
#include "common/UnkBattleFunc2.inc.c"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View 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
};

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_pra_gray_magikoopa
#include "battle/common/actor/gray_magikoopa.inc.c"

View 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
};

View 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"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_pra_swoopula
#include "battle/common/actor/swoopula.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_pra_white_clubba
#include "battle/common/actor/white_clubba.inc.c"

View File

@ -0,0 +1,5 @@
#include "common.h"
#define NAMESPACE b_area_pra_white_magikoopa
#include "battle/common/actor/white_magikoopa.inc.c"

View 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
View 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("ホワイトガボンx", N(formation_06), &N(pra_01)),
BATTLE("ホワイトガボンx", N(formation_07), &N(pra_01)),
BATTLE("ホワイトガボンx,バサバサチュルル", N(formation_08), &N(pra_01)),
BATTLE("ホワイトガボンx,イエローカメック", N(formation_09), &N(pra_01)),
BATTLE("ホワイトガボンx,ホワイトカメック", N(formation_0A), &N(pra_01)),
BATTLE("ホワイトガボンx,ホワイトカメック,レッドカメック", N(formation_0B), &N(pra_01)),
BATTLE("ホワイトガボン,グレイカメック", N(formation_0C), &N(pra_01)),
BATTLE("ホワイトガボンx,グリーンカメック", N(formation_0D), &N(pra_01)),
BATTLE("ホワイトガボンx,グリーンカメック,ホワイトカメック(そら)", 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) },
{},
};

View 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),
};

View 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),
};

View 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),
};

View 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),
};

View 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),
};

View 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),
};

View File

@ -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

View File

@ -114,14 +114,14 @@ BattleArea gBattleAreas[] = {
[BTL_AREA_OMO2] = {
BTL_AREA(area_omo2),
.name = "エリア ",
.battles = 0x8022FBF4,
.stages = 0x8022FC1C,
.battles = &b_area_omo2_formationTable,
.stages = &b_area_omo2_stageTable,
},
[BTL_AREA_OMO3] = {
BTL_AREA(area_omo3),
.name = "エリア ",
.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 = "エリア ",
.battles = 0x802234F0,
.stages = 0x8022352C,
.battles = &b_area_sam2_formationTable,
.stages = &b_area_sam2_stageTable,
},
[BTL_AREA_PRA] = {
BTL_AREA(area_pra),
.name = "エリア ",
.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 = "エリア ",
.battles = 0x8022A7C4,
.stages = 0x8022A83C,
.battles = &b_area_dig_formationTable,
.stages = &b_area_dig_stageTable,
},
[BTL_AREA_OMO2_1] = {
BTL_AREA(area_omo2_1),

View File

@ -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.)

View File

@ -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

View 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
};

View 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
};

View 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