last actors (#1118)

* omo2

* minor fixes

* actor types extraction

* format py

---------

Co-authored-by: HailSanta <Hail2Santa@gmail.com>
This commit is contained in:
HailSanta 2023-10-01 20:12:53 -04:00 committed by GitHub
parent 70082b0a30
commit 3293216356
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
56 changed files with 5301 additions and 5336 deletions

View File

@ -13,7 +13,7 @@
#include "messages.h"
#include "battle/formation_names.h"
#include "battle/stage_names.h"
#include "battle/actor_levels.h"
#include "battle/actor_types.h"
#ifdef PERMUTER
extern int TEXEL0, TEXEL1, PRIMITIVE, PRIMITIVE_ALPHA;

View File

@ -742,7 +742,7 @@ typedef struct DebuffFXData {
/* 0x30 */ f32 unk_30;
/* 0x34 */ s32 alpha;
/* 0x38 */ Color_RGB8 primCol;
/* 0x38 */ Color_RGB8 envCol;
/* 0x3B */ Color_RGB8 envCol;
/* 0x3E */ char unk_3E[2];
} DebuffFXData; // size = 0x40
@ -1024,12 +1024,12 @@ typedef struct AuraFXData {
} AuraFXData; // size = 0x70
typedef struct BulbGlowFXData {
/* 0x00 */ s32 unk_00;
/* 0x00 */ s32 type;
/* 0x04 */ Vec3f pos;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s32 unk_1C;
/* 0x10 */ s32 brightness;
/* 0x14 */ s32 timeLeft;
/* 0x18 */ s32 lifetime;
/* 0x1C */ s32 depthQueryID;
/* 0x20 */ s32 unk_20;
} BulbGlowFXData; // size = 0x24

View File

@ -1851,7 +1851,7 @@ enum TargetFlags {
TARGET_FLAG_200000 = 0x00200000,
TARGET_FLAG_400000 = 0x00400000,
TARGET_FLAG_800000 = 0x00800000,
TARGET_FLAG_80000000 = 0x80000000,
TARGET_FLAG_OVERRIDE = 0x80000000, // skip choosing a target
};
enum ActorPartTargetFlags {
@ -3310,7 +3310,7 @@ enum ActorPartFlags {
ACTOR_PART_FLAG_200000 = 0x00200000,
ACTOR_PART_FLAG_400000 = 0x00400000,
ACTOR_PART_FLAG_MULTI_TARGET = 0x00800000, ///< Can be targeted with multi-target attacks (e.g. Star Storm).
ACTOR_PART_FLAG_1000000 = 0x01000000,
ACTOR_PART_FLAG_HAS_PAL_EFFECT = 0x01000000,
ACTOR_PART_FLAG_2000000 = 0x02000000,
ACTOR_PART_FLAG_4000000 = 0x04000000,
ACTOR_PART_FLAG_8000000 = 0x08000000,
@ -4061,8 +4061,8 @@ enum BattleMessages {
BTL_MSG_STAR_POWER_FILLED = 0x1C,
BTL_MSG_ATTACK_UP = 0x1D,
BTL_MSG_DEFENCE_UP = 0x1E,
BTL_MSG_1F = 0x1F,
BTL_MSG_20 = 0x20,
BTL_MSG_HEAL_ONE = 0x1F,
BTL_MSG_HEAL_ALL = 0x20,
BTL_MSG_ENEMY_TRANSPARENT = 0x21,
BTL_MSG_ENEMY_CHARGED = 0x22,
BTL_MSG_PARTNER_INJURED = 0x23,

View File

@ -310,10 +310,10 @@ ApiStatus func_8027D434(Evt* script, s32 isInitialCall);
ApiStatus func_8026F1A0(Evt* script, s32 isInitialCall);
ApiStatus PlayLoopingSoundAtActor(Evt* script, s32 isInitialCall);
ApiStatus StopLoopingSoundAtActor(Evt* script, s32 isInitialCall);
ApiStatus func_8026ED20(Evt* script, s32 isInitialCall);
ApiStatus EnableActorPaletteEffects(Evt* script, s32 isInitialCall);
ApiStatus SetActorPaletteSwapParams(Evt* script, s32 isInitialCall);
ApiStatus BattleCamTargetActorPart(Evt* script, s32 isInitialCall);
ApiStatus func_802537C0(Evt* script, s32 isInitialCall);
ApiStatus GetDarknessStatus(Evt* script, s32 isInitialCall);
ApiStatus CancelEnemyTurn(Evt* script, s32 isInitialCall);
ApiStatus GetAnimatedNodeRotation(Evt* script, s32 isInitialCall);
ApiStatus GetAnimatedNodePosition(Evt* script, s32 isInitialCall);

View File

@ -13,7 +13,7 @@ extern s16 D_802809F6;
extern s16 DemoBattleBeginDelay;
extern s32 BattleScreenFadeAmt;
extern EvtScript EVS_OnBattleInit;
extern s32 D_80281454[];
extern s32 bActorsIgnoreDuringCount[];
extern EvtScript EVS_Mario_OnActorCreate;
extern EvtScript EVS_Peach_OnActorCreate;
@ -343,7 +343,7 @@ void btl_state_update_normal_start(void) {
for (i = 0; i < BattleEnemiesCreated; i++) {
create_actor(&(*battle->formation)[i]);
types = D_80281454;
types = bActorsIgnoreDuringCount;
actor = battleStatus->enemyActors[i];
while (TRUE) {

File diff suppressed because it is too large Load Diff

View File

@ -342,7 +342,6 @@ ApiStatus EnableBattleFloorReflections(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
ApiStatus SetDarknessMode(Evt* script, s32 isInitialCall) {
BattleStatus* battleStatus = &gBattleStatus;
Bytecode* args = script->ptrReadPos;
@ -366,25 +365,25 @@ ApiStatus SetDarknessMode(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
ApiStatus func_802537C0(Evt* script, s32 isInitialCall) {
ApiStatus GetDarknessStatus(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 a0 = *args++;
s32 a1 = *args++;
u8 t1;
f32 t2;
s32 t3;
s32 out1 = *args++;
s32 out2 = *args++;
u8 type;
f32 amt;
s32 isLight;
// While loop may not be necessary in the future
do { get_screen_overlay_params(SCREEN_LAYER_BACK, &t1, &t2); } while (0);
do { get_screen_overlay_params(SCREEN_LAYER_BACK, &type, &amt); } while (0);
if (t2 < 128.0f) {
t3 = 0;
if (amt < 128.0f) {
isLight = FALSE;
} else {
t3 = 1;
isLight = TRUE;
}
evt_set_variable(script, a0, 1);
evt_set_variable(script, a1, t3);
evt_set_variable(script, out1, SCREEN_LAYER_BACK);
evt_set_variable(script, out2, isLight);
return ApiStatus_DONE2;
}

View File

@ -1056,10 +1056,10 @@ void appendGfx_npc_actor(b32 isPartner, s32 actorIndex) {
}
palChanged = TRUE;
}
if ((!palChanged) && !(part->flags & ACTOR_PART_FLAG_1000000)) {
if (!palChanged && !(part->flags & ACTOR_PART_FLAG_HAS_PAL_EFFECT)) {
set_actor_pal_adjustment(actor, PAL_ADJUST_NONE);
}
if ((!decorChanged) && !(part->flags & ACTOR_PART_FLAG_1000000)) {
if (!decorChanged && !(part->flags & ACTOR_PART_FLAG_HAS_PAL_EFFECT)) {
func_80266EE8(actor, UNK_PAL_EFFECT_0);
}
if (actor->flags & ACTOR_FLAG_4000000) {

View File

@ -88,7 +88,7 @@ void create_target_list(Actor* actor, s32 arg1) {
s32 row;
s32 skip;
if (battleStatus->curTargetListFlags & TARGET_FLAG_80000000) {
if (battleStatus->curTargetListFlags & TARGET_FLAG_OVERRIDE) {
actor->targetListLength = -1;
return;
}
@ -247,7 +247,7 @@ void create_target_list(Actor* actor, s32 arg1) {
if (targetData->actorID == ACTOR_PLAYER || targetData->actorID == ACTOR_PARTNER) {
continue;
}
if (battleStatus->curTargetListFlags & TARGET_FLAG_80000000) {
if (battleStatus->curTargetListFlags & TARGET_FLAG_OVERRIDE) {
skip = TRUE;
goto END2;
}

View File

@ -301,7 +301,7 @@ BSS s32 D_802ACC60;
BSS s32 D_802ACC64;
BSS s32 D_802ACC68;
BSS s32 D_802ACC6C;
BSS s32 D_802ACC70[24];
BSS s32 BattleMenu_TargetHudElems[24];
BSS PopupMenu D_802ACCD0;
BSS s8 BattleMenuState;
BSS s8 D_802AD001;
@ -4911,7 +4911,7 @@ void btl_state_update_select_target(void) {
}
}
if (battleStatus->curTargetListFlags & TARGET_FLAG_80000000) {
if (battleStatus->curTargetListFlags & TARGET_FLAG_OVERRIDE) {
if (!(gBattleStatus.flags1 & BS_FLAGS1_PARTNER_ACTING)) {
gBattleSubState = battleStatus->acceptTargetMenuSubstate;
if (gBattleStatus.flags2 & BS_FLAGS2_PEACH_BATTLE) {
@ -4955,7 +4955,7 @@ void btl_state_update_select_target(void) {
for (i = 0; i < targetListLength; i++) {
id = hud_element_create(&HES_HandPointDownLoop);
D_802ACC70[i] = id;
BattleMenu_TargetHudElems[i] = id;
hud_element_set_render_depth(id, 0);
hud_element_set_render_pos(id, 0, -100);
}
@ -5009,7 +5009,7 @@ void btl_state_update_select_target(void) {
target = &actor->targetData[targetIndexList[selectedTargetIndex]];
actorFlags = get_actor(target->actorID)->flags;
id = D_802ACC70[0];
id = BattleMenu_TargetHudElems[0];
if (actorFlags & ACTOR_FLAG_UPSIDE_DOWN) {
hud_element_set_script(id, &HES_HandPointLeftLoop);
@ -5027,7 +5027,7 @@ void btl_state_update_select_target(void) {
actor->targetActorID = target->actorID;
actor->targetPartIndex = target->partID;
for (i = 0; i < targetListLength; i++) {
hud_element_free(D_802ACC70[i]);
hud_element_free(BattleMenu_TargetHudElems[i]);
}
if (!(gBattleStatus.flags1 & BS_FLAGS1_PARTNER_ACTING)) {
@ -5050,7 +5050,7 @@ void btl_state_update_select_target(void) {
break;
case BTL_SUBSTATE_SELECT_TARGET_CANCEL:
for (i = 0; i < targetListLength; i++) {
hud_element_free(D_802ACC70[i]);
hud_element_free(BattleMenu_TargetHudElems[i]);
}
gBattleStatus.flags1 |= BS_FLAGS1_10000 | BS_FLAGS1_MENU_OPEN;
actor->flags |= ACTOR_FLAG_8000000;
@ -5122,7 +5122,7 @@ void btl_state_draw_select_target(void) {
if (battleStatus->curTargetListFlags & TARGET_FLAG_ENEMY) {
target = &actor->targetData[targetIndexList[selectedTargetIndex]];
anotherActor = get_actor(target->actorID);
id = D_802ACC70[0];
id = BattleMenu_TargetHudElems[0];
targetX = target->posA.x;
targetY = target->posA.y;
targetZ = target->posA.z;
@ -5150,7 +5150,7 @@ void btl_state_draw_select_target(void) {
for (i = 0; i < targetListLength; i++) {
target = &actor->targetData[targetIndexList[i]];
anotherActor = get_actor(target->actorID);
id = D_802ACC70[i];
id = BattleMenu_TargetHudElems[i];
targetX = target->posA.x;
targetY = target->posA.y;
targetZ = target->posA.z;

View File

@ -2,8 +2,8 @@
#include "effects.h"
#include "battle/battle.h"
extern s32 D_8029FBD0;
extern s8 D_8029FBD4;
extern s32 IsGroupHeal;
extern s8 ApplyingBuff;
s32 count_targets(Actor* actor, s32 targetHomeIndex, s32 targetSelectionFlags) {
BattleStatus* battleStatus = &gBattleStatus;
@ -2655,7 +2655,7 @@ ApiStatus SetActorPaletteSwapParams(Evt* script, s32 isInitialCall) {
return ApiStatus_DONE2;
}
ApiStatus func_8026ED20(Evt* script, s32 isInitialCall) {
ApiStatus EnableActorPaletteEffects(Evt* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 actorID = evt_get_variable(script, *args++);
s32 partID = evt_get_variable(script, *args++);
@ -2670,9 +2670,9 @@ ApiStatus func_8026ED20(Evt* script, s32 isInitialCall) {
actorPart = get_actor_part(actor, partID);
if (enable) {
actorPart->flags |= ACTOR_FLAG_1000000;
actorPart->flags |= ACTOR_PART_FLAG_HAS_PAL_EFFECT;
} else {
actorPart->flags &= ~ACTOR_FLAG_1000000;
actorPart->flags &= ~ACTOR_PART_FLAG_HAS_PAL_EFFECT;
}
return ApiStatus_DONE2;
@ -3231,7 +3231,7 @@ ApiStatus BoostAttack(Evt* script, s32 isInitialCall) {
if (actor->flags & ACTOR_FLAG_UPSIDE_DOWN) {
btl_cam_set_zoffset(0);
}
D_8029FBD4 = 1;
ApplyingBuff = TRUE;
script->functionTemp[3] = 5;
script->functionTemp[0] = 1;
}
@ -3312,11 +3312,11 @@ ApiStatus BoostAttack(Evt* script, s32 isInitialCall) {
script->functionTemp[3]--;
break;
}
if ((actor->handleEventScript == NULL) || !does_script_exist(actor->handleEventScriptID)) {
D_8029FBD4 = 0;
return ApiStatus_DONE2;
if ((actor->handleEventScript != NULL) && does_script_exist(actor->handleEventScriptID)) {
break;
}
break;
ApplyingBuff = FALSE;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
@ -3355,7 +3355,7 @@ ApiStatus BoostDefense(Evt* script, s32 isInitialCall) {
btl_cam_set_zoffset(0);
}
D_8029FBD4 = 1;
ApplyingBuff = TRUE;
script->functionTemp[3] = 5;
script->functionTemp[0] = 1;
}
@ -3436,11 +3436,11 @@ ApiStatus BoostDefense(Evt* script, s32 isInitialCall) {
script->functionTemp[3]--;
break;
}
if ((actor->handleEventScript == NULL) || !does_script_exist(actor->handleEventScriptID)) {
D_8029FBD4 = 0;
return ApiStatus_DONE2;
if ((actor->handleEventScript != NULL) && does_script_exist(actor->handleEventScriptID)) {
break;
}
break;
ApplyingBuff = FALSE;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
@ -3477,7 +3477,7 @@ ApiStatus VanishActor(Evt* script, s32 isInitialCall) {
btl_cam_set_zoffset(0);
}
D_8029FBD4 = 1;
ApplyingBuff = TRUE;
script->functionTemp[3] = 5;
script->functionTemp[0] = 1;
}
@ -3501,7 +3501,7 @@ ApiStatus VanishActor(Evt* script, s32 isInitialCall) {
if (script->functionTemp[3] == 0) {
fx_radial_shimmer(3, x, y, z, 1.0f, 30);
btl_cam_use_preset_immediately(BTL_CAM_PRESET_19);
script->functionTemp[3] = 0x1E;
script->functionTemp[3] = 30;
script->functionTemp[0] = 2;
} else {
script->functionTemp[3]--;
@ -3513,7 +3513,7 @@ ApiStatus VanishActor(Evt* script, s32 isInitialCall) {
dispatch_event_actor(actor, EVENT_RECEIVE_BUFF);
btl_cam_use_preset(BTL_CAM_DEFAULT);
btl_cam_move(15);
inflict_status(actor, 0xE, vanished);
inflict_status(actor, STATUS_KEY_TRANSPARENT, vanished);
script->functionTemp[3] = 15;
script->functionTemp[0] = 3;
} else {
@ -3542,11 +3542,11 @@ ApiStatus VanishActor(Evt* script, s32 isInitialCall) {
script->functionTemp[3]--;
break;
}
if ((actor->handleEventScript == NULL) || !does_script_exist(actor->handleEventScriptID)) {
D_8029FBD4 = 0;
return ApiStatus_DONE2;
if ((actor->handleEventScript != NULL) && does_script_exist(actor->handleEventScriptID)) {
break;
}
break;
ApplyingBuff = FALSE;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
@ -3583,7 +3583,7 @@ ApiStatus ElectrifyActor(Evt* script, s32 isInitialCall) {
btl_cam_set_zoffset(0);
}
D_8029FBD4 = 1;
ApplyingBuff = TRUE;
script->functionTemp[3] = 5;
script->functionTemp[0] = 1;
}
@ -3607,7 +3607,7 @@ ApiStatus ElectrifyActor(Evt* script, s32 isInitialCall) {
if (script->functionTemp[3] == 0) {
fx_snaking_static(8, x, y, z, 1.0f, 30);
btl_cam_use_preset_immediately(BTL_CAM_PRESET_19);
script->functionTemp[3] = 0x1E;
script->functionTemp[3] = 30;
script->functionTemp[0] = 2;
} else {
script->functionTemp[3]--;
@ -3619,7 +3619,7 @@ ApiStatus ElectrifyActor(Evt* script, s32 isInitialCall) {
dispatch_event_actor(actor, EVENT_RECEIVE_BUFF);
btl_cam_use_preset(BTL_CAM_DEFAULT);
btl_cam_move(15);
inflict_status(actor, 0xB, electrified);
inflict_status(actor, STATUS_KEY_STATIC, electrified);
script->functionTemp[3] = 15;
script->functionTemp[0] = 3;
} else {
@ -3648,11 +3648,11 @@ ApiStatus ElectrifyActor(Evt* script, s32 isInitialCall) {
script->functionTemp[3]--;
break;
}
if ((actor->handleEventScript == NULL) || !does_script_exist(actor->handleEventScriptID)) {
D_8029FBD4 = 0;
return ApiStatus_DONE2;
if ((actor->handleEventScript != NULL) && does_script_exist(actor->handleEventScriptID)) {
break;
}
break;
ApplyingBuff = FALSE;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
@ -3678,7 +3678,7 @@ ApiStatus HealActor(Evt* script, s32 isInitialCall) {
actorID = script->owner1.enemyID;
}
hpBoost = evt_get_variable(script, *args++);
D_8029FBD0 = evt_get_variable(script, *args++);
IsGroupHeal = evt_get_variable(script, *args++);
actor = get_actor(actorID);
script->functionTempPtr[1] = actor;
script->functionTemp[2] = hpBoost;
@ -3689,7 +3689,7 @@ ApiStatus HealActor(Evt* script, s32 isInitialCall) {
btl_cam_move(10);
func_8024E60C();
D_8029FBD4 = 1;
ApplyingBuff = TRUE;
script->functionTemp[3] = 5;
script->functionTemp[0] = 1;
}
@ -3750,9 +3750,9 @@ ApiStatus HealActor(Evt* script, s32 isInitialCall) {
break;
case 3:
if (script->functionTemp[3] == 0) {
message = 0x20;
if (D_8029FBD0 == 0) {
message = 0x1F;
message = BTL_MSG_HEAL_ALL;
if (!IsGroupHeal) {
message = BTL_MSG_HEAL_ONE;
}
btl_show_variable_battle_message(message, 60, hpBoost);
script->functionTemp[0] = 4;
@ -3772,17 +3772,21 @@ ApiStatus HealActor(Evt* script, s32 isInitialCall) {
script->functionTemp[3]--;
break;
}
if ((actor->handleEventScript == NULL) || !does_script_exist(actor->handleEventScriptID)) {
D_8029FBD4 = 0;
return ApiStatus_DONE2;
if ((actor->handleEventScript != NULL) && does_script_exist(actor->handleEventScriptID)) {
break;
}
break;
ApplyingBuff = FALSE;
return ApiStatus_DONE2;
}
return ApiStatus_BLOCK;
}
ApiStatus WaitForBuffDone(Evt* script, s32 isInitialCall) {
return (D_8029FBD4 == 0) * ApiStatus_DONE2;
if (!ApplyingBuff) {
return ApiStatus_DONE2;
} else {
return ApiStatus_BLOCK;
}
}
ApiStatus CopyBuffs(Evt* script, s32 isInitialCall) {

View File

@ -82,8 +82,8 @@ void* actionCommandDmaTable[] = {
BSS s32 sMashMeterSmoothDivisor;
BSS s32 D_8029FBC4_pad[3];
// TODO move to actor_api
BSS s32 D_8029FBD0;
BSS s8 D_8029FBD4;
BSS s32 IsGroupHeal;
BSS s8 ApplyingBuff;
BSS s32 D_8029FBD8_pad[2];
#include "action_cmd.h"

View File

@ -1,191 +0,0 @@
#ifndef _ACTOR_LEVELS_H_
#define _ACTOR_LEVELS_H_
#define ACTOR_LEVEL_NONE 99
#define ACTOR_LEVEL_GOOMBA 5
#define ACTOR_LEVEL_PARAGOOMBA 6
#define ACTOR_LEVEL_SPIKED_GOOMBA 6
#define ACTOR_LEVEL_RED_GOOMBA_BOSS 20
#define ACTOR_LEVEL_BLUE_GOOMBA_BOSS 20
#define ACTOR_LEVEL_GOOMBA_KING 49
#define ACTOR_LEVEL_GOOMNUT_TREE 1
#define ACTOR_LEVEL_GOOMBARIO_TUTOR1 99
#define ACTOR_LEVEL_MAGIKOOPA_BOSS 32
#define ACTOR_LEVEL_FLYING_MAGIKOOPA_BOSS 32
#define ACTOR_LEVEL_KOOPA_TROOPA 6
#define ACTOR_LEVEL_PARATROOPA 6
#define ACTOR_LEVEL_FUZZY 6
#define ACTOR_LEVEL_BOB_OMB 6
#define ACTOR_LEVEL_BILL_BLASTER 10
#define ACTOR_LEVEL_BULLET_BILL 5
#define ACTOR_LEVEL_FAKE_BOWSER 0
#define ACTOR_LEVEL_RED_NINJAKOOPA 17
#define ACTOR_LEVEL_BLACK_NINJAKOOPA 17
#define ACTOR_LEVEL_GREEN_NINJAKOOPA 16
#define ACTOR_LEVEL_YELLOW_NINJAKOOPA 16
#define ACTOR_LEVEL_ELDSTAR 99
#define ACTOR_LEVEL_MONTY_MOLE 8
#define ACTOR_LEVEL_MONTY_HOLE 9
#define ACTOR_LEVEL_CLEFT 10
#define ACTOR_LEVEL_WHACKA 0
#define ACTOR_LEVEL_BUZZAR 35
#define ACTOR_LEVEL_BANDIT 9
#define ACTOR_LEVEL_POKEY 9
#define ACTOR_LEVEL_POKEY_MUMMY 10
#define ACTOR_LEVEL_BUZZY_BEETLE 10
#define ACTOR_LEVEL_SWOOPER 10
#define ACTOR_LEVEL_STONE_CHOMP 14
#define ACTOR_LEVEL_TUTANKOOPA 55
#define ACTOR_LEVEL_CHOMP 14
#define ACTOR_LEVEL_GLOOMBA 11
#define ACTOR_LEVEL_PARAGLOOMBA 11
#define ACTOR_LEVEL_SPIKED_GLOOMBA 12
#define ACTOR_LEVEL_DARK_KOOPA 18
#define ACTOR_LEVEL_DARK_PARATROOPA 18
#define ACTOR_LEVEL_BLOOPER_BABY 0
#define ACTOR_LEVEL_BLOOPER 44
#define ACTOR_LEVEL_ELECTRO_BLOOPER1 50
#define ACTOR_LEVEL_SUPER_BLOOPER1 65
#define ACTOR_LEVEL_FOREST_FUZZY 11
#define ACTOR_LEVEL_PIRANHA_PLANT 11
#define ACTOR_LEVEL_HYPER_GOOMBA 12
#define ACTOR_LEVEL_HYPER_PARAGOOMBA 12
#define ACTOR_LEVEL_HYPER_CLEFT 15
#define ACTOR_LEVEL_CLUBBA 13
#define ACTOR_LEVEL_TUBBA_BLUBBA_INVINCIBLE 70
#define ACTOR_LEVEL_TUBBA_BLUBBA 0
#define ACTOR_LEVEL_TUBBA_HEART 0
#define ACTOR_LEVEL_SHY_GUY 14
#define ACTOR_LEVEL_SKY_GUY 14
#define ACTOR_LEVEL_MEDI_GUY 14
#define ACTOR_LEVEL_GROOVE_GUY 15
#define ACTOR_LEVEL_PYRO_GUY 15
#define ACTOR_LEVEL_SPY_GUY 15
#define ACTOR_LEVEL_ANTI_GUY 42
#define ACTOR_LEVEL_SLOT_MACHINE_STOP 99
#define ACTOR_LEVEL_SLOT_MACHINE_START 99
#define ACTOR_LEVEL_BIG_LANTERN_GHOST 42
#define ACTOR_LEVEL_GENERAL_GUY 73
#define ACTOR_LEVEL_LIGHT_BULB 0
#define ACTOR_LEVEL_TOY_TANK 0
#define ACTOR_LEVEL_SHY_SQUAD 0
#define ACTOR_LEVEL_STILT_GUY 0
#define ACTOR_LEVEL_SHY_STACK 0
#define ACTOR_LEVEL_SIGNAL_GUY 0
#define ACTOR_LEVEL_SHY_SQUAD_DUP 0
#define ACTOR_LEVEL_SHY_GUY_DUP 0
#define ACTOR_LEVEL_FUZZIPEDE 43
#define ACTOR_LEVEL_JUNGLE_FUZZY 16
#define ACTOR_LEVEL_SPEAR_GUY 16
#define ACTOR_LEVEL_HURT_PLANT 16
#define ACTOR_LEVEL_M_BUSH 16
#define ACTOR_LEVEL_PUTRID_PIRANHA 17
#define ACTOR_LEVEL_LAVA_BUBBLE 17
#define ACTOR_LEVEL_SPIKE_TOP 17
#define ACTOR_LEVEL_LAVA_PIRANHA_PHASE_1 45
#define ACTOR_LEVEL_LAVA_BUD_PHASE_1 0
#define ACTOR_LEVEL_PETIT_PIRANHA_BOMB 0
#define ACTOR_LEVEL_PETIT_PIRANHA 0
#define ACTOR_LEVEL_BZZAP 19
#define ACTOR_LEVEL_CRAZEE_DAYZEE 19
#define ACTOR_LEVEL_AMAZY_DAYZEE 100
#define ACTOR_LEVEL_MONTY_MOLE_BOSS 19
#define ACTOR_LEVEL_RUFF_PUFF 19
#define ACTOR_LEVEL_LAKITU 20
#define ACTOR_LEVEL_SPINY 19
#define ACTOR_LEVEL_SPIKE 40
#define ACTOR_LEVEL_HUFF_N_PUFF 80
#define ACTOR_LEVEL_TUFF_PUFF 0
#define ACTOR_LEVEL_FROST_PIRANHA 22
#define ACTOR_LEVEL_GULPIT 22
#define ACTOR_LEVEL_GULPIT_ROCKS 0
#define ACTOR_LEVEL_MONSTAR 45
#define ACTOR_LEVEL_SWOOPULA 22
#define ACTOR_LEVEL_WHITE_CLUBBA 23
#define ACTOR_LEVEL_DUPLIGHOST 23
#define ACTOR_LEVEL_GHOST_GOOMBARIO 23
#define ACTOR_LEVEL_GHOST_KOOPER 23
#define ACTOR_LEVEL_GHOST_BOMBETTE 23
#define ACTOR_LEVEL_GHOST_PARAKARRY 23
#define ACTOR_LEVEL_GHOST_BOW 23
#define ACTOR_LEVEL_GHOST_WATT 23
#define ACTOR_LEVEL_GHOST_SUSHIE 23
#define ACTOR_LEVEL_GHOST_LAKILESTER 23
#define ACTOR_LEVEL_ALBINO_DINO 23
#define ACTOR_LEVEL_CRYSTAL_KING 85
#define ACTOR_LEVEL_CRYSTAL_BIT 0
#define ACTOR_LEVEL_CRYSTAL_CLONE 0
#define ACTOR_LEVEL_EMBER 24
#define ACTOR_LEVEL_KOOPATROL 25
#define ACTOR_LEVEL_BONY_BEETLE 25
#define ACTOR_LEVEL_HAMMER_BROS 27
#define ACTOR_LEVEL_BOMBSHELL_BLASTER 27
#define ACTOR_LEVEL_BOMBSHELL_BILL 24
#define ACTOR_LEVEL_DRY_BONES 30
#define ACTOR_LEVEL_MAGIKOOPA 26
#define ACTOR_LEVEL_FLYING_MAGIKOOPA 26
#define ACTOR_LEVEL_MAGICLONE 26
#define ACTOR_LEVEL_FLYING_MAGICLONE 26
#define ACTOR_LEVEL_WHITE_MAGIKOOPA 21
#define ACTOR_LEVEL_GRAY_MAGIKOOPA 21
#define ACTOR_LEVEL_RED_MAGIKOOPA 21
#define ACTOR_LEVEL_YELLOW_MAGIKOOPA 21
#define ACTOR_LEVEL_GREEN_MAGIKOOPA 21
#define ACTOR_LEVEL_FLYING_WHITE_MAGIKOOPA 21
#define ACTOR_LEVEL_FLYING_GRAY_MAGIKOOPA 21
#define ACTOR_LEVEL_FLYING_RED_MAGIKOOPA 21
#define ACTOR_LEVEL_FLYING_YELLOW_MAGIKOOPA 21
#define ACTOR_LEVEL_FLYING_GREEN_MAGIKOOPA 21
#define ACTOR_LEVEL_KAMMY_KOOPA 99
#define ACTOR_LEVEL_INTRO_BOWSER 0
#define ACTOR_LEVEL_HALLWAY_BOWSER 100
#define ACTOR_LEVEL_FINAL_BOWSER_1 0
#define ACTOR_LEVEL_FINAL_BOWSER_2 0
#define ACTOR_LEVEL_JR_TROOPA_1 41
#define ACTOR_LEVEL_JR_TROOPA_2 44
#define ACTOR_LEVEL_JR_TROOPA_3 52
#define ACTOR_LEVEL_JR_TROOPA_4 59
#define ACTOR_LEVEL_JR_TROOPA_5 65
#define ACTOR_LEVEL_JR_TROOPA_6 74
#define ACTOR_LEVEL_KENT_C_KOOPA 55
#define ACTOR_LEVEL_CHAN 0
#define ACTOR_LEVEL_LEE 0
#define ACTOR_LEVEL_LEE_GOOMBARIO 0
#define ACTOR_LEVEL_LEE_KOOPER 0
#define ACTOR_LEVEL_LEE_BOMBETTE 0
#define ACTOR_LEVEL_LEE_PARAKARRY 0
#define ACTOR_LEVEL_LEE_BOW 0
#define ACTOR_LEVEL_LEE_WATT 0
#define ACTOR_LEVEL_LEE_SUSHIE 0
#define ACTOR_LEVEL_LEE_LAKILESTER 0
#define ACTOR_LEVEL_THE_MASTER_1 0
#define ACTOR_LEVEL_THE_MASTER_2 0
#define ACTOR_LEVEL_THE_MASTER_3 0
#define ACTOR_LEVEL_GOOMBARIO 0
#define ACTOR_LEVEL_KOOPER 0
#define ACTOR_LEVEL_BOMBETTE 0
#define ACTOR_LEVEL_PARAKARRY 0
#define ACTOR_LEVEL_BOW 0
#define ACTOR_LEVEL_WATT 0
#define ACTOR_LEVEL_SUSHIE 0
#define ACTOR_LEVEL_LAKILESTER 0
#define ACTOR_LEVEL_TWINK 0
#endif _ACTOR_LEVELS_H_

2336
src/battle/actors.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1456,15 +1456,15 @@ EvtScript N(EVS_Attack_BodySlam) = {
EVT_DIV(LVar0, LVar1)
EVT_SWITCH(LVar0)
EVT_CASE_LE(20)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 8, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_SHOCK_CONTACT, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CASE_LE(40)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 8, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_SHOCK_CONTACT, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CASE_LE(60)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 8, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_SHOCK_CONTACT, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CASE_LE(80)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 8, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_SHOCK_CONTACT, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CASE_DEFAULT
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 8, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_SHOCK_CONTACT, 0, DMG_SLAM, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_END_SWITCH
EVT_SWITCH(LVar0)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)

View File

@ -419,9 +419,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_HitTypeFlags, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_IsClone, FALSE)
@ -443,9 +443,9 @@ EvtScript N(EVS_Flying_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Flying_HandleEvent)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_HitTypeFlags, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_IsClone, FALSE)
@ -1503,14 +1503,14 @@ EvtScript N(EVS_Move_TryBoostAttack) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), LVar0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(GetActorAttackBoost, LVar0, LVar4)
EVT_IF_LT(LVar4, MAX_ATTACK_BOOST)
EVT_SET(LVar8, LVar0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1521,7 +1521,7 @@ EvtScript N(EVS_Move_TryBoostAttack) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)
@ -1616,14 +1616,14 @@ EvtScript N(EVS_Move_TryBoostDefense) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), LVar0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(GetActorDefenseBoost, LVar0, LVar4)
EVT_IF_LT(LVar4, MAX_DEFENSE_BOOST)
EVT_SET(LVar8, LVar0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1634,7 +1634,7 @@ EvtScript N(EVS_Move_TryBoostDefense) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)
@ -1729,14 +1729,14 @@ EvtScript N(EVS_Move_TryElectrify) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), 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, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1747,7 +1747,7 @@ EvtScript N(EVS_Move_TryElectrify) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)
@ -1847,14 +1847,14 @@ EvtScript N(EVS_Move_TryTransparent) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), 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, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1865,7 +1865,7 @@ EvtScript N(EVS_Move_TryTransparent) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)

View File

@ -1,213 +1,213 @@
#include "animation_script.h"
#include "mapfs/omo_bt07_shape.h"
StaticAnimatorNode N(8021A2A0) = {
StaticAnimatorNode N(Node02) = {
.pos = { 79.0f, 47.0f, 0.0f },
.vertexStartOffset = -1,
.modelID = 29,
.modelID = MODEL_tanp,
};
StaticAnimatorNode N(8021A2CC) = {
StaticAnimatorNode N(Node23) = {
.pos = { 80.0f, 15.0f, 0.0f },
.sibling = &N(8021A2A0),
.sibling = &N(Node02),
.vertexStartOffset = -1,
.modelID = 32,
.modelID = MODEL_h2,
};
StaticAnimatorNode N(8021A2F8) = {
StaticAnimatorNode N(Node22) = {
.pos = { 79.0f, 20.0f, 30.0f },
.sibling = &N(8021A2CC),
.sibling = &N(Node23),
.vertexStartOffset = -1,
.modelID = 34,
.modelID = MODEL_sya2,
};
StaticAnimatorNode N(8021A324) = {
StaticAnimatorNode N(Node21) = {
.pos = { 80.0f, 20.0f, 30.0f },
.sibling = &N(8021A2F8),
.sibling = &N(Node22),
.vertexStartOffset = -1,
.modelID = 35,
.modelID = MODEL_h3,
};
StaticAnimatorNode N(8021A350) = {
StaticAnimatorNode N(Node20) = {
.pos = { 80.0f, 20.0f, -29.0f },
.sibling = &N(8021A324),
.sibling = &N(Node21),
.vertexStartOffset = -1,
.modelID = 37,
.modelID = MODEL_n2,
};
StaticAnimatorNode N(8021A37C) = {
StaticAnimatorNode N(Node19) = {
.pos = { 79.0f, 20.0f, -30.0f },
.sibling = &N(8021A350),
.sibling = &N(Node20),
.vertexStartOffset = -1,
.modelID = 38,
.modelID = MODEL_h4,
};
StaticAnimatorNode N(8021A3A8) = {
StaticAnimatorNode N(Node18) = {
.rot = { 0, 0, -6 },
.pos = { 97.0f, 73.0f, 0.0f },
.sibling = &N(8021A37C),
.sibling = &N(Node19),
.vertexStartOffset = -1,
.modelID = 40,
.modelID = MODEL_kyu2,
};
StaticAnimatorNode N(8021A3D4) = {
StaticAnimatorNode N(Node17) = {
.rot = { 0, 0, -6 },
.pos = { 97.0f, 73.0f, 0.0f },
.sibling = &N(8021A3A8),
.sibling = &N(Node18),
.vertexStartOffset = -1,
.modelID = 41,
.modelID = MODEL_kyu1,
};
StaticAnimatorNode N(8021A400) = {
StaticAnimatorNode N(Node16) = {
.rot = { 0, 0, -6 },
.pos = { 97.0f, 73.0f, 0.0f },
.sibling = &N(8021A3D4),
.sibling = &N(Node17),
.vertexStartOffset = -1,
.modelID = 42,
.modelID = MODEL_kyu,
};
StaticAnimatorNode N(8021A42C) = {
StaticAnimatorNode N(Node15) = {
.rot = { 0, 0, -6 },
.pos = { 97.0f, 55.0f, 0.0f },
.sibling = &N(8021A400),
.sibling = &N(Node16),
.vertexStartOffset = -1,
.modelID = 44,
.modelID = MODEL_en2,
};
StaticAnimatorNode N(8021A458) = {
StaticAnimatorNode N(Node14) = {
.rot = { 0, 0, -6 },
.pos = { 97.0f, 54.0f, 0.0f },
.sibling = &N(8021A42C),
.sibling = &N(Node15),
.vertexStartOffset = -1,
.modelID = 45,
.modelID = MODEL_en,
};
StaticAnimatorNode N(8021A484) = {
StaticAnimatorNode N(Node13) = {
.pos = { 112.0f, 48.0f, 0.0f },
.sibling = &N(8021A458),
.sibling = &N(Node14),
.vertexStartOffset = -1,
.modelID = 47,
.modelID = MODEL_nob,
};
StaticAnimatorNode N(8021A4B0) = {
StaticAnimatorNode N(Node12) = {
.rot = { 0, 0, -16383 },
.pos = { 77.0f, 60.0f, 0.0f },
.sibling = &N(8021A484),
.sibling = &N(Node13),
.vertexStartOffset = -1,
.modelID = 49,
.modelID = MODEL_futa,
};
StaticAnimatorNode N(8021A4DC) = {
StaticAnimatorNode N(Node11) = {
.rot = { 0, 0, 5469 },
.pos = { 60.0f, 9.0f, 34.0f },
.sibling = &N(8021A4B0),
.sibling = &N(Node12),
.vertexStartOffset = -1,
.modelID = 52,
.modelID = MODEL_a1,
};
StaticAnimatorNode N(8021A508) = {
StaticAnimatorNode N(Node10) = {
.rot = { 0, 0, 5469 },
.pos = { 60.0f, 9.0f, 34.0f },
.sibling = &N(8021A4DC),
.sibling = &N(Node11),
.vertexStartOffset = -1,
.modelID = 51,
.modelID = MODEL_n3,
};
StaticAnimatorNode N(8021A534) = {
StaticAnimatorNode N(Node09) = {
.rot = { 0, 0, 5708 },
.pos = { 100.0f, 10.0f, 34.0f },
.sibling = &N(8021A508),
.sibling = &N(Node10),
.vertexStartOffset = -1,
.modelID = 55,
.modelID = MODEL_a2,
};
StaticAnimatorNode N(8021A560) = {
StaticAnimatorNode N(Node08) = {
.rot = { 0, 0, 5708 },
.pos = { 100.0f, 10.0f, 34.0f },
.sibling = &N(8021A534),
.sibling = &N(Node09),
.vertexStartOffset = -1,
.modelID = 54,
.modelID = MODEL_n4,
};
StaticAnimatorNode N(8021A58C) = {
StaticAnimatorNode N(Node07) = {
.rot = { 0, 0, 5708 },
.pos = { 59.0f, 9.0f, -34.0f },
.sibling = &N(8021A560),
.sibling = &N(Node08),
.vertexStartOffset = -1,
.modelID = 57,
.modelID = MODEL_n5,
};
StaticAnimatorNode N(8021A5B8) = {
StaticAnimatorNode N(Node06) = {
.rot = { 0, 0, 5708 },
.pos = { 59.0f, 9.0f, -34.0f },
.sibling = &N(8021A58C),
.sibling = &N(Node07),
.vertexStartOffset = -1,
.modelID = 58,
.modelID = MODEL_a3,
};
StaticAnimatorNode N(8021A5E4) = {
StaticAnimatorNode N(Node05) = {
.rot = { 0, 0, 5708 },
.pos = { 100.0f, 9.0f, -34.0f },
.sibling = &N(8021A5B8),
.sibling = &N(Node06),
.vertexStartOffset = -1,
.modelID = 60,
.modelID = MODEL_n6,
};
StaticAnimatorNode N(8021A610) = {
StaticAnimatorNode N(Node04) = {
.rot = { 0, 0, 5708 },
.pos = { 100.0f, 9.0f, -34.0f },
.sibling = &N(8021A5E4),
.sibling = &N(Node05),
.vertexStartOffset = -1,
.modelID = 61,
.modelID = MODEL_a4,
};
StaticAnimatorNode N(8021A63C) = {
StaticAnimatorNode N(Node03) = {
.pos = { 65.0f, 46.0f, 0.0f },
.sibling = &N(8021A610),
.sibling = &N(Node04),
.vertexStartOffset = -1,
.modelID = 63,
.modelID = MODEL_g106,
};
StaticAnimatorNode N(8021A668) = {
StaticAnimatorNode N(Node01) = {
.pos = { 79.0f, 47.0f, 0.0f },
.sibling = &N(8021A63C),
.sibling = &N(Node03),
.vertexStartOffset = -1,
.modelID = 30,
.modelID = MODEL_h1,
};
StaticAnimatorNode N(8021A694) = {
.child = &N(8021A668),
StaticAnimatorNode N(Root) = {
.child = &N(Node01),
};
StaticAnimatorNode* toy_tank_model[] = {
&N(8021A694),
&N(8021A668),
&N(8021A2A0),
&N(8021A63C),
&N(8021A610),
&N(8021A5E4),
&N(8021A5B8),
&N(8021A58C),
&N(8021A560),
&N(8021A534),
&N(8021A508),
&N(8021A4DC),
&N(8021A4B0),
&N(8021A484),
&N(8021A458),
&N(8021A42C),
&N(8021A400),
&N(8021A3D4),
&N(8021A3A8),
&N(8021A37C),
&N(8021A350),
&N(8021A324),
&N(8021A2F8),
&N(8021A2CC),
&N(Root),
&N(Node01),
&N(Node02),
&N(Node03),
&N(Node04),
&N(Node05),
&N(Node06),
&N(Node07),
&N(Node08),
&N(Node09),
&N(Node10),
&N(Node11),
&N(Node12),
&N(Node13),
&N(Node14),
&N(Node15),
&N(Node16),
&N(Node17),
&N(Node18),
&N(Node19),
&N(Node20),
&N(Node21),
&N(Node22),
&N(Node23),
NULL,
};
AnimScript toy_tank_as_shake = {
AnimScript AS_ToyTank_Shake = {
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
as_SetScale(1, 1.0, 1.0, 1.0)
@ -1356,7 +1356,7 @@ AnimScript toy_tank_as_shake = {
as_End
};
AnimScript toy_tank_as_fall_apart = {
AnimScript AS_ToyTank_FallApart = {
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
as_SetScale(1, 1.0, 1.0, 1.0)
@ -1928,7 +1928,7 @@ AnimScript toy_tank_as_fall_apart = {
as_End
};
AnimScript toy_tank_as_close_hatch = {
AnimScript AS_ToyTank_CloseHatch = {
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
as_SetScale(1, 1.0, 1.0, 1.0)
@ -2922,7 +2922,7 @@ AnimScript toy_tank_as_close_hatch = {
as_End
};
AnimScript toy_tank_as_open_hatch = {
AnimScript AS_ToyTank_OpenHatch = {
as_DisableMirroring
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
@ -3088,7 +3088,7 @@ AnimScript toy_tank_as_open_hatch = {
as_End
};
AnimScript toy_tank_as_5 = {
AnimScript AS_ToyTank_Unused1 = {
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
as_SetScale(1, 1.0, 1.0, 1.0)
@ -3702,7 +3702,7 @@ AnimScript toy_tank_as_5 = {
as_End
};
AnimScript toy_tank_as_move_forward = {
AnimScript AS_ToyTank_MoveForward = {
as_DisableMirroring
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
@ -7139,7 +7139,7 @@ AnimScript toy_tank_as_move_forward = {
as_End
};
AnimScript toy_tank_as_7 = {
AnimScript AS_ToyTank_Unused2 = {
as_SetRotation(0, 0.0, 0.0, 0.0)
as_SetPos(0, 0, 0, 0)
as_SetScale(0, 1.0, 1.0, 1.0)
@ -7753,7 +7753,7 @@ AnimScript toy_tank_as_7 = {
as_End
};
AnimScript toy_tank_as_idle = {
AnimScript AS_ToyTank_Idle = {
as_SetRotation(1, 0.0, 0.0, 0.0)
as_SetPos(1, 0, 0, 0)
as_SetScale(1, 1.0, 1.0, 1.0)

View File

@ -0,0 +1,49 @@
#ifndef _GENERAL_GUY_COMMON_H_
#define _GENERAL_GUY_COMMON_H_
#include "mapfs/omo_bt07_shape.h"
enum N(BattleCommon) {
ACTOR_GENERAL = ACTOR_ENEMY0,
ACTOR_TANK = ACTOR_ENEMY1,
ACTOR_BULB = ACTOR_ENEMY2,
ACTOR_WAVE_A = ACTOR_ENEMY3,
ACTOR_WAVE_B = ACTOR_ENEMY4,
// actor vars for general guy
AVAR_General_DoingTankPhase = 0,
AVAR_General_Flags = 1,
AVAR_GeneralFlag_SquadFled = 0x1,
AVAR_GeneralFlag_ComplainElectric = 0x2,
AVAR_GeneralFlag_ComplainUnfair = 0x4,
AVAR_GeneralFlag_ComplainGeneric = 0x8,
AVAR_General_WavesDefeated = 2,
// actor vars for the toy tank
AVAR_Tank_ShouldTetherGeneral = 0,
AVAR_Tank_SquadPhase = 1,
AVAL_SquadPhase_Init = 0,
AVAL_SquadPhase_Defeated = 1,
AVAL_SquadPhase_Done = 2,
AVAL_SquadPhase_Next = 3, // next wave (stilt guys) have arrived
AVAR_Tank_StiltPhase = 2,
AVAL_StiltPhase_Init = 0,
AVAL_StiltPhase_1 = 1,
AVAL_StiltPhase_Defeated = 2,
AVAL_StiltPhase_Done = 3,
AVAL_StiltPhase_Next = 4, // next wave (shy stacks) have arrived
AVAR_Tank_StackPhase = 3,
AVAL_StackPhase_Init = 0,
AVAL_StackPhase_1 = 1,
AVAL_StackPhase_Defeated = 2,
AVAL_StackPhase_Done = 3,
AVAR_Tank_UnusedPhase = 4,
AVAL_UnusedPhase_Init = 0,
AVAL_UnusedPhase_Defeated = 1,
AVAL_UnusedPhase_Done = 2,
AVAR_Tank_BulbGlowEffect = 5,
AVAR_Tank_UsingBulbAttack = 6, // indicates bulb is glowing (not really used)
AVAR_Tank_ModulateDarkness = 7, // have darkness controlled by Watt and the bulb (unused)
AVAR_Tank_DarknessAmt = 8,
AVAR_Tank_HandlingEvent = 9,
};
#endif // _GENERAL_GUY_COMMON_H_

View File

@ -5,41 +5,36 @@
#include "sprite/npc/GeneralGuy.h"
#include "sprite/npc/GeneralGuyBomb.h"
#include "battle/area/omo2/actor/boss_common.h"
#define NAMESPACE b_area_omo2_general_guy
extern ActorBlueprint b_area_omo2_1_shy_squad;
extern AnimScript toy_tank_as_close_hatch;
extern AnimScript toy_tank_as_open_hatch;
extern AnimScript AS_ToyTank_CloseHatch;
extern AnimScript AS_ToyTank_OpenHatch;
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(attack_throw_bomb);
extern EvtScript N(attack_lightning_shot);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Attack_ThrowBomb);
extern EvtScript N(EVS_Attack_ShootLightning);
extern s32 N(DefaultAnims)[];
extern s32 N(IdleAnimations_bomb)[];
extern Formation N(formation_shy_squad);
extern s32 N(BombAnims)[];
extern Formation N(ShySquadFormation);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
PRT_2 = 2,
};
enum N(ActorVars) {
AVAR_Unk_0 = 0,
AVAR_Unk_1 = 1,
AVAR_Unk_2 = 2,
AVAR_Unk_6 = 6,
AVAR_Unk_7 = 7,
PRT_MAIN = 1,
PRT_BOMB = 2,
};
enum N(ActorParams) {
DMG_UNK = 0,
DMG_BOMB_TOSS = 4,
DMG_LIGHTNING_PLAYER = 5,
DMG_LIGHTNING_PARTNER = 2,
};
#include "common/FadeBackgroundDarken.inc.c"
#include "common/FadeBackgroundLighten.inc.c"
s32 N(DefenseTable)[] = {
@ -87,11 +82,11 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION | ACTOR_PART_FLAG_20000000,
.index = PRT_2,
.index = PRT_BOMB,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 0 },
.opacity = 255,
.idleAnimations = N(IdleAnimations_bomb),
.idleAnimations = N(BombAnims),
.defenseTable = N(DefenseTable),
.eventFlags = 0,
.elementImmunityFlags = 0,
@ -137,12 +132,13 @@ s32 N(DefaultAnims)[] = {
STATUS_END,
};
s32 N(IdleAnimations_bomb)[] = {
s32 N(BombAnims)[] = {
STATUS_KEY_NORMAL, ANIM_GeneralGuyBomb_Anim00,
STATUS_END,
};
s32 N(IdleAnimations3)[] = {
// unused
s32 N(PanicAnims)[] = {
STATUS_KEY_NORMAL, ANIM_GeneralGuy_Anim0E,
STATUS_KEY_POISON, ANIM_GeneralGuy_Anim0E,
STATUS_KEY_STOP, ANIM_GeneralGuy_Anim00,
@ -175,19 +171,19 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_0, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_1, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_2, 0)
EVT_CALL(LoadBattleSection, 41)
EVT_CALL(SummonEnemy, EVT_PTR(N(formation_shy_squad)), TRUE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_General_DoingTankPhase, FALSE)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_General_Flags, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_General_WavesDefeated, 0)
EVT_CALL(LoadBattleSection, BTL_AREA_OMO2_1)
EVT_CALL(SummonEnemy, EVT_PTR(N(ShySquadFormation)), TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(EVS_Idle) = {
EVT_LABEL(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
@ -285,27 +281,27 @@ EvtScript N(EVS_HandleEvent) = {
};
EvtScript N(EVS_TakeTurn) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Unk_0, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_General_DoingTankPhase, LVar0)
EVT_IF_FALSE(LVar0)
EVT_RETURN
EVT_END_IF
EVT_CALL(ActorExists, ACTOR_ENEMY2, LVar0)
EVT_IF_NE(LVar0, FALSE)
EVT_CALL(ActorExists, ACTOR_BULB, LVar0)
EVT_IF_TRUE(LVar0)
EVT_CALL(GetStatusFlags, ACTOR_PARTNER, LVar0)
EVT_IF_NOT_FLAG(LVar0, STATUS_FLAG_KO)
EVT_CALL(RandInt, 100, LVar0)
EVT_IF_LT(LVar0, 60)
EVT_EXEC_WAIT(N(attack_lightning_shot))
EVT_EXEC_WAIT(N(EVS_Attack_ShootLightning))
EVT_RETURN
EVT_END_IF
EVT_END_IF
EVT_END_IF
EVT_EXEC_WAIT(N(attack_throw_bomb))
EVT_EXEC_WAIT(N(EVS_Attack_ThrowBomb))
EVT_RETURN
EVT_END
};
EvtScript N(attack_throw_bomb) = {
EvtScript N(EVS_Attack_ThrowBomb) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
@ -319,87 +315,87 @@ EvtScript N(attack_throw_bomb) = {
EVT_CALL(MoveBattleCamOver, 30)
EVT_END_THREAD
EVT_WAIT(5)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206A)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim0B)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_open_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206A)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim0B)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_OpenHatch))
EVT_WAIT(20)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GeneralGuy_Anim0B)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 8)
EVT_ADD(LVar1, 27)
EVT_SUB(LVar2, 4)
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_2, LVar0, LVar1, LVar2)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_2, ANIM_GeneralGuyBomb_Anim00)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_BOMB, LVar0, LVar1, LVar2)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_BOMB, ANIM_GeneralGuyBomb_Anim00)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BOMB, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_WAIT(15)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GeneralGuy_Anim0A)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BOMB, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_WAIT(6)
EVT_CALL(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 8)
EVT_ADD(LVar1, 20)
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_2, LVar0, LVar1, LVar2)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_2, ANIM_GeneralGuyBomb_Anim01)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(SetPartPos, ACTOR_SELF, PRT_BOMB, LVar0, LVar1, LVar2)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_BOMB, ANIM_GeneralGuyBomb_Anim01)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BOMB, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, 4, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(HIT_RESULT_MISS)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_2, SOUND_02F9)
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_BOMB, SOUND_02F9)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 120)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_2, EVT_FLOAT(12.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_2, EVT_FLOAT(0.1))
EVT_CALL(JumpPartTo, ACTOR_SELF, PRT_2, LVar0, LVar1, LVar2, 0, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(12.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(0.1))
EVT_CALL(JumpPartTo, ACTOR_SELF, PRT_BOMB, LVar0, LVar1, LVar2, 0, TRUE)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BOMB, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_CASE_EQ(HIT_RESULT_LUCKY)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_2, SOUND_02F9)
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_BOMB, SOUND_02F9)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 50)
EVT_SET(LVar1, -5)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_2, EVT_FLOAT(14.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_2, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_2, LVar0, LVar1, LVar2, 0, 30, EASING_LINEAR)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(14.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_BOMB, LVar0, LVar1, LVar2, 0, 30, EASING_LINEAR)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
EVT_SUB(LVar0, 65)
EVT_SET(LVar1, -5)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_2, EVT_FLOAT(6.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_2, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_2, LVar0, LVar1, LVar2, 0, 15, EASING_LINEAR)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(6.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_BOMB, LVar0, LVar1, LVar2, 0, 15, EASING_LINEAR)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BOMB, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_SWITCH
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_2, SOUND_02F9)
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_BOMB, SOUND_02F9)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_2, EVT_FLOAT(14.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_2, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_2, LVar0, LVar1, LVar2, 0, 15, EASING_LINEAR)
EVT_CALL(SetPartMoveSpeed, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(14.0))
EVT_CALL(SetPartJumpGravity, ACTOR_SELF, PRT_BOMB, EVT_FLOAT(0.1))
EVT_CALL(FlyPartTo, ACTOR_SELF, PRT_BOMB, LVar0, LVar1, LVar2, 0, 15, EASING_LINEAR)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_PLAY_EFFECT(EFFECT_BIG_SMOKE_PUFF, LVar0, LVar1, LVar2, 0, 0, 0, 0, 0)
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, PRT_2, SOUND_BOMB_BLAST)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_2, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlaySoundAtPart, ACTOR_SELF, PRT_BOMB, SOUND_BOMB_BLAST)
EVT_CALL(SetPartFlagBits, ACTOR_SELF, PRT_BOMB, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_WAIT(2)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_BLAST | DAMAGE_TYPE_NO_CONTACT, 0, 0, 4, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_BLAST | DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_BOMB_TOSS, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
@ -407,25 +403,25 @@ EvtScript N(attack_throw_bomb) = {
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_WAIT(30)
EVT_IF_EQ(LVarF, HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_RETURN
EVT_END_IF
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
EvtScript N(attack_lightning_shot) = {
EvtScript N(EVS_Attack_ShootLightning) = {
EVT_CALL(UseIdleAnimation, ACTOR_SELF, FALSE)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
@ -437,24 +433,24 @@ EvtScript N(attack_lightning_shot) = {
EVT_CALL(SetBattleCamOffsetZ, 30)
EVT_CALL(MoveBattleCamOver, 40)
EVT_WAIT(40)
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206A)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim0B)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_open_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206A)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim0B)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, FALSE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_OpenHatch))
EVT_WAIT(10)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_7, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_ModulateDarkness, LVar0)
EVT_IF_TRUE(LVar0)
EVT_CALL(SetDarknessMode, BTL_DARKNESS_MODE_2)
EVT_END_IF
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GeneralGuy_Anim03)
EVT_WAIT(20)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_6, 1)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_UsingBulbAttack, TRUE)
EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT)
EVT_CALL(MoveBattleCamOver, 30)
EVT_THREAD
EVT_CALL(N(FadeBackgroundDarken))
EVT_END_THREAD
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_THREAD
EVT_LOOP(4)
EVT_CALL(PlaySoundAtActor, LVar8, SOUND_ELECTRIC_BUZZ)
@ -469,7 +465,7 @@ EvtScript N(attack_lightning_shot) = {
EVT_SWITCH(LVar0)
EVT_CASE_EQ(HIT_RESULT_MISS)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, 0, LVar5)
EVT_CALL(PlaySound, SOUND_2069)
@ -478,34 +474,34 @@ EvtScript N(attack_lightning_shot) = {
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_IF_NE(LVar0, HIT_RESULT_MISS)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
EVT_CALL(PlaySound, SOUND_2069)
EVT_PLAY_EFFECT(EFFECT_LIGHTNING_BOLT, 0, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, EVT_FLOAT(1.0), 18, 0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_6, 0)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_UsingBulbAttack, FALSE)
EVT_WAIT(12)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_LIGHTNING_PARTNER, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_ELSE
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_6, 0)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_UsingBulbAttack, FALSE)
EVT_WAIT(20)
EVT_END_IF
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_7, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_ModulateDarkness, LVar0)
EVT_IF_TRUE(LVar0)
EVT_CALL(SetDarknessMode, BTL_DARKNESS_MODE_3)
EVT_END_IF
EVT_CALL(N(FadeBackgroundLighten))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_CASE_EQ(HIT_RESULT_LUCKY)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, 0, LVar5)
EVT_CALL(PlaySound, SOUND_2069)
@ -513,80 +509,78 @@ EvtScript N(attack_lightning_shot) = {
EVT_WAIT(12)
EVT_CALL(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, 0, LVar5)
EVT_CALL(PlaySound, SOUND_2069)
EVT_PLAY_EFFECT(EFFECT_LIGHTNING_BOLT, 0, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, EVT_FLOAT(1.0), 18, 0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_6, 0)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_UsingBulbAttack, FALSE)
EVT_WAIT(12)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_7, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_ModulateDarkness, LVar0)
EVT_IF_TRUE(LVar0)
EVT_CALL(SetDarknessMode, BTL_DARKNESS_MODE_3)
EVT_END_IF
EVT_CALL(N(FadeBackgroundLighten))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END_SWITCH
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
EVT_CALL(PlaySound, SOUND_2069)
EVT_PLAY_EFFECT(EFFECT_LIGHTNING_BOLT, 0, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, EVT_FLOAT(1.0), 18, 0)
EVT_WAIT(12)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, 5, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_LIGHTNING_PLAYER, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_SWITCH(LVarF)
EVT_CASE_OR_EQ(HIT_RESULT_HIT)
EVT_CASE_OR_EQ(HIT_RESULT_NO_DAMAGE)
EVT_CASE_OR_EQ(HIT_RESULT_10)
EVT_CALL(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_IF_EQ(LVarF, HIT_RESULT_10)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_6, 0)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_UsingBulbAttack, FALSE)
EVT_WAIT(30)
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_RETURN
EVT_END_IF
EVT_END_CASE_GROUP
EVT_END_SWITCH
EVT_CALL(SetTargetActor, ACTOR_SELF, ACTOR_PARTNER)
EVT_CALL(GetModelCenter, 39)
EVT_CALL(GetModelCenter, MODEL_kyu3)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(GetGoalPos, ACTOR_SELF, LVar3, LVar4, LVar5)
EVT_CALL(PlaySound, SOUND_2069)
EVT_PLAY_EFFECT(EFFECT_LIGHTNING_BOLT, 0, LVar0, LVar1, LVar2, LVar3, LVar4, LVar5, EVT_FLOAT(1.0), 18, 0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_6, 0)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_UsingBulbAttack, FALSE)
EVT_WAIT(12)
EVT_CALL(SetGoalToTarget, ACTOR_SELF)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, 2, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_7, LVar0)
EVT_IF_NE(LVar0, 0)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_SHOCK | DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_LIGHTNING_PARTNER, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_ModulateDarkness, LVar0)
EVT_IF_TRUE(LVar0)
EVT_CALL(SetDarknessMode, BTL_DARKNESS_MODE_3)
EVT_END_IF
EVT_CALL(N(FadeBackgroundLighten))
EVT_CALL(SetAnimation, ACTOR_ENEMY0, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_ENEMY0, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlaySoundAtPart, ACTOR_ENEMY0, PRT_MAIN, SOUND_206B)
EVT_CALL(SetAnimation, ACTOR_GENERAL, PRT_MAIN, ANIM_GeneralGuy_Anim02)
EVT_CALL(SetPartFlagBits, ACTOR_GENERAL, PRT_MAIN, ACTOR_PART_FLAG_INVISIBLE, TRUE)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_CALL(PlaySoundAtPart, ACTOR_GENERAL, PRT_MAIN, SOUND_206B)
EVT_CALL(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
EVT_CALL(UseIdleAnimation, ACTOR_SELF, TRUE)
EVT_RETURN
EVT_END
};
Vec3i N(summon_pos) = { 240, 0, 0 };
Vec3i N(SummonPos) = { 240, 0, 0 };
Formation N(formation_shy_squad) = {
ACTOR_BY_POS(b_area_omo2_1_shy_squad, N(summon_pos), 100)
Formation N(ShySquadFormation) = {
ACTOR_BY_POS(b_area_omo2_1_shy_squad, N(SummonPos), 100)
};

View File

@ -3,42 +3,31 @@
#include "effects.h"
#include "animation_script.h"
#include "battle/area/omo2/actor/boss_common.h"
#define NAMESPACE b_area_omo2_light_bulb
typedef struct IceShardBlueprint {
/* 0x00 */ s32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
} IceShardBlueprint; // size = 0x28
typedef struct BulbFragment {
/* 0x00 */ s32 type;
/* 0x04 */ Vec3f pos;
/* 0x10 */ f32 scale;
/* 0x14 */ s32 duration;
/* 0x18 */ Vec3f vel;
/* 0x24 */ f32 gravAccel;
} BulbFragment; // size = 0x28
extern AnimScript toy_tank_as_close_hatch;
extern AnimScript AS_ToyTank_CloseHatch;
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(onHit);
extern EvtScript N(shake_tank);
extern EvtScript N(onDeath);
extern EvtScript N(EVS_Hit);
extern EvtScript N(EVS_Death);
extern EvtScript N(EVS_ShakeTank);
enum N(ActorPartIDs) {
PRT_MAIN = 1,
};
enum N(ActorVars) {
AVAR_Unk_5 = 5,
AVAR_Unk_9 = 9,
};
enum N(ActorParams) {
DMG_UNK = 0,
PRT_MAIN = 1,
};
s32 N(DefenseTable)[] = {
@ -132,34 +121,34 @@ EvtScript N(EVS_HandleEvent) = {
EVT_CALL(GetLastEvent, ACTOR_SELF, LVar0)
EVT_SWITCH(LVar0)
EVT_CASE_EQ(EVENT_HIT_COMBO)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_CASE_OR_EQ(EVENT_HIT)
EVT_CASE_OR_EQ(EVENT_BURN_HIT)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_HIT)
EVT_EXEC_WAIT(N(onHit))
EVT_EXEC_WAIT(N(EVS_Hit))
EVT_CASE_EQ(EVENT_ZERO_DAMAGE)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_9, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_HandlingEvent, LVar0)
EVT_IF_FALSE(LVar0)
EVT_CALL(func_8026E914, LVar0, LVar1)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_WAIT(30)
EVT_END_IF
EVT_CASE_EQ(EVENT_IMMUNE)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_9, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_HandlingEvent, LVar0)
EVT_IF_FALSE(LVar0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_WAIT(30)
EVT_END_IF
EVT_CASE_EQ(EVENT_AIR_LIFT_FAILED)
EVT_CASE_OR_EQ(EVENT_DEATH)
EVT_CASE_OR_EQ(EVENT_BURN_DEATH)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_END_CASE_GROUP
EVT_CASE_EQ(EVENT_SPIN_SMASH_DEATH)
EVT_EXEC_WAIT(N(onDeath))
EVT_EXEC_WAIT(N(EVS_Death))
EVT_RETURN
EVT_CASE_EQ(EVENT_SPIKE_CONTACT)
EVT_CASE_EQ(EVENT_BURN_CONTACT)
@ -177,228 +166,168 @@ EvtScript N(EVS_TakeTurn) = {
EVT_END
};
EvtScript N(onHit) = {
EVT_EXEC_WAIT(N(shake_tank))
EvtScript N(EVS_Hit) = {
EVT_EXEC_WAIT(N(EVS_ShakeTank))
EVT_RETURN
EVT_END
};
EvtScript N(shake_tank) = {
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_9, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(toy_tank_as_close_hatch))
EvtScript N(EVS_ShakeTank) = {
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_HandlingEvent, LVar0)
EVT_IF_FALSE(LVar0)
EVT_CALL(PlayModelAnimation, 0, EVT_PTR(AS_ToyTank_CloseHatch))
EVT_WAIT(30)
EVT_END_IF
EVT_RETURN
EVT_END
};
API_CALLABLE(func_80218250_52B8F0) {
API_CALLABLE(N(SpawnShatterFX)) {
s32 i;
IceShardBlueprint bpArray[] = {
BulbFragment shards[] = {
{
.unk_00 = 1,
.unk_04 = 117.0f,
.unk_08 = 102.0f,
.unk_0C = 0.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.3f,
.unk_1C = 0.7f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
.type = 1,
.pos = { 117.0f, 102.0f, 0.0f },
.vel = { 0.3f, 0.7f, 0.0f },
.scale = 0.2f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 82.0f,
.unk_0C = 11.0f,
.unk_10 = 0.5f,
.unk_14 = 20,
.unk_18 = 0.3f,
.unk_1C = 0.9f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 117.0f, 82.0f, 11.0f },
.vel = { 0.3f, 0.9f, 0.1f },
.scale = 0.5f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 92.0f,
.unk_0C = 14.0f,
.unk_10 = 0.4f,
.unk_14 = 20,
.unk_18 = 0.3f,
.unk_1C = 0.8f,
.unk_20 = 0.3f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 117.0f, 92.0f, 14.0f },
.vel = { 0.3f, 0.8f, 0.3f },
.scale = 0.4f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 1,
.unk_04 = 125.0f,
.unk_08 = 82.0f,
.unk_0C = 0.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.5f,
.unk_1C = 0.9f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
.type = 1,
.pos = { 125.0f, 82.0f, 0.0f },
.vel = { 0.5f, 0.9f, 0.0f },
.scale = 0.2f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 108.0f,
.unk_08 = 82.0f,
.unk_0C = 0.0f,
.unk_10 = 0.3f,
.unk_14 = 20,
.unk_18 = -0.2f,
.unk_1C = 0.9f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 108.0f, 82.0f, 0.0f },
.vel = { -0.2f, 0.9f, 0.0f },
.scale = 0.3f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 105.0f,
.unk_08 = 92.0f,
.unk_0C = 0.0f,
.unk_10 = 0.4f,
.unk_14 = 20,
.unk_18 = -0.1f,
.unk_1C = 0.8f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 105.0f, 92.0f, 0.0f },
.vel = { -0.1f, 0.8f, 0.0f },
.scale = 0.4f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 1,
.unk_04 = 127.0f,
.unk_08 = 92.0f,
.unk_0C = 0.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.7f,
.unk_1C = 0.8f,
.unk_20 = 0.0f,
.unk_24 = -0.3f,
.type = 1,
.pos = { 127.0f, 92.0f, 0.0f },
.vel = { 0.7f, 0.8f, 0.0f },
.scale = 0.2f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 97.0f,
.unk_0C = 7.0f,
.unk_10 = 0.1f,
.unk_14 = 20,
.unk_18 = 0.7f,
.unk_1C = 0.8f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 117.0f, 97.0f, 7.0f },
.vel = { 0.7f, 0.8f, 0.2f },
.scale = 0.1f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 117.0f,
.unk_08 = 87.0f,
.unk_0C = 7.0f,
.unk_10 = 0.3f,
.unk_14 = 20,
.unk_18 = 0.7f,
.unk_1C = 0.8f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 117.0f, 87.0f, 7.0f },
.vel = { 0.7f, 0.8f, 0.2f },
.scale = 0.3f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 111.0f,
.unk_08 = 97.0f,
.unk_0C = 3.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.0f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 111.0f, 97.0f, 3.0f },
.vel = { 0.0f, 1.0f, 0.1f },
.scale = 0.2f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 111.0f,
.unk_08 = 92.0f,
.unk_0C = 7.0f,
.unk_10 = 0.1f,
.unk_14 = 20,
.unk_18 = 0.0f,
.unk_1C = 1.0f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 111.0f, 92.0f, 7.0f },
.vel = { 0.0f, 1.0f, 0.2f },
.scale = 0.1f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 111.0f,
.unk_08 = 87.0f,
.unk_0C = 3.0f,
.unk_10 = 0.5f,
.unk_14 = 20,
.unk_18 = 0.0f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 111.0f, 87.0f, 3.0f },
.vel = { 0.0f, 1.0f, 0.1f },
.scale = 0.5f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 1,
.unk_04 = 123.0f,
.unk_08 = 97.0f,
.unk_0C = 3.0f,
.unk_10 = 0.2f,
.unk_14 = 20,
.unk_18 = 0.1f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
.type = 1,
.pos = { 123.0f, 97.0f, 3.0f },
.vel = { 0.1f, 1.0f, 0.1f },
.scale = 0.2f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 123.0f,
.unk_08 = 92.0f,
.unk_0C = 7.0f,
.unk_10 = 0.4f,
.unk_14 = 20,
.unk_18 = 0.1f,
.unk_1C = 1.0f,
.unk_20 = 0.2f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 123.0f, 92.0f, 7.0f },
.vel = { 0.1f, 1.0f, 0.2f },
.scale = 0.4f,
.duration = 20,
.gravAccel = -0.3f,
},
{
.unk_00 = 0,
.unk_04 = 123.0f,
.unk_08 = 87.0f,
.unk_0C = 3.0f,
.unk_10 = 0.3f,
.unk_14 = 20,
.unk_18 = 0.1f,
.unk_1C = 1.0f,
.unk_20 = 0.1f,
.unk_24 = -0.3f,
.type = 0,
.pos = { 123.0f, 87.0f, 3.0f },
.vel = { 0.1f, 1.0f, 0.1f },
.scale = 0.3f,
.duration = 20,
.gravAccel = -0.3f,
},
};
for (i = 0; i < ARRAY_COUNT(bpArray); i++) {
EffectInstance* effect = fx_ice_shard(bpArray[i].unk_00, bpArray[i].unk_04, bpArray[i].unk_08,
bpArray[i].unk_0C, bpArray[i].unk_10, bpArray[i].unk_14);
effect->data.iceShard->vel.x = bpArray[i].unk_18;
effect->data.iceShard->vel.y = bpArray[i].unk_1C;
effect->data.iceShard->vel.z = bpArray[i].unk_20;
effect->data.iceShard->gravAccel = bpArray[i].unk_24;
for (i = 0; i < ARRAY_COUNT(shards); i++) {
EffectInstance* effect = fx_ice_shard(shards[i].type, shards[i].pos.x, shards[i].pos.y,
shards[i].pos.z, shards[i].scale, shards[i].duration);
effect->data.iceShard->vel.x = shards[i].vel.x;
effect->data.iceShard->vel.y = shards[i].vel.y;
effect->data.iceShard->vel.z = shards[i].vel.z;
effect->data.iceShard->gravAccel = shards[i].gravAccel;
}
return ApiStatus_DONE2;
}
EvtScript N(onDeath) = {
EVT_CALL(PlaySoundAtActor, ACTOR_ENEMY2, SOUND_03AE)
EVT_CALL(func_80218250_52B8F0)
EVT_CALL(EnableModel, 39, FALSE)
EVT_CALL(EnableModel, 41, FALSE)
EVT_CALL(GetActorVar, ACTOR_ENEMY1, AVAR_Unk_5, LVar0)
EVT_IF_NE(LVar0, 0)
EvtScript N(EVS_Death) = {
EVT_CALL(PlaySoundAtActor, ACTOR_BULB, SOUND_03AE)
EVT_CALL(N(SpawnShatterFX))
EVT_CALL(EnableModel, MODEL_kyu3, FALSE)
EVT_CALL(EnableModel, MODEL_kyu1, FALSE)
EVT_CALL(GetActorVar, ACTOR_TANK, AVAR_Tank_BulbGlowEffect, LVar0)
EVT_IF_NE(LVar0, NULL)
EVT_CALL(RemoveEffect, LVar0)
EVT_CALL(SetActorVar, ACTOR_ENEMY1, AVAR_Unk_5, 0)
EVT_CALL(SetActorVar, ACTOR_TANK, AVAR_Tank_BulbGlowEffect, NULL)
EVT_END_IF
EVT_CALL(RemoveActor, ACTOR_SELF)
EVT_RETURN

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,8 +8,8 @@
extern s32 N(DefaultAnims)[];
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_HandleEvent);
enum N(ActorPartIDs) {
@ -115,8 +115,8 @@ EvtScript N(EVS_Init) = {
EvtScript N(EVS_Idle) = {
EVT_LABEL(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};

View File

@ -2,27 +2,38 @@
#include "script_api/battle.h"
#include "sprite/npc/TankGuy.h"
#define NAMESPACE b_area_omo2_6_shy_guy_dup
#define NAMESPACE b_area_omo2_6_shy_squad_stub
extern s32 N(DefaultAnims)[];
extern EvtScript N(EVS_Init);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_Idle);
extern EvtScript N(EVS_TakeTurn);
extern EvtScript N(EVS_HandleEvent);
extern EvtScript N(run_to_pos);
extern EvtScript N(EVS_MoveMemberToPos);
enum N(MemberOffsets) {
HOME_OFFSET_X = 0,
HOME_OFFSET_Z = 1,
};
enum N(ActorPartIDs) {
PRT_MAIN = 1,
PRT_2 = 2,
PRT_3 = 3,
PRT_4 = 4,
PRT_5 = 5,
PRT_6 = 6,
PRT_7 = 7,
PRT_8 = 8,
PRT_9 = 9,
PRT_MAIN = 1,
PRT_MEMBER_01 = 2,
PRT_MEMBER_02 = 3,
PRT_MEMBER_03 = 4,
PRT_MEMBER_04 = 5,
PRT_MEMBER_05 = 6,
PRT_MEMBER_06 = 7,
PRT_MEMBER_07 = 8,
PRT_MEMBER_08 = 9,
};
#define NUM_MEMBERS (1 + PRT_MEMBER_08 - PRT_MEMBER_01)
#define LOOP_MEMBERS(idx) \
EVT_SET(idx, PRT_MEMBER_01) \
EVT_LOOP(NUM_MEMBERS)
s32 N(DefenseTable)[] = {
ELEMENT_NORMAL, 0,
ELEMENT_END,
@ -68,7 +79,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_2,
.index = PRT_MEMBER_01,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -80,7 +91,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_3,
.index = PRT_MEMBER_02,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -92,7 +103,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_4,
.index = PRT_MEMBER_03,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -104,7 +115,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_5,
.index = PRT_MEMBER_04,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -116,7 +127,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_6,
.index = PRT_MEMBER_05,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -128,7 +139,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_7,
.index = PRT_MEMBER_06,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -140,7 +151,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_8,
.index = PRT_MEMBER_07,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -152,7 +163,7 @@ ActorPartBlueprint N(ActorParts)[] = {
},
{
.flags = ACTOR_PART_FLAG_NO_TARGET | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION,
.index = PRT_9,
.index = PRT_MEMBER_08,
.posOffset = { 0, 0, 0 },
.targetOffset = { 0, 24 },
.opacity = 255,
@ -166,8 +177,8 @@ ActorPartBlueprint N(ActorParts)[] = {
ActorBlueprint NAMESPACE = {
.flags = ACTOR_FLAG_NO_SHADOW | ACTOR_FLAG_NO_HEALTH_BAR,
.type = ACTOR_TYPE_SHY_GUY_DUP,
.level = ACTOR_LEVEL_SHY_GUY_DUP,
.type = ACTOR_TYPE_SHY_SQUAD_STUB,
.level = ACTOR_LEVEL_SHY_SQUAD_STUB,
.maxHP = 10,
.partCount = ARRAY_COUNT(N(ActorParts)),
.partsData = N(ActorParts),
@ -206,39 +217,38 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_2, 0, 0)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_2, 1, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_3, 0, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_3, 1, -30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_4, 0, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_4, 1, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_5, 0, 20)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_5, 1, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_6, 0, 30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_6, 1, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_7, 0, 30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_7, 1, -30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_8, 0, 40)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_8, 1, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_9, 0, 50)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_9, 1, 10)
EVT_SET(LVar0, 2)
EVT_LOOP(8)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_01, HOME_OFFSET_X, 0)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_01, HOME_OFFSET_Z, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_02, HOME_OFFSET_X, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_02, HOME_OFFSET_Z, -30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_03, HOME_OFFSET_X, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_03, HOME_OFFSET_Z, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_04, HOME_OFFSET_X, 20)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_04, HOME_OFFSET_Z, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_05, HOME_OFFSET_X, 30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_05, HOME_OFFSET_Z, 10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_06, HOME_OFFSET_X, 30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_06, HOME_OFFSET_Z, -30)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_07, HOME_OFFSET_X, 40)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_07, HOME_OFFSET_Z, -10)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_08, HOME_OFFSET_X, 50)
EVT_CALL(SetPartMovementVar, ACTOR_SELF, PRT_MEMBER_08, HOME_OFFSET_Z, 10)
LOOP_MEMBERS(LVar0)
EVT_CALL(SetPartPos, ACTOR_SELF, LVar0, 185, 0, 47)
EVT_ADD(LVar0, 1)
EVT_END_LOOP
EVT_CALL(ForceHomePos, ACTOR_SELF, 20, 0, -10)
EVT_CALL(HPBarToHome, ACTOR_SELF)
EVT_SET(LVar0, 2)
EVT_SET(LVar0, PRT_MEMBER_01)
EVT_SET(LVar1, ANIM_TankGuy_Anim03)
EVT_SET(LVar4, EVT_FLOAT(4.0))
EVT_SET(LVar5, 5)
EVT_LOOP(8)
EVT_LOOP(NUM_MEMBERS)
EVT_THREAD
EVT_CALL(GetPartMovementVar, ACTOR_SELF, LVar0, 0, LVar2)
EVT_CALL(GetPartMovementVar, ACTOR_SELF, LVar0, 1, LVar3)
EVT_CALL(GetPartMovementVar, ACTOR_SELF, LVar0, HOME_OFFSET_X, LVar2)
EVT_CALL(GetPartMovementVar, ACTOR_SELF, LVar0, HOME_OFFSET_Z, LVar3)
EVT_SET(LVar5, 20)
EVT_EXEC_WAIT(N(run_to_pos))
EVT_EXEC_WAIT(N(EVS_MoveMemberToPos))
EVT_CALL(SetAnimation, ACTOR_SELF, LVar0, ANIM_TankGuy_Anim01)
EVT_END_THREAD
EVT_ADD(LVar0, 1)
@ -249,13 +259,13 @@ EvtScript N(EVS_Init) = {
EvtScript N(EVS_Idle) = {
EVT_LABEL(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};
EvtScript N(run_to_pos) = {
EvtScript N(EVS_MoveMemberToPos) = {
EVT_CALL(GetPartOffset, ACTOR_SELF, LVar0, LVar6, 0, LVar7)
EVT_IF_LT(LVar6, LVar2)
EVT_CALL(SetPartYaw, ACTOR_SELF, LVar0, 180)

View File

@ -733,7 +733,7 @@ EvtScript N(EVS_Attack_ChargedDrop) = {
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 16, FALSE, TRUE, FALSE)
EVT_WAIT(2)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_SHOCK, 8, 0, DMG_CHARGED_DROP, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_CALL(EnemyDamageTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_SHOCK, SUPPRESS_EVENT_SHOCK_CONTACT, 0, DMG_CHARGED_DROP, BS_FLAGS1_SP_EVT_ACTIVE)
EVT_IF_NE(LVarF, HIT_RESULT_HIT_STATIC)
EVT_EXEC_WAIT(N(EVS_Discharge))
EVT_END_IF
@ -879,7 +879,7 @@ EvtScript N(EVS_Charge) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_StaticEffect, LVarF)
EVT_CALL(PlaySoundAtActor, ACTOR_SELF, SOUND_CHARGE_LIGHTNING)
EVT_CALL(SetPartEventFlags, ACTOR_SELF, PRT_TARGET, ACTOR_EVENT_FLAG_ATTACK_CHARGED | ACTOR_EVENT_FLAG_ELECTRIFIED)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 1)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, TRUE)
EVT_CALL(SetActorPaletteEffect, ACTOR_SELF, PRT_MAIN, PAL_ADJUST_STATIC)
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(ChargedStatusTable)))
EVT_RETURN
@ -899,7 +899,7 @@ EvtScript N(EVS_Discharge) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_StaticEffect, 0)
EVT_END_IF
EVT_CALL(SetPartEventFlags, ACTOR_SELF, PRT_TARGET, 0)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, FALSE)
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable)))
EVT_RETURN
EVT_END

View File

@ -888,7 +888,7 @@ EvtScript N(EVS_Attack_RageDrop) = {
EvtScript N(EVS_Enrage) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Enraged, TRUE)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 1)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, TRUE)
EVT_CALL(SetActorPaletteSwapParams, ACTOR_SELF, PRT_MAIN, SPR_PAL_Blooper, SPR_PAL_Blooper_Supercharged, 0, 6, 12, 6, 0, 0)
EVT_CALL(SetActorPaletteEffect, ACTOR_SELF, PRT_MAIN, PAL_ADJUST_BLEND_PALETTES_VARYING_INTERVALS)
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(EnragedStatusTable)))
@ -899,7 +899,7 @@ EvtScript N(EVS_Enrage) = {
EvtScript N(EVS_LoseRage) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Enraged, FALSE)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, FALSE)
EVT_CALL(SetStatusTable, ACTOR_SELF, EVT_PTR(N(StatusTable)))
EVT_CALL(SetPartEventBits, ACTOR_SELF, PRT_TARGET, ACTOR_EVENT_FLAG_ATTACK_CHARGED, FALSE)
EVT_RETURN

View File

@ -77,241 +77,22 @@ enum BattlePositions {
BTL_POS_CENTER = 16,
};
typedef enum ActorType {
ACTOR_TYPE_RED_GOOMBA = 0x00,
ACTOR_TYPE_RED_PARAGOOMBA = 0x01,
ACTOR_TYPE_GLOOMBA = 0x02,
ACTOR_TYPE_PARAGLOOMBA = 0x03,
ACTOR_TYPE_SPIKED_GLOOMBA = 0x04,
ACTOR_TYPE_DARK_KOOPA = 0x05,
ACTOR_TYPE_DARK_PARATROOPA = 0x06,
ACTOR_TYPE_GOOMBA = 0x07,
ACTOR_TYPE_PARAGOOMBA = 0x08,
ACTOR_TYPE_SPIKED_GOOMBA = 0x09,
ACTOR_TYPE_FUZZY = 0x0A,
ACTOR_TYPE_KOOPA_TROOPA = 0x0B,
ACTOR_TYPE_PARATROOPA = 0x0C,
ACTOR_TYPE_BOB_OMB = 0x0D,
ACTOR_TYPE_BOB_OMB_DUP = 0x0E,
ACTOR_TYPE_BULLET_BILL = 0x0F,
ACTOR_TYPE_BILL_BLASTER = 0x10,
ACTOR_TYPE_CLEFT = 0x11,
ACTOR_TYPE_MONTY_MOLE = 0x12,
ACTOR_TYPE_BANDIT = 0x13,
ACTOR_TYPE_POKEY = 0x14,
ACTOR_TYPE_POKEY_MUMMY = 0x15,
ACTOR_TYPE_SWOOPER = 0x16,
ACTOR_TYPE_BUZZY_BEETLE = 0x17,
ACTOR_TYPE_STONE_CHOMP = 0x18,
ACTOR_TYPE_PIRANHA_PLANT = 0x19,
ACTOR_TYPE_FOREST_FUZZY = 0x1A,
ACTOR_TYPE_HYPER_GOOMBA = 0x1B,
ACTOR_TYPE_HYPER_PARAGOOMBA = 0x1C,
ACTOR_TYPE_HYPER_CLEFT = 0x1D,
ACTOR_TYPE_CLUBBA = 0x1E,
ACTOR_TYPE_SHY_GUY = 0x1F,
ACTOR_TYPE_GROOVE_GUY = 0x20,
ACTOR_TYPE_SKY_GUY = 0x21,
ACTOR_TYPE_MEDI_GUY = 0x22,
ACTOR_TYPE_PYRO_GUY = 0x23,
ACTOR_TYPE_SPY_GUY = 0x24,
ACTOR_TYPE_FUZZIPEDE = 0x25,
ACTOR_TYPE_HURT_PLANT = 0x26,
ACTOR_TYPE_M_BUSH = 0x27,
ACTOR_TYPE_AQUA_FUZZY = 0x28,
ACTOR_TYPE_JUNGLE_FUZZY = 0x29,
ACTOR_TYPE_SPEAR_GUY = 0x2A,
ACTOR_TYPE_LAVA_BUBBLE = 0x2B,
ACTOR_TYPE_SPIKE_TOP = 0x2C,
ACTOR_TYPE_PUTRID_PIRANHA = 0x2D,
ACTOR_TYPE_LAKITU = 0x2E,
ACTOR_TYPE_SPINY = 0x2F,
ACTOR_TYPE_MONTY_MOLE_BOSS = 0x30,
ACTOR_TYPE_BZZAP = 0x31,
ACTOR_TYPE_CRAZEE_DAYZEE = 0x32,
ACTOR_TYPE_AMAZY_DAYZEE = 0x33,
ACTOR_TYPE_RUFF_PUFF = 0x34,
ACTOR_TYPE_SPIKE = 0x35,
ACTOR_TYPE_GULPIT = 0x36,
ACTOR_TYPE_GULPIT_ROCKS = 0x37,
ACTOR_TYPE_WHITE_CLUBBA = 0x38,
ACTOR_TYPE_FROST_PIRANHA = 0x39,
ACTOR_TYPE_SWOOPULA = 0x3A,
ACTOR_TYPE_DUPLIGHOST = 0x3B,
ACTOR_TYPE_GHOST_GOOMBARIO = 0x3C,
ACTOR_TYPE_GHOST_KOOPER = 0x3D,
ACTOR_TYPE_GHOST_BOMBETTE = 0x3E,
ACTOR_TYPE_GHOST_PARAKARRY = 0x3F,
ACTOR_TYPE_GHOST_BOW = 0x40,
ACTOR_TYPE_GHOST_WATT = 0x41,
ACTOR_TYPE_GHOST_SUSHIE = 0x42,
ACTOR_TYPE_GHOST_LAKILESTER = 0x43,
ACTOR_TYPE_ALBINO_DINO = 0x44,
ACTOR_TYPE_EMBER = 0x45,
ACTOR_TYPE_BONY_BEETLE = 0x46,
ACTOR_TYPE_DRY_BONES = 0x47,
ACTOR_TYPE_DRY_BONES2 = 0x48,
ACTOR_TYPE_BOMBSHELL_BLASTER = 0x49,
ACTOR_TYPE_BOMBSHELL_BILL = 0x4A,
ACTOR_TYPE_HAMMER_BROS = 0x4B,
ACTOR_TYPE_KOOPATROL = 0x4C,
ACTOR_TYPE_MAGIKOOPA = 0x4D,
ACTOR_TYPE_FLYING_MAGIKOOPA = 0x4E,
ACTOR_TYPE_MAGICLONE = 0x4F,
ACTOR_TYPE_FLYING_MAGICLONE = 0x50,
ACTOR_TYPE_RED_MAGIKOOPA = 0x51,
ACTOR_TYPE_FLYING_RED_MAGIKOOPA = 0x52,
ACTOR_TYPE_GREEN_MAGIKOOPA = 0x53,
ACTOR_TYPE_FLYING_GREEN_MAGIKOOPA = 0x54,
ACTOR_TYPE_YELLOW_MAGIKOOPA = 0x55,
ACTOR_TYPE_FLYING_YELLOW_MAGIKOOPA = 0x56,
ACTOR_TYPE_GRAY_MAGIKOOPA = 0x57,
ACTOR_TYPE_FLYING_GRAY_MAGIKOOPA = 0x58,
ACTOR_TYPE_WHITE_MAGIKOOPA = 0x59,
ACTOR_TYPE_FLYING_WHITE_MAGIKOOPA = 0x5A,
ACTOR_TYPE_UNUSED_5B = 0x5B,
ACTOR_TYPE_UNUSED_5C = 0x5C,
ACTOR_TYPE_UNUSED_5D = 0x5D,
ACTOR_TYPE_UNUSED_5E = 0x5E,
ACTOR_TYPE_UNUSED_5F = 0x5F,
ACTOR_TYPE_UNUSED_60 = 0x60,
ACTOR_TYPE_UNUSED_61 = 0x61,
ACTOR_TYPE_UNUSED_62 = 0x62,
ACTOR_TYPE_UNUSED_63 = 0x63,
ACTOR_TYPE_UNUSED_64 = 0x64,
ACTOR_TYPE_UNUSED_65 = 0x65,
ACTOR_TYPE_UNUSED_66 = 0x66,
ACTOR_TYPE_UNUSED_67 = 0x67,
ACTOR_TYPE_UNUSED_68 = 0x68,
ACTOR_TYPE_UNUSED_69 = 0x69,
ACTOR_TYPE_UNUSED_6A = 0x6A,
ACTOR_TYPE_MONTY_HOLE = 0x6B,
ACTOR_TYPE_UNUSED_6C = 0x6C,
ACTOR_TYPE_UNUSED_6D = 0x6D,
ACTOR_TYPE_PLAYER = 0x6E,
ACTOR_TYPE_GOOMBARIO = 0x6F,
ACTOR_TYPE_KOOPER = 0x70,
ACTOR_TYPE_BOMBETTE = 0x71,
ACTOR_TYPE_PARAKARRY = 0x72,
ACTOR_TYPE_BOW = 0x73,
ACTOR_TYPE_WATT = 0x74,
ACTOR_TYPE_SUSHIE = 0x75,
ACTOR_TYPE_LAKILESTER = 0x76,
ACTOR_TYPE_TWINK = 0x77,
ACTOR_TYPE_UNUSED_78 = 0x78,
ACTOR_TYPE_UNUSED_79 = 0x79,
ACTOR_TYPE_THE_MASTER_1 = 0x7A,
ACTOR_TYPE_THE_MASTER_2 = 0x7B,
ACTOR_TYPE_THE_MASTER_3 = 0x7C,
ACTOR_TYPE_CHAN = 0x7D,
ACTOR_TYPE_LEE = 0x7E,
ACTOR_TYPE_LEE_GOOMBARIO = 0x7F,
ACTOR_TYPE_LEE_KOOPER = 0x80,
ACTOR_TYPE_LEE_BOMBETTE = 0x81,
ACTOR_TYPE_LEE_PARAKARRY = 0x82,
ACTOR_TYPE_LEE_BOW = 0x83,
ACTOR_TYPE_LEE_WATT = 0x84,
ACTOR_TYPE_LEE_SUSHIE = 0x85,
ACTOR_TYPE_LEE_LAKILESTER = 0x86,
ACTOR_TYPE_KAMMY_KOOPA = 0x87,
ACTOR_TYPE_JR_TROOPA_1 = 0x88,
ACTOR_TYPE_JR_TROOPA_2 = 0x89,
ACTOR_TYPE_JR_TROOPA_3 = 0x8A,
ACTOR_TYPE_JR_TROOPA_4 = 0x8B,
ACTOR_TYPE_JR_TROOPA_5 = 0x8C,
ACTOR_TYPE_JR_TROOPA_6 = 0x8D,
ACTOR_TYPE_JR_TROOPA_DUP1 = 0x8E,
ACTOR_TYPE_JR_TROOPA_DUP2 = 0x8F,
ACTOR_TYPE_BLUE_GOOMBA_BOSS = 0x90,
ACTOR_TYPE_RED_GOOMBA_BOSS = 0x91,
ACTOR_TYPE_GOOMBA_KING = 0x92,
ACTOR_TYPE_GOOMNUT_TREE = 0x93,
ACTOR_TYPE_GOOMBARIO_TUTOR1 = 0x94,
ACTOR_TYPE_MAGIKOOPA_BOSS = 0x95,
ACTOR_TYPE_FLYING_MAGIKOOPA_BOSS = 0x96,
ACTOR_TYPE_MAGIKOOPA_DUP1 = 0x97,
ACTOR_TYPE_MAGIKOOPA_DUP2 = 0x98,
ACTOR_TYPE_FAKE_BOWSER = 0x99,
ACTOR_TYPE_KOOPA_BROS = 0x9A,
ACTOR_TYPE_GREEN_NINJAKOOPA = 0x9B,
ACTOR_TYPE_RED_NINJAKOOPA = 0x9C,
ACTOR_TYPE_BLACK_NINJAKOOPA = 0x9D,
ACTOR_TYPE_YELLOW_NINJAKOOPA = 0x9E,
ACTOR_TYPE_ELDSTAR = 0x9F,
ACTOR_TYPE_BUZZAR = 0xA0,
ACTOR_TYPE_TUTANKOOPA = 0xA1,
ACTOR_TYPE_CHOMP = 0xA2,
ACTOR_TYPE_TUBBA_BLUBBA_INVINCIBLE = 0xA3,
ACTOR_TYPE_TUBBA_BLUBBA = 0xA4,
ACTOR_TYPE_TUBBA_HEART = 0xA5,
ACTOR_TYPE_STILT_GUY = 0xA6,
ACTOR_TYPE_SHY_STACK = 0xA7,
ACTOR_TYPE_SHY_SQUAD = 0xA8,
ACTOR_TYPE_GENERAL_GUY = 0xA9,
ACTOR_TYPE_TOY_TANK = 0xAA,
ACTOR_TYPE_LIGHT_BULB = 0xAB,
ACTOR_TYPE_SIGNAL_GUY = 0xAC,
ACTOR_TYPE_SHY_SQUAD_DUP = 0xAD,
ACTOR_TYPE_SHY_GUY_DUP = 0xAE,
ACTOR_TYPE_ANTI_GUY_OMO = 0xAF,
ACTOR_TYPE_ANTI_GUY_KPA = 0xB0,
ACTOR_TYPE_BIG_LANTERN_GHOST = 0xB1,
ACTOR_TYPE_GOOMBA_KING_DUP = 0xB2,
ACTOR_TYPE_LAVA_PIRANHA_PHASE_1 = 0xB3,
ACTOR_TYPE_LAVA_PIRANHA_PHASE_2 = 0xB4,
ACTOR_TYPE_LAVA_BUD_PHASE_1 = 0xB5,
ACTOR_TYPE_LAVA_BUD_PHASE_2 = 0xB6,
ACTOR_TYPE_PETIT_PIRANHA = 0xB7,
ACTOR_TYPE_PETIT_PIRANHA_BOMB = 0xB8,
ACTOR_TYPE_KENT_C_KOOPA = 0xB9,
ACTOR_TYPE_HUFF_N_PUFF = 0xBA,
ACTOR_TYPE_TUFF_PUFF = 0xBB,
ACTOR_TYPE_MONSTAR = 0xBC,
ACTOR_TYPE_CRYSTAL_KING = 0xBD,
ACTOR_TYPE_CRYSTAL_CLONE = 0xBE,
ACTOR_TYPE_CRYSTAL_BIT = 0xBF,
ACTOR_TYPE_INTRO_BOWSER = 0xC0,
ACTOR_TYPE_HALLWAY_BOWSER = 0xC1,
ACTOR_TYPE_HALLWAY_BOWSER_DUP = 0xC2,
ACTOR_TYPE_FINAL_BOWSER_1 = 0xC3,
ACTOR_TYPE_FINAL_BOWSER_1_DUP = 0xC4,
ACTOR_TYPE_FINAL_BOWSER_2 = 0xC5,
ACTOR_TYPE_FINAL_BOWSER_2_DUP = 0xC6,
ACTOR_TYPE_BLOOPER = 0xC7,
ACTOR_TYPE_ELECTRO_BLOOPER1 = 0xC8,
ACTOR_TYPE_ELECTRO_BLOOPER2 = 0xC9,
ACTOR_TYPE_SUPER_BLOOPER1 = 0xCA,
ACTOR_TYPE_SUPER_BLOOPER2 = 0xCB,
ACTOR_TYPE_BLOOPER_BABY = 0xCC,
ACTOR_TYPE_LAKILESTER_DUP = 0xCD,
ACTOR_TYPE_SLOT_MACHINE_START = 0xCE,
ACTOR_TYPE_SLOT_MACHINE_STOP = 0xCF,
ACTOR_TYPE_WHACKA = 0xD0,
ACTOR_TYPE_SLOT_MACHINE_START_DUP1 = 0xD1,
ACTOR_TYPE_SLOT_MACHINE_START_DUP2 = 0xD2,
ACTOR_TYPE_SLOT_MACHINE_START_DUP3 = 0xD3,
ACTOR_TYPE_COUNT = 0xD4,
} ActorType;
enum BattleVars {
BTL_VAR_DuplighostCopyFlags = 0, // used by duplighost
BTL_VAL_Duplighost_HasCopied = 0x4,
BTL_VAR_HyperSync = 1,
BTL_VAL_HyperSync_None = 0,
BTL_VAL_HyperSync_Done = 1,
BTL_VAL_HyperSync_Active = 2,
BTL_VAR_UNK_MAGIKOOPA = 2,
BTL_VAR_LastCopiedPartner = 3, // used by duplighost
BTL_VAR_KoopatrolSummonCount_0 = 4, // count summons from Koopatrol and 'children' originally from column 0
BTL_VAR_KoopatrolSummonCount_1 = 5, // count summons from Koopatrol and 'children' originally from column 1
BTL_VAR_KoopatrolSummonCount_2 = 6, // count summons from Koopatrol and 'children' originally from column 2
BTL_VAR_KoopatrolSummonCount_3 = 7, // count summons from Koopatrol and 'children' originally from column 3
BTL_VAR_DuplighostCopyFlags = 0, // used by duplighost
BTL_VAL_Duplighost_HasCopied = 0x4,
BTL_VAR_HyperSync = 1,
BTL_VAL_HyperSync_None = 0,
BTL_VAL_HyperSync_Done = 1,
BTL_VAL_HyperSync_Active = 2,
// index of the last enemy boosted by a magikoopa
// intended to prevent multiple boosts for the same actor in the same turn
// selected enemies go from left to right and are reset if none are found
BTL_VAR_Magikoopa_LastIndexBoosted = 2,
BTL_VAR_LastCopiedPartner = 3, // used by duplighost
BTL_VAR_KoopatrolSummonCount_0 = 4, // count summons from Koopatrol and 'children' originally from column 0
BTL_VAR_KoopatrolSummonCount_1 = 5, // count summons from Koopatrol and 'children' originally from column 1
BTL_VAR_KoopatrolSummonCount_2 = 6, // count summons from Koopatrol and 'children' originally from column 2
BTL_VAR_KoopatrolSummonCount_3 = 7, // count summons from Koopatrol and 'children' originally from column 3
};
// document special actor vars referenced from other actors
@ -459,7 +240,7 @@ typedef struct ActorSounds {
/* 0x18 */ s16 delay[2]; ///< Number of frames to wait between walk/fly sounds. Negative values are in distance.
} ActorSounds; // size = 0x1C
extern ActorSounds bActorSoundTable[ACTOR_TYPE_COUNT];
extern ActorSounds bActorSoundTable[];
typedef struct ActorOffsets {
/* 0x00 */ Vec3b tattleCam;
@ -475,7 +256,7 @@ typedef struct PlayerCelebrationAnimOptions {
extern Battle* gCurrentBattlePtr;
extern ActorOffsets bActorOffsets[ACTOR_TYPE_COUNT];
extern ActorOffsets bActorOffsets[];
void func_80072BCC(s32 arg0);
void load_demo_battle(u32 index);

View File

@ -1008,14 +1008,14 @@ EvtScript EVS_Player_NextSlapLeft_Impl = {
EvtScript EVS_Player_LastSlapRight_Impl = {
EVT_CHILD_THREAD
EVT_CALL(MakeLerp, 0, 0x00000870, 60, EASING_COS_IN_OUT)
EVT_CALL(MakeLerp, 0, 2160, 60, EASING_COS_IN_OUT)
EVT_LABEL(1)
EVT_CALL(UpdateLerp)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(1)
EVT_END_IF
EVT_CALL(UpdateLerp)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(1)
EVT_END_IF
EVT_END_CHILD_THREAD
EVT_CALL(GetDamageIntensity)
EVT_EXEC_WAIT(EVS_Player_Hit_Impl)
@ -1026,14 +1026,14 @@ EvtScript EVS_Player_LastSlapRight_Impl = {
EvtScript EVS_Player_LastSlapLeft_Impl = {
EVT_CHILD_THREAD
EVT_CALL(MakeLerp, 0x00000870, 0, 60, EASING_COS_IN_OUT)
EVT_CALL(MakeLerp, 2160, 0, 60, EASING_COS_IN_OUT)
EVT_LABEL(1)
EVT_CALL(UpdateLerp)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(1)
EVT_END_IF
EVT_CALL(UpdateLerp)
EVT_CALL(SetActorYaw, ACTOR_SELF, LVar0)
EVT_WAIT(1)
EVT_IF_EQ(LVar1, 1)
EVT_GOTO(1)
EVT_END_IF
EVT_END_CHILD_THREAD
EVT_CALL(GetDamageIntensity)
EVT_EXEC_WAIT(EVS_Player_Hit_Impl)

View File

@ -6,10 +6,12 @@
#ifdef ANTIGUY_TRIO
#define ACTOR_TYPE ACTOR_TYPE_ANTI_GUY_KPA
#define ACTOR_LEVEL ACTOR_LEVEL_ANTI_GUY_KPA
#define PARALYZE_CHANCE 50
#define ESCAPE_CHANCE 0
#else
#define ACTOR_TYPE ACTOR_TYPE_ANTI_GUY_OMO
#define ACTOR_LEVEL ACTOR_LEVEL_ANTI_GUY_OMO
#define PARALYZE_CHANCE 60
#define ESCAPE_CHANCE 50
#endif
@ -77,7 +79,7 @@ ActorPartBlueprint N(ActorParts)[] = {
ActorBlueprint NAMESPACE = {
.flags = 0,
.type = ACTOR_TYPE,
.level = ACTOR_LEVEL_ANTI_GUY,
.level = ACTOR_LEVEL,
.maxHP = 50,
.partCount = ARRAY_COUNT(N(ActorParts)),
.partsData = N(ActorParts),

View File

@ -175,7 +175,7 @@ EvtScript N(EVS_Ignite) = {
EVT_CALL(SetActorJumpGravity, ACTOR_SELF, EVT_FLOAT(2.0))
EVT_CALL(SetGoalPos, ACTOR_SELF, LVar0, 0, LVar2)
EVT_CALL(JumpToGoal, ACTOR_SELF, 5, FALSE, TRUE, FALSE)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 1)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, TRUE)
EVT_CALL(SetActorPaletteSwapParams, ACTOR_SELF, PRT_MAIN, SPR_PAL_Bobomb, SPR_PAL_Bobomb_Burst, 0, 10, 0, 10, 0, 0)
EVT_CALL(SetActorPaletteEffect, ACTOR_SELF, PRT_MAIN, PAL_ADJUST_BLEND_PALETTES_VARYING_INTERVALS)
EVT_WAIT(3)
@ -194,7 +194,7 @@ EvtScript N(EVS_Defuse) = {
EVT_ADD(LVar2, 2)
EVT_PLAY_EFFECT(EFFECT_LANDING_DUST, 3, LVar0, LVar1, LVar2, 0, 0)
EVT_CALL(StopLoopingSoundAtActor, ACTOR_SELF, 0)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, FALSE)
EVT_RETURN
EVT_END
};
@ -203,7 +203,7 @@ EvtScript N(EVS_Cleanup) = {
EVT_CALL(GetActorVar, ACTOR_SELF, AVAR_Ignited, LVar0)
EVT_IF_EQ(LVar0, TRUE)
EVT_CALL(StopLoopingSoundAtActor, ACTOR_SELF, 0)
EVT_CALL(func_8026ED20, ACTOR_SELF, PRT_MAIN, 0)
EVT_CALL(EnableActorPaletteEffects, ACTOR_SELF, PRT_MAIN, FALSE)
EVT_END_IF
EVT_RETURN
EVT_END

View File

@ -773,9 +773,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -786,9 +786,9 @@ EvtScript N(EVS_Init_Flying) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent_Flying)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -803,14 +803,14 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), 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, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -821,7 +821,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)

View File

@ -775,9 +775,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -788,9 +788,9 @@ EvtScript N(EVS_Init_Flying) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent_Flying)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -805,14 +805,14 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), LVar0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(GetActorDefenseBoost, LVar0, LVar4)
EVT_IF_LT(LVar4, 3)
EVT_SET(LVar8, LVar0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -823,7 +823,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)

View File

@ -449,9 +449,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(BindHandlePhase, ACTOR_SELF, EVT_PTR(N(EVS_HandlePhase)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_HitTypeFlags, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_IsClone, FALSE)
@ -473,9 +473,9 @@ EvtScript N(EVS_Flying_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_Flying_HandleEvent)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_HitTypeFlags, 0)
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_IsClone, FALSE)
@ -1533,14 +1533,14 @@ EvtScript N(EVS_Move_TryBoostAttack) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), LVar0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(GetActorAttackBoost, LVar0, LVar4)
EVT_IF_LT(LVar4, MAX_ATTACK_BOOST)
EVT_SET(LVar8, LVar0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1551,7 +1551,7 @@ EvtScript N(EVS_Move_TryBoostAttack) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)
@ -1646,14 +1646,14 @@ EvtScript N(EVS_Move_TryBoostDefense) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), LVar0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(GetActorDefenseBoost, LVar0, LVar4)
EVT_IF_LT(LVar4, MAX_DEFENSE_BOOST)
EVT_SET(LVar8, LVar0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1664,7 +1664,7 @@ EvtScript N(EVS_Move_TryBoostDefense) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)
@ -1759,14 +1759,14 @@ EvtScript N(EVS_Move_TryElectrify) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), 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, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1777,7 +1777,7 @@ EvtScript N(EVS_Move_TryElectrify) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)
@ -1877,14 +1877,14 @@ EvtScript N(EVS_Move_TryTransparent) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), 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, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -1895,7 +1895,7 @@ EvtScript N(EVS_Move_TryTransparent) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)

View File

@ -774,9 +774,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -787,9 +787,9 @@ EvtScript N(EVS_Init_Flying) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent_Flying)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -804,14 +804,14 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), LVar0, LVar3)
EVT_IF_EQ(LVar3, 0)
EVT_CALL(GetActorAttackBoost, LVar0, LVar4)
EVT_IF_LT(LVar4, MAX_ATTACK_BOOST)
EVT_SET(LVar8, LVar0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -822,7 +822,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)

View File

@ -111,18 +111,18 @@ EvtScript N(EVS_Init) = {
EvtScript N(EVS_Idle) = {
EVT_LABEL(0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_SLEEP)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, -4, 14)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, 0, 0)
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 13, 10, 13)
EVT_ELSE
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 0, 24)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -1, -10)
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
EVT_END_IF
EVT_WAIT(1)
EVT_GOTO(0)
EVT_CALL(GetStatusFlags, ACTOR_SELF, LVar0)
EVT_IF_FLAG(LVar0, STATUS_FLAG_SLEEP)
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, -4, 14)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, 0, 0)
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 13, 10, 13)
EVT_ELSE
EVT_CALL(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 0, 24)
EVT_CALL(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -1, -10)
EVT_CALL(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
EVT_END_IF
EVT_WAIT(1)
EVT_GOTO(0)
EVT_RETURN
EVT_END
};

View File

@ -773,9 +773,9 @@ EvtScript N(EVS_Init) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -786,9 +786,9 @@ EvtScript N(EVS_Init_Flying) = {
EVT_CALL(BindIdle, ACTOR_SELF, EVT_PTR(N(EVS_Idle)))
EVT_CALL(BindTakeTurn, ACTOR_SELF, EVT_PTR(N(EVS_TakeTurn)))
EVT_CALL(BindHandleEvent, ACTOR_SELF, EVT_PTR(N(EVS_HandleEvent_Flying)))
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar0)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar0)
EVT_IF_EQ(LVar0, 0)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_END_IF
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_ShouldKnockDown, FALSE)
EVT_RETURN
@ -805,14 +805,14 @@ EvtScript N(EVS_TakeTurn) = {
EVT_LABEL(0)
EVT_CALL(GetOwnerTarget, LVar0, LVar1)
EVT_CALL(GetIndexFromHome, LVar0, LVar1)
EVT_CALL(GetBattleVar, BTL_VAR_UNK_MAGIKOOPA, LVar2)
EVT_CALL(GetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar2)
EVT_IF_GT(LVar1, LVar2)
EVT_CALL(N(CheckMagikoopaCastTarget), 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, BTL_VAR_UNK_MAGIKOOPA, LVar1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, LVar1)
EVT_GOTO(100)
EVT_END_IF
EVT_END_IF
@ -823,7 +823,7 @@ EvtScript N(EVS_TakeTurn) = {
EVT_END_IF
EVT_IF_EQ(LFlag0, FALSE)
EVT_SET(LFlag0, TRUE)
EVT_CALL(SetBattleVar, BTL_VAR_UNK_MAGIKOOPA, -1)
EVT_CALL(SetBattleVar, BTL_VAR_Magikoopa_LastIndexBoosted, -1)
EVT_GOTO(10)
EVT_END_IF
EVT_CALL(CountPlayerTargets, ACTOR_SELF, TARGET_FLAG_2 | TARGET_FLAG_8000, LVar0)

View File

@ -7,7 +7,7 @@
#define NAMESPACE battle_partner_goombario
extern s32 bActorTattles[ACTOR_TYPE_COUNT];
extern s32 bActorTattles[];
static EffectInstance* N(tattleEffect);
static b32 N(isCharged);

View File

@ -1086,7 +1086,7 @@ EvtScript N(fireShell) = {
EVT_CALL(SetActorVar, ACTOR_SELF, AVAR_Unk_1, 1)
EVT_CALL(SetActorPaletteEffect, ACTOR_PARTNER, -1, PAL_ADJUST_BLEND_PALETTES_VARYING_INTERVALS)
EVT_CALL(SetActorPaletteSwapParams, ACTOR_PARTNER, -1, SPR_PAL_BattleKooper, SPR_PAL_BattleKooper, 1, 10, 1000, 10, 0, 0)
EVT_CALL(func_8026ED20, ACTOR_PARTNER, 0, 1)
EVT_CALL(EnableActorPaletteEffects, ACTOR_PARTNER, 0, TRUE)
EVT_SET(LVar6, SPR_PAL_BattleKooper)
EVT_SET(LVar7, SPR_PAL_BattleKooper)
EVT_SET(LVar8, 30)
@ -1210,7 +1210,7 @@ EvtScript N(fireShell) = {
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_ZERO, 1)
EVT_WAIT(20)
EVT_CALL(RemoveActorDecoration, ACTOR_SELF, PRT_ZERO, 0)
EVT_CALL(func_8026ED20, ACTOR_PARTNER, 0, 0)
EVT_CALL(EnableActorPaletteEffects, ACTOR_PARTNER, 0, FALSE)
EVT_CALL(SetActorPos, ACTOR_PARTNER, -200, 0, 0)
EVT_CALL(SetGoalToHome, ACTOR_PARTNER)
EVT_CALL(AddGoalPos, ACTOR_PARTNER, 40, 0, 0)

View File

@ -208,7 +208,7 @@ API_CALLABLE(N(PowerShockDischargeFX)) {
script->functionTemp[0]--;
if (script->functionTemp[0] == 0) {
N(bulbGlow)->data.bulbGlow->unk_14 = 5;
N(bulbGlow)->data.bulbGlow->timeLeft = 5;
return ApiStatus_DONE2;
}

View File

@ -33,13 +33,13 @@ UnkBulbGlow D_E0078918[] = {
s32 D_E00789A8 = 0;
Color_RGB8 D_E00789AC[] = {
{255, 255, 255},
{255, 255, 128},
{255, 128, 255},
{128, 255, 255},
{255, 128, 128},
{128, 255, 128},
{128, 128, 255},
{ 255, 255, 255 },
{ 255, 255, 128 },
{ 255, 128, 255 },
{ 128, 255, 255 },
{ 255, 128, 128 },
{ 128, 255, 128 },
{ 128, 128, 255 },
};
void bulb_glow_init(EffectInstance* effect);
@ -47,7 +47,7 @@ void bulb_glow_update(EffectInstance* effect);
void bulb_glow_render(EffectInstance* effect);
void bulb_glow_appendGfx(void* effect);
void bulb_glow_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, EffectInstance** outEffect) {
void bulb_glow_main(s32 arg0, f32 posX, f32 posY, f32 posZ, f32 arg4, EffectInstance** outEffect) {
EffectBlueprint bp;
EffectInstance* effect;
BulbGlowFXData* data;
@ -65,18 +65,18 @@ void bulb_glow_main(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, EffectInst
data = effect->data.bulbGlow = general_heap_malloc(numParts * sizeof(*data));
ASSERT(effect->data.bulbGlow != NULL);
data->unk_00 = arg0 & 255;
data->type = arg0 & 255;
if (arg0 < 256) {
data->unk_14 = 100;
data->timeLeft = 100;
} else {
data->unk_14 = 80;
data->timeLeft = 80;
}
data->unk_18 = 0;
data->unk_10 = 127;
data->pos.x = arg1;
data->pos.y = arg2;
data->pos.z = arg3;
data->unk_1C = D_E00789A8;
data->lifetime = 0;
data->brightness = 127;
data->pos.x = posX;
data->pos.y = posY;
data->pos.z = posZ;
data->depthQueryID = D_E00789A8;
D_E00789A8++;
if (D_E00789A8 >= 16) {
@ -92,38 +92,38 @@ void bulb_glow_init(EffectInstance* effect) {
void bulb_glow_update(EffectInstance* effect) {
BulbGlowFXData* data = effect->data.bulbGlow;
s32 unk18;
s32 time;
if (effect->flags & FX_INSTANCE_FLAG_DISMISS) {
effect->flags &= ~FX_INSTANCE_FLAG_DISMISS;
data->unk_14 = 10;
data->timeLeft = 10;
}
data->unk_18++;
data->lifetime++;
if (data->unk_14 < 100) {
data->unk_14--;
if (data->timeLeft < 100) {
data->timeLeft--;
}
if (data->unk_14 < 0) {
if (data->timeLeft < 0) {
remove_effect(effect);
return;
}
unk18 = data->unk_18;
if (data->unk_00 == 0) {
if (unk18 < 11) {
data->unk_10 = (unk18 * 6) + 4;
time = data->lifetime;
if (data->type == 0) {
if (time < 11) {
data->brightness = (time * 6) + 4;
} else {
data->unk_10 = 64;
data->brightness = 64;
}
if (unk18 & 1) {
data->unk_10 *= 0.6;
if (time & 1) {
data->brightness *= 0.6;
}
if (unk18 >= 15) {
data->unk_00 = 4;
data->unk_10 = 127;
if (time >= 15) {
data->type = 4;
data->brightness = 127;
}
}
}
@ -136,7 +136,7 @@ void bulb_glow_render(EffectInstance* effect) {
renderTask.appendGfxArg = effect;
renderTask.appendGfx = bulb_glow_appendGfx;
if (data->unk_00 == 5) {
if (data->type == 5) {
renderTask.dist = 0;
renderTaskPtr->renderMode = RENDER_MODE_SURFACE_OPA;
} else {
@ -160,7 +160,7 @@ void bulb_glow_appendGfx(void* effect) {
s32 xMin;
s32 numRects;
s32 yMin;
s32 temp_s2;
s32 type;
s32 rectHeight;
s32 glowExtent;
s32 colorScale;
@ -171,13 +171,13 @@ void bulb_glow_appendGfx(void* effect) {
s32 isPointVisible;
s32 yStart;
UnkBulbGlow* temp_s1;
Color_RGB8* temp_v0;
Color_RGB8* color;
s32 i;
s32 j;
u8 r, g, b;
brightness = data->unk_10;
temp_s2 = data->unk_00;
brightness = data->brightness;
type = data->type;
if (brightness > 127) {
brightness = 127;
}
@ -185,13 +185,13 @@ void bulb_glow_appendGfx(void* effect) {
gDPPipeSync(gMainGfxPos++);
gSPSegment(gMainGfxPos++, 0x09, VIRTUAL_TO_PHYSICAL(((EffectInstance*)effect)->graphics->data));
temp_s1 = &D_E0078918[temp_s2];
temp_s1 = &D_E0078918[type];
glowExtent = temp_s1->unk_10;
rectHeight = temp_s1->unk_14;
isPointVisible = is_point_visible(data->pos.x, data->pos.y, data->pos.z, data->unk_1C, &centerX, &centerY);
isPointVisible = is_point_visible(data->pos.x, data->pos.y, data->pos.z, data->depthQueryID, &centerX, &centerY);
if (temp_s2 == 5) {
if (type == 5) {
isPointVisible = TRUE;
}
@ -199,12 +199,12 @@ void bulb_glow_appendGfx(void* effect) {
return;
}
gSPDisplayList(gMainGfxPos++, D_E0078900[temp_s2]);
temp_v0 = &D_E00789AC[data->unk_20];
gSPDisplayList(gMainGfxPos++, D_E0078900[type]);
color = &D_E00789AC[data->unk_20];
colorScale = brightness * 2;
r = temp_v0->r * colorScale / 255;
g = temp_v0->g * colorScale / 255;
b = temp_v0->b * colorScale / 255;
r = color->r * colorScale / 255;
g = color->g * colorScale / 255;
b = color->b * colorScale / 255;
gDPSetPrimColor(gMainGfxPos++, 0, 0, r, g, b, 127);
@ -237,10 +237,10 @@ void bulb_glow_appendGfx(void* effect) {
}
gDPSetTileSize(gMainGfxPos++, G_TX_RENDERTILE,
(s32) (xMin * temp_s1->unk_08) << 2,
(s32) (temp_s1->unk_04 * 20 - i * temp_s1->unk_14 * temp_s1->unk_0C) << 2,
(s32) (xMin * temp_s1->unk_08 + temp_s1->unk_00) << 2,
(s32) (temp_s1->unk_04 * 21 - i * temp_s1->unk_14 * temp_s1->unk_0C) << 2);
(s32) (xMin * temp_s1->unk_08) * 4,
(s32) (temp_s1->unk_04 * 20 - i * temp_s1->unk_14 * temp_s1->unk_0C) * 4,
(s32) (xMin * temp_s1->unk_08 + temp_s1->unk_00) * 4,
(s32) (temp_s1->unk_04 * 21 - i * temp_s1->unk_14 * temp_s1->unk_0C) * 4);
for (j = 0; j < 1; j++) {
gDPLoadMultiTile(gMainGfxPos++,
@ -249,8 +249,8 @@ void bulb_glow_appendGfx(void* effect) {
xMin + xStart, 0, xMax - 1, rectHeight - 1,
0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 9, 8, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gMainGfxPos++,
(xMin + xStart) << 2, y << 2,
xMax << 2, (y + rectHeight) << 2,
(xMin + xStart) * 4, y * 4,
xMax * 4, (y + rectHeight) * 4,
G_TX_RENDERTILE,
((xMin + xStart) & 0x1FF) << 5, 0,
1 << 10, 1 << 10);

View File

@ -14,7 +14,7 @@ void ice_shard_render(EffectInstance* effect);
void ice_shard_appendGfx(void* effect);
EffectInstance* ice_shard_main(
s32 arg0,
s32 type,
f32 posX,
f32 posY,
f32 posZ,
@ -38,7 +38,7 @@ EffectInstance* ice_shard_main(
data = effect->data.iceShard = general_heap_malloc(numParts * sizeof(*data));
ASSERT(effect->data.iceShard != NULL);
data->type = arg0;
data->type = type;
data->lifetime = 0;
if (duration <= 0) {
data->timeLeft = 1000;
@ -74,7 +74,7 @@ void ice_shard_init(EffectInstance* effect) {
void ice_shard_update(EffectInstance* effect) {
IceShardFXData* data = effect->data.iceShard;
s32 unk_00 = data->type;
s32 type = data->type;
if (effect->flags & FX_INSTANCE_FLAG_DISMISS) {
effect->flags &= ~FX_INSTANCE_FLAG_DISMISS;
@ -111,7 +111,7 @@ void ice_shard_update(EffectInstance* effect) {
data->pos.z += data->vel.z;
data->rot += data->angularVel;
if (unk_00 >= 2 && data->pos.y < 0.0f && data->vel.y < 0.0f) {
if (type >= 2 && data->pos.y < 0.0f && data->vel.y < 0.0f) {
data->pos.y = 0.0f;
data->vel.y *= -0.7;
}

View File

@ -1037,7 +1037,7 @@
nameMsg: MSG_ItemName_Kaiden
fullDescMsg: MSG_ItemFullDesc_Kaiden
shortDescMsg: MSG_ItemShortDesc_Kaiden
flags: [ TARGET_FLAG_80000000 ]
flags: [ TARGET_FLAG_OVERRIDE ]
category: MOVE_TYPE_NONE
actionTip: MOVE_ACTION_TIP_NONE
costFP: 0
@ -1073,7 +1073,7 @@
nameMsg: MSG_Menus_StarPower_Focus
fullDescMsg: 0
shortDescMsg: MSG_Menus_StarPowerDesc_Focus
flags: [ TARGET_FLAG_80000000 ]
flags: [ TARGET_FLAG_OVERRIDE ]
category: MOVE_TYPE_STAR_POWER
actionTip: MOVE_ACTION_TIP_NONE
costFP: 0

144
tools/build/actor_types.py Normal file
View File

@ -0,0 +1,144 @@
#!/usr/bin/env python3
import re
import yaml
import argparse
from pathlib import Path
from typing import List
from io import TextIOWrapper
class ActorTypeEntry:
def __init__(self, entry):
self.name = list(entry.keys())[0]
data = entry[self.name]
self.level = data.get("level", 0)
self.nameMsg = data.get("nameMsg", "MSG_NONE")
self.tattleMsg = data.get("tattleMsg", "MSG_NONE")
self.walkSounds = data.get("walkSound", ["SOUND_NONE", "SOUND_NONE"])
self.flySounds = data.get("flySound", ["SOUND_NONE", "SOUND_NONE"])
self.jumpSound = data.get("jumpSound", "SOUND_NONE")
self.hurtSound = data.get("hurtSound", "SOUND_NONE")
self.stepDelay = data.get("stepDelay", [30, 30])
self.tattleCamOffset = data.get("tattleCamOffset", [0, 0, 0])
self.shadowOffset = data.get("shadowOffset", 0)
self.ignoreDuringCount = data.get("ignoreDuringCount", False)
if len(self.walkSounds) != 2:
raise Exception("Walk sounds array has incorrect size: " + self.walkSounds)
if len(self.flySounds) != 2:
raise Exception("Fly sounds array has incorrect size: " + self.flySounds)
if len(self.stepDelay) != 2:
raise Exception("Steps delay array has incorrect size: " + self.stepDelay)
if len(self.tattleCamOffset) != 3:
raise Exception("Tattle cam offset array has incorrect size: " + self.tattleCamOffset)
self.enum_suffix = re.sub("((?<=[a-z0-9])[A-Z]|(?!^)(?<!_)[A-Z](?=[a-z]))", r"_\1", self.name).upper()
self.enum_name = "ACTOR_TYPE_" + self.enum_suffix
def read_actors_yaml(in_yaml: Path) -> List[ActorTypeEntry]:
actors: List[ActorTypeEntry] = []
with open(in_yaml) as f:
entry_list = yaml.load(f.read(), Loader=yaml.SafeLoader)
for entry in entry_list:
actors.append(ActorTypeEntry(entry))
return actors
def generate_actors_data(fout: TextIOWrapper, actors: List[ActorTypeEntry]):
fout.write("s32 bActorNames[] = {\n")
for actor in actors:
key = "[" + actor.enum_name + "]"
fout.write(f" {key:40}{actor.nameMsg},\n")
fout.write("};\n")
fout.write("\n")
fout.write("// enemy types to ignore when deciding initialEnemyCount\n")
fout.write("s32 bActorsIgnoreDuringCount[] = {\n")
for actor in actors:
if actor.ignoreDuringCount:
fout.write(f" {actor.enum_name},\n")
fout.write(" -1\n")
fout.write("};\n")
fout.write("\n")
fout.write("ActorSounds bActorSoundTable[] = {\n")
for actor in actors:
fout.write(f" [{actor.enum_name}] = {{\n")
fout.write(f" .walk = {{ {', '.join(actor.walkSounds)} }},\n")
fout.write(f" .fly = {{ {', '.join(actor.flySounds)} }},\n")
fout.write(f" .jump = {actor.jumpSound},\n")
fout.write(f" .hurt = {actor.hurtSound},\n")
fout.write(f" .delay = {{ {', '.join(map(str, actor.stepDelay))} }},\n")
fout.write(f" }},\n")
fout.write("};\n")
fout.write("\n")
fout.write("s32 bActorTattles[] = {\n")
for actor in actors:
key = "[" + actor.enum_name + "]"
fout.write(f" {key:40}{actor.tattleMsg},\n")
fout.write("};\n")
fout.write("\n")
fout.write("ActorOffsets bActorOffsets[] = {\n")
for actor in actors:
fout.write(f" [{actor.enum_name}] = {{\n")
fout.write(f" .tattleCam = {{ {', '.join(map(str, actor.tattleCamOffset))} }},\n")
fout.write(f" .shadow = {actor.shadowOffset},\n")
fout.write(f" }},\n")
fout.write("};\n")
fout.write("\n")
def generate_actors_enums(fout: TextIOWrapper, actors: List[ActorTypeEntry]):
fout.write("#ifndef ACTORS_ENUM_H\n")
fout.write("#define ACTORS_ENUM_H\n")
fout.write("\n")
fout.write("enum ActorTypes {\n")
for idx, actor in enumerate(actors):
fout.write(f" {actor.enum_name:48} = 0x{idx:02X},\n")
fout.write("};\n")
fout.write("\n")
fout.write(f"#define ACTOR_LEVEL_NONE 99\n")
for idx, actor in enumerate(actors):
fout.write(f"#define ACTOR_LEVEL_{actor.enum_suffix:32} {actor.level}\n")
fout.write("\n")
fout.write("#endif // ACTORS_ENUM_H\n")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Generates actor tables")
parser.add_argument("out_data", help="output header file to generate containing the data")
parser.add_argument("out_enum", help="output header file to generate containing the enum")
parser.add_argument("actors_yaml", type=Path, help="input yaml file path")
args = parser.parse_args()
actors = read_actors_yaml(args.actors_yaml)
with open(args.out_data, "w") as fout:
fout.write("/* This file is auto-generated. Do not edit. */\n")
fout.write('#include "common.h"\n')
fout.write('#include "message_ids.h"\n')
fout.write("\n")
generate_actors_data(fout, actors)
with open(args.out_enum, "w") as fout:
fout.write("/* This file is auto-generated. Do not edit. */\n")
fout.write("\n")
generate_actors_enums(fout, actors)

View File

@ -279,6 +279,11 @@ def write_ninja_rules(
command=f"$python {BUILD_TOOLS}/item_data.py $out $in",
)
ninja.rule(
"actor_types",
command=f"$python {BUILD_TOOLS}/actor_types.py $out $in",
)
ninja.rule(
"world_map",
command=f"$python {BUILD_TOOLS}/world_map.py $in $out",
@ -614,6 +619,17 @@ class Configure:
"item_data",
)
build(
[
self.build_path() / "include/battle/actor_types.inc.c",
self.build_path() / "include/battle/actor_types.h",
],
[
Path("src/battle/actors.yaml"),
],
"actor_types",
)
# Build objects
for entry in self.linker_entries:
seg = entry.segment

View File

@ -68,14 +68,11 @@ def generate_move_enum(fout: TextIOWrapper, moves: List[MoveEntry]):
fout.write("enum MoveIDs {\n")
item_enum: List[str] = []
for idx, move in enumerate(moves):
if re.match(r"Unused_(?:Hammer_)?([0-9A-F]{2})", move.name):
name = "MOVE_" + move.name.upper()
else:
name = "MOVE_" + re.sub("((?<=[a-z0-9])[A-Z]|(?!^)(?<!_)[A-Z](?=[a-z]))", r"_\1", move.name).upper()
item_enum.append(name)
fout.write(f" {name:39} = 0x{idx:03X},\n")
fout.write("};\n")

View File

@ -451,7 +451,7 @@ replace_funcs = {
"GetPartAnimNotify": {0: "ActorIDs"},
"SetActorPaletteEffect": {0: "ActorIDs"},
"SetActorPaletteSwapParams": {0: "ActorIDs"},
"func_8026ED20": {0: "ActorIDs"},
"EnableActorPaletteEffects": {0: "ActorIDs"},
"HideHealthBar": {0: "ActorIDs"},
"func_8027D434": {0: "ActorIDs"},
"SetProjectileTargetOffset": {0: "ActorIDs"},

View File

@ -5408,8 +5408,8 @@
- [0x1D, 0x0081, Menus_StarEnergyMaxedOut]
- [0x1D, 0x0082, Menus_AttackUp]
- [0x1D, 0x0083, Menus_DefenseUp]
- [0x1D, 0x0084, Menus_0084] # possibly unused AttackDown
- [0x1D, 0x0085, Menus_0085] # possibly unused DefenseDown
- [0x1D, 0x0084, Menus_HealOne]
- [0x1D, 0x0085, Menus_HealAll]
- [0x1D, 0x0086, Menus_EnemyTransparent]
- [0x1D, 0x0087, Menus_EnemyElectricCharge]
- [0x1D, 0x0088, Menus_PlayerDazed]
@ -7678,7 +7678,7 @@
- [0x29, 0x0078, EnemyName_Whacka]
- [0x29, 0x0079, EnemyName_GeneralGuyDup]
- [0x29, 0x007A, EnemyName_Bulb]
- [0x29, 0x007B, EnemyName_ShySquadDup]
- [0x29, 0x007B, EnemyName_ShySquadRedux]
- [0x29, 0x007C, EnemyName_Fuzzipede]
- [0x29, 0x007D, EnemyName_MontyHole]
- [0x29, 0x007E, EnemyName_Balloon]

View File

@ -5413,8 +5413,8 @@
- [0x1D, 0x0081, Menus_StarEnergyMaxedOut]
- [0x1D, 0x0082, Menus_AttackUp]
- [0x1D, 0x0083, Menus_DefenseUp]
- [0x1D, 0x0084, Menus_0084] # possibly unused AttackDown
- [0x1D, 0x0085, Menus_0085] # possibly unused DefenseDown
- [0x1D, 0x0084, Menus_HealOne]
- [0x1D, 0x0085, Menus_HealAll]
- [0x1D, 0x0086, Menus_EnemyTransparent]
- [0x1D, 0x0087, Menus_EnemyElectricCharge]
- [0x1D, 0x0088, Menus_PlayerDazed]
@ -7730,7 +7730,7 @@
- [0x29, 0x0078, EnemyName_Whacka]
- [0x29, 0x0079, EnemyName_GeneralGuyDup]
- [0x29, 0x007A, EnemyName_Bulb]
- [0x29, 0x007B, EnemyName_ShySquadDup]
- [0x29, 0x007B, EnemyName_ShySquadRedux]
- [0x29, 0x007C, EnemyName_Fuzzipede]
- [0x29, 0x007D, EnemyName_MontyHole]
- [0x29, 0x007E, EnemyName_Balloon]

View File

@ -7681,7 +7681,7 @@
#define MSG_EnemyName_Whacka MESSAGE_ID(0x29, 0x078)
#define MSG_EnemyName_GeneralGuyDup MESSAGE_ID(0x29, 0x079)
#define MSG_EnemyName_Bulb MESSAGE_ID(0x29, 0x07A)
#define MSG_EnemyName_ShySquadDup MESSAGE_ID(0x29, 0x07B)
#define MSG_EnemyName_ShySquadRedux MESSAGE_ID(0x29, 0x07B)
#define MSG_EnemyName_Fuzzipede MESSAGE_ID(0x29, 0x07C)
#define MSG_EnemyName_MontyHole MESSAGE_ID(0x29, 0x07D)
#define MSG_EnemyName_Balloon MESSAGE_ID(0x29, 0x07E)

View File

@ -5703,14 +5703,14 @@ segments:
start: 0x5A59A0
vram: 0x80231000
subsegments:
- [0x5A59A0, c, actor/shy_squad_dup]
- [0x5A59A0, c, actor/shy_squad_redux]
- [0x5A59A0]
- dir: battle/area/omo2_6
type: code
start: 0x5A9A80
vram: 0x80231000
subsegments:
- [0x5A9A80, c, actor/shy_guy_dup]
- [0x5A9A80, c, actor/shy_squad_stub]
- [0x5A9A80,]
- dir: battle/area/omo3
type: code

View File

@ -356,7 +356,7 @@ OverrideBattleDmaDest = 0x802537B8;
LoadBattleDmaData = 0x802537E4;
EnableBattleFloorReflections = 0x80253868;
SetDarknessMode = 0x802538F4;
func_802537C0 = 0x80253980;
GetDarknessStatus = 0x80253980;
PlaySoundAtActor = 0x80253A1C;
PlaySoundAtPart = 0x80253A90;
PlayLoopingSoundAtActor = 0x80253B34;
@ -499,7 +499,7 @@ func_8026E914 = 0x8026ED04;
GetDistanceToGoal = 0x8026EDEC;
SetActorPaletteEffect = 0x8026EE6C;
SetActorPaletteSwapParams = 0x8026EFE8;
func_8026ED20 = 0x8026F110;
EnableActorPaletteEffects = 0x8026F110;
AddActorDecoration = 0x8026F278;
RemoveActorDecoration = 0x8026F33C;
ModifyActorDecoration = 0x8026F3E0;

View File

@ -6401,14 +6401,14 @@ segments:
vram: 0x80231000
vram_of_symbol: Vine1Base
subsegments:
- [auto, c, actor/shy_squad_dup]
- [auto, c, actor/shy_squad_redux]
- dir: battle/area/omo2_6
type: code
start: 0x556C90
vram: 0x80231000
vram_of_symbol: Vine1Base
subsegments:
- [auto, c, actor/shy_guy_dup]
- [auto, c, actor/shy_squad_stub]
- dir: battle/area/omo3
type: code
start: 0x5573E0

View File

@ -6607,7 +6607,7 @@ OverrideBattleDmaDest = 0x802535F8; // type:func rom:0x181ED8
LoadBattleDmaData = 0x80253624; // type:func rom:0x181F04
EnableBattleFloorReflections = 0x802536A8; // type:func rom:0x181F88
SetDarknessMode = 0x80253734; // type:func rom:0x182014
func_802537C0 = 0x802537C0; // type:func rom:0x1820A0
GetDarknessStatus = 0x802537C0; // type:func rom:0x1820A0
PlaySoundAtActor = 0x8025385C; // type:func rom:0x18213C
PlaySoundAtPart = 0x802538D0; // type:func rom:0x1821B0
PlayLoopingSoundAtActor = 0x80253974; // type:func rom:0x182254
@ -7017,7 +7017,7 @@ GetDistanceToGoal = 0x8026E9FC; // type:func rom:0x19D2DC
SetActorPaletteEffect = 0x8026EA7C; // type:func rom:0x19D35C
SetActorPaletteSwapTimes = 0x8026EB20; // type:func rom:0x19D400
SetActorPaletteSwapParams = 0x8026EBF8; // type:func rom:0x19D4D8
func_8026ED20 = 0x8026ED20; // type:func rom:0x19D600
EnableActorPaletteEffects = 0x8026ED20; // type:func rom:0x19D600
func_8026EDE4 = 0x8026EDE4; // type:func rom:0x19D6C4
AddActorDecoration = 0x8026EE88; // type:func rom:0x19D768
RemoveActorDecoration = 0x8026EF4C; // type:func rom:0x19D82C
@ -7201,7 +7201,7 @@ CamPreset_A = 0x80280E54; // rom:0x1AF734
EVS_OnBattleInit = 0x80280EB8; // rom:0x1AF798
D_80280FC0 = 0x80280FC0; // rom:0x1AF8A0
bActorNames = 0x80281104; // rom:0x1AF9E4
D_80281454 = 0x80281454; // rom:0x1AFD34
bActorsIgnoreDuringCount = 0x80281454; // rom:0x1AFD34
bActorSoundTable = 0x80281468; // rom:0x1AFD48 size:0x1730
bActorTattles = 0x80282B98; // rom:0x1B1478 size:0x350
bActorOffsets = 0x80282EE8; // rom:0x1B17C8 size:0x350
@ -11844,7 +11844,7 @@ b_area_omo_Stages = 0x80230AC8; // rom:0x52B098
b_area_omo2_general_guy_FadeBackgroundDarken = 0x80218000; // type:func rom:0x52B6A0
D_80231110 = 0x80231110; // rom:0x52B6E0
b_area_omo2_general_guy_FadeBackgroundLighten = 0x80218098; // type:func rom:0x52B738
b_area_omo2_toy_tank_UpdateBulbGlow = 0x80218120; // type:func rom:0x52B7C0
b_area_omo2_toy_tank_UpdateBulbGlowPos = 0x80218120; // type:func rom:0x52B7C0
func_802181F4_52B894 = 0x802181F4; // type:func rom:0x52B894
func_80218250_52B8F0 = 0x80218250; // type:func rom:0x52B8F0
b_area_omo2_general_guy_DefenseTable = 0x80218330; // rom:0x52B9D0
@ -11888,14 +11888,14 @@ b_area_omo2_toy_tank_8021A63C = 0x8021A63C; // rom:0x52DCDC
b_area_omo2_toy_tank_8021A668 = 0x8021A668; // rom:0x52DD08
b_area_omo2_toy_tank_8021A694 = 0x8021A694; // rom:0x52DD34
toy_tank_model = 0x8021A6C0; // rom:0x52DD60
toy_tank_as_shake = 0x8021A724; // rom:0x52DDC4
toy_tank_as_fall_apart = 0x8021D318; // rom:0x5309B8
toy_tank_as_close_hatch = 0x8021E798; // rom:0x531E38
toy_tank_as_open_hatch = 0x80220D88; // rom:0x534428
toy_tank_as_5 = 0x80221384; // rom:0x534A24
toy_tank_as_move_forward = 0x80222A98; // rom:0x536138
toy_tank_as_7 = 0x8022AE48; // rom:0x53E4E8
toy_tank_as_idle = 0x8022C55C; // rom:0x53FBFC
AS_ToyTank_Shake = 0x8021A724; // rom:0x52DDC4
AS_ToyTank_FallApart = 0x8021D318; // rom:0x5309B8
AS_ToyTank_CloseHatch = 0x8021E798; // rom:0x531E38
AS_ToyTank_OpenHatch = 0x80220D88; // rom:0x534428
AS_ToyTank_Unused1 = 0x80221384; // rom:0x534A24
AS_ToyTank_MoveForward = 0x80222A98; // rom:0x536138
AS_ToyTank_Unused2 = 0x8022AE48; // rom:0x53E4E8
AS_ToyTank_Idle = 0x8022C55C; // rom:0x53FBFC
b_area_omo2_toy_tank_DefenseTable = 0x8022C838; // rom:0x53FED8
b_area_omo2_toy_tank_StatusTable = 0x8022C844; // rom:0x53FEE4
b_area_omo2_toy_tank_ActorParts = 0x8022C8F0; // rom:0x53FF90
@ -11905,7 +11905,7 @@ b_area_omo2_toy_tank_idle = 0x8022CC38; // rom:0x5402D8
b_area_omo2_toy_tank_handleEvent = 0x8022CE5C; // rom:0x5404FC
b_area_omo2_toy_tank_takeTurn = 0x8022D228; // rom:0x5408C8
b_area_omo2_toy_tank_onHit = 0x8022D238; // rom:0x5408D8
b_area_omo2_toy_tank_shake_tank = 0x8022D5B8; // rom:0x540C58
b_area_omo2_toy_tank_EVS_ShakeTank = 0x8022D5B8; // rom:0x540C58
b_area_omo2_toy_tank_select_phase = 0x8022D5E8; // rom:0x540C88
b_area_omo2_toy_tank_update_phase = 0x8022DB10; // rom:0x5411B0
b_area_omo2_toy_tank_start_stilt_guys_phase = 0x8022DBA0; // rom:0x541240
@ -11923,7 +11923,7 @@ b_area_omo2_toy_tank_formation_stilt_guy_1 = 0x8022F570; // rom:0x542C10
b_area_omo2_toy_tank_formation_stilt_guy_2 = 0x8022F58C; // rom:0x542C2C
b_area_omo2_toy_tank_formation_shy_stack_1 = 0x8022F5A8; // rom:0x542C48
b_area_omo2_toy_tank_formation_shy_stack_2 = 0x8022F5C4; // rom:0x542C64
b_area_omo2_toy_tank_formation_shy_squad_dup = 0x8022F5E0; // rom:0x542C80
b_area_omo2_toy_tank_formation_shy_squad_redux = 0x8022F5E0; // rom:0x542C80
b_area_omo2_light_bulb_DefenseTable = 0x8022F600; // rom:0x542CA0
b_area_omo2_light_bulb_StatusTable = 0x8022F614; // rom:0x542CB4
b_area_omo2_light_bulb_ActorParts = 0x8022F6C0; // rom:0x542D60
@ -11933,7 +11933,7 @@ b_area_omo2_light_bulb_idle = 0x8022F774; // rom:0x542E14
b_area_omo2_light_bulb_handleEvent = 0x8022F7A8; // rom:0x542E48
b_area_omo2_light_bulb_takeTurn = 0x8022F9C8; // rom:0x543068
b_area_omo2_light_bulb_onHit = 0x8022F9D8; // rom:0x543078
b_area_omo2_light_bulb_shake_tank = 0x8022F9F4; // rom:0x543094
b_area_omo2_light_bulb_EVS_ShakeTank = 0x8022F9F4; // rom:0x543094
b_area_omo2_light_bulb_onDeath = 0x8022FA54; // rom:0x5430F4
b_area_omo2_omo_07_EVS_PreBattle = 0x8022FB20; // rom:0x5431C0
b_area_omo2_omo_07_EVS_PostBattle = 0x8022FB5C; // rom:0x5431FC
@ -12032,40 +12032,40 @@ b_area_omo2_4_signal_guy_init = 0x80231110; // rom:0x552550
b_area_omo2_4_signal_guy_idle = 0x8023129C; // rom:0x5526DC
b_area_omo2_4_signal_guy_handleEvent = 0x802312D0; // rom:0x552710
b_area_omo2_4_signal_guy_takeTurn = 0x80231754; // rom:0x552B94
b_area_omo2_5_shy_squad_dup_DefenseTable = 0x80231000; // rom:0x552BB0
b_area_omo2_5_shy_squad_dup_StatusTable = 0x8023100C; // rom:0x552BBC
b_area_omo2_5_shy_squad_dup_ActorParts = 0x802310B8; // rom:0x552C68
b_area_omo2_5_shy_squad_dup = 0x802312F8; // rom:0x552EA8
b_area_omo2_5_shy_squad_dup_IdleAnimations = 0x80231320; // rom:0x552ED0
b_area_omo2_5_shy_squad_dup_IdleAnimations_watt = 0x80231334; // rom:0x552EE4
b_area_omo2_5_shy_squad_dup_init = 0x80231348; // rom:0x552EF8
b_area_omo2_5_shy_squad_dup_nextTurn = 0x80231FC8; // rom:0x553B78
b_area_omo2_5_shy_squad_dup_idle = 0x80231FD8; // rom:0x553B88
b_area_omo2_5_shy_squad_dup_move_guy_to_pos = 0x80232104; // rom:0x553CB4
b_area_omo2_5_shy_squad_dup_onSpinSmash = 0x80232268; // rom:0x553E18
b_area_omo2_5_shy_squad_dup_displace_guy = 0x8023233C; // rom:0x553EEC
b_area_omo2_5_shy_squad_dup_onShock = 0x80232FC0; // rom:0x554B70
b_area_omo2_5_shy_squad_dup_displace_guy_2 = 0x80233088; // rom:0x554C38
b_area_omo2_5_shy_squad_dup_handleEvent = 0x80233384; // rom:0x554F34
b_area_omo2_5_shy_squad_dup_onHit = 0x8023392C; // rom:0x5554DC
b_area_omo2_5_shy_squad_dup_set_squad_animation = 0x80233DA4; // rom:0x555954
b_area_omo2_5_shy_squad_dup_80233E48 = 0x80233E48; // rom:0x5559F8
b_area_omo2_5_shy_squad_dup_onDeath = 0x80234024; // rom:0x555BD4
b_area_omo2_5_shy_squad_dup_takeTurn = 0x802342A0; // rom:0x555E50
b_area_omo2_5_shy_squad_dup_next_phase = 0x80234370; // rom:0x555F20
b_area_omo2_5_shy_squad_dup_run_away = 0x802343A8; // rom:0x555F58
b_area_omo2_5_shy_squad_dup_attack = 0x80234624; // rom:0x5561D4
b_area_omo2_5_shy_squad_dup_run_squad_to_pos = 0x80234EC4; // rom:0x556A74
b_area_omo2_6_shy_guy_dup_DefenseTable = 0x80231000; // rom:0x556C90
b_area_omo2_6_shy_guy_dup_StatusTable = 0x8023100C; // rom:0x556C9C
b_area_omo2_6_shy_guy_dup_ActorParts = 0x802310B8; // rom:0x556D48
b_area_omo2_6_shy_guy_dup = 0x802311FC; // rom:0x556E8C
b_area_omo2_6_shy_guy_dup_IdleAnimations = 0x80231224; // rom:0x556EB4
b_area_omo2_6_shy_guy_dup_init = 0x80231280; // rom:0x556F10
b_area_omo2_6_shy_guy_dup_idle = 0x802315EC; // rom:0x55727C
b_area_omo2_6_shy_guy_dup_run_to_pos = 0x80231620; // rom:0x5572B0
b_area_omo2_6_shy_guy_dup_handleEvent = 0x8023172C; // rom:0x5573BC
b_area_omo2_6_shy_guy_dup_takeTurn = 0x8023173C; // rom:0x5573CC
b_area_omo2_5_shy_squad_redux_DefenseTable = 0x80231000; // rom:0x552BB0
b_area_omo2_5_shy_squad_redux_StatusTable = 0x8023100C; // rom:0x552BBC
b_area_omo2_5_shy_squad_redux_ActorParts = 0x802310B8; // rom:0x552C68
b_area_omo2_5_shy_squad_redux = 0x802312F8; // rom:0x552EA8
b_area_omo2_5_shy_squad_redux_IdleAnimations = 0x80231320; // rom:0x552ED0
b_area_omo2_5_shy_squad_redux_IdleAnimations_watt = 0x80231334; // rom:0x552EE4
b_area_omo2_5_shy_squad_redux_init = 0x80231348; // rom:0x552EF8
b_area_omo2_5_shy_squad_redux_nextTurn = 0x80231FC8; // rom:0x553B78
b_area_omo2_5_shy_squad_redux_idle = 0x80231FD8; // rom:0x553B88
b_area_omo2_5_shy_squad_redux_move_guy_to_pos = 0x80232104; // rom:0x553CB4
b_area_omo2_5_shy_squad_redux_onSpinSmash = 0x80232268; // rom:0x553E18
b_area_omo2_5_shy_squad_redux_displace_guy = 0x8023233C; // rom:0x553EEC
b_area_omo2_5_shy_squad_redux_onShock = 0x80232FC0; // rom:0x554B70
b_area_omo2_5_shy_squad_redux_displace_guy_2 = 0x80233088; // rom:0x554C38
b_area_omo2_5_shy_squad_redux_handleEvent = 0x80233384; // rom:0x554F34
b_area_omo2_5_shy_squad_redux_onHit = 0x8023392C; // rom:0x5554DC
b_area_omo2_5_shy_squad_redux_set_squad_animation = 0x80233DA4; // rom:0x555954
b_area_omo2_5_shy_squad_redux_80233E48 = 0x80233E48; // rom:0x5559F8
b_area_omo2_5_shy_squad_redux_onDeath = 0x80234024; // rom:0x555BD4
b_area_omo2_5_shy_squad_redux_takeTurn = 0x802342A0; // rom:0x555E50
b_area_omo2_5_shy_squad_redux_next_phase = 0x80234370; // rom:0x555F20
b_area_omo2_5_shy_squad_redux_run_away = 0x802343A8; // rom:0x555F58
b_area_omo2_5_shy_squad_redux_attack = 0x80234624; // rom:0x5561D4
b_area_omo2_5_shy_squad_redux_run_squad_to_pos = 0x80234EC4; // rom:0x556A74
b_area_omo2_6_shy_squad_stub_DefenseTable = 0x80231000; // rom:0x556C90
b_area_omo2_6_shy_squad_stub_StatusTable = 0x8023100C; // rom:0x556C9C
b_area_omo2_6_shy_squad_stub_ActorParts = 0x802310B8; // rom:0x556D48
b_area_omo2_6_shy_squad_stub = 0x802311FC; // rom:0x556E8C
b_area_omo2_6_shy_squad_stub_IdleAnimations = 0x80231224; // rom:0x556EB4
b_area_omo2_6_shy_squad_stub_init = 0x80231280; // rom:0x556F10
b_area_omo2_6_shy_squad_stub_idle = 0x802315EC; // rom:0x55727C
b_area_omo2_6_shy_squad_stub_run_to_pos = 0x80231620; // rom:0x5572B0
b_area_omo2_6_shy_squad_stub_handleEvent = 0x8023172C; // rom:0x5573BC
b_area_omo2_6_shy_squad_stub_takeTurn = 0x8023173C; // rom:0x5573CC
func_80218000_5573E0 = 0x80218000; // type:func rom:0x5573E0
func_80218038_557418 = 0x80218038; // type:func rom:0x557418
func_80218070_557450 = 0x80218070; // type:func rom:0x557450
@ -26854,7 +26854,7 @@ D_8029FBAC = 0x8029FBAC; //
D_8029FBB0 = 0x8029FBB0; //
D_8029FBC0 = 0x8029FBC0; //
D_8029FBD0 = 0x8029FBD0; //
D_8029FBD4 = 0x8029FBD4; //
ApplyingBuff = 0x8029FBD4; //
gActionCommandStatus = 0x8029FBE0; //
D_802A19B0 = 0x802A19B0; //
D_802A1A60 = 0x802A1A60; //
@ -26929,7 +26929,7 @@ D_802ACC60 = 0x802ACC60; //
D_802ACC64 = 0x802ACC64; //
D_802ACC68 = 0x802ACC68; //
D_802ACC6C = 0x802ACC6C; //
D_802ACC70 = 0x802ACC70; //
BattleMenu_TargetHudElems = 0x802ACC70; //
D_802ACCD0 = 0x802ACCD0; //
D_802ACFE8 = 0x802ACFE8; //
D_802ACFEC = 0x802ACFEC; //