mirror of
https://github.com/pmret/papermario.git
synced 2024-09-18 23:42:35 +02:00
dro and flo (#285)
* dro_01 * UnkFunc25 * UnkFunc26 * UnkFunc27 * Fixup old UnkFuncs * a * UnkFunc28 * UnkFunc29 * UnkFunc30 * dro_02 * UnkFunc30 * UnkFunc31 * UnkFunc33 * UnkFunc34 * UnkFunc35 * UnkFunc36 * Fix splat.yaml and remove asm * Fixed finally * a * flo_00 * update func * flo_03 * flo_07 * flo_08 * UnkFunc37 & 38 * UnkFunc39 * UnkFunc40 * a * Some copies * Func * flo_09 * Fix linker alignment warnings * flo_10 (partial) * flo_11 * flo_12 * flo_13 * UnkFunc41 * Copy funcs * UnkFunc42 * flo_14 * UnkFunc43 * UnkFunc44 * flo_16 * UnkFunc44 * UnkFunc45 * flo_15 * flo_17 * flo_18 * flo_19 * flo_21 * flo_22 * flo_23 * flo_24 * flo_25 * cya asm * a * a * Finally OK! * Alter scripts * Fix food func * PR1 * PR2 * Add tree structs to disassembly and change names * tabs to spaces and callback & * Fix the script too * PR3 * Fucking newlines
This commit is contained in:
parent
d530ca24cd
commit
0ec2010b9b
@ -759,11 +759,19 @@ typedef struct CollisionData {
|
||||
/* 0x0E */ char unk_0E[2];
|
||||
} CollisionData; // size = 0x10
|
||||
|
||||
typedef struct ModelNode {
|
||||
/* 0x00 */ s32 type; /* 2 = model */
|
||||
/* 0x04 */ UNK_PTR displayList;
|
||||
/* 0x08 */ s32 numProperties;
|
||||
/* 0x0C */ UNK_PTR propertyList;
|
||||
/* 0x10 */ struct ModelGroupData* groupData;
|
||||
} ModelNode; // size = 0x14
|
||||
|
||||
typedef struct Model {
|
||||
/* 0x00 */ u16 flags;
|
||||
/* 0x02 */ s16 modelID;
|
||||
/* 0x04 */ char unk_04[4];
|
||||
/* 0x08 */ s32* modelNode;
|
||||
/* 0x08 */ struct ModelNode** modelNode;
|
||||
/* 0x0C */ struct ModelGroupData* groupData;
|
||||
/* 0x10 */ s32* currentSpecialMatrix;
|
||||
/* 0x14 */ char unk_14[4];
|
||||
@ -855,6 +863,41 @@ typedef struct EffectBlueprint {
|
||||
/* 0x14 */ void (*unk_14)(EffectInstance* effectInst);
|
||||
} EffectBlueprint; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
char unk_00[0x38];
|
||||
f32 unk_38[4];
|
||||
} EffectUnkStruct1;
|
||||
// TODO figure out what this actually is
|
||||
// func_800715D0 invokes gEffectTable[78]'s entryPoint function
|
||||
// func_80072230 invokes gEffectTable[111]'s entryPoint function
|
||||
// func_800729B0 invokes gEffectTable[131]'s entryPoint function
|
||||
// These functions are currently typed to return void
|
||||
// Assume they return an Effect*, and this struct is accessed at unk_0C,
|
||||
// but this struct differs from EffectInstanceData
|
||||
// Search for "struct N(temp)" for examples
|
||||
typedef struct {
|
||||
char unk_00[0x4];
|
||||
f32 unk_04;
|
||||
f32 unk_08;
|
||||
f32 unk_0C;
|
||||
f32 unk_10;
|
||||
char unk_14[0x4];
|
||||
s32 unk_18;
|
||||
s32 unk_1C;
|
||||
s32 unk_20;
|
||||
X32 unk_24;
|
||||
s32 unk_28;
|
||||
s32 unk_2C;
|
||||
s32 unk_30;
|
||||
s32 unk_34;
|
||||
s32 unk_38;
|
||||
char unk_3C[0xC];
|
||||
EffectUnkStruct1* unk_48;
|
||||
char unk_4C[0x24];
|
||||
s32 unk_70;
|
||||
s32 unk_74;
|
||||
} EffectInstanceDataThing;
|
||||
|
||||
typedef struct Effect {
|
||||
/* 0x00 */ s32 flags;
|
||||
/* 0x04 */ s32 effectIndex;
|
||||
@ -906,14 +949,6 @@ typedef struct ItemEntity {
|
||||
/* 0x58 */ s32 unk_58;
|
||||
} ItemEntity; // size = 0x5C
|
||||
|
||||
typedef struct ModelNode {
|
||||
/* 0x00 */ s32 type; /* 2 = model */
|
||||
/* 0x04 */ UNK_PTR displayList;
|
||||
/* 0x08 */ s32 numProperties;
|
||||
/* 0x0C */ UNK_PTR propertyList;
|
||||
/* 0x10 */ struct ModelGroupData* groupData;
|
||||
} ModelNode; // size = 0x14
|
||||
|
||||
typedef struct StaticShadowData {
|
||||
/* 0x00 */ s16 flags;
|
||||
/* 0x02 */ char unk_02[34];
|
||||
@ -1738,7 +1773,8 @@ typedef struct {
|
||||
} PauseItemPage; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ char unk_00[8];
|
||||
/* 0x00 */ f32 unk_00;
|
||||
/* 0x04 */ char unk_04[4];
|
||||
/* 0x08 */ s8* unk_08;
|
||||
/* 0x0C */ void* fpInit;
|
||||
/* 0x10 */ void* fpHandleInput;
|
||||
|
@ -19,6 +19,7 @@ void osCleanupThread(void);
|
||||
|
||||
void func_80070A90(s32, f32, f32, f32);
|
||||
void func_80070AF0(s32, f32, f32, f32);
|
||||
f32 signF(f32 val);
|
||||
|
||||
void* heap_malloc(s32 size);
|
||||
HeapNode* _heap_create(s32* addr, u32 size);
|
||||
@ -99,19 +100,27 @@ Npc* make_disguise_npc(s32 peachDisguise);
|
||||
s32 partner_player_can_pause(void);
|
||||
s32 disable_player_static_collisions(void);
|
||||
s32 disable_player_input(void);
|
||||
|
||||
void func_80027088(s32);
|
||||
void set_time_freeze_mode(s32);
|
||||
|
||||
void get_dpad_input_radial(f32* angle, f32* magnitude);
|
||||
|
||||
void transform_point(Matrix4f mtx, f32 inX, f32 inY, f32 inZ, f32 inS, f32* outX, f32* outY, f32* outZ, f32* outS);
|
||||
void func_8006F8F0(f32, f32, f32);
|
||||
void func_8006FEF0(s32, f32, f32, f32, f32);
|
||||
void func_80070190(s32, f32, f32, f32, s32, f32, s32, s32);
|
||||
|
||||
void func_80070F70(s32 var1, f32 var2, f32 var3, f32 var4, f32 var5, f32 var6, f32 var7, s32 var8, s32* unk);
|
||||
void func_80071090(s32, f32, f32, f32, s32);
|
||||
Effect* func_80071750(s32, f32, f32, f32, f32, s32);
|
||||
void func_800720B0(s32, f32, f32, f32, f32, s32);
|
||||
Effect* func_800720B0(s32, f32, f32, f32, f32, s32);
|
||||
void func_80072950(s32, f32, f32, f32, f32, s32 time);
|
||||
Effect* func_800715D0(s32, f32, f32, f32);
|
||||
Effect* func_80071810(s32, f32, f32, f32);
|
||||
Effect* func_80072890(s32, f32, f32, f32, f32, s32);
|
||||
Effect* func_800716F0(s32, f32, f32, f32, f32, s32);
|
||||
|
||||
void func_80071690(s32, f32, f32, f32);
|
||||
void func_800F4E40(void*);
|
||||
s32 func_800DDCEC(s32, f32*, f32*, f32*, f32, f32, f32, f32);
|
||||
|
||||
void update_collider_transform(s16 colliderID);
|
||||
void get_collider_center(s32 colliderID, f32* x, f32* y, f32* z);
|
||||
@ -200,7 +209,7 @@ ScriptInstance* start_script_in_group(Script* source, u8 priority, u8 initialSta
|
||||
void set_animation_rate(ActorID actorID, s32 partIndex, f32 rate);
|
||||
void func_8011B7C0(u16, s32, s32);
|
||||
AnimatedMesh* get_anim_mesh(s32 arg0);
|
||||
void set_transition_stencil_zoom_0(s32, f32);
|
||||
void set_transition_stencil_zoom_0(u8, f32);
|
||||
void set_transition_stencil_zoom_1(s32, f32);
|
||||
void func_80137DC0(s32, f32*, f32*);
|
||||
s32 set_transition_stencil_color(s32, u8, u8, u8);
|
||||
@ -295,7 +304,11 @@ s32 func_80071030(s32 a0, f32 a1, f32 a2, f32 a3, s32 a4);
|
||||
void func_80070CD0(s32, f32, f32, f32, f32, f32);
|
||||
|
||||
void func_802B2078(void);
|
||||
|
||||
extern f32 gCurtainScale;
|
||||
extern f32 gCurtainScaleGoal;
|
||||
extern f32 gCurtainFade;
|
||||
extern f32 gCurtainFadeGoal;
|
||||
extern UNK_FUN_PTR(gCurtainDrawCallback);
|
||||
void func_802DDA8C(s32, s32, f32);
|
||||
|
||||
void initialize_curtains(void);
|
||||
@ -321,21 +334,16 @@ f32 dead_set_float_variable(ScriptInstance* script, Bytecode var, f32 value);
|
||||
f32 dead_cos_rad(f32 x);
|
||||
f32 dead_atan2(f32 startX, f32 startZ, f32 endX, f32 endZ);
|
||||
|
||||
void func_8004A784(Npc* npc, f32 arg1, f32* arg2, s32* arg3, s32* arg4, s32* arg5);
|
||||
void base_UnkNpcAIFunc1(ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory);
|
||||
ApiStatus func_80045900(ScriptInstance* script);
|
||||
ApiStatus func_802D6420(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D6954(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D2B6C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_80045838(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D585C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CF56C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CA988(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CDE68(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D8248(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
s32 create_dynamic_entity_world(void (*updateFunc)(void), void (*drawFunc)(void));
|
||||
EntityModel* get_entity_model(s32 idx);
|
||||
f32 func_800E5938(s32 lag, s32* x, s32* y, s32* z);
|
||||
|
||||
void sfx_get_spatialized_sound_params(f32 arg0, f32 arg1, f32 arg2, s16* arg3, s16* arg4, s32 arg5);
|
||||
void sfx_play_sound_with_params(s32 arg0, u8 arg1, u8 arg2, s16 arg3);
|
||||
void* func_800729B0(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
void* func_800726B0(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
void func_8004A784(Npc* npc, f32 arg1, f32* arg2, s32* arg3, s32* arg4, s32* arg5);
|
||||
void base_UnkNpcAIFunc1(ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory);
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -19,7 +19,6 @@
|
||||
#define STATIC_ASSERT(condition) enum { static_assert_fail = 1/(!!(condition)) } // Causes division by zero ("not integer constant") if false
|
||||
|
||||
#define CAM(id) (&gCameras[id])
|
||||
#define CAM2(id) ({ Camera* c = gCameras; &c[id]; })
|
||||
|
||||
#define BADGE_MENU_PAGE(index) (&gBadgeMenuPages[index])
|
||||
#define ITEM_MENU_PAGE(index) (&gItemMenuPages[index])
|
||||
@ -38,6 +37,7 @@
|
||||
#define MAX_ENTITIES 30
|
||||
#define MAX_DYNAMIC_ENTITIES 16
|
||||
#define MAX_TEX_PANNERS 16
|
||||
#define MAX_ITEM_ENTITIES 256
|
||||
|
||||
// Alternative to libultra's M_PI: non-float version; more digits cause issues
|
||||
#define PI 3.141592f
|
||||
|
@ -219,7 +219,7 @@ typedef struct {
|
||||
/* 0x0C */ s32 pointZ;
|
||||
/* 0x10 */ s32 sizeX;
|
||||
/* 0x14 */ s32 sizeZ;
|
||||
/* 0x18 */ f32 unk_34;
|
||||
/* 0x18 */ f32 unk_18;
|
||||
/* 0x1C */ s16 unk_1C;
|
||||
} EnemyTerritoryThing; // size = 0x20
|
||||
|
||||
|
@ -261,12 +261,13 @@ ApiStatus DemoSetButtons(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus DemoJoystickRadial(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus DemoJoystickXY(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus WaitForPlayerInputEnabled(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
ApiStatus IsPlayerOnValidFloor(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CFE2C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CFD30(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus IsStartingConversation(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D5830(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D3474(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus SetNpcSprite(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
ApiStatus func_802D3624(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D36E0(ScriptInstance* script, s32 isInitialCall);
|
||||
@ -274,6 +275,32 @@ ApiStatus func_802D38EC(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D3840(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D39FC(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D3C58(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D2884(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D2C14(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D7B10(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D663C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_80045900(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D6420(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D6954(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D2B6C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_80045838(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D585C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CF56C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CA988(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CDE68(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D8248(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D286C(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D2520(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D5FF8(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D5FD8(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802D62E4(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_80044238(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802C9C70(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802C94A0(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802C90FC(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CFE80(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802CFFC0(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus func_802C971C(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern Script EnemyNpcHit;
|
||||
extern Script EnemyNpcDefeat;
|
||||
|
@ -75,7 +75,7 @@ typedef enum ScriptOpcode {
|
||||
ScriptOpcode_OR_CONST, ///< Args: container, value to bitwise OR with
|
||||
ScriptOpcode_CALL, ///< Args: *function, ...
|
||||
ScriptOpcode_SPAWN_SCRIPT, ///< Args: Script*
|
||||
ScriptOpcode_SPAWN_SCRIPT_GET_ID, ///< Args: Script*, container
|
||||
ScriptOpcode_SPAWN_GET_ID, ///< Args: Script*, container
|
||||
ScriptOpcode_AWAIT_SCRIPT, ///< Spawns a script and waits for it to return before continuing. Args: Script*
|
||||
ScriptOpcode_BIND_TRIGGER, ///< Args: Script*, trigger flags, s32 target, 1, Trigger*
|
||||
ScriptOpcode_UNBIND, ///< Unbinds any triggers bound to this script.
|
||||
|
@ -163,7 +163,7 @@ extern s32 gPauseMenuCommonIconIDs[8];
|
||||
extern s32 gPauseMenuTabIconIDs[6];
|
||||
extern s32 gPauseMenuStrings[348];
|
||||
extern s32 gPauseMenuIconScripts[8];
|
||||
extern MenuTab* gPauseMenuTabs[7];
|
||||
extern MenuTab gPauseMenuTabs[7];
|
||||
extern s32 gPauseMenuCursorPosX;
|
||||
extern s32 gPauseMenuCursorPosY;
|
||||
extern s32 gPauseMenuCursorOpacity;
|
||||
|
@ -4,11 +4,9 @@
|
||||
u32 func_80025D74(void* arg0, const unsigned char* str, s32 count);
|
||||
|
||||
void func_80025C60(void) {
|
||||
OSPiHandle** handle = &carthandle;
|
||||
|
||||
osEPiWriteIo(*handle, 0xB3FF0014, 0);
|
||||
osEPiWriteIo(*handle, 0xB3FF0004, 0);
|
||||
osEPiWriteIo(*handle, 0xB3FF0000, ASCII_TO_U32('I', 'S', '6', '4'));
|
||||
osEPiWriteIo(carthandle, 0xB3FF0014, 0);
|
||||
osEPiWriteIo(carthandle, 0xB3FF0004, 0);
|
||||
osEPiWriteIo(carthandle, 0xB3FF0000, ASCII_TO_U32('I', 'S', '6', '4'));
|
||||
}
|
||||
|
||||
void func_80025CC0(const char* fmt, ...) {
|
||||
|
@ -517,7 +517,7 @@ ApiStatus func_800458CC(ScriptInstance* script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus func_80045900(ScriptInstance* script) {
|
||||
ApiStatus func_80045900(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var0 = get_variable(script, *script->ptrReadPos);
|
||||
|
@ -128,7 +128,7 @@ INCLUDE_ASM(s32, "4ac90_len_3910", func_80070EB0);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80070F10);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80070F70);
|
||||
INCLUDE_ASM(void, "4ac90_len_3910", func_80070F70, s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s32 arg7, s32* arg8);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80070FD0);
|
||||
|
||||
@ -162,19 +162,19 @@ INCLUDE_ASM(s32, "4ac90_len_3910", func_80071510);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80071570);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_800715D0);
|
||||
INCLUDE_ASM(Effect*, "4ac90_len_3910", func_800715D0, s32 arg0, f32 arg1, f32 arg2, f32 arg3);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80071630);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80071690);
|
||||
INCLUDE_ASM(void, "4ac90_len_3910", func_80071690, s32 arg0, f32 arg1, f32 arg2, f32 arg3);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_800716F0);
|
||||
INCLUDE_ASM(Effect*, "4ac90_len_3910", func_800716F0, s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
|
||||
INCLUDE_ASM(Effect*, "4ac90_len_3910", func_80071750, s32 a0, f32 a1, f32 a2, f32 a3, f32 a4, s32 a5);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_800717B0);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80071810);
|
||||
INCLUDE_ASM(Effect*, "4ac90_len_3910", func_80071810, s32 arg0, f32 arg1, f32 arg2, f32 arg3);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80071870);
|
||||
|
||||
@ -220,7 +220,7 @@ INCLUDE_ASM(void, "4ac90_len_3910", func_80071FF0, s32 arg0, f32 arg1, f32 arg2,
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072050);
|
||||
|
||||
INCLUDE_ASM(void, "4ac90_len_3910", func_800720B0, s32 a0, f32 a1, f32 a2, f32 a3, f32 a4, s32 a5);
|
||||
INCLUDE_ASM(Effect*, "4ac90_len_3910", func_800720B0, s32 a0, f32 a1, f32 a2, f32 a3, f32 a4, s32 a5);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072110);
|
||||
|
||||
@ -254,7 +254,7 @@ INCLUDE_ASM(s32, "4ac90_len_3910", func_800725F0);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072650);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_800726B0);
|
||||
INCLUDE_ASM(void*, "4ac90_len_3910", func_800726B0, s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072710);
|
||||
|
||||
@ -264,13 +264,13 @@ INCLUDE_ASM(s32, "4ac90_len_3910", func_800727D0);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072830);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072890);
|
||||
INCLUDE_ASM(Effect*, "4ac90_len_3910", func_80072890, s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_800728F0);
|
||||
|
||||
INCLUDE_ASM(void, "4ac90_len_3910", func_80072950, s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 time);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_800729B0);
|
||||
INCLUDE_ASM(void*, "4ac90_len_3910", func_800729B0, s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
|
||||
INCLUDE_ASM(s32, "4ac90_len_3910", func_80072A10);
|
||||
|
||||
|
@ -24,7 +24,7 @@ INCLUDE_ASM(s32, "8a860_len_3f30", func_800F4CF0);
|
||||
|
||||
INCLUDE_ASM(s32, "8a860_len_3f30", func_800F4D28);
|
||||
|
||||
INCLUDE_ASM(s32, "8a860_len_3f30", func_800F4E40);
|
||||
INCLUDE_ASM(void, "8a860_len_3f30", func_800F4E40, void* arg0);
|
||||
|
||||
INCLUDE_ASM(s32, "8a860_len_3f30", func_800F4FC4);
|
||||
|
||||
|
@ -102,7 +102,7 @@ INCLUDE_ASM(s32, "DF950", sfx_adjust_env_sound_pos, s32 soundID, s32 arg1, f32 a
|
||||
|
||||
INCLUDE_ASM(s32, "DF950", func_80149A6C);
|
||||
|
||||
INCLUDE_ASM(s32, "DF950", sfx_play_sound_with_params);
|
||||
INCLUDE_ASM(void, "DF950", sfx_play_sound_with_params, s32 arg0, u8 arg1, u8 arg2, s16 arg3);
|
||||
|
||||
INCLUDE_ASM(s32, "DF950", sfx_adjust_env_sound_params);
|
||||
|
||||
@ -129,7 +129,7 @@ void sfx_play_sound_at_npc(s32 soundID, s32 arg1, s32 npcID) {
|
||||
INCLUDE_ASM(s32, "DF950", sfx_play_sound_at_position, s32 soundID, s32 value2, f32 posX, f32 posY,
|
||||
f32 posZ);
|
||||
|
||||
INCLUDE_ASM(s32, "DF950", sfx_get_spatialized_sound_params);
|
||||
INCLUDE_ASM(void, "DF950", sfx_get_spatialized_sound_params, f32 arg0, f32 arg1, f32 arg2, s16* arg3, s16* arg4, s32 arg5);
|
||||
|
||||
INCLUDE_ASM(s32, "DF950", sfx_compute_spatialized_sound_params_0);
|
||||
|
||||
|
@ -5,16 +5,16 @@
|
||||
#include "goomba.h"
|
||||
|
||||
ApiStatus func_8021818C_430B2C(ScriptInstance* script, s32 isInitialCall);
|
||||
s32 goomba_anims_running[];
|
||||
s32 goomba_anims[];
|
||||
s32 goomba_defense_table[];
|
||||
s32 goomba_status_table[];
|
||||
s32 goomba_defense_table[];
|
||||
ActorPartDesc goomba_parts[];
|
||||
Script goomba_init;
|
||||
Script goomba_turn;
|
||||
Script goomba_idle;
|
||||
Script goomba_dispatch;
|
||||
extern s32 goomba_anims_running[];
|
||||
extern s32 goomba_anims[];
|
||||
extern s32 goomba_defense_table[];
|
||||
extern s32 goomba_status_table[];
|
||||
extern s32 goomba_defense_table[];
|
||||
extern ActorPartDesc goomba_parts[];
|
||||
extern Script goomba_init;
|
||||
extern Script goomba_turn;
|
||||
extern Script goomba_idle;
|
||||
extern Script goomba_dispatch;
|
||||
|
||||
s32 goomba_defense_table[] = {
|
||||
ELEMENT_NORMAL, 0,
|
||||
|
@ -105,8 +105,8 @@ ApiStatus N(func_802A1450_7309F0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
||||
ApiStatus N(AddFP)(ScriptInstance* script, s32 isInitialCall) {
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
|
||||
s32 amt = get_variable(script, *script->ptrReadPos);
|
||||
|
||||
// @bug Should be playerData->curFP
|
||||
s32 newFP = playerData->curHP + amt;
|
||||
|
||||
|
@ -75,33 +75,9 @@ ApiStatus N(func_802A1280_72A9D0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
// This is a duplicate, search for others
|
||||
// TODO figure out what this actually is
|
||||
// func_80072230 invokes gEffectTable[111]'s entryPoint function
|
||||
// that function is currently typed to return void
|
||||
// Assume it returns an Effect* and unk_0C is this EffectInstanceData
|
||||
// s32 unk_0C; //? Maybe EffectInstanceData too ?
|
||||
struct N(temp2) {
|
||||
char unk_00[0x8];
|
||||
f32 unk_08;
|
||||
f32 unk_0C;
|
||||
f32 unk_10;
|
||||
char unk_14[0x4];
|
||||
s32 unk_18;
|
||||
s32 unk_1C;
|
||||
s32 unk_20;
|
||||
char unk_24[0x4];
|
||||
s32 unk_28;
|
||||
s32 unk_2C;
|
||||
s32 unk_30;
|
||||
char unk_34[0x3C];
|
||||
s32 unk_70;
|
||||
s32 unk_74;
|
||||
} N(temp2);
|
||||
|
||||
struct N(temp) {
|
||||
char unk_00[0xC];
|
||||
struct N(temp2)* unk_0C;
|
||||
EffectInstanceDataThing* unk_0C;
|
||||
} N(temp);
|
||||
|
||||
ApiStatus N(func_802A12E0_72AA30)(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
@ -7,6 +7,9 @@
|
||||
#undef NAMESPACE
|
||||
#define NAMESPACE battle_item_mystery
|
||||
|
||||
ApiStatus N(func_802A13E4_72C994)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_802A188C_72CE3C)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
struct N(tempStc) {
|
||||
s32 iconId;
|
||||
s32 unk_04;
|
||||
@ -14,10 +17,6 @@ struct N(tempStc) {
|
||||
|
||||
extern s32 N(D_802A227C_72D82C)[8];
|
||||
extern s32 N(D_802A229C_72D84C)[8];
|
||||
|
||||
extern Script N(UseItemWithEffect);
|
||||
|
||||
ApiStatus N(func_802A13E4_72C994)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_802A188C_72CE3C)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
#endif
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
INCLUDE_ASM(void, "cd180_len_38f0", _render_transition_stencil, s32 arg0, f32 arg1, s32 arg2);
|
||||
|
||||
INCLUDE_ASM(void, "cd180_len_38f0", set_transition_stencil_zoom_0, s32 arg0, f32 arg1);
|
||||
INCLUDE_ASM(void, "cd180_len_38f0", set_transition_stencil_zoom_0, u8 arg0, f32 arg1);
|
||||
|
||||
INCLUDE_ASM(void, "cd180_len_38f0", set_transition_stencil_zoom_1, s32 arg0, f32 arg1);
|
||||
|
||||
|
@ -176,7 +176,7 @@ ApiStatus PlaySoundAtF(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
||||
INCLUDE_ASM(ApiStatus, "evt/fa4c0_len_3bf0", func_802D6420, ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
INCLUDE_ASM(s32, "evt/fa4c0_len_3bf0", func_802D663C);
|
||||
INCLUDE_ASM(ApiStatus, "evt/fa4c0_len_3bf0", func_802D663C, ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
// TODO: probably a split here (sound_api, item_api)
|
||||
|
||||
|
@ -161,7 +161,7 @@ ApiStatus func_802C90FC(ScriptInstance* script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(s32, "evt/map_api", func_802C90FC);
|
||||
INCLUDE_ASM(ApiStatus, "evt/map_api", func_802C90FC, ScriptInstance* script, s32 isInitialCall);
|
||||
#endif
|
||||
|
||||
ApiStatus func_802C91A4(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
@ -362,7 +362,7 @@ ApiStatus func_802D286C(ScriptInstance* script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "evt/player_api", func_802D2884);
|
||||
INCLUDE_ASM(ApiStatus, "evt/player_api", func_802D2884, ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
ApiStatus DisablePulseStone(ScriptInstance* script, s32 isInitialCall) {
|
||||
PlayerStatus* playerStatus = &gPlayerStatus;
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
s32 func_800493EC(Enemy* enemy, s32 arg1, f32 arg2, f32 arg3);
|
||||
ApiStatus N(func_80240C90_BDDE40)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240C90_BDDE40)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
extern Script N(main);
|
||||
extern Script N(80241040);
|
||||
|
@ -201,10 +201,9 @@ NpcGroupList N(npcGroupList_80241A9C) = {
|
||||
};
|
||||
|
||||
s32 N(func_80240000_BDD1B0)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
PlayerStatus** playerStatus;
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
f32 phi_f20;
|
||||
s32 ret = FALSE;
|
||||
|
||||
@ -217,7 +216,6 @@ s32 N(func_80240000_BDD1B0)(ScriptInstance* script, NpcAISettings* aiSettings, E
|
||||
phi_f20 = 270.0f;
|
||||
}
|
||||
|
||||
playerStatus = &gPlayerStatusPtr;
|
||||
if (fabsf(get_clamped_angle_diff(phi_f20,
|
||||
atan2(npc->pos.x, npc->pos.z,
|
||||
gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z))) > 75.0) {
|
||||
@ -259,29 +257,7 @@ void N(func_802401D4_BDD384)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc22.inc.c"
|
||||
|
||||
void N(func_802404D0_BDD680)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->duration = 15;
|
||||
script->functionTemp[0].s = 0x28;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc8.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc16.inc.c"
|
||||
|
||||
@ -309,41 +285,7 @@ void N(func_80240694_BDD844)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80240834_BDD9E4)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ;
|
||||
s32 phi_s1;
|
||||
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
phi_s1 = 0;
|
||||
if (is_point_within_region(enemy->territory->wander.detectShape,
|
||||
enemy->territory->wander.detect.x, enemy->territory->wander.detect.z,
|
||||
npc->pos.x, npc->pos.z, enemy->territory->wander.detectSizeX,
|
||||
enemy->territory->wander.detectSizeZ)) {
|
||||
phi_s1 = 1;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
|
||||
if (func_800DDC44(npc->unk_80, &posX, &posY, &posZ,
|
||||
1.0f, npc->yaw, npc->collisionHeight, npc->collisionRadius)) {
|
||||
phi_s1 = 1;
|
||||
}
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
phi_s1 = 1;
|
||||
}
|
||||
if (phi_s1) {
|
||||
script->functionTemp[0].s = 4;
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc10.inc.c"
|
||||
|
||||
void N(func_80240984_BDDB34)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -361,21 +303,7 @@ void N(func_80240984_BDDB34)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80240A30_BDDBE0)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
if (func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
script->functionTemp[0].s = 12;
|
||||
} else if (dist2D(npc->pos.x, npc->pos.z, enemy->territory->wander.point.x, enemy->territory->wander.point.z) <= npc->moveSpeed) {
|
||||
npc->duration = 10;
|
||||
script->functionTemp[0].s = 50;
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, enemy->territory->wander.point.x, enemy->territory->wander.point.z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc9.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc19.inc.c"
|
||||
|
||||
@ -399,7 +327,7 @@ s32 N(func_80240C90_BDDE40)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
@ -445,7 +373,7 @@ s32 N(func_80240C90_BDDE40)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 4:
|
||||
N(UnkNpcAIFunc22)(script, npcAISettings, territoryPtr);
|
||||
case 5:
|
||||
N(func_802404D0_BDD680)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc8)(script, npcAISettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 12:
|
||||
func_80049F7C(script, npcAISettings, territoryPtr);
|
||||
@ -469,7 +397,7 @@ s32 N(func_80240C90_BDDE40)(ScriptInstance *script, s32 isInitialCall) {
|
||||
N(func_80240694_BDD844)(script, npcAISettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 22:
|
||||
N(func_80240834_BDD9E4)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc10)(script, npcAISettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 40:
|
||||
N(func_80240984_BDDB34)(script, npcAISettings, territoryPtr);
|
||||
@ -477,7 +405,7 @@ s32 N(func_80240C90_BDDE40)(ScriptInstance *script, s32 isInitialCall) {
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
case 41:
|
||||
N(func_80240A30_BDDBE0)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc9)(script, npcAISettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 50:
|
||||
N(UnkNpcAIFunc19)(script, npcAISettings, territoryPtr);
|
||||
|
@ -10,11 +10,6 @@ ApiStatus N(func_80241648_BE03D8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241680_BE0410)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802415F4_BE0384)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024113C_BDFECC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024113C_BDFECC)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(AddPlayerHandsOffset)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241648_BE03D8)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241680_BE0410)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_802415F4_BE0384)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
extern Script N(main);
|
||||
extern Script N(80241780);
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "sprite/npc/boo.h"
|
||||
#include "sprite/npc/world_bow.h"
|
||||
|
||||
s32 D_80244A20[0x70];
|
||||
static s32 N(D_80244A20)[112];
|
||||
|
||||
Script N(exitWalk_80241830) = EXIT_WALK_SCRIPT(60, 0, "arn_07", 1);
|
||||
|
||||
@ -91,7 +91,7 @@ NpcSettings N(npcSettings_80241C3C) = {
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
s32* N(D_80241C68_BE09F8) = NULL;
|
||||
s32** N(D_80241C68_BE09F8) = NULL;
|
||||
|
||||
Script N(80241C6C) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 0);
|
||||
@ -137,7 +137,7 @@ Script N(80241CD4) = SCRIPT({
|
||||
|
||||
Script N(80241E18) = {
|
||||
SI_CMD(ScriptOpcode_CALL, (Bytecode) N(func_80241680_BE0410), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_BIND_PADLOCK, (Bytecode) N(80241CD4), 0x10, 0, (Bytecode) D_80244A20, 0, 1),
|
||||
SI_CMD(ScriptOpcode_BIND_PADLOCK, (Bytecode) N(80241CD4), 0x10, 0, (Bytecode) N(D_80244A20), 0, 1),
|
||||
SI_CMD(ScriptOpcode_CALL, (Bytecode) N(func_802415F4_BE0384), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_RETURN),
|
||||
SI_CMD(ScriptOpcode_END)
|
||||
@ -985,46 +985,11 @@ void N(func_8024067C_BDF40C)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
void N(func_8024094C_BDF6DC)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_80240AD4_BDF864)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_80240B94_BDF924)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1041,7 +1006,7 @@ ApiStatus N(func_80240B94_BDF924)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -1061,7 +1026,7 @@ ApiStatus N(func_80240B94_BDF924)(ScriptInstance* script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -1096,13 +1061,13 @@ ApiStatus N(func_80240B94_BDF924)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, npcAISettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024094C_BDF6DC)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc15)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_80240AD4_BDF864)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc16)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
@ -1177,7 +1142,7 @@ ApiStatus N(func_8024113C_BDFECC)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 100.0f;
|
||||
territory.unk_18 = 100.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
@ -1208,23 +1173,19 @@ ApiStatus N(func_8024113C_BDFECC)(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
||||
/// Pushes/pops script local variables to D_80241C68_BE09F8
|
||||
ApiStatus N(func_802412B0_BE0040)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80241C68_BE09F8);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = (s32*) i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_80241C68_BE09F8) == NULL) {
|
||||
N(D_80241C68_BE09F8) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_80241C68_BE09F8)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_80241C68_BE09F8)[i];
|
||||
}
|
||||
ptr = &N(D_80241C68_BE09F8);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_80241C68_BE09F8));
|
||||
N(D_80241C68_BE09F8) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
@ -1265,18 +1226,18 @@ ApiStatus N(func_80241648_BE03D8)(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
||||
ApiStatus N(func_80241680_BE0410)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* var1 = get_variable(script, *args++);
|
||||
s32* ptr = get_variable(script, *args);
|
||||
s32 i;
|
||||
|
||||
if (var1 != NULL) {
|
||||
for (i = 0; var1[i] != 0; i++) {
|
||||
D_80244A20[i] = var1[i];
|
||||
if (ptr != NULL) {
|
||||
for (i = 0; ptr[i] != 0; i++) {
|
||||
N(D_80244A20)[i] = ptr[i];
|
||||
}
|
||||
D_80244A20[i] = 0;
|
||||
N(D_80244A20)[i] = 0;
|
||||
} else {
|
||||
for (i = 0; i < 0x70; i++) {
|
||||
D_80244A20[i] = i + 16;
|
||||
D_80244A20[0x70] = 0;
|
||||
N(D_80244A20)[i] = i + 16;
|
||||
N(D_80244A20)[112] = 0;
|
||||
}
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
|
@ -412,46 +412,11 @@ void N(func_8024067C_BE3E2C)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
void N(func_8024094C_BE40FC)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_80240AD4_BE4284)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_80240B94_BE4344)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -468,7 +433,7 @@ ApiStatus N(func_80240B94_BE4344)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -488,7 +453,7 @@ ApiStatus N(func_80240B94_BE4344)(ScriptInstance* script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -523,13 +488,13 @@ ApiStatus N(func_80240B94_BE4344)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, aiSettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024094C_BE40FC)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc15)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_80240AD4_BE4284)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc16)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
@ -707,70 +672,7 @@ INCLUDE_ASM(void, "world/area_arn/arn_04/events", arn_04_func_80241040_BE47F0, S
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1_copy.inc.c"
|
||||
|
||||
void N(func_80241728_BE4ED8)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f24 = (f32)enemy->varTable[3] / 100.0;
|
||||
f32 temp_f26 = temp_f24 + (f32)((f32)enemy->varTable[7] / 100.0);
|
||||
s32 var;
|
||||
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
}
|
||||
|
||||
if (enemy->varTable[1] > 0) {
|
||||
f32 temp_f22 = (f32)enemy->varTable[1] / 100.0;
|
||||
f32 sin_degrees = sin_deg(enemy->varTable[2]);
|
||||
s32 phi_v0;
|
||||
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f24 + (sin_degrees * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f26 + (sin_degrees * temp_f22);
|
||||
}
|
||||
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if ((npc->turnAroundYawAdjustment == 0) && (npc->duration <= 0)) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = (rand_int(1000) % 11) + 5;
|
||||
} else {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc4.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
@ -788,121 +690,9 @@ void N(func_80241AE4_BE5294)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc3.inc.c"
|
||||
|
||||
void N(func_80241CE8_BE5498)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f2;
|
||||
s32 phi_v0;
|
||||
f32 phi_f20;
|
||||
f32 a = enemy->varTable[3];
|
||||
f32 b = enemy->varTable[7];
|
||||
#include "world/common/UnkFunc6.inc.c"
|
||||
|
||||
npc->jumpVelocity += npc->jumpScale;
|
||||
temp_f20 = a / 100.0;
|
||||
temp_f22 = b / 100.0;
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
if (npc->jumpVelocity >= 0.0) {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
npc->currentAnim = enemy->animList[9];
|
||||
enemy->unk_07 = 0;
|
||||
if (!(npc->flags & 8)) {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
} else {
|
||||
phi_v0 = FALSE;
|
||||
}
|
||||
if (phi_v0) {
|
||||
temp_f2 = posY + temp_f20;
|
||||
if (temp_f2 <= npc->pos.y) {
|
||||
npc->pos.y = temp_f2;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->pos.y >= npc->moveToPos.y) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->jumpVelocity < 0.0) {
|
||||
npc->duration++;
|
||||
if (npc->duration >= aiSettings->unk_20) {
|
||||
npc->duration = 0;
|
||||
phi_f20 = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
temp_f0_2 = get_clamped_angle_diff(npc->yaw, phi_f20);
|
||||
if (aiSettings->unk_1C.s < fabsf(temp_f0_2)) {
|
||||
phi_f20 = npc->yaw;
|
||||
if (temp_f0_2 < 0.0f) {
|
||||
phi_f20 += -aiSettings->unk_1C.s;
|
||||
} else {
|
||||
phi_f20 += aiSettings->unk_1C.s;
|
||||
}
|
||||
}
|
||||
npc->yaw = clamp_angle(phi_f20);
|
||||
}
|
||||
|
||||
if (npc->flags & 8) {
|
||||
if (npc->pos.y + npc->jumpVelocity < temp_f22) {
|
||||
npc->pos.y = temp_f22;
|
||||
npc->jumpVelocity = 0.0f;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y + npc->collisionHeight;
|
||||
posZ = npc->pos.z;
|
||||
posW = (fabsf(npc->jumpVelocity) + npc->collisionHeight) + 10.0;
|
||||
if (func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW)) {
|
||||
if (posW <= (npc->collisionHeight + fabsf(npc->jumpVelocity))) {
|
||||
npc->jumpVelocity = 0.0f;
|
||||
npc->pos.y = posY;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
} else if (fabsf(npc->jumpVelocity) < ((npc->pos.y - temp_f22) + npc->collisionHeight)) {
|
||||
npc->pos.y = npc->pos.y + npc->jumpVelocity;
|
||||
return;
|
||||
}
|
||||
npc->jumpVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80242078_BE5828)(Npc *npc, Enemy *enemy, ScriptInstance *script, NpcAISettings *aiSettings) {
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
temp_v1 = npc->flags & ~0x200;
|
||||
npc->flags = (npc->flags & ~0x200) | 0x800;
|
||||
if (enemy->territory->wander.isFlying) {
|
||||
npc->flags = temp_v1 | 0x808;
|
||||
} else {
|
||||
npc->flags = npc->flags & ~8;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[9] = 0;
|
||||
enemy->varTable[3] = ((posW * 100.0) + 0.5);
|
||||
enemy->varTable[7] = ((posY * 100.0) + 0.5);
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
enemy->unk_B0 |= 0x10;
|
||||
}
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
ApiStatus N(func_8024219C_BE594C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -918,11 +708,11 @@ ApiStatus N(func_8024219C_BE594C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_80242078_BE5828)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -943,7 +733,7 @@ ApiStatus N(func_8024219C_BE594C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1_copy)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80241728_BE4ED8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -957,7 +747,7 @@ ApiStatus N(func_8024219C_BE594C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 14:
|
||||
N(func_80241CE8_BE5498)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
@ -968,7 +758,7 @@ s32 N(func_80242388_BE5B38)(ScriptInstance* script, NpcAISettings *aiSettings, E
|
||||
PlayerStatus** playerStatus;
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
f32 phi_f20;
|
||||
s32 ret = FALSE;
|
||||
|
||||
@ -1023,29 +813,7 @@ void N(func_8024255C_BE5D0C)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc22.inc.c"
|
||||
|
||||
void N(func_80242858_BE6008)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->duration = 15;
|
||||
script->functionTemp[0].s = 0x28;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc8.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc16.inc.c"
|
||||
|
||||
@ -1060,7 +828,6 @@ void N(func_80242A1C_BE61CC)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
@ -1074,41 +841,7 @@ void N(func_80242A1C_BE61CC)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80242BBC_BE636C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ;
|
||||
s32 phi_s1;
|
||||
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
phi_s1 = 0;
|
||||
if (is_point_within_region(enemy->territory->wander.detectShape,
|
||||
enemy->territory->wander.detect.x, enemy->territory->wander.detect.z,
|
||||
npc->pos.x, npc->pos.z, enemy->territory->wander.detectSizeX,
|
||||
enemy->territory->wander.detectSizeZ)) {
|
||||
phi_s1 = 1;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
|
||||
if (func_800DDC44(npc->unk_80, &posX, &posY, &posZ,
|
||||
1.0f, npc->yaw, npc->collisionHeight, npc->collisionRadius)) {
|
||||
phi_s1 = 1;
|
||||
}
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
phi_s1 = 1;
|
||||
}
|
||||
if (phi_s1) {
|
||||
script->functionTemp[0].s = 4;
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc10.inc.c"
|
||||
|
||||
void N(func_80242D0C_BE64BC)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1126,21 +859,7 @@ void N(func_80242D0C_BE64BC)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80242DB8_BE6568)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
if (func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
script->functionTemp[0].s = 12;
|
||||
} else if (dist2D(npc->pos.x, npc->pos.z, enemy->territory->wander.point.x, enemy->territory->wander.point.z) <= npc->moveSpeed) {
|
||||
npc->duration = 10;
|
||||
script->functionTemp[0].s = 50;
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, enemy->territory->wander.point.x, enemy->territory->wander.point.z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc9.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc19.inc.c"
|
||||
|
||||
@ -1165,7 +884,7 @@ ApiStatus N(func_80243018_BE67C8)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
@ -1214,7 +933,7 @@ ApiStatus N(func_80243018_BE67C8)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 4:
|
||||
N(UnkNpcAIFunc22)(script, aiSettings, territoryPtr);
|
||||
case 5:
|
||||
N(func_80242858_BE6008)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc8)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 12:
|
||||
func_80049F7C(script, aiSettings, territoryPtr);
|
||||
@ -1238,7 +957,7 @@ ApiStatus N(func_80243018_BE67C8)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(func_80242A1C_BE61CC)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 22:
|
||||
N(func_80242BBC_BE636C)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc10)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 40:
|
||||
N(func_80242D0C_BE64BC)(script, aiSettings, territoryPtr);
|
||||
@ -1246,7 +965,7 @@ ApiStatus N(func_80243018_BE67C8)(ScriptInstance* script, s32 isInitialCall) {
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
case 41:
|
||||
N(func_80242DB8_BE6568)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc9)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 50:
|
||||
N(UnkNpcAIFunc19)(script, aiSettings, territoryPtr);
|
||||
|
@ -1026,85 +1026,11 @@ void N(func_80240000_BE7BE0)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
|
||||
void N(func_80240158_BE7D38)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 x, z;
|
||||
s32 var;
|
||||
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if (func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
if (npc->moveSpeed < 4.0) {
|
||||
func_8003D660(npc, 0);
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
}
|
||||
|
||||
x = script->functionTemp[2].s[enemy->territory->patrol.points].x;
|
||||
z = script->functionTemp[2].s[enemy->territory->patrol.points].z;
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, x, z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (dist2D(npc->pos.x, npc->pos.z, x, z) <= npc->moveSpeed) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->moveTime <= 0) ||
|
||||
(aiSettings->waitTime <= 0) || (script->functionTemp[1].s == 0)) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
if (rand_int(10000) % 100 < aiSettings->moveTime) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc13.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_802404C0_BE80A0)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if ((aiSettings->unk_14 >= 0) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (!(enemy->npcSettings->unk_2A & 1)) {
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
script->functionTemp[0].s = 10;
|
||||
}
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->duration--;
|
||||
if (npc->duration == 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc14.inc.c"
|
||||
|
||||
void N(func_8024067C_BE825C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1129,46 +1055,11 @@ void N(func_8024067C_BE825C)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
void N(func_8024094C_BE852C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_80240AD4_BE86B4)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_80240B94_BE8774)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1185,7 +1076,7 @@ ApiStatus N(func_80240B94_BE8774)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -1205,7 +1096,7 @@ ApiStatus N(func_80240B94_BE8774)(ScriptInstance* script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -1222,12 +1113,12 @@ ApiStatus N(func_80240B94_BE8774)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_80240000_BE7BE0)(script, aiSettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80240158_BE7D38)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc13)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802404C0_BE80A0)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc14)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_8024067C_BE825C)(script, aiSettings, territoryPtr);
|
||||
@ -1240,13 +1131,13 @@ ApiStatus N(func_80240B94_BE8774)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, aiSettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024094C_BE852C)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc15)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_80240AD4_BE86B4)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc16)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
@ -1322,7 +1213,7 @@ ApiStatus N(func_8024113C_BE8D1C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 100.0f;
|
||||
territory.unk_18 = 100.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
|
@ -2,38 +2,9 @@
|
||||
#include "sprite/npc/world_tubba.h"
|
||||
#include "sprite/npc/tubbas_heart.h"
|
||||
|
||||
void* func_800729B0(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
void* func_800726B0(s32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5);
|
||||
|
||||
// This is a duplicate, search for others
|
||||
// TODO figure out what this actually is
|
||||
// func_800729B0 invokes gEffectTable[131]'s entryPoint function
|
||||
// that function is currently typed to return void
|
||||
// Assume it returns an Effect* and unk_0C is this EffectInstanceData:
|
||||
// s32 unk_0C; //? Maybe EffectInstanceData too ?
|
||||
struct N(temp2) {
|
||||
char unk_00[0x4];
|
||||
f32 unk_04;
|
||||
f32 unk_08;
|
||||
f32 unk_0C;
|
||||
f32 unk_10;
|
||||
char unk_14[0x4];
|
||||
s32 unk_18;
|
||||
s32 unk_1C;
|
||||
s32 unk_20;
|
||||
f32 unk_24;
|
||||
s32 unk_28;
|
||||
s32 unk_2C;
|
||||
s32 unk_30;
|
||||
s8 unk_34;
|
||||
char unk_38[0x38];
|
||||
s32 unk_70;
|
||||
s32 unk_74;
|
||||
} N(temp2);
|
||||
|
||||
struct N(temp) {
|
||||
char unk_00[0xC];
|
||||
struct N(temp2)* unk_0C;
|
||||
EffectInstanceDataThing* unk_0C;
|
||||
} N(temp);
|
||||
|
||||
typedef struct {
|
||||
@ -132,7 +103,7 @@ ApiStatus N(func_802401AC_BECF9C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
ptr->unk_46++;
|
||||
if (ptr->unk_46 >= 60) {
|
||||
ptr->unk_54 = func_800726B0(1, ptr->unk_18, ptr->unk_1C, ptr->unk_20, 1.0f, 0);
|
||||
ptr->unk_54->unk_0C->unk_34 = ptr->unk_38;
|
||||
*((s8*)ptr->unk_54->unk_0C + 0x34) = ptr->unk_38;
|
||||
ptr->unk_54->unk_0C->unk_20 = 0;
|
||||
ptr->unk_40 = create_shadow_type(0, ptr->unk_18, ptr->unk_28, ptr->unk_20);
|
||||
ptr->unk_44 = 3;
|
||||
@ -188,7 +159,7 @@ ApiStatus N(func_802401AC_BECF9C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
ptr->unk_2C = clamp_angle(ptr->unk_2C + ptr->unk_30);
|
||||
|
||||
case 2:
|
||||
ptr->unk_54->unk_0C->unk_24 = ptr->unk_2C;
|
||||
ptr->unk_54->unk_0C->unk_24.f = ptr->unk_2C;
|
||||
ptr->unk_54->unk_0C->unk_04 = ptr->unk_18;
|
||||
ptr->unk_54->unk_0C->unk_08 = ptr->unk_04;
|
||||
ptr->unk_54->unk_0C->unk_0C = ptr->unk_20;
|
||||
@ -217,7 +188,7 @@ ApiStatus N(func_802405FC_BED3EC)(ScriptInstance* script, s32 isInitialCall) {
|
||||
ptr->unk_20 = get_float_variable(script, *args++);
|
||||
ptr->unk_28 = get_float_variable(script, *args++);
|
||||
ptr->unk_54 = func_800726B0(1, ptr->unk_18, ptr->unk_24, ptr->unk_20, 1.0f, 0);
|
||||
ptr->unk_54->unk_0C->unk_34 = ptr->unk_38;
|
||||
*((s8*)ptr->unk_54->unk_0C + 0x34) = ptr->unk_38;
|
||||
ptr->unk_54->unk_0C->unk_20 = 0;
|
||||
ptr->unk_40 = create_shadow_type(0, ptr->unk_18, ptr->unk_28, ptr->unk_20);
|
||||
ptr->unk_4C = 0x10E;
|
||||
|
@ -1330,70 +1330,7 @@ INCLUDE_ASM(void, "world/area_arn/arn_07/events", arn_07_func_80240B00_BED8F0, S
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_802411E8_BEDFD8)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f24 = (f32)enemy->varTable[3] / 100.0;
|
||||
f32 temp_f26 = temp_f24 + (f32)((f32)enemy->varTable[7] / 100.0);
|
||||
s32 var;
|
||||
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
}
|
||||
|
||||
if (enemy->varTable[1] > 0) {
|
||||
f32 temp_f22 = (f32)enemy->varTable[1] / 100.0;
|
||||
f32 sin_degrees = sin_deg(enemy->varTable[2]);
|
||||
s32 phi_v0;
|
||||
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f24 + (sin_degrees * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f26 + (sin_degrees * temp_f22);
|
||||
}
|
||||
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if ((npc->turnAroundYawAdjustment == 0) && (npc->duration <= 0)) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = (rand_int(1000) % 11) + 5;
|
||||
} else {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc4.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
@ -1411,121 +1348,9 @@ void N(func_802415A4_BEE394)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc3.inc.c"
|
||||
|
||||
void N(func_802417A8_BEE598)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f2;
|
||||
s32 phi_v0;
|
||||
f32 phi_f20;
|
||||
f32 a = enemy->varTable[3];
|
||||
f32 b = enemy->varTable[7];
|
||||
#include "world/common/UnkFunc6.inc.c"
|
||||
|
||||
npc->jumpVelocity += npc->jumpScale;
|
||||
temp_f20 = a / 100.0;
|
||||
temp_f22 = b / 100.0;
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
if (npc->jumpVelocity >= 0.0) {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
npc->currentAnim = enemy->animList[9];
|
||||
enemy->unk_07 = 0;
|
||||
if (!(npc->flags & 8)) {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
} else {
|
||||
phi_v0 = FALSE;
|
||||
}
|
||||
if (phi_v0) {
|
||||
temp_f2 = posY + temp_f20;
|
||||
if (temp_f2 <= npc->pos.y) {
|
||||
npc->pos.y = temp_f2;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->pos.y >= npc->moveToPos.y) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->jumpVelocity < 0.0) {
|
||||
npc->duration++;
|
||||
if (npc->duration >= aiSettings->unk_20) {
|
||||
npc->duration = 0;
|
||||
phi_f20 = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
temp_f0_2 = get_clamped_angle_diff(npc->yaw, phi_f20);
|
||||
if (aiSettings->unk_1C.s < fabsf(temp_f0_2)) {
|
||||
phi_f20 = npc->yaw;
|
||||
if (temp_f0_2 < 0.0f) {
|
||||
phi_f20 += -aiSettings->unk_1C.s;
|
||||
} else {
|
||||
phi_f20 += aiSettings->unk_1C.s;
|
||||
}
|
||||
}
|
||||
npc->yaw = clamp_angle(phi_f20);
|
||||
}
|
||||
|
||||
if (npc->flags & 8) {
|
||||
if (npc->pos.y + npc->jumpVelocity < temp_f22) {
|
||||
npc->pos.y = temp_f22;
|
||||
npc->jumpVelocity = 0.0f;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y + npc->collisionHeight;
|
||||
posZ = npc->pos.z;
|
||||
posW = (fabsf(npc->jumpVelocity) + npc->collisionHeight) + 10.0;
|
||||
if (func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW)) {
|
||||
if (posW <= (npc->collisionHeight + fabsf(npc->jumpVelocity))) {
|
||||
npc->jumpVelocity = 0.0f;
|
||||
npc->pos.y = posY;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
} else if (fabsf(npc->jumpVelocity) < ((npc->pos.y - temp_f22) + npc->collisionHeight)) {
|
||||
npc->pos.y = npc->pos.y + npc->jumpVelocity;
|
||||
return;
|
||||
}
|
||||
npc->jumpVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80241B38_BEE928)(Npc *npc, Enemy *enemy, ScriptInstance *script, NpcAISettings *aiSettings) {
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
temp_v1 = npc->flags & ~0x200;
|
||||
npc->flags = (npc->flags & ~0x200) | 0x800;
|
||||
if (enemy->territory->wander.isFlying) {
|
||||
npc->flags = temp_v1 | 0x808;
|
||||
} else {
|
||||
npc->flags = npc->flags & ~8;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[9] = 0;
|
||||
enemy->varTable[3] = ((posW * 100.0) + 0.5);
|
||||
enemy->varTable[7] = ((posY * 100.0) + 0.5);
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
enemy->unk_B0 |= 0x10;
|
||||
}
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
ApiStatus N(func_80241C5C_BEEA4C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1541,11 +1366,11 @@ ApiStatus N(func_80241C5C_BEEA4C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_80241B38_BEE928)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -1566,7 +1391,7 @@ ApiStatus N(func_80241C5C_BEEA4C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802411E8_BEDFD8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -1580,7 +1405,7 @@ ApiStatus N(func_80241C5C_BEEA4C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
case 14:
|
||||
N(func_802417A8_BEE598)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
@ -1596,4 +1421,3 @@ ApiStatus PostChapter3StatUpdate(ScriptInstance* script, s32 isInitialCall) {
|
||||
sync_status_menu();
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
|
@ -657,70 +657,7 @@ INCLUDE_ASM(void, "world/area_dgb/dgb_01/BFD9A0", dgb_01_func_802402D0_BFDB50, S
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_802409B8_BFE238)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f24 = (f32)enemy->varTable[3] / 100.0;
|
||||
f32 temp_f26 = temp_f24 + (f32)((f32)enemy->varTable[7] / 100.0);
|
||||
s32 var;
|
||||
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
}
|
||||
|
||||
if (enemy->varTable[1] > 0) {
|
||||
f32 temp_f22 = (f32)enemy->varTable[1] / 100.0;
|
||||
f32 sin_degrees = sin_deg(enemy->varTable[2]);
|
||||
s32 phi_v0;
|
||||
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f24 + (sin_degrees * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f26 + (sin_degrees * temp_f22);
|
||||
}
|
||||
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if ((npc->turnAroundYawAdjustment == 0) && (npc->duration <= 0)) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = (rand_int(1000) % 11) + 5;
|
||||
} else {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc4.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
@ -738,121 +675,9 @@ void N(func_80240D74_BFE5F4)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc3.inc.c"
|
||||
|
||||
void N(func_80240F78_BFE7F8)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f2;
|
||||
s32 phi_v0;
|
||||
f32 phi_f20;
|
||||
f32 a = enemy->varTable[3];
|
||||
f32 b = enemy->varTable[7];
|
||||
#include "world/common/UnkFunc6.inc.c"
|
||||
|
||||
npc->jumpVelocity += npc->jumpScale;
|
||||
temp_f20 = a / 100.0;
|
||||
temp_f22 = b / 100.0;
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
if (npc->jumpVelocity >= 0.0) {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
npc->currentAnim = enemy->animList[9];
|
||||
enemy->unk_07 = 0;
|
||||
if (!(npc->flags & 8)) {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
} else {
|
||||
phi_v0 = FALSE;
|
||||
}
|
||||
if (phi_v0) {
|
||||
temp_f2 = posY + temp_f20;
|
||||
if (temp_f2 <= npc->pos.y) {
|
||||
npc->pos.y = temp_f2;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->pos.y >= npc->moveToPos.y) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->jumpVelocity < 0.0) {
|
||||
npc->duration++;
|
||||
if (npc->duration >= aiSettings->unk_20) {
|
||||
npc->duration = 0;
|
||||
phi_f20 = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
temp_f0_2 = get_clamped_angle_diff(npc->yaw, phi_f20);
|
||||
if (aiSettings->unk_1C.s < fabsf(temp_f0_2)) {
|
||||
phi_f20 = npc->yaw;
|
||||
if (temp_f0_2 < 0.0f) {
|
||||
phi_f20 += -aiSettings->unk_1C.s;
|
||||
} else {
|
||||
phi_f20 += aiSettings->unk_1C.s;
|
||||
}
|
||||
}
|
||||
npc->yaw = clamp_angle(phi_f20);
|
||||
}
|
||||
|
||||
if (npc->flags & 8) {
|
||||
if (npc->pos.y + npc->jumpVelocity < temp_f22) {
|
||||
npc->pos.y = temp_f22;
|
||||
npc->jumpVelocity = 0.0f;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y + npc->collisionHeight;
|
||||
posZ = npc->pos.z;
|
||||
posW = (fabsf(npc->jumpVelocity) + npc->collisionHeight) + 10.0;
|
||||
if (func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW)) {
|
||||
if (posW <= (npc->collisionHeight + fabsf(npc->jumpVelocity))) {
|
||||
npc->jumpVelocity = 0.0f;
|
||||
npc->pos.y = posY;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
} else if (fabsf(npc->jumpVelocity) < ((npc->pos.y - temp_f22) + npc->collisionHeight)) {
|
||||
npc->pos.y = npc->pos.y + npc->jumpVelocity;
|
||||
return;
|
||||
}
|
||||
npc->jumpVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80241308_BFEB88)(Npc *npc, Enemy *enemy, ScriptInstance *script, NpcAISettings *aiSettings) {
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
temp_v1 = npc->flags & ~0x200;
|
||||
npc->flags = (npc->flags & ~0x200) | 0x800;
|
||||
if (enemy->territory->wander.isFlying) {
|
||||
npc->flags = temp_v1 | 0x808;
|
||||
} else {
|
||||
npc->flags = npc->flags & ~8;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[9] = 0;
|
||||
enemy->varTable[3] = ((posW * 100.0) + 0.5);
|
||||
enemy->varTable[7] = ((posY * 100.0) + 0.5);
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
enemy->unk_B0 |= 0x10;
|
||||
}
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
ApiStatus N(func_8024142C_BFECAC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -868,11 +693,11 @@ ApiStatus N(func_8024142C_BFECAC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_80241308_BFEB88)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -893,7 +718,7 @@ ApiStatus N(func_8024142C_BFECAC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802409B8_BFE238)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -907,7 +732,7 @@ ApiStatus N(func_8024142C_BFECAC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(func_80240F78_BFE7F8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -922,7 +747,7 @@ void N(func_80241618_BFEE98)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->duration = aiSettings->unk_20 / 2 + rand_int(aiSettings->unk_20 / 2 + 1);
|
||||
npc->currentAnim = enemy->animList[8];
|
||||
npc->moveSpeed = aiSettings->chaseSpeed;
|
||||
@ -996,13 +821,11 @@ void N(func_80241954_BFF1D4)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
script->functionTemp[0].s = 16;
|
||||
} else {
|
||||
PlayerStatus** playerStatus = &gPlayerStatusPtr;
|
||||
|
||||
npc->pos.x = (*playerStatus)->position.x;
|
||||
npc->pos.z = (*playerStatus)->position.z + 2.0f;
|
||||
npc->pos.x = gPlayerStatusPtr->position.x;
|
||||
npc->pos.z = gPlayerStatusPtr->position.z + 2.0f;
|
||||
npc->rotation.y += 25.0f;
|
||||
if (npc->rotation.y > 360.0) {
|
||||
npc->rotation.y -= 360.0;
|
||||
@ -1010,16 +833,16 @@ void N(func_80241954_BFF1D4)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
temp_f8_2 = 255.0f - (cosine((s32)npc->rotation.y % 180) * 56.0f);
|
||||
func_802DE894(npc->spriteInstanceID, 6, temp_f8_2, temp_f8_2, temp_f8_2, 255, 0);
|
||||
|
||||
posX = (*playerStatus)->position.x;
|
||||
posY = (*playerStatus)->position.y;
|
||||
posZ = (*playerStatus)->position.z;
|
||||
posX = gPlayerStatusPtr->position.x;
|
||||
posY = gPlayerStatusPtr->position.y;
|
||||
posZ = gPlayerStatusPtr->position.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
if (fabsf(npc->pos.y - posY) > 24.0) {
|
||||
npc->pos.y -= 1.8;
|
||||
} else {
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
if (D_8010EBB0.unk_03 != 9) {
|
||||
disable_player_input();
|
||||
func_800EF628();
|
||||
@ -1102,7 +925,7 @@ void N(func_80241EF0_BFF770)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->moveSpeed = 2.0 * aiSettings->moveSpeed;
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
@ -1167,12 +990,12 @@ ApiStatus N(func_802422B0_BFFB30)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 125.0f;
|
||||
territory.unk_18 = 125.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
script->functionTemp[0].s = 0;
|
||||
N(func_80241308_BFEB88)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
switch (script->functionTemp[0].s) {
|
||||
@ -1188,7 +1011,7 @@ ApiStatus N(func_802422B0_BFFB30)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802409B8_BFE238)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
if (script->functionTemp[0].s == 12) {
|
||||
npc->duration = 6;
|
||||
}
|
||||
@ -1465,85 +1288,11 @@ ApiStatus N(func_8024252C_BFFDAC)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
return 1;
|
||||
}
|
||||
|
||||
void N(func_80242684_BFFF04)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 x, z;
|
||||
s32 var;
|
||||
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if (func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
if (npc->moveSpeed < 4.0) {
|
||||
func_8003D660(npc, 0);
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
}
|
||||
|
||||
x = script->functionTemp[2].s[enemy->territory->patrol.points].x;
|
||||
z = script->functionTemp[2].s[enemy->territory->patrol.points].z;
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, x, z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (dist2D(npc->pos.x, npc->pos.z, x, z) <= npc->moveSpeed) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->moveTime <= 0) ||
|
||||
(aiSettings->waitTime <= 0) || (script->functionTemp[1].s == 0)) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
if (rand_int(10000) % 100 < aiSettings->moveTime) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc13.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1_copy.inc.c"
|
||||
|
||||
void N(func_802429EC_C0026C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if ((aiSettings->unk_14 >= 0) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (!(enemy->npcSettings->unk_2A & 1)) {
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
script->functionTemp[0].s = 10;
|
||||
}
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->duration--;
|
||||
if (npc->duration == 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc14.inc.c"
|
||||
|
||||
ApiStatus N(func_80242BA8_C00428)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1569,46 +1318,11 @@ ApiStatus N(func_80242BA8_C00428)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
ApiStatus N(func_80242E78_C006F8)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_80243000_C00880)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_802430C0_C00940)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1625,7 +1339,7 @@ ApiStatus N(func_802430C0_C00940)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -1645,7 +1359,7 @@ ApiStatus N(func_802430C0_C00940)(ScriptInstance *script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -1662,12 +1376,12 @@ ApiStatus N(func_802430C0_C00940)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_8024252C_BFFDAC)(script, aiSettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80242684_BFFF04)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc13)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1_copy)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802429EC_C0026C)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc14)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_80242BA8_C00428)(script, aiSettings, territoryPtr);
|
||||
@ -1680,13 +1394,13 @@ ApiStatus N(func_802430C0_C00940)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, aiSettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_80242E78_C006F8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc15)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_80243000_C00880)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc16)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
|
@ -258,7 +258,7 @@ Script N(npcAI_80241D34) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(update_starpoints_display_C2EF5C)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80241DDC) = {
|
||||
@ -424,7 +424,7 @@ NpcGroupList N(npcGroupList_802425C8) = {
|
||||
s32 N(func_80240208_C2EDA8)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -458,77 +458,7 @@ s32 N(func_80240208_C2EDA8)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(update_starpoints_display_C2EF5C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
ApiStatus N(func_8024061C_C2F1BC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -544,7 +474,7 @@ ApiStatus N(func_8024061C_C2F1BC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -806,7 +736,7 @@ ApiStatus N(func_802410D4_C2FC74)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
ApiStatus N(func_8024061C_C2F1BC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802410D4_C2FC74)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(update_starpoints_display_C2EF5C)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
NpcGroupList N(npcGroupList_802425C8);
|
||||
Script N(main);
|
||||
|
@ -1,52 +1,8 @@
|
||||
#include "dgb_03.h"
|
||||
|
||||
ApiStatus N(func_80240000_C314E0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
s32 var = get_variable(script, *script->ptrReadPos);
|
||||
PlayerStatus* playerStatus = &gPlayerStatus;
|
||||
CollisionStatus* collisionStatus = &gCollisionStatus;
|
||||
#include "world/common/UnkFunc11.inc.c"
|
||||
|
||||
if (((collisionStatus->pushingAgainstWall != var) && (playerStatus->actionState == 20)) ||
|
||||
playerStatus->enableCollisionOverlapsCheck || playerStatus->statusMenuCounterinputEnabledCounter) {
|
||||
set_action_state(0);
|
||||
script->varTable[0] = 0;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
if (collisionStatus->pushingAgainstWall != var) {
|
||||
script->varTable[0] = 0;
|
||||
} else if ((playerStatus->actionState != 20) && (playerStatus->actionState != 1) &&
|
||||
(playerStatus->actionState != 2)) {
|
||||
script->varTable[0] = 0;
|
||||
} else if (playerStatus->animFlags & 1) {
|
||||
script->varTable[0] = 0;
|
||||
} else {
|
||||
script->varTable[0] = 1;
|
||||
}
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_802400BC_C3159C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
PlayerStatus* playerStatus = &gPlayerStatus;
|
||||
f32 posX, posY, posZ, posW;
|
||||
|
||||
if (script->varTable[5] == 0) {
|
||||
playerStatus->position.x = script->varTable[0];
|
||||
} else {
|
||||
playerStatus->position.z = script->varTable[0];
|
||||
}
|
||||
|
||||
posX = playerStatus->position.x;
|
||||
posY = playerStatus->position.y + 10.0f;
|
||||
posZ = playerStatus->position.z;
|
||||
posW = 40.0f;
|
||||
func_800DCB7C(0, &posX, &posY, &posZ, &posW);
|
||||
playerStatus->position.x = posX;
|
||||
playerStatus->position.y = posY;
|
||||
playerStatus->position.z = posZ;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#include "world/common/UnkFunc12.inc.c"
|
||||
|
||||
#include "world/common/SetEntityFlags100000.inc.c"
|
||||
|
||||
|
@ -215,7 +215,7 @@ Script N(802430E0) = SCRIPT({
|
||||
SI_VAR(8) = -1;
|
||||
return;
|
||||
}
|
||||
N(func_80240000_C314E0)(SI_VAR(9));
|
||||
N(UnkFunc11)(SI_VAR(9));
|
||||
if (SI_VAR(0) == 0) {
|
||||
SI_VAR(8) = -1;
|
||||
return;
|
||||
@ -249,7 +249,7 @@ Script N(802430E0) = SCRIPT({
|
||||
loop {
|
||||
SetPlayerActionState(20);
|
||||
UpdateLerp();
|
||||
N(func_802400BC_C3159C)();
|
||||
N(UnkFunc12)();
|
||||
sleep 1;
|
||||
if (SI_VAR(1) == 0) {
|
||||
break loop;
|
||||
@ -507,7 +507,7 @@ Script N(npcAI_80243CC0) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(func_8024060C_C31AEC)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80243D68) = {
|
||||
@ -749,7 +749,7 @@ NpcGroupList N(npcGroupList_80244988) = {
|
||||
s32 N(func_80240458_C31938)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -783,77 +783,7 @@ s32 N(func_80240458_C31938)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(func_8024060C_C31AEC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
ApiStatus N(func_8024086C_C31D4C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -869,7 +799,7 @@ ApiStatus N(func_8024086C_C31D4C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -975,85 +905,11 @@ ApiStatus N(func_80240B20_C32000)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
return 1;
|
||||
}
|
||||
|
||||
void N(func_80240C78_C32158)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 x, z;
|
||||
s32 var;
|
||||
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if (func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
if (npc->moveSpeed < 4.0) {
|
||||
func_8003D660(npc, 0);
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
}
|
||||
|
||||
x = script->functionTemp[2].s[enemy->territory->patrol.points].x;
|
||||
z = script->functionTemp[2].s[enemy->territory->patrol.points].z;
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, x, z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (dist2D(npc->pos.x, npc->pos.z, x, z) <= npc->moveSpeed) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->moveTime <= 0) ||
|
||||
(aiSettings->waitTime <= 0) || (script->functionTemp[1].s == 0)) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
if (rand_int(10000) % 100 < aiSettings->moveTime) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc13.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_80240FE0_C324C0)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if ((aiSettings->unk_14 >= 0) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (!(enemy->npcSettings->unk_2A & 1)) {
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
script->functionTemp[0].s = 10;
|
||||
}
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->duration--;
|
||||
if (npc->duration == 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc14.inc.c"
|
||||
|
||||
ApiStatus N(func_8024119C_C3267C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1079,46 +935,11 @@ ApiStatus N(func_8024119C_C3267C)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
ApiStatus N(func_8024146C_C3294C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_802415F4_C32AD4)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_802416B4_C32B94)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1135,7 +956,7 @@ ApiStatus N(func_802416B4_C32B94)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -1155,7 +976,7 @@ ApiStatus N(func_802416B4_C32B94)(ScriptInstance *script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -1172,12 +993,12 @@ ApiStatus N(func_802416B4_C32B94)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_80240B20_C32000)(script, npcAISettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80240C78_C32158)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc13)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80240FE0_C324C0)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc14)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_8024119C_C3267C)(script, npcAISettings, territoryPtr);
|
||||
@ -1190,13 +1011,13 @@ ApiStatus N(func_802416B4_C32B94)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, npcAISettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024146C_C3294C)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc15)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_802415F4_C32AD4)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc16)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
@ -1219,7 +1040,7 @@ ApiStatus N(func_802419B0_C32E90)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -1248,12 +1069,12 @@ ApiStatus N(func_802419B0_C32E90)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_80240B20_C32000)(script, npcAISettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80240C78_C32158)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc13)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80240FE0_C324C0)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc14)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_8024119C_C3267C)(script, npcAISettings, territoryPtr);
|
||||
@ -1266,7 +1087,7 @@ ApiStatus N(func_802419B0_C32E90)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, npcAISettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024146C_C3294C)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc15)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, npcAISettings, territoryPtr);
|
||||
@ -1484,7 +1305,7 @@ ApiStatus N(func_80242480_C33960)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
#define NAMESPACE dgb_03
|
||||
|
||||
ApiStatus N(func_80240000_C314E0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802400BC_C3159C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024060C_C31AEC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc11)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc12)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024086C_C31D4C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802419B0_C32E90)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242480_C33960)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
@ -267,10 +267,10 @@ s16 N(D_80243D38_C3A268)[] = {
|
||||
};
|
||||
|
||||
s32 N(D_80243D48_C3A278)[8][2] = {
|
||||
{0x001D00E0, 0x001D00E1 }, {0x001D00E2, 0x001D00E3 },
|
||||
{0x001D00E4, 0x001D00E5 }, {0x001D00E6, 0x001D00E7 },
|
||||
{0x001D00E8, 0x001D00E9 }, {0x001D00EA, 0x001D00EB },
|
||||
{0x001D00EC, 0x001D00ED }, {0x001D00EE, 0x001D00EF }
|
||||
{ 0x001D00E0, 0x001D00E1 }, { 0x001D00E2, 0x001D00E3 },
|
||||
{ 0x001D00E4, 0x001D00E5 }, { 0x001D00E6, 0x001D00E7 },
|
||||
{ 0x001D00E8, 0x001D00E9 }, { 0x001D00EA, 0x001D00EB },
|
||||
{ 0x001D00EC, 0x001D00ED }, { 0x001D00EE, 0x001D00EF }
|
||||
};
|
||||
|
||||
f32 N(D_80243D88_C3A2B8)[] = {
|
||||
@ -280,7 +280,7 @@ f32 N(D_80243D88_C3A2B8)[] = {
|
||||
Script N(80243D94) = SCRIPT({
|
||||
sleep 10;
|
||||
PlaySound(0x212D);
|
||||
N(func_80242914_C38E44)(SI_MAP_VAR(0));
|
||||
N(UnkFunc21)(SI_MAP_VAR(0));
|
||||
sleep 85;
|
||||
spawn {
|
||||
PlaySound(0x212E);
|
||||
@ -295,7 +295,7 @@ Script N(80243D94) = SCRIPT({
|
||||
}
|
||||
spawn {
|
||||
sleep 47;
|
||||
N(func_80242978_C38EA8)();
|
||||
N(UnkFunc22)();
|
||||
N(UnkPartnerPosFunc)();
|
||||
sleep 5;
|
||||
N(UnkPartnerPosFunc2)();
|
||||
@ -315,7 +315,7 @@ Script N(80243EF8) = SCRIPT({
|
||||
if (SI_VAR(0) == 1) {
|
||||
return;
|
||||
}
|
||||
N(func_802430D8_C39608)();
|
||||
N(UnkFunc24)();
|
||||
if (SI_VAR(0) == 1) {
|
||||
return;
|
||||
}
|
||||
@ -324,17 +324,17 @@ Script N(80243EF8) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePartnerAI(0);
|
||||
SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_100)), TRUE);
|
||||
N(func_80242850_C38D80)(SI_MAP_VAR(0), SI_VAR(9));
|
||||
N(UnkFunc20)(SI_MAP_VAR(0), SI_VAR(9));
|
||||
FindKeyItem(15, SI_VAR(12));
|
||||
N(func_802424F0_C38A20)();
|
||||
N(UnkFunc38)();
|
||||
if (SI_VAR(0) == -1) {
|
||||
ShowMessageAtScreenPos(MESSAGE_ID(0x1D, 0x00DC), 160, 40);
|
||||
sleep 10;
|
||||
N(func_802428E0_C38E10)(SI_VAR(9));
|
||||
N(UnkFunc39)(SI_VAR(9));
|
||||
DisablePlayerInput(FALSE);
|
||||
EnablePartnerAI();
|
||||
func_802D585C(0, 2097152);
|
||||
N(func_802423EC_C3891C)();
|
||||
N(UnkFunc17)();
|
||||
return;
|
||||
}
|
||||
if (SI_SAVE_FLAG(438) == 0) {
|
||||
@ -345,11 +345,11 @@ Script N(80243EF8) = SCRIPT({
|
||||
}
|
||||
N(func_8024259C_C38ACC)();
|
||||
if (SI_VAR(0) == -1) {
|
||||
N(func_802428E0_C38E10)(SI_VAR(9));
|
||||
N(UnkFunc39)(SI_VAR(9));
|
||||
DisablePlayerInput(FALSE);
|
||||
EnablePartnerAI();
|
||||
func_802D585C(0, 2097152);
|
||||
N(func_802423EC_C3891C)();
|
||||
N(UnkFunc17)();
|
||||
return;
|
||||
}
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
@ -366,18 +366,18 @@ Script N(80243EF8) = SCRIPT({
|
||||
ShowChoice(1966093);
|
||||
CloseMessage();
|
||||
if (SI_VAR(0) != 0) {
|
||||
N(func_802428E0_C38E10)(SI_VAR(9));
|
||||
N(UnkFunc39)(SI_VAR(9));
|
||||
DisablePlayerInput(FALSE);
|
||||
EnablePartnerAI();
|
||||
func_802D585C(0, 2097152);
|
||||
N(func_802423EC_C3891C)();
|
||||
N(UnkFunc17)();
|
||||
return;
|
||||
}
|
||||
await N(80243D94);
|
||||
N(func_80242438_C38968)(SI_VAR(11), SI_VAR(13));
|
||||
N(UnkFunc18)(SI_VAR(11), SI_VAR(13));
|
||||
SI_SAVE_FLAG(1046) = 1;
|
||||
N(func_802428E0_C38E10)(SI_VAR(9));
|
||||
N(func_80242818_C38D48)();
|
||||
N(UnkFunc39)(SI_VAR(9));
|
||||
N(UnkFunc19)();
|
||||
if (SI_VAR(13) == 1) {
|
||||
ShowMessageAtScreenPos(MESSAGE_ID(0x1D, 0x00DD), 160, 40);
|
||||
} else {
|
||||
@ -386,7 +386,7 @@ Script N(80243EF8) = SCRIPT({
|
||||
DisablePlayerInput(FALSE);
|
||||
EnablePartnerAI();
|
||||
func_802D585C(0, 2097152);
|
||||
N(func_802423EC_C3891C)();
|
||||
N(UnkFunc17)();
|
||||
});
|
||||
|
||||
Script N(makeEntities) = SCRIPT({
|
||||
@ -566,70 +566,7 @@ INCLUDE_ASM(void, "world/area_dgb/dgb_04/C36530", dgb_04_func_802401B0_C366E0, S
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_80240898_C36DC8)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f24 = (f32)enemy->varTable[3] / 100.0;
|
||||
f32 temp_f26 = temp_f24 + (f32)((f32)enemy->varTable[7] / 100.0);
|
||||
s32 var;
|
||||
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
}
|
||||
|
||||
if (enemy->varTable[1] > 0) {
|
||||
f32 temp_f22 = (f32)enemy->varTable[1] / 100.0;
|
||||
f32 sin_degrees = sin_deg(enemy->varTable[2]);
|
||||
s32 phi_v0;
|
||||
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f24 + (sin_degrees * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f26 + (sin_degrees * temp_f22);
|
||||
}
|
||||
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if ((npc->turnAroundYawAdjustment == 0) && (npc->duration <= 0)) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = (rand_int(1000) % 11) + 5;
|
||||
} else {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc4.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
@ -647,121 +584,9 @@ void N(func_80240C54_C37184)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc3.inc.c"
|
||||
|
||||
void N(func_80240E58_C37388)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f2;
|
||||
s32 phi_v0;
|
||||
f32 phi_f20;
|
||||
f32 a = enemy->varTable[3];
|
||||
f32 b = enemy->varTable[7];
|
||||
#include "world/common/UnkFunc6.inc.c"
|
||||
|
||||
npc->jumpVelocity += npc->jumpScale;
|
||||
temp_f20 = a / 100.0;
|
||||
temp_f22 = b / 100.0;
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
if (npc->jumpVelocity >= 0.0) {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
npc->currentAnim = enemy->animList[9];
|
||||
enemy->unk_07 = 0;
|
||||
if (!(npc->flags & 8)) {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
} else {
|
||||
phi_v0 = FALSE;
|
||||
}
|
||||
if (phi_v0) {
|
||||
temp_f2 = posY + temp_f20;
|
||||
if (temp_f2 <= npc->pos.y) {
|
||||
npc->pos.y = temp_f2;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->pos.y >= npc->moveToPos.y) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->jumpVelocity < 0.0) {
|
||||
npc->duration++;
|
||||
if (npc->duration >= aiSettings->unk_20) {
|
||||
npc->duration = 0;
|
||||
phi_f20 = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
temp_f0_2 = get_clamped_angle_diff(npc->yaw, phi_f20);
|
||||
if (aiSettings->unk_1C.s < fabsf(temp_f0_2)) {
|
||||
phi_f20 = npc->yaw;
|
||||
if (temp_f0_2 < 0.0f) {
|
||||
phi_f20 += -aiSettings->unk_1C.s;
|
||||
} else {
|
||||
phi_f20 += aiSettings->unk_1C.s;
|
||||
}
|
||||
}
|
||||
npc->yaw = clamp_angle(phi_f20);
|
||||
}
|
||||
|
||||
if (npc->flags & 8) {
|
||||
if (npc->pos.y + npc->jumpVelocity < temp_f22) {
|
||||
npc->pos.y = temp_f22;
|
||||
npc->jumpVelocity = 0.0f;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y + npc->collisionHeight;
|
||||
posZ = npc->pos.z;
|
||||
posW = (fabsf(npc->jumpVelocity) + npc->collisionHeight) + 10.0;
|
||||
if (func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW)) {
|
||||
if (posW <= (npc->collisionHeight + fabsf(npc->jumpVelocity))) {
|
||||
npc->jumpVelocity = 0.0f;
|
||||
npc->pos.y = posY;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
} else if (fabsf(npc->jumpVelocity) < ((npc->pos.y - temp_f22) + npc->collisionHeight)) {
|
||||
npc->pos.y = npc->pos.y + npc->jumpVelocity;
|
||||
return;
|
||||
}
|
||||
npc->jumpVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_802411E8_C37718)(Npc *npc, Enemy *enemy, ScriptInstance *script, NpcAISettings *aiSettings) {
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
temp_v1 = npc->flags & ~0x200;
|
||||
npc->flags = (npc->flags & ~0x200) | 0x800;
|
||||
if (enemy->territory->wander.isFlying) {
|
||||
npc->flags = temp_v1 | 0x808;
|
||||
} else {
|
||||
npc->flags = npc->flags & ~8;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[9] = 0;
|
||||
enemy->varTable[3] = ((posW * 100.0) + 0.5);
|
||||
enemy->varTable[7] = ((posY * 100.0) + 0.5);
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
enemy->unk_B0 |= 0x10;
|
||||
}
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
ApiStatus N(func_8024130C_C3783C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -777,11 +602,11 @@ ApiStatus N(func_8024130C_C3783C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_802411E8_C37718)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -802,7 +627,7 @@ ApiStatus N(func_8024130C_C3783C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80240898_C36DC8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -816,7 +641,7 @@ ApiStatus N(func_8024130C_C3783C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(func_80240E58_C37388)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
@ -830,7 +655,7 @@ void N(func_802414F8_C37A28)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->duration = aiSettings->unk_20 / 2 + rand_int(aiSettings->unk_20 / 2 + 1);
|
||||
npc->currentAnim = enemy->animList[8];
|
||||
npc->moveSpeed = aiSettings->chaseSpeed;
|
||||
@ -895,13 +720,11 @@ void N(func_802417F8_C37D28)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
script->functionTemp[0].s = 16;
|
||||
} else {
|
||||
PlayerStatus** playerStatus = &gPlayerStatusPtr;
|
||||
|
||||
npc->pos.x = (*playerStatus)->position.x;
|
||||
npc->pos.z = (*playerStatus)->position.z + 2.0f;
|
||||
npc->pos.x = gPlayerStatusPtr->position.x;
|
||||
npc->pos.z = gPlayerStatusPtr->position.z + 2.0f;
|
||||
npc->rotation.y += 25.0f;
|
||||
if (npc->rotation.y > 360.0) {
|
||||
npc->rotation.y -= 360.0;
|
||||
@ -909,16 +732,16 @@ void N(func_802417F8_C37D28)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
temp_f8_2 = 255.0f - (cosine((s32)npc->rotation.y % 180) * 56.0f);
|
||||
func_802DE894(npc->spriteInstanceID, 6, temp_f8_2, temp_f8_2, temp_f8_2, 255, 0);
|
||||
|
||||
posX = (*playerStatus)->position.x;
|
||||
posY = (*playerStatus)->position.y;
|
||||
posZ = (*playerStatus)->position.z;
|
||||
posX = gPlayerStatusPtr->position.x;
|
||||
posY = gPlayerStatusPtr->position.y;
|
||||
posZ = gPlayerStatusPtr->position.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
if (fabsf(npc->pos.y - posY) > 24.0) {
|
||||
npc->pos.y -= 1.8;
|
||||
} else {
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
if (D_8010EBB0.unk_03 != 9) {
|
||||
disable_player_input();
|
||||
func_800EF628();
|
||||
@ -1001,7 +824,7 @@ void N(func_80241D94_C382C4)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->moveSpeed = 2.0 * aiSettings->moveSpeed;
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
@ -1066,12 +889,12 @@ ApiStatus N(func_80242154_C38684)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 125.0f;
|
||||
territory.unk_18 = 125.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
script->functionTemp[0].s = 0;
|
||||
N(func_802411E8_C37718)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
switch (script->functionTemp[0].s) {
|
||||
@ -1087,7 +910,7 @@ ApiStatus N(func_80242154_C38684)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80240898_C36DC8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
if (script->functionTemp[0].s == 12) {
|
||||
npc->duration = 6;
|
||||
}
|
||||
@ -1130,58 +953,14 @@ ApiStatus N(func_80242154_C38684)(ScriptInstance *script, s32 isInitialCall) {
|
||||
|
||||
#include "world/common/SetOverrideFlags_40.inc.c"
|
||||
|
||||
ApiStatus N(func_802423EC_C3891C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
gOverrideFlags &= ~0x40;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#include "world/common/UnkFunc17.inc.c"
|
||||
|
||||
ApiStatus N(func_8024240C_C3893C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
func_802E5690(get_variable(script, *script->ptrReadPos));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_80242438_C38968)(ScriptInstance *script, s32 isInitialCall) {
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32 partnerIdx = get_variable(script, *args++);
|
||||
s32 si_var = *args++;
|
||||
|
||||
playerData->partners[partnerIdx].level++;
|
||||
set_variable(script, si_var, playerData->partners[partnerIdx].level);
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
s32 N(func_802424A4_C389D4)(s32 arg0, s16 arg1) {
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
if (playerData->partners[arg0].enabled) {
|
||||
if (playerData->partners[arg0].level <= arg1) {
|
||||
return playerData->partners[arg0].level;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(s32, "world/area_dgb/dgb_04/C36530", dgb_04_func_802424A4_C389D4, s32 arg0, s16 arg1)
|
||||
#endif
|
||||
|
||||
ApiStatus N(func_802424F0_C38A20)(ScriptInstance *script, s32 isInitialCall) {
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
s32 i;
|
||||
s16 var = script->varTable[12] >= 0;
|
||||
|
||||
script->varTable[0] = -1;
|
||||
|
||||
for (i = 1; i < 12; i++) {
|
||||
if (playerData->partners[i].enabled && N(func_802424A4_C389D4)(i, var) != -1) {
|
||||
script->varTable[0] = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#include "world/common/UnkFunc18.inc.c"
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
|
||||
@ -1208,53 +987,50 @@ typedef struct {
|
||||
|
||||
ApiStatus N(func_8024259C_C38ACC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
N(UnkStruct)* structPtr;
|
||||
N(UnkStruct)* ptr;
|
||||
s32 i;
|
||||
s32 temp_a0;
|
||||
s32 partnerLevel;
|
||||
s32 var, partnerActiveCount;
|
||||
s32 idx;
|
||||
|
||||
if (isInitialCall) {
|
||||
script->functionTemp[2].s = heap_malloc(0x330);
|
||||
structPtr = script->functionTemp[2].s;
|
||||
ptr = script->functionTemp[2].s;
|
||||
|
||||
ptr = structPtr;
|
||||
partnerActiveCount = 0;
|
||||
var = script->varTable[12] >= 0;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
s32 idx = *(N(D_80243D38_C3A268) + i);
|
||||
idx = N(D_80243D38_C3A268)[i];
|
||||
|
||||
if (playerData->partners[idx].enabled) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ptr->unk_108[i] = idx;
|
||||
ptr->unk_84[i] = **(D_8008EF20 + idx);
|
||||
temp_a0 = N(func_802424A4_C389D4)(idx, var);
|
||||
if (temp_a0 >= 0) {
|
||||
ptr->unk_00[i] = *(D_800F7F00 + idx);
|
||||
ptr->unk_84[i] = *D_8008EF20[idx];
|
||||
partnerLevel = N(UnkFunc37)(idx, var);
|
||||
if (partnerLevel >= 0) {
|
||||
ptr->unk_00[i] = D_800F7F00[idx];
|
||||
ptr->unk_18C[i] = 1;
|
||||
ptr->unk_294[i] = *(temp_a0 + *(N(D_80243D48_C3A278) + i));
|
||||
ptr->unk_294[i] = N(D_80243D48_C3A278)[i][partnerLevel];
|
||||
} else {
|
||||
ptr->unk_00[i] = *(D_800F7F40 + idx);
|
||||
ptr->unk_00[i] = D_800F7F40[idx];
|
||||
ptr->unk_18C[i] = 0;
|
||||
ptr->unk_294[i] = *(N(D_80243D30_C3A260) + var);
|
||||
ptr->unk_294[i] = N(D_80243D30_C3A260)[var];
|
||||
}
|
||||
ptr->unk_210[i] = playerData->partners[idx].level;
|
||||
partnerActiveCount++;
|
||||
}
|
||||
}
|
||||
|
||||
structPtr->unk_318 = 4;
|
||||
structPtr->unk_324 = partnerActiveCount;
|
||||
structPtr->unk_328 = 0;
|
||||
func_800F4E40(structPtr);
|
||||
ptr->unk_318 = 4;
|
||||
ptr->unk_324 = partnerActiveCount;
|
||||
ptr->unk_328 = 0;
|
||||
func_800F4E40(ptr);
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
|
||||
structPtr = script->functionTemp[2].s;
|
||||
ptr = script->functionTemp[2].s;
|
||||
if (script->functionTemp[0].s == 0) {
|
||||
script->functionTemp[1].s = structPtr->unk_32C;
|
||||
script->functionTemp[1].s = ptr->unk_32C;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
func_800F13B0();
|
||||
} else {
|
||||
@ -1270,8 +1046,8 @@ ApiStatus N(func_8024259C_C38ACC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
|
||||
func_800F1538();
|
||||
if (script->functionTemp[1].s != 0xFF) {
|
||||
script->varTable[0] = D_8008EF20[structPtr->unk_108[script->functionTemp[1].s - 1]][0];
|
||||
script->varTable[1] = structPtr->unk_108[script->functionTemp[1].s - 1];
|
||||
script->varTable[0] = D_8008EF20[ptr->unk_108[script->functionTemp[1].s - 1]][0];
|
||||
script->varTable[1] = ptr->unk_108[script->functionTemp[1].s - 1];
|
||||
} else {
|
||||
script->varTable[0] = -1;
|
||||
}
|
||||
@ -1281,7 +1057,7 @@ ApiStatus N(func_8024259C_C38ACC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(s32, "world/area_dgb/dgb_04/C36530", dgb_04_func_8024259C_C38ACC, ScriptInstance *script, s32 isInitialCall)
|
||||
INCLUDE_ASM(ApiStatus, "world/area_dgb/dgb_04/C36530", dgb_04_func_8024259C_C38ACC, ScriptInstance *script, s32 isInitialCall)
|
||||
#endif
|
||||
|
||||
ApiStatus N(func_802427EC_C38D1C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
@ -1291,47 +1067,15 @@ ApiStatus N(func_802427EC_C38D1C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_80242818_C38D48)(ScriptInstance *script, s32 isInitialCall) {
|
||||
set_message_string(D_8008EF20[gPlayerData.currentPartner][0], 0);
|
||||
#include "world/common/UnkFunc19.inc.c"
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#include "world/common/UnkFunc20.inc.c"
|
||||
|
||||
ApiStatus N(func_80242850_C38D80)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Bytecode *args = script->ptrReadPos;
|
||||
s32 entityIdx = get_variable(script, *args++);
|
||||
Entity* entity = get_entity_by_index(entityIdx);
|
||||
s32 si_var = *args++;
|
||||
Effect* effect = func_80071750(0, entity->position.x, entity->position.y + 12.5f, entity->position.z, 0.7f, 0);
|
||||
#include "world/common/UnkFunc39.inc.c"
|
||||
|
||||
set_variable(script, si_var, effect);
|
||||
#include "world/common/UnkFunc21.inc.c"
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_802428E0_C38E10)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Effect* effect = get_variable(script, *script->ptrReadPos);
|
||||
|
||||
effect->flags |= 0x10;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_80242914_C38E44)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Entity* entity = get_entity_by_index(get_variable(script, *script->ptrReadPos));
|
||||
|
||||
func_80070BB0(4, entity->position.x, entity->position.y + 12.5f, entity->position.z, 1.0f, 0x4B);
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_80242978_C38EA8)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Npc *npc = get_npc_safe(-4);
|
||||
|
||||
func_80070BB0(9, npc->pos.x, npc->pos.y + 12.5f, npc->pos.z, 1.0f, 0x1E);
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#include "world/common/UnkFunc22.inc.c"
|
||||
|
||||
typedef struct {
|
||||
s32 unk_00;
|
||||
@ -1346,9 +1090,7 @@ typedef struct {
|
||||
Entity* unk_5C;
|
||||
s32 unk_60;
|
||||
s32 unk_64;
|
||||
} UserData;
|
||||
|
||||
Effect* func_800716F0(s32, f32, f32, f32, f32, s32);
|
||||
} N(UserData);
|
||||
|
||||
ApiStatus N(func_802429D0_C38F00)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Bytecode *args = script->ptrReadPos;
|
||||
@ -1356,15 +1098,15 @@ ApiStatus N(func_802429D0_C38F00)(ScriptInstance *script, s32 isInitialCall) {
|
||||
f32 sinTheta, cosTheta;
|
||||
s32 i;
|
||||
f32 var;
|
||||
UserData* userDataPtr;
|
||||
UserData* scriptPtr;
|
||||
N(UserData)* userDataPtr;
|
||||
N(UserData)* scriptPtr;
|
||||
f32 save, save2;
|
||||
|
||||
sin_cos_deg(gCameras[gCurrentCameraID].currentYaw, &sinTheta, &cosTheta);
|
||||
|
||||
if (isInitialCall) {
|
||||
script->userData = (UserData*)general_heap_malloc(0x68);
|
||||
scriptPtr = (UserData*)script->userData;
|
||||
script->userData = (N(UserData)*)general_heap_malloc(0x68);
|
||||
scriptPtr = (N(UserData)*)script->userData;
|
||||
|
||||
scriptPtr->unk_5C = get_entity_by_index(get_variable(script, *args));
|
||||
|
||||
@ -1396,7 +1138,7 @@ ApiStatus N(func_802429D0_C38F00)(ScriptInstance *script, s32 isInitialCall) {
|
||||
}
|
||||
}
|
||||
|
||||
scriptPtr = (UserData*)script->userData;
|
||||
scriptPtr = (N(UserData)*)script->userData;
|
||||
switch (scriptPtr->unk_00) {
|
||||
case 0:
|
||||
save = update_lerp(5, 0.0f, 50.0f, scriptPtr->unk_60, 0x14);
|
||||
@ -1526,13 +1268,6 @@ s32 N(func_80242F08_C39438)(ScriptInstance *script, s32 isInitialCall) {
|
||||
|
||||
#include "world/common/UnkPartnerPosFuncs.inc.c"
|
||||
|
||||
ApiStatus N(func_802430D8_C39608)(ScriptInstance *script, s32 isInitialCall) {
|
||||
script->varTable[0] = 0;
|
||||
if ((D_8010EBB0.unk_00 != 0) && (D_8010EBB0.unk_03 == 3)) {
|
||||
script->varTable[0] = 1;
|
||||
}
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
#include "world/common/UnkFunc24.inc.c"
|
||||
|
||||
const char N(dgb_00_name_hack)[] = "dgb_00";
|
||||
|
@ -7,20 +7,20 @@ ApiStatus N(SetOverrideFlags_40)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkPartnerPosFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkPartnerPosFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242154_C38684)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802423EC_C3891C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc17)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024240C_C3893C)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242438_C38968)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802424F0_C38A20)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc18)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc38)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024259C_C38ACC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802427EC_C38D1C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242818_C38D48)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242850_C38D80)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802428E0_C38E10)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242914_C38E44)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242978_C38EA8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc19)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc20)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc39)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc21)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc22)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802429D0_C38F00)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242F08_C39438)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802430D8_C39608)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc24)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
NpcGroupList N(npcGroupList_80243D18);
|
||||
Script N(main);
|
||||
|
@ -180,7 +180,7 @@ Script N(npcAI_80241A78) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(func_8024041C_C3AE2C)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80241B20) = {
|
||||
@ -359,7 +359,7 @@ ApiStatus N(func_80240030_C3AA40)(ScriptInstance *script, s32 isInitialCall) {
|
||||
s32 N(func_80240268_C3AC78)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -393,77 +393,7 @@ s32 N(func_80240268_C3AC78)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(func_8024041C_C3AE2C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
void N(func_8024067C_C3B08C)(ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -656,7 +586,7 @@ ApiStatus N(func_80240E80_C3B890)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -760,7 +690,7 @@ ApiStatus N(func_802411D0_C3BBE0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
ApiStatus N(func_80240000_C3AA10)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240030_C3AA40)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024041C_C3AE2C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240E80_C3B890)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
NpcGroupList N(npcGroupList_8024230C);
|
||||
|
@ -81,9 +81,7 @@ Script N(main) = SCRIPT({
|
||||
spawn N(enterSingleDoor_80240474);
|
||||
});
|
||||
|
||||
s32 N(D_80240620_C3D6A0) = {
|
||||
0x00000000,
|
||||
};
|
||||
s32** N(D_80240620_C3D6A0) = NULL;
|
||||
|
||||
Script N(80240624) = SCRIPT({
|
||||
group 0;
|
||||
@ -193,23 +191,19 @@ NpcGroupList N(npcGroupList_80240B44) = {
|
||||
};
|
||||
|
||||
ApiStatus N(func_80240000_C3D080)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80240620_C3D6A0);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_80240620_C3D6A0) == NULL) {
|
||||
N(D_80240620_C3D6A0) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_80240620_C3D6A0)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_80240620_C3D6A0)[i];
|
||||
}
|
||||
ptr = &N(D_80240620_C3D6A0);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_80240620_C3D6A0));
|
||||
N(D_80240620_C3D6A0) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ Script N(npcAI_802419A8) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(update_starpoints_display_C3DFAC)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80241A50) = {
|
||||
@ -268,7 +268,7 @@ static const s32 N(pad_1E74)[] = {
|
||||
s32 N(func_80240208_C3DDF8)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -302,77 +302,7 @@ s32 N(func_80240208_C3DDF8)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(update_starpoints_display_C3DFAC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
void N(func_8024061C_C3E20C)(ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -565,7 +495,7 @@ ApiStatus N(func_80240E20_C3EA10)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -669,7 +599,7 @@ ApiStatus N(func_80241170_C3ED60)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define NAMESPACE dgb_07
|
||||
|
||||
ApiStatus N(func_80240E20_C3EA10)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(update_starpoints_display_C3DFAC)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
NpcGroupList N(npcGroupList_80241E5C);
|
||||
Script N(main);
|
||||
|
@ -242,7 +242,7 @@ Script N(npcAI_8024438C) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(func_8024124C_C40FFC)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80244434) = {
|
||||
@ -989,85 +989,11 @@ ApiStatus N(func_80240000_C3FDB0)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
return ApiStatus_DONE1;
|
||||
}
|
||||
|
||||
void N(func_80240158_C3FF08)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 x, z;
|
||||
s32 var;
|
||||
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if (func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
if (npc->moveSpeed < 4.0) {
|
||||
func_8003D660(npc, 0);
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
}
|
||||
|
||||
x = script->functionTemp[2].s[enemy->territory->patrol.points].x;
|
||||
z = script->functionTemp[2].s[enemy->territory->patrol.points].z;
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, x, z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (dist2D(npc->pos.x, npc->pos.z, x, z) <= npc->moveSpeed) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->moveTime <= 0) ||
|
||||
(aiSettings->waitTime <= 0) || (script->functionTemp[1].s == 0)) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
if (rand_int(10000) % 100 < aiSettings->moveTime) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc13.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_802404C0_C40270)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if ((aiSettings->unk_14 >= 0) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (!(enemy->npcSettings->unk_2A & 1)) {
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
script->functionTemp[0].s = 10;
|
||||
}
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->duration--;
|
||||
if (npc->duration == 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc14.inc.c"
|
||||
|
||||
ApiStatus N(func_8024067C_C4042C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1093,46 +1019,11 @@ ApiStatus N(func_8024067C_C4042C)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
ApiStatus N(func_8024094C_C406FC)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_80240AD4_C40884)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_80240B94_C40944)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1149,7 +1040,7 @@ ApiStatus N(func_80240B94_C40944)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -1169,7 +1060,7 @@ ApiStatus N(func_80240B94_C40944)(ScriptInstance *script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -1186,12 +1077,12 @@ ApiStatus N(func_80240B94_C40944)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_80240000_C3FDB0)(script, npcAISettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80240158_C3FF08)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc13)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802404C0_C40270)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc14)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_8024067C_C4042C)(script, npcAISettings, territoryPtr);
|
||||
@ -1204,13 +1095,13 @@ ApiStatus N(func_80240B94_C40944)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, npcAISettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024094C_C406FC)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc15)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_80240AD4_C40884)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc16)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
@ -1230,7 +1121,7 @@ ApiStatus N(func_80240B94_C40944)(ScriptInstance *script, s32 isInitialCall) {
|
||||
s32 N(func_80241098_C40E48)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -1264,77 +1155,7 @@ s32 N(func_80241098_C40E48)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(func_8024124C_C40FFC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
ApiStatus N(func_802414AC_C4125C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1350,7 +1171,7 @@ ApiStatus N(func_802414AC_C4125C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -1591,70 +1412,7 @@ INCLUDE_ASM(void, "world/area_dgb/dgb_08/C3FDB0", dgb_08_func_80241910_C416C0, S
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1_copy.inc.c"
|
||||
|
||||
void N(func_80241FF8_C41DA8)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f24 = (f32)enemy->varTable[3] / 100.0;
|
||||
f32 temp_f26 = temp_f24 + (f32)((f32)enemy->varTable[7] / 100.0);
|
||||
s32 var;
|
||||
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
}
|
||||
|
||||
if (enemy->varTable[1] > 0) {
|
||||
f32 temp_f22 = (f32)enemy->varTable[1] / 100.0;
|
||||
f32 sin_degrees = sin_deg(enemy->varTable[2]);
|
||||
s32 phi_v0;
|
||||
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f24 + (sin_degrees * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f26 + (sin_degrees * temp_f22);
|
||||
}
|
||||
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if ((npc->turnAroundYawAdjustment == 0) && (npc->duration <= 0)) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = (rand_int(1000) % 11) + 5;
|
||||
} else {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc4.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
@ -1672,121 +1430,9 @@ void N(func_802423B4_C42164)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc3.inc.c"
|
||||
|
||||
void N(func_802425B8_C42368)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f2;
|
||||
s32 phi_v0;
|
||||
f32 phi_f20;
|
||||
f32 a = enemy->varTable[3];
|
||||
f32 b = enemy->varTable[7];
|
||||
#include "world/common/UnkFunc6.inc.c"
|
||||
|
||||
npc->jumpVelocity += npc->jumpScale;
|
||||
temp_f20 = a / 100.0;
|
||||
temp_f22 = b / 100.0;
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
if (npc->jumpVelocity >= 0.0) {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
npc->currentAnim = enemy->animList[9];
|
||||
enemy->unk_07 = 0;
|
||||
if (!(npc->flags & 8)) {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
} else {
|
||||
phi_v0 = FALSE;
|
||||
}
|
||||
if (phi_v0) {
|
||||
temp_f2 = posY + temp_f20;
|
||||
if (temp_f2 <= npc->pos.y) {
|
||||
npc->pos.y = temp_f2;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->pos.y >= npc->moveToPos.y) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->jumpVelocity < 0.0) {
|
||||
npc->duration++;
|
||||
if (npc->duration >= aiSettings->unk_20) {
|
||||
npc->duration = 0;
|
||||
phi_f20 = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
temp_f0_2 = get_clamped_angle_diff(npc->yaw, phi_f20);
|
||||
if (aiSettings->unk_1C.s < fabsf(temp_f0_2)) {
|
||||
phi_f20 = npc->yaw;
|
||||
if (temp_f0_2 < 0.0f) {
|
||||
phi_f20 += -aiSettings->unk_1C.s;
|
||||
} else {
|
||||
phi_f20 += aiSettings->unk_1C.s;
|
||||
}
|
||||
}
|
||||
npc->yaw = clamp_angle(phi_f20);
|
||||
}
|
||||
|
||||
if (npc->flags & 8) {
|
||||
if (npc->pos.y + npc->jumpVelocity < temp_f22) {
|
||||
npc->pos.y = temp_f22;
|
||||
npc->jumpVelocity = 0.0f;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y + npc->collisionHeight;
|
||||
posZ = npc->pos.z;
|
||||
posW = (fabsf(npc->jumpVelocity) + npc->collisionHeight) + 10.0;
|
||||
if (func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW)) {
|
||||
if (posW <= (npc->collisionHeight + fabsf(npc->jumpVelocity))) {
|
||||
npc->jumpVelocity = 0.0f;
|
||||
npc->pos.y = posY;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
} else if (fabsf(npc->jumpVelocity) < ((npc->pos.y - temp_f22) + npc->collisionHeight)) {
|
||||
npc->pos.y = npc->pos.y + npc->jumpVelocity;
|
||||
return;
|
||||
}
|
||||
npc->jumpVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_80242948_C426F8)(Npc *npc, Enemy *enemy, ScriptInstance *script, NpcAISettings *aiSettings) {
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
temp_v1 = npc->flags & ~0x200;
|
||||
npc->flags = (npc->flags & ~0x200) | 0x800;
|
||||
if (enemy->territory->wander.isFlying) {
|
||||
npc->flags = temp_v1 | 0x808;
|
||||
} else {
|
||||
npc->flags = npc->flags & ~8;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[9] = 0;
|
||||
enemy->varTable[3] = ((posW * 100.0) + 0.5);
|
||||
enemy->varTable[7] = ((posY * 100.0) + 0.5);
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
enemy->unk_B0 |= 0x10;
|
||||
}
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
ApiStatus N(func_80242A6C_C4281C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1802,11 +1448,11 @@ ApiStatus N(func_80242A6C_C4281C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_80242948_C426F8)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -1827,7 +1473,7 @@ ApiStatus N(func_80242A6C_C4281C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1_copy)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80241FF8_C41DA8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -1841,7 +1487,7 @@ ApiStatus N(func_80242A6C_C4281C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(func_802425B8_C42368)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1856,7 +1502,7 @@ void N(func_80242C58_C42A08)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->duration = aiSettings->unk_20 / 2 + rand_int(aiSettings->unk_20 / 2 + 1);
|
||||
npc->currentAnim = enemy->animList[8];
|
||||
npc->moveSpeed = aiSettings->chaseSpeed;
|
||||
@ -1929,7 +1575,7 @@ void N(func_80242F94_C42D44)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
script->functionTemp[0].s = 16;
|
||||
} else {
|
||||
PlayerStatus** playerStatus = &gPlayerStatusPtr;
|
||||
@ -1952,7 +1598,7 @@ void N(func_80242F94_C42D44)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
npc->pos.y -= 1.8;
|
||||
} else {
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
if (D_8010EBB0.unk_03 != 9) {
|
||||
disable_player_input();
|
||||
func_800EF628();
|
||||
@ -2035,7 +1681,7 @@ void N(func_80243530_C432E0)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->moveSpeed = 2.0 * aiSettings->moveSpeed;
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
@ -2100,12 +1746,12 @@ ApiStatus N(func_802438F0_C436A0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 125.0f;
|
||||
territory.unk_18 = 125.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
script->functionTemp[0].s = 0;
|
||||
N(func_80242948_C426F8)(npc, enemy, script, npcAISettings);
|
||||
N(UnkFunc5)(npc, enemy, script, npcAISettings);
|
||||
}
|
||||
|
||||
switch (script->functionTemp[0].s) {
|
||||
@ -2121,7 +1767,7 @@ ApiStatus N(func_802438F0_C436A0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1_copy)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80241FF8_C41DA8)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc4)(script, npcAISettings, territoryPtr);
|
||||
if (script->functionTemp[0].s == 12) {
|
||||
npc->duration = 6;
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
ApiStatus N(UnkFunc1)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240B94_C40944)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024124C_C40FFC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802414AC_C4125C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802438F0_C436A0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243B98_C43948)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
@ -147,9 +147,7 @@ static s32 N(pad_3E4C) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
s32 N(triggerCoord_80243E50)[] = {
|
||||
0x43960000, 0x00000000, 0x42B00000, 0x00000000,
|
||||
};
|
||||
Vec4f N(triggerCoord_80243E50) = { 300.0f, 0.0f, 88.0f, 0.0f };
|
||||
|
||||
Script N(80243E60) = SCRIPT({
|
||||
sleep 2;
|
||||
@ -288,7 +286,7 @@ Script N(npcAI_80244284) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(update_starpoints_display_C46F9C)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_8024432C) = {
|
||||
@ -609,7 +607,7 @@ NpcGroupList N(npcGroupList_8024533C) = {
|
||||
s32 N(func_80240208_C46DE8)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -643,77 +641,7 @@ s32 N(func_80240208_C46DE8)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(update_starpoints_display_C46F9C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
ApiStatus N(func_8024061C_C471FC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -729,7 +657,7 @@ ApiStatus N(func_8024061C_C471FC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -991,7 +919,7 @@ ApiStatus N(func_802410D4_C47CB4)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -1251,70 +1179,7 @@ INCLUDE_ASM(void, "world/area_dgb/dgb_09/C46BE0", dgb_09_func_802415D4_C481B4, S
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_80241CBC_C4889C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f24 = (f32)enemy->varTable[3] / 100.0;
|
||||
f32 temp_f26 = temp_f24 + (f32)((f32)enemy->varTable[7] / 100.0);
|
||||
s32 var;
|
||||
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
}
|
||||
|
||||
if (enemy->varTable[1] > 0) {
|
||||
f32 temp_f22 = (f32)enemy->varTable[1] / 100.0;
|
||||
f32 sin_degrees = sin_deg(enemy->varTable[2]);
|
||||
s32 phi_v0;
|
||||
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f24 + (sin_degrees * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f26 + (sin_degrees * temp_f22);
|
||||
}
|
||||
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if ((npc->turnAroundYawAdjustment == 0) && (npc->duration <= 0)) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s > 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = (rand_int(1000) % 11) + 5;
|
||||
} else {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc4.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
@ -1332,121 +1197,9 @@ void N(func_80242078_C48C58)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkNpcAIFunc3.inc.c"
|
||||
|
||||
void N(func_8024227C_C48E5C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 posX, posY, posZ, posW;
|
||||
f32 temp_f0_2;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
f32 temp_f2;
|
||||
s32 phi_v0;
|
||||
f32 phi_f20;
|
||||
f32 a = enemy->varTable[3];
|
||||
f32 b = enemy->varTable[7];
|
||||
#include "world/common/UnkFunc6.inc.c"
|
||||
|
||||
npc->jumpVelocity += npc->jumpScale;
|
||||
temp_f20 = a / 100.0;
|
||||
temp_f22 = b / 100.0;
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
|
||||
if (npc->jumpVelocity >= 0.0) {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
npc->currentAnim = enemy->animList[9];
|
||||
enemy->unk_07 = 0;
|
||||
if (!(npc->flags & 8)) {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
} else {
|
||||
phi_v0 = FALSE;
|
||||
}
|
||||
if (phi_v0) {
|
||||
temp_f2 = posY + temp_f20;
|
||||
if (temp_f2 <= npc->pos.y) {
|
||||
npc->pos.y = temp_f2;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->pos.y >= npc->moveToPos.y) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
} else if (npc->jumpVelocity < 0.0) {
|
||||
npc->duration++;
|
||||
if (npc->duration >= aiSettings->unk_20) {
|
||||
npc->duration = 0;
|
||||
phi_f20 = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
temp_f0_2 = get_clamped_angle_diff(npc->yaw, phi_f20);
|
||||
if (aiSettings->unk_1C.s < fabsf(temp_f0_2)) {
|
||||
phi_f20 = npc->yaw;
|
||||
if (temp_f0_2 < 0.0f) {
|
||||
phi_f20 += -aiSettings->unk_1C.s;
|
||||
} else {
|
||||
phi_f20 += aiSettings->unk_1C.s;
|
||||
}
|
||||
}
|
||||
npc->yaw = clamp_angle(phi_f20);
|
||||
}
|
||||
|
||||
if (npc->flags & 8) {
|
||||
if (npc->pos.y + npc->jumpVelocity < temp_f22) {
|
||||
npc->pos.y = temp_f22;
|
||||
npc->jumpVelocity = 0.0f;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y + npc->collisionHeight;
|
||||
posZ = npc->pos.z;
|
||||
posW = (fabsf(npc->jumpVelocity) + npc->collisionHeight) + 10.0;
|
||||
if (func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW)) {
|
||||
if (posW <= (npc->collisionHeight + fabsf(npc->jumpVelocity))) {
|
||||
npc->jumpVelocity = 0.0f;
|
||||
npc->pos.y = posY;
|
||||
} else {
|
||||
npc->pos.y += npc->jumpVelocity;
|
||||
}
|
||||
return;
|
||||
} else if (fabsf(npc->jumpVelocity) < ((npc->pos.y - temp_f22) + npc->collisionHeight)) {
|
||||
npc->pos.y = npc->pos.y + npc->jumpVelocity;
|
||||
return;
|
||||
}
|
||||
npc->jumpVelocity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void N(func_8024260C_C491EC)(Npc *npc, Enemy *enemy, ScriptInstance *script, NpcAISettings *aiSettings) {
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 temp_a1;
|
||||
s32 temp_v1;
|
||||
s32 phi_v0;
|
||||
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
temp_v1 = npc->flags & ~0x200;
|
||||
npc->flags = (npc->flags & ~0x200) | 0x800;
|
||||
if (enemy->territory->wander.isFlying) {
|
||||
npc->flags = temp_v1 | 0x808;
|
||||
} else {
|
||||
npc->flags = npc->flags & ~8;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[9] = 0;
|
||||
enemy->varTable[3] = ((posW * 100.0) + 0.5);
|
||||
enemy->varTable[7] = ((posY * 100.0) + 0.5);
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
enemy->unk_B0 |= 0x10;
|
||||
}
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
ApiStatus N(func_80242730_C49310)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -1462,11 +1215,11 @@ ApiStatus N(func_80242730_C49310)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_8024260C_C491EC)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -1487,7 +1240,7 @@ ApiStatus N(func_80242730_C49310)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80241CBC_C4889C)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -1501,7 +1254,7 @@ ApiStatus N(func_80242730_C49310)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(func_8024227C_C48E5C)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1516,7 +1269,7 @@ void N(func_8024291C_C494FC)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
|
||||
npc->duration--;
|
||||
if (npc->duration <= 0) {
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->duration = aiSettings->unk_20 / 2 + rand_int(aiSettings->unk_20 / 2 + 1);
|
||||
npc->currentAnim = enemy->animList[8];
|
||||
npc->moveSpeed = aiSettings->chaseSpeed;
|
||||
@ -1581,7 +1334,7 @@ void N(func_80242C1C_C497FC)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
script->functionTemp[0].s = 16;
|
||||
} else {
|
||||
PlayerStatus** playerStatus = &gPlayerStatusPtr;
|
||||
@ -1604,7 +1357,7 @@ void N(func_80242C1C_C497FC)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
npc->pos.y -= 1.8;
|
||||
} else {
|
||||
npc->rotation.y = 0.0f;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
if (D_8010EBB0.unk_03 != 9) {
|
||||
disable_player_input();
|
||||
func_800EF628();
|
||||
@ -1687,7 +1440,7 @@ void N(func_802431B8_C49D98)(ScriptInstance *script, NpcAISettings *aiSettings,
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
enemy->varTable[0] &= ~0x100;
|
||||
npc->flags &= 0xFFDFFFFF;
|
||||
npc->flags &= ~0x00200000;
|
||||
npc->moveSpeed = 2.0 * aiSettings->moveSpeed;
|
||||
enemy->varTable[2] = 0;
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
@ -1752,12 +1505,12 @@ ApiStatus N(func_80243578_C4A158)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 125.0f;
|
||||
territory.unk_18 = 125.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
script->functionTemp[0].s = 0;
|
||||
N(func_8024260C_C491EC)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
switch (script->functionTemp[0].s) {
|
||||
@ -1773,7 +1526,7 @@ ApiStatus N(func_80243578_C4A158)(ScriptInstance *script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80241CBC_C4889C)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
if (script->functionTemp[0].s == 12) {
|
||||
npc->duration = 6;
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
ApiStatus N(func_8024061C_C471FC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802410D4_C47CB4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243578_C4A158)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(update_starpoints_display_C46F9C)(ScriptInstance *script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
NpcGroupList N(npcGroupList_8024533C);
|
||||
Script N(80243F6C);
|
||||
|
@ -123,9 +123,7 @@ static s32 N(pad_868)[] = {
|
||||
0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
s32 N(D_80240870_C4E760) = {
|
||||
0x00000000,
|
||||
};
|
||||
s32** N(D_80240870_C4E760) = NULL;
|
||||
|
||||
Script N(80240874) = SCRIPT({
|
||||
group 0;
|
||||
@ -171,23 +169,19 @@ Script N(makeEntities) = SCRIPT({
|
||||
});
|
||||
|
||||
ApiStatus N(func_80240000_C4DEF0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80240870_C4E760);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_80240870_C4E760) == NULL) {
|
||||
N(D_80240870_C4E760) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_80240870_C4E760)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_80240870_C4E760)[i];
|
||||
}
|
||||
ptr = &N(D_80240870_C4E760);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_80240870_C4E760));
|
||||
N(D_80240870_C4E760) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ Script N(80242058) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(update_starpoints_display_C4F8CC)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
s32 N(unk_missing_80242100)[] = {
|
||||
@ -455,7 +455,7 @@ Script N(makeEntities) = SCRIPT({
|
||||
s32 N(func_80240208_C4F718)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -489,77 +489,7 @@ s32 N(func_80240208_C4F718)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(update_starpoints_display_C4F8CC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
ApiStatus N(func_8024061C_C4FB2C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -575,7 +505,7 @@ ApiStatus N(func_8024061C_C4FB2C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -681,85 +611,11 @@ ApiStatus N(func_802408D0_C4FDE0)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
return ApiStatus_DONE1;
|
||||
}
|
||||
|
||||
void N(func_80240A28_C4FF38)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 x, z;
|
||||
s32 var;
|
||||
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if (func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
if (npc->moveSpeed < 4.0) {
|
||||
func_8003D660(npc, 0);
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
}
|
||||
|
||||
x = script->functionTemp[2].s[enemy->territory->patrol.points].x;
|
||||
z = script->functionTemp[2].s[enemy->territory->patrol.points].z;
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, x, z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (dist2D(npc->pos.x, npc->pos.z, x, z) <= npc->moveSpeed) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->moveTime <= 0) ||
|
||||
(aiSettings->waitTime <= 0) || (script->functionTemp[1].s == 0)) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
if (rand_int(10000) % 100 < aiSettings->moveTime) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc13.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_80240D90_C502A0)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if ((aiSettings->unk_14 >= 0) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (!(enemy->npcSettings->unk_2A & 1)) {
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
script->functionTemp[0].s = 10;
|
||||
}
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->duration--;
|
||||
if (npc->duration == 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc14.inc.c"
|
||||
|
||||
ApiStatus N(func_80240F4C_C5045C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -785,46 +641,11 @@ ApiStatus N(func_80240F4C_C5045C)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
ApiStatus N(func_8024121C_C5072C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_802413A4_C508B4)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_80241464_C50974)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -841,7 +662,7 @@ ApiStatus N(func_80241464_C50974)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -861,7 +682,7 @@ ApiStatus N(func_80241464_C50974)(ScriptInstance* script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -878,12 +699,12 @@ ApiStatus N(func_80241464_C50974)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_802408D0_C4FDE0)(script, npcAISettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80240A28_C4FF38)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc13)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_80240D90_C502A0)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc14)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_80240F4C_C5045C)(script, npcAISettings, territoryPtr);
|
||||
@ -896,13 +717,13 @@ ApiStatus N(func_80241464_C50974)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, npcAISettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024121C_C5072C)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc15)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_802413A4_C508B4)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc16)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
|
@ -8,7 +8,7 @@ ApiStatus N(SetEntityFlags100000)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc1)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024061C_C4FB2C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241464_C50974)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(update_starpoints_display_C4F8CC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
NpcGroupList N(npcGroupList_80242AB0);
|
||||
Script N(80242AD0);
|
||||
|
@ -183,7 +183,7 @@ Script N(npcAI_80241978) = SCRIPT({
|
||||
SetSelfVar(3, 32);
|
||||
SetSelfVar(4, 3);
|
||||
SetSelfVar(15, 8389);
|
||||
N(update_starpoints_display_C528FC)();
|
||||
N(UnkFunc7)();
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80241A20) = {
|
||||
@ -625,7 +625,7 @@ NpcGroupList N(npcGroupList_8024318C) = {
|
||||
s32 N(func_80240208_C52748)(ScriptInstance *script) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Camera* camera = CAM2(gCurrentCamID);
|
||||
Camera* camera = CAM(gCurrentCamID);
|
||||
Enemy* enemy2 = get_enemy(enemy->npcID + 1);
|
||||
f32 phi_f20;
|
||||
s32 ret = TRUE;
|
||||
@ -659,77 +659,7 @@ s32 N(func_80240208_C52748)(ScriptInstance *script) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
ApiStatus N(update_starpoints_display_C528FC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
Enemy* enemy2;
|
||||
Npc* npc2;
|
||||
f32 posX, posZ;
|
||||
s32 func;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
npc->duration = 0;
|
||||
npc->flags |= 0x102;
|
||||
enemy->flags |= 0x1F300000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
if (enemy->unk_B0 & 4) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
}
|
||||
|
||||
func = script->functionTemp[0].s;
|
||||
switch (func) {
|
||||
case 0:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
npc2 = get_npc_unsafe(enemy2->npcID);
|
||||
enemy->unk_07 = 1;
|
||||
if (enemy2->varTable[0] == 3) {
|
||||
if (enemy->varTable[15] != 0) {
|
||||
func_800494C0(npc2, enemy->varTable[15], 0);
|
||||
}
|
||||
posX = npc2->pos.x;
|
||||
posZ = npc2->pos.z;
|
||||
add_vec2D_polar(&posX, &posZ, enemy->varTable[1], 270.0f - npc2->renderYaw);
|
||||
|
||||
npc->pos.x = posX;
|
||||
enemy->unk_10.x = npc->pos.x;
|
||||
|
||||
npc->pos.y = npc2->pos.y + enemy->varTable[0];
|
||||
enemy->unk_10.y = npc->pos.y;
|
||||
|
||||
npc->pos.z = posZ;
|
||||
enemy->unk_10.z = npc->pos.z;
|
||||
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
enemy->flags &= 0xE0EFFFFF;
|
||||
npc->duration = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
enemy2 = get_enemy(enemy->npcID - 1);
|
||||
get_npc_unsafe(enemy2->npcID);
|
||||
npc->duration++;
|
||||
if (npc->duration >= enemy->varTable[4]) {
|
||||
enemy->unk_07 = 0;
|
||||
}
|
||||
if (enemy2->varTable[0] == 4) {
|
||||
enemy->flags |= 0x1F100000;
|
||||
npc->pos.x = 0.0f;
|
||||
npc->pos.y = -1000.0f;
|
||||
npc->pos.z = 0.0f;
|
||||
enemy->unk_07 = func;
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
#include "world/common/UnkFunc7.inc.c"
|
||||
|
||||
void N(func_8024061C_C52B5C)(ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -922,7 +852,7 @@ ApiStatus N(func_80240E20_C53360)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 40.0f;
|
||||
territory.unk_18 = 40.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
@ -1026,7 +956,7 @@ ApiStatus N(func_80241170_C536B0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || (enemy->unk_B0 & 4)) {
|
||||
|
@ -4,7 +4,7 @@
|
||||
#define NAMESPACE dgb_16
|
||||
|
||||
ApiStatus N(func_80240E20_C53360)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(update_starpoints_display_C528FC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc7)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_8024318C);
|
||||
extern Script N(80241780);
|
||||
|
@ -638,9 +638,7 @@ static s32 N(pad_36D8)[] = {
|
||||
0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
s32 N(D_802436E0_C59620) = {
|
||||
0x00000000,
|
||||
};
|
||||
s32** N(D_802436E0_C59620) = NULL;
|
||||
|
||||
Script N(802436E4) = SCRIPT({
|
||||
group 0;
|
||||
@ -719,85 +717,11 @@ ApiStatus N(func_80240000_C55F40)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
return ApiStatus_DONE1;
|
||||
}
|
||||
|
||||
void N(func_80240158_C56098)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 x, z;
|
||||
s32 var;
|
||||
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if (func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
if (npc->moveSpeed < 4.0) {
|
||||
func_8003D660(npc, 0);
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
}
|
||||
|
||||
x = script->functionTemp[2].s[enemy->territory->patrol.points].x;
|
||||
z = script->functionTemp[2].s[enemy->territory->patrol.points].z;
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, x, z);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (dist2D(npc->pos.x, npc->pos.z, x, z) <= npc->moveSpeed) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->moveTime <= 0) ||
|
||||
(aiSettings->waitTime <= 0) || (script->functionTemp[1].s == 0)) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
if (rand_int(10000) % 100 < aiSettings->moveTime) {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc13.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
void N(func_802404C0_C56400)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if ((aiSettings->unk_14 >= 0) && func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 0xF, &var);
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, gPlayerStatusPtr->position.x, gPlayerStatusPtr->position.z);
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (!(enemy->npcSettings->unk_2A & 1)) {
|
||||
script->functionTemp[0].s = 12;
|
||||
} else {
|
||||
script->functionTemp[0].s = 10;
|
||||
}
|
||||
} else if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc->duration--;
|
||||
if (npc->duration == 0) {
|
||||
script->functionTemp[1].s--;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
if (!(enemy->npcSettings->unk_2A & 0x10)) {
|
||||
npc->yaw = clamp_angle(npc->yaw + 180.0f);
|
||||
}
|
||||
npc->duration = aiSettings->waitTime / 2 + rand_int(aiSettings->waitTime / 2 + 1);
|
||||
} else {
|
||||
script->functionTemp[0].s = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc14.inc.c"
|
||||
|
||||
ApiStatus N(func_8024067C_C565BC)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -823,46 +747,11 @@ ApiStatus N(func_8024067C_C565BC)(ScriptInstance* script, NpcAISettings* aiSetti
|
||||
|
||||
#include "world/common/UnkNpcAIFunc13.inc.c"
|
||||
|
||||
ApiStatus N(func_8024094C_C5688C)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 var;
|
||||
|
||||
if (!func_800490B4(territory, enemy, aiSettings->chaseRadius, aiSettings->unk_28.f, 1)) {
|
||||
fx_emote(2, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 15, &var);
|
||||
npc->currentAnim = enemy->animList[0];
|
||||
npc->duration = 25;
|
||||
script->functionTemp[0].s = 14;
|
||||
} else {
|
||||
func_8003D660(npc, 1);
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
if (npc->duration > 0) {
|
||||
npc->duration--;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "world/common/UnkFunc15.inc.c"
|
||||
|
||||
#include "world/common/UnkNpcDurationFlagFunc.inc.c"
|
||||
|
||||
void N(func_80240AD4_C56A14)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
s32 i;
|
||||
|
||||
for (i = script->functionTemp[2].s; i < enemy->territory->patrol.numPoints; i++) {
|
||||
if (i[enemy->territory->patrol.points].y <= npc->pos.y) {
|
||||
script->functionTemp[2].s = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
npc->moveSpeed = aiSettings->moveSpeed;
|
||||
npc->currentAnim = enemy->animList[1];
|
||||
script->functionTemp[1].s = 0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
#include "world/common/UnkFunc16.inc.c"
|
||||
|
||||
ApiStatus N(func_80240B94_C56AD4)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
@ -879,7 +768,7 @@ ApiStatus N(func_80240B94_C56AD4)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->patrol.detect.z;
|
||||
territory.sizeX = enemy->territory->patrol.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->patrol.detectSizeZ;
|
||||
territory.unk_34 = 65.0f;
|
||||
territory.unk_18 = 65.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall || enemy->unk_B0 & 4) {
|
||||
@ -899,7 +788,7 @@ ApiStatus N(func_80240B94_C56AD4)(ScriptInstance* script, s32 isInitialCall) {
|
||||
enemy->unk_B0 &= ~4;
|
||||
} else if (enemy->flags & 0x40000000) {
|
||||
script->functionTemp[0].s = 12;
|
||||
enemy->flags &= 0xBFFFFFFF;
|
||||
enemy->flags &= ~0x40000000;
|
||||
}
|
||||
|
||||
posX = npc->pos.x;
|
||||
@ -916,12 +805,12 @@ ApiStatus N(func_80240B94_C56AD4)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 0:
|
||||
N(func_80240000_C55F40)(script, npcAISettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_80240158_C56098)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc13)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802404C0_C56400)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc14)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 4:
|
||||
N(func_8024067C_C565BC)(script, npcAISettings, territoryPtr);
|
||||
@ -934,13 +823,13 @@ ApiStatus N(func_80240B94_C56AD4)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 12:
|
||||
N(UnkNpcAIFunc13)(script, npcAISettings, territoryPtr);
|
||||
case 13:
|
||||
N(func_8024094C_C5688C)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc15)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkNpcDurationFlagFunc)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 15:
|
||||
N(func_80240AD4_C56A14)(script, npcAISettings, territoryPtr);
|
||||
N(UnkFunc16)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 99:
|
||||
func_8004A73C(script);
|
||||
|
@ -1,23 +1,19 @@
|
||||
#include "dgb_18.h"
|
||||
|
||||
ApiStatus N(func_80240FB0_C56EF0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_802436E0_C59620);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_802436E0_C59620) == NULL) {
|
||||
N(D_802436E0_C59620) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_802436E0_C59620)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_802436E0_C59620)[i];
|
||||
}
|
||||
ptr = &N(D_802436E0_C59620);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_802436E0_C59620));
|
||||
N(D_802436E0_C59620) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -6,9 +6,9 @@
|
||||
ApiStatus N(UnkFunc1)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240B94_C56AD4)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern s32** N(D_802436E0_C59620);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_802436B4);
|
||||
extern Script N(main);
|
||||
extern Script N(makeEntities);
|
||||
extern Script N(npcAI_80242834);
|
||||
|
||||
extern s32 N(D_802436E0_C59620);
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include "world/common/GetCurrentFloor.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_01/95B200", func_80240034_95B234);
|
||||
#include "world/common/UnkFunc25.inc.c"
|
||||
|
||||
#include "world/common/GetEntryPos.inc.c"
|
||||
|
||||
@ -12,6 +12,6 @@ INCLUDE_ASM(s32, "world/area_dro/dro_01/95B200", func_80240034_95B234);
|
||||
|
||||
#include "world/common/SomeXYZFunc2.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_01/95B200", func_802402E0_95B4E0);
|
||||
#include "world/common/UnkFunc27.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_01/95B200", func_80240404_95B604);
|
||||
#include "world/common/UnkFunc26.inc.c"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,32 +1,28 @@
|
||||
#include "dro_01.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_01/95E660", func_80243460_95E660);
|
||||
/*
|
||||
ApiStatus N(func_80243460_95E660)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80241C68_BE09F8);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_8024B5B0_9667B0) == NULL) {
|
||||
N(D_8024B5B0_9667B0) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_8024B5B0_9667B0)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_8024B5B0_9667B0)[i];
|
||||
}
|
||||
ptr = &N(D_80241C68_BE09F8);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_8024B5B0_9667B0));
|
||||
N(D_8024B5B0_9667B0) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
#define NAMESPACE dup_dro_01
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/GetItemName.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_01/95E660", func_80243578_95E778);
|
||||
ApiStatus N(func_80243578_95E778)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_800E96C8();
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,25 +1,63 @@
|
||||
#include "dro_01.h"
|
||||
|
||||
#define NAMESPACE dup_dro_01
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/SetPlayerStatusAnimFlags100000.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
#define NAMESPACE dup_dro_01
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/GetCurrentFloor.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_01/95E7A0", func_802435D4_95E7D4);
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/UnkFunc25.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
#define NAMESPACE dup_dro_01
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/GetEntryPos.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
#define NAMESPACE dup_dro_01
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/GetCurrentCameraYawClamped180.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
#define NAMESPACE dup_dro_01
|
||||
#define NAMESPACE dro_01_dup
|
||||
#include "world/common/SomeXYZFunc2.inc.c"
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
#include "world/common/foliage.inc.c"
|
||||
|
||||
FoliageModelList N(tree1_Leaves) = {
|
||||
.count = 1,
|
||||
.models = { 13 }
|
||||
};
|
||||
|
||||
FoliageModelList N(tree1_Trunk) = {
|
||||
.count = 1,
|
||||
.models = { 14 }
|
||||
};
|
||||
|
||||
FoliageDropList N(tree1_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_COIN,
|
||||
.pos = { 120, 92, -18 },
|
||||
.spawnMode = 0xF,
|
||||
.pickupFlag = SI_SAVE_FLAG(760),
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(tree1) = {
|
||||
.leaves = &N(tree1_Leaves),
|
||||
.trunk = &N(tree1_Trunk),
|
||||
.drops = &N(tree1_Drops),
|
||||
};
|
||||
|
||||
Vec4f N(triggerCoord_8024DD68) = { 120.0f, 0.0f, -43.0f, 0.0f };
|
||||
|
||||
Script N(8024DD78) = SCRIPT({
|
||||
SI_VAR(0) = N(tree1);
|
||||
bind N(shakeTree) to TRIGGER_WALL_HAMMER 11;
|
||||
bind N(shakeTree) to TRIGGER_POINT_BOMB N(triggerCoord_8024DD68);
|
||||
});
|
||||
|
@ -2,3 +2,90 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE dro_01
|
||||
|
||||
typedef struct {
|
||||
u32 itemID;
|
||||
u32 buyPrice;
|
||||
u32 descriptionID;
|
||||
} N(shopInventory);
|
||||
|
||||
typedef struct {
|
||||
u32 itemID;
|
||||
u32 sellPrice;
|
||||
u32 unk_08;
|
||||
} N(shopPrice);
|
||||
|
||||
ApiStatus N(GetCamVfov)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetCurrentCameraYawClamped180)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetCurrentFloor)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetEntryPos)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetGameStatus75)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetNpcUnsafeOwner2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(Set80151310_0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(Set80151310_1)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetCamVfov)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetManyVars)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetPlayerStatusAnimFlags100000)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SomeXYZFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(AddPlayerHandsOffset)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkAlphaFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkCameraFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkMovePartner)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkRotatePartner)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkRotatePlayer)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkYawFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc25)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc27)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc26)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241174_95C374)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802415AC_95C7AC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc31)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc29)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241B5C_95CD5C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241BE0_95CDE0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241DF8_95CFF8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241EAC_95D0AC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241EE0_95D0E0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241F60_95D160)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241F78_95D178)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241F94_95D194)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802424D4_95D6D4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242730_95D930)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242784_95D984)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802427BC_95D9BC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242858_95DA58)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243014_95E214)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243058_95E258)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243084_95E284)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetFloorCollider)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802431B4_95E3B4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802431FC_95E3FC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243350_95E550)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243578_95E778)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(dup_UnkFunc25)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(dup_GetCurrentCameraYawClamped180)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(dup_GetCurrentFloor)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(dup_GetEntryPos)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(dup_SetPlayerStatusAnimFlags100000)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(dup_SomeXYZFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern s32** N(D_8024B5B0_9667B0);
|
||||
extern N(shopInventory) N(shopInventory_8024B4FC)[];
|
||||
extern N(shopPrice) N(shopPriceList_8024B550)[];
|
||||
|
||||
extern NpcGroupList N(npcGroupList_8024B464);
|
||||
extern NpcGroupList N(npcGroupList_8024B47C);
|
||||
extern Script N(80244450);
|
||||
extern Script N(8024C218);
|
||||
extern Script N(8024C2EC);
|
||||
extern Script N(8024C41C);
|
||||
extern Script N(8024C4C8);
|
||||
extern Script N(8024CDA0);
|
||||
extern Script N(8024DD78);
|
||||
extern Script N(main);
|
||||
extern Script N(makeEntities);
|
||||
extern Script N(shopItemPositions_8024BA68);
|
||||
extern Script N(shopOwnerNPC_8024BA80);
|
||||
extern Script N(unk_80248088);
|
||||
extern Script N(unk_8024884C);
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "dro_02.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_02/9691C0", func_80240000_9691C0);
|
||||
#include "world/common/UnkFunc27.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_dro/dro_02/9691C0", func_80240124_9692E4);
|
||||
#include "world/common/UnkFunc26.inc.c"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,3 +2,62 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE dro_02
|
||||
|
||||
ApiStatus N(Call800E9894)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(Call800E98C4SyncStatusMenu)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(Call800EB168)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetCamVfov)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetGameStatus75)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetNpcUnsafeOwner2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetPartnerCall800EB168)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(Set80151310_0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(Set80151310_1)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetCamVfov)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetManyVars)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(AddPlayerHandsOffset)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkAlphaFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkCameraFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc26)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc27)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc29)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkMovePartner)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkRotatePartner)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkRotatePlayer)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkYawFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024043C_9695FC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc31)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802409EC_969BAC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240A70_969C30)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240C88_969E48)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240D3C_969EFC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240D70_969F30)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240DF0_969FB0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240E08_969FC8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240E24_969FE4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241364_96A524)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241394_96A554)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802414C0_96A680)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802415CC_96A78C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802416FC_96A8BC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241874_96AA34)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024303C_96C1FC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243068_96C228)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802432C0_96C480)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243314_96C4D4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024334C_96C50C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802433E8_96C5A8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc32)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(CamSetFOV)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(DoesPlayerNeedSleep)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc35)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802439FC_96CBBC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80243A40_96CC00)(ScriptInstance* script, s32 isInitialCall);
|
||||
void N(func_8024240C_96B5CC)(ScriptInstance *script, s32 isInitialCall);
|
||||
void N(func_80242EAC_96C06C)(ScriptInstance *script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_8024EEF4);
|
||||
extern Script N(80244C78);
|
||||
extern Script N(8024D434);
|
||||
extern Script N(8024D494);
|
||||
extern Script N(8024D700);
|
||||
extern Script N(main);
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "end_01.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_end/end_01/E08050", func_80242CF0_E08050);
|
||||
#include "world/common/UnkFunc27.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_end/end_01/E08050", func_80242E14_E08174);
|
||||
#include "world/common/UnkFunc26.inc.c"
|
||||
|
@ -1,3 +1,9 @@
|
||||
#include "flo_00.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_00/C9DF20", func_80240000_C9DF20);
|
||||
// Same as SpawnSunEffect, but doesn't touch float regs like SpawnSunEffect does
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240000_C9DF20)(ScriptInstance *script, s32 isInitialCall) {
|
||||
func_80072950(0, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,15 +1,55 @@
|
||||
#include "flo_00.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_00/C9EE30", func_80240F10_C9EE30);
|
||||
ApiStatus N(func_80240F10_C9EE30)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32 var1 = *args++;
|
||||
s32 var2 = *args++;
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_00/C9EE30", func_80240F80_C9EEA0);
|
||||
set_variable(script, var1, gPlayerStatus.spriteFacingAngle);
|
||||
set_variable(script, var2, gPlayerStatus.targetYaw);
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_00/C9EE30", func_802410B4_C9EFD4);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_80240F80_C9EEA0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
f32 var1 = get_variable(NULL, script->varTable[2]);
|
||||
f32 dist = dist2D(-83.0f, 87.0f, script->varTable[9], script->varTable[11]);
|
||||
f32 clamped = clamp_angle(atan2(-83.0f, 87.0f, script->varTable[9], script->varTable[11]) - var1);
|
||||
|
||||
var1 = sin_deg(clamped);
|
||||
gPlayerStatus.position.x = (dist * var1) + -83.0f;
|
||||
gPlayerStatus.position.y = get_variable(NULL, script->varTable[10]) + get_variable(NULL, script->varTable[3]);
|
||||
var1 = cos_deg(clamped);
|
||||
gPlayerStatus.position.z = 87.0f - (dist * var1);
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_802410B4_C9EFD4)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Npc *npc = get_npc_by_index(0);
|
||||
f32 temp_f20 = get_variable(NULL, script->varTable[2]);
|
||||
f32 dist = dist2D(-83.0f, 87.0f, script->varTable[12], script->varTable[14]);
|
||||
f32 clamped = clamp_angle(atan2(-83.0f, 87.0f, script->varTable[12], script->varTable[14]) - temp_f20);
|
||||
|
||||
temp_f20 = sin_deg(clamped);
|
||||
npc->pos.x = (dist * temp_f20) + -83.0f;
|
||||
npc->pos.y = get_variable(NULL, script->varTable[13]) + get_variable(NULL, script->varTable[3]);
|
||||
temp_f20 = cos_deg(clamped);
|
||||
npc->pos.z = 87.0f - (dist * temp_f20);
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
#include "common/UnkFloatFunc.inc.c"
|
||||
|
||||
#include "world/common/SyncStatusMenu.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_00/C9EE30", func_8024139C_C9F2BC);
|
||||
ApiStatus N(func_8024139C_C9F2BC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
increment_status_menu_disabled();
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_00/C9EE30", func_802413BC_C9F2DC);
|
||||
ApiStatus N(func_802413BC_C9F2DC)(ScriptInstance *script, s32 isInitialCall) {
|
||||
decrement_status_menu_disabled();
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -2,3 +2,29 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_00
|
||||
|
||||
ApiStatus N(SyncStatusMenu)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(PostChapter6StatUpdate)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFloatFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240000_C9DF20)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240BD4_C9EAF4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240ED0_C9EDF0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240F10_C9EE30)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240F80_C9EEA0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802410B4_C9EFD4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802411EC_C9F10C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024137C_C9F29C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024139C_C9F2BC)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802413BC_C9F2DC)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_80245DE4);
|
||||
extern NpcGroupList N(npcGroupList_80246834);
|
||||
extern Script N(80242998);
|
||||
extern Script N(80242FCC);
|
||||
extern Script N(80245EB8);
|
||||
extern Script N(80247BCC);
|
||||
extern Script N(8024834C);
|
||||
extern Script N(80248E30);
|
||||
extern Script N(80248F48);
|
||||
extern Script N(main);
|
||||
extern Script N(makeEntities);
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_03.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_03/CA72A0", func_80240000_CA72A0);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240000_CA72A0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(1, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,3 +2,16 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_03
|
||||
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240000_CA72A0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240158_CA73F8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240460_CA7700)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_8024442C);
|
||||
extern Script N(80240FFC);
|
||||
extern Script N(80241EF4);
|
||||
extern Script N(80244E54);
|
||||
extern Script N(80244ED0);
|
||||
extern Script N(main);
|
||||
extern Script N(makeEntities);
|
||||
|
@ -6,4 +6,30 @@
|
||||
|
||||
#include "world/common/SpawnSunEffect.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_07/CAC1F0", func_80240344_CAC534);
|
||||
typedef struct N(unk_effect) {
|
||||
char unk_00[0x38];
|
||||
s32 unk_38;
|
||||
s32 unk_3C;
|
||||
s32 unk_40;
|
||||
char unk_44[0x4];
|
||||
s32 unk_48;
|
||||
s32 unk_4C;
|
||||
s32 unk_50;
|
||||
} N(unk_effect);
|
||||
|
||||
typedef struct N(temp) {
|
||||
char unk_00[0xC];
|
||||
N(unk_effect)* unk_0C;
|
||||
} N(temp);
|
||||
|
||||
ApiStatus N(func_80240344_CAC534)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(temp)* effect = func_80072350(3, -272.0f, 80.0f, 20.0f, 200.0f, 120.0f, 4.0f, 8, 0);
|
||||
|
||||
effect->unk_0C->unk_38 = 0xF0;
|
||||
effect->unk_0C->unk_3C = 0xF0;
|
||||
effect->unk_0C->unk_40 = 0xF0;
|
||||
effect->unk_0C->unk_48 = 0xE6;
|
||||
effect->unk_0C->unk_4C = 0xE6;
|
||||
effect->unk_0C->unk_50 = 0xF0;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,30 +1,512 @@
|
||||
#include "flo_07.h"
|
||||
#include "message_ids.h"
|
||||
#include "sprite/npc/posie.h"
|
||||
|
||||
enum {
|
||||
NPC_POSIE,
|
||||
};
|
||||
|
||||
EntryList N(entryList) = {
|
||||
{ 375.0f, 0.0f, 0.0f, 270.0f },
|
||||
{ 325.0f, 0.0f, 0.0f, 270.0f },
|
||||
};
|
||||
|
||||
MapConfig N(config) = {
|
||||
.main = &N(main),
|
||||
.entryList = &N(entryList),
|
||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_flo_07_tattle },
|
||||
};
|
||||
|
||||
Script N(802407A0) = SCRIPT({
|
||||
GetEntryID(SI_VAR(0));
|
||||
if (SI_VAR(0) == 1) {
|
||||
SetMusicTrack(0, SONG_SUNSHINE_RETURNS, 0, 8);
|
||||
} else {
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8);
|
||||
}
|
||||
else {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_SUNNY, 0, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
PlaySound(0x80000021);
|
||||
});
|
||||
|
||||
Script N(8024086C) = SCRIPT({
|
||||
func_802D5FF8(137, 1);
|
||||
});
|
||||
|
||||
Script N(80240890) = SCRIPT({
|
||||
FadeOutMusic(0, 250);
|
||||
sleep 10;
|
||||
func_802D5FD8();
|
||||
});
|
||||
|
||||
static s32 N(pad_8CC) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(updateTexturePan_802408D0) = SCRIPT({
|
||||
group 0;
|
||||
if (SI_VAR(5) == 1) {
|
||||
if (SI_VAR(6) == 1) {
|
||||
if (SI_VAR(7) == 1) {
|
||||
if (SI_VAR(8) == 1) {
|
||||
N(UnkTexturePanFunc)();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
N(UnkTexturePanFunc2)();
|
||||
});
|
||||
|
||||
Script N(8024096C) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(exitWalk_80240C18) = EXIT_WALK_SCRIPT(60, 0, "flo_25", 1);
|
||||
|
||||
Script N(80240C74) = SCRIPT({
|
||||
bind N(exitWalk_80240C18) to TRIGGER_FLOOR_ABOVE 0;
|
||||
});
|
||||
|
||||
Script N(main) = SCRIPT({
|
||||
WORLD_LOCATION = LOCATION_FLOWER_FIELDS;
|
||||
SetSpriteShading(-1);
|
||||
SetCamLeadPlayer(0, 0);
|
||||
SetCamPerspective(0, 3, 25, 16, 4096);
|
||||
SetCamBGColor(0, 0, 0, 0);
|
||||
SetCamEnabled(0, 1);
|
||||
SI_AREA_FLAG(6) = 0;
|
||||
MakeNpcs(0, N(npcGroupList_80242B0C));
|
||||
await N(802428C4);
|
||||
ModifyColliderFlags(3, 6, 0x00000006);
|
||||
SI_VAR(0) = 297;
|
||||
SI_VAR(1) = -95;
|
||||
SI_VAR(2) = 383;
|
||||
SI_VAR(3) = -65;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(8024096C);
|
||||
SI_VAR(0) = 293;
|
||||
SI_VAR(1) = 71;
|
||||
SI_VAR(2) = 378;
|
||||
SI_VAR(3) = 113;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(8024096C);
|
||||
SI_VAR(0) = 21;
|
||||
SI_VAR(1) = -346;
|
||||
SI_VAR(2) = 147;
|
||||
SI_VAR(3) = -242;
|
||||
SI_VAR(4) = 20;
|
||||
spawn N(8024096C);
|
||||
SI_VAR(0) = -350;
|
||||
SI_VAR(1) = -190;
|
||||
SI_VAR(2) = -81;
|
||||
SI_VAR(3) = -106;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(8024096C);
|
||||
SI_VAR(0) = -380;
|
||||
SI_VAR(1) = 85;
|
||||
SI_VAR(2) = -95;
|
||||
SI_VAR(3) = 150;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(8024096C);
|
||||
EnableTexPanning(51, 1);
|
||||
EnableTexPanning(49, 1);
|
||||
EnableTexPanning(50, 1);
|
||||
spawn {
|
||||
SI_VAR(0) = 2;
|
||||
SI_VAR(1) = -100;
|
||||
SI_VAR(2) = 100;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 1;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_802408D0);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 3;
|
||||
SI_VAR(1) = 0;
|
||||
SI_VAR(2) = -1200;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 0;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_802408D0);
|
||||
}
|
||||
GetEntryID(SI_VAR(0));
|
||||
if (SI_VAR(0) == 1) {
|
||||
spawn N(80241C14);
|
||||
} else {
|
||||
ModifyColliderFlags(0, 1, 0x7FFFFE00);
|
||||
SI_VAR(0) = N(80240C74);
|
||||
spawn EnterWalk;
|
||||
spawn N(802424F4);
|
||||
}
|
||||
await N(802407A0);
|
||||
if (STORY_PROGRESS >= STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) {
|
||||
N(SpawnSunEffect)();
|
||||
}
|
||||
N(func_80240344_CAC534)();
|
||||
});
|
||||
|
||||
static s32 N(pad_1214)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_80241220) = {
|
||||
.height = 56,
|
||||
.radius = 40,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
#include "world/common/foliage.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_07/CAC5D0", func_8024061C_CAC80C);
|
||||
/*
|
||||
ApiStatus N(func_8024061C_CAC80C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80241C68_BE09F8);
|
||||
s32 i;
|
||||
s32* test;
|
||||
s32** N(D_80241BB0_CADDA0) = NULL;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
Script N(80241BB4) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 0);
|
||||
return;
|
||||
});
|
||||
|
||||
Script N(80241BE4) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 16);
|
||||
return;
|
||||
});
|
||||
|
||||
Script N(80241C14) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePlayerPhysics(TRUE);
|
||||
GetNpcPos(NPC_POSIE, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(0) += 30;
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamDistance(0, 300);
|
||||
SetCamPitch(0, 11.0, -11.0);
|
||||
SetCamSpeed(0, 90.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x00C5));
|
||||
sleep 10;
|
||||
GotoMap("flo_10", 1);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(80241D6C) = SCRIPT({
|
||||
0:
|
||||
ShakeCam(0, 0, 1, 1.0);
|
||||
sleep 1;
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(80241DBC) = SCRIPT({
|
||||
if (SI_AREA_FLAG(6) == 1) {
|
||||
return;
|
||||
}
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0068));
|
||||
spawn {
|
||||
SetCamDistance(0, 300);
|
||||
SetCamPitch(0, 18.0, -7.5);
|
||||
SetCamSpeed(0, 0.5);
|
||||
PanToTarget(0, 0, 1);
|
||||
}
|
||||
PlaySound(0x8000006B);
|
||||
SI_MAP_VAR(0) = spawn N(80241D6C);
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_6), NPC_ANIM(posie, Palette_00, Anim_6), 0, MESSAGE_ID(0x11, 0x0069));
|
||||
kill SI_MAP_VAR(0);
|
||||
SetCamDistance(0, 350);
|
||||
SetCamPitch(0, 18.0, -7.5);
|
||||
SetCamSpeed(0, 8.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 10;
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(0) -= SI_VAR(2);
|
||||
if (SI_VAR(0) < -250) {
|
||||
MakeItemEntity(ITEM_CRYSTAL_BERRY, -225, 100, -25, 13, SI_SAVE_FLAG(1374));
|
||||
} else {
|
||||
MakeItemEntity(ITEM_CRYSTAL_BERRY, -265, 100, 54, 13, SI_SAVE_FLAG(1374));
|
||||
SI_SAVE_FLAG(1396) = 1;
|
||||
}
|
||||
PlaySound(0x7BC);
|
||||
func_802D62E4(956);
|
||||
SI_AREA_FLAG(6) = 1;
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x006A));
|
||||
STORY_PROGRESS = STORY_CH6_GOT_CRYSTAL_BERRY;
|
||||
});
|
||||
|
||||
Script N(interact_80242044) = SCRIPT({
|
||||
await N(8024086C);
|
||||
NpcFacePlayer(NPC_SELF, 1);
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_GOT_MAGICAL_BEAN {
|
||||
if (SI_AREA_FLAG(5) == 0) {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0070));
|
||||
SI_AREA_FLAG(5) = 1;
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0071));
|
||||
}
|
||||
}
|
||||
< STORY_CH6_GOT_FERTILE_SOIL {
|
||||
AdjustCam(0, 4.0, 0, 350.0, 18.0, -7.5);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0065));
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_5));
|
||||
sleep 20;
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_0));
|
||||
SI_VAR(0) = 89;
|
||||
SI_VAR(1) = 1;
|
||||
await N(80241BB4);
|
||||
AddKeyItem(ITEM_FERTILE_SOIL);
|
||||
STORY_PROGRESS = STORY_CH6_GOT_FERTILE_SOIL;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0066));
|
||||
if (SI_SAVE_FLAG(1379) == 1) {
|
||||
await N(80241DBC);
|
||||
}
|
||||
ResetCam(0, 4.0);
|
||||
}
|
||||
< STORY_CH6_GOT_CRYSTAL_BERRY {
|
||||
if (SI_SAVE_FLAG(1379) == 1) {
|
||||
if (SI_AREA_FLAG(6) == 0) {
|
||||
AdjustCam(0, 4.0, 0, 350.0, 18.0, -7.5);
|
||||
await N(80241DBC);
|
||||
ResetCam(0, 4.0);
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0072));
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0072));
|
||||
}
|
||||
ptr = &N(D_80241C68_BE09F8);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
}
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
if (SI_SAVE_FLAG(1374) == 0) {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0072));
|
||||
} else {
|
||||
if (STORY_PROGRESS < STORY_CH6_GOT_WATER_STONE) {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0073));
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0074));
|
||||
}
|
||||
ContinueSpeech(-1, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0075));
|
||||
}
|
||||
}
|
||||
< STORY_CH6_RETURNED_TO_TOAD_TOWN {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0076));
|
||||
}
|
||||
else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0077));
|
||||
}
|
||||
}
|
||||
await N(80240890);
|
||||
});
|
||||
|
||||
Script N(init_80242428) = SCRIPT({
|
||||
if (STORY_PROGRESS == STORY_CH6_GOT_CRYSTAL_BERRY) {
|
||||
if (SI_SAVE_FLAG(1374) == 0) {
|
||||
if (SI_SAVE_FLAG(1396) == 0) {
|
||||
MakeItemEntity(ITEM_CRYSTAL_BERRY, -225, 0, -25, 17, SI_SAVE_FLAG(1374));
|
||||
} else {
|
||||
MakeItemEntity(ITEM_CRYSTAL_BERRY, -265, 0, 54, 17, SI_SAVE_FLAG(1374));
|
||||
}
|
||||
}
|
||||
}
|
||||
SI_AREA_FLAG(5) = 0;
|
||||
BindNpcInteract(NPC_SELF, N(interact_80242044));
|
||||
});
|
||||
|
||||
Script N(802424F4) = SCRIPT({
|
||||
if (SI_AREA_VAR(3) != 0) {
|
||||
DisablePlayerInput(TRUE);
|
||||
sleep 10;
|
||||
if (SI_AREA_VAR(3) < 5) {
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x006E));
|
||||
GetPlayerPos(SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
PlayerMoveTo(410, SI_VAR(3), 10);
|
||||
SI_AREA_VAR(3) += 1;
|
||||
} else {
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_2), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x006F));
|
||||
SI_AREA_VAR(3) = 0;
|
||||
}
|
||||
DisablePlayerInput(FALSE);
|
||||
}
|
||||
});
|
||||
|
||||
const char N(flo_25_name_hack)[];
|
||||
|
||||
Script N(tree1_Callback) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
if (STORY_PROGRESS < STORY_CH6_GOT_CRYSTAL_BERRY) {
|
||||
NpcFacePlayer(NPC_POSIE, 1);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_4), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0067));
|
||||
if (STORY_PROGRESS == STORY_CH6_GOT_FERTILE_SOIL) {
|
||||
if (SI_SAVE_FLAG(1379) == 1) {
|
||||
UseSettingsFrom(0, -250, 0, 0);
|
||||
SetPanTarget(0, -250, 0, 0);
|
||||
SetCamDistance(0, 350);
|
||||
PanToTarget(0, 0, 1);
|
||||
await N(80241DBC);
|
||||
ResetCam(0, 4.0);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (SI_SAVE_FLAG(1374) == 0) {
|
||||
NpcFacePlayer(NPC_POSIE, 1);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_4), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0067));
|
||||
} else {
|
||||
SI_AREA_VAR(2) += 1;
|
||||
match SI_AREA_VAR(2) {
|
||||
< 2 {
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_3), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x006B));
|
||||
}
|
||||
< 5 {
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_3), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x006C));
|
||||
}
|
||||
>= 5 {
|
||||
SpeakToPlayer(NPC_POSIE, NPC_ANIM(posie, Palette_00, Anim_3), NPC_ANIM(posie, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x006D));
|
||||
SI_AREA_VAR(3) = 1;
|
||||
GotoMap(N(flo_25_name_hack), 1);
|
||||
sleep 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ResetCam(0, 4.0);
|
||||
DisablePlayerInput(FALSE);
|
||||
});
|
||||
|
||||
FoliageModelList N(tree1_Leaves) = {
|
||||
.count = 3,
|
||||
.models = { 19, 20, 21 }
|
||||
};
|
||||
|
||||
FoliageModelList N(tree1_Trunk) = {
|
||||
.count = 1,
|
||||
.models = { 18 }
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(tree1) = {
|
||||
.leaves = &N(tree1_Leaves),
|
||||
.trunk = &N(tree1_Trunk),
|
||||
.callback = &N(tree1_Callback),
|
||||
};
|
||||
|
||||
Vec4f N(triggerCoord_802428B4) = { -309.0f, 0.0f, 31.0f, 0.0f };
|
||||
|
||||
Script N(802428C4) = SCRIPT({
|
||||
SI_VAR(0) = N(tree1);
|
||||
bind N(shakeTree) to TRIGGER_WALL_HAMMER 4;
|
||||
bind N(shakeTree) to TRIGGER_POINT_BOMB N(triggerCoord_802428B4);
|
||||
});
|
||||
|
||||
StaticNpc N(npcGroup_8024291C) = {
|
||||
.id = NPC_POSIE,
|
||||
.settings = &N(npcSettings_80241220),
|
||||
.pos = { -260.0f, 0.0f, 0.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT,
|
||||
.init = &N(init_80242428),
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.heartDrops = NO_DROPS,
|
||||
.flowerDrops = NO_DROPS,
|
||||
.animations = {
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
NPC_ANIM(posie, Palette_00, Anim_1),
|
||||
},
|
||||
.tattle = MESSAGE_ID(0x1A, 0x00DE),
|
||||
};
|
||||
|
||||
NpcGroupList N(npcGroupList_80242B0C) = {
|
||||
NPC_GROUP(N(npcGroup_8024291C), BATTLE_ID(0, 0, 0, 0)),
|
||||
{},
|
||||
};
|
||||
|
||||
ApiStatus N(func_8024061C_CAC80C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32 i;
|
||||
|
||||
if (N(D_80241BB0_CADDA0) == NULL) {
|
||||
N(D_80241BB0_CADDA0) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_80241BB0_CADDA0)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_80241BB0_CADDA0)[i];
|
||||
}
|
||||
heap_free(N(D_80241BB0_CADDA0));
|
||||
N(D_80241BB0_CADDA0) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/GetItemName.inc.c"
|
||||
|
||||
const char N(flo_25_name_hack)[] = "flo_25";
|
||||
|
@ -2,3 +2,15 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_07
|
||||
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SpawnSunEffect)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkTexturePanFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkTexturePanFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240344_CAC534)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_80242B0C);
|
||||
extern Script N(80241C14);
|
||||
extern Script N(802424F4);
|
||||
extern Script N(802428C4);
|
||||
extern Script N(main);
|
||||
|
@ -1,87 +1,161 @@
|
||||
#include "flo_08.h"
|
||||
|
||||
extern s32 D_800F7F00[];
|
||||
extern s32 D_800F7F40[];
|
||||
extern s32 D_8008EF20[11][4];
|
||||
|
||||
#include "world/common/SetOverrideFlags_40.inc.c"
|
||||
|
||||
#include "world/common/UnkFunc17.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_8024003C_CAED7C);
|
||||
/*
|
||||
ApiStatus N(func_8024003C_CAED7C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_800EB168(get_variable(script, *script->ptrReadPos));
|
||||
func_802E5690(get_variable(script, *script->ptrReadPos));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/UnkFunc18.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_802400D4_CAEE14);
|
||||
#ifdef NON_MATCHING
|
||||
typedef struct {
|
||||
s32 unk_00[8];
|
||||
char unk_20[0x64];
|
||||
s32 unk_84[8];
|
||||
char unk_A4[0x64];
|
||||
s32 unk_108[8];
|
||||
char unk_128[0x64];
|
||||
s32 unk_18C[8];
|
||||
char unk_1AC[0x64];
|
||||
s32 unk_210[8];
|
||||
char unk_230[0x64];
|
||||
s32 unk_294[8];
|
||||
char unk_2B4[0x64];
|
||||
s32 unk_318;
|
||||
char unk_31C[8];
|
||||
s32 unk_324;
|
||||
s32 unk_328;
|
||||
s16 unk_32C;
|
||||
} N(UnkStruct);
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_80240120_CAEE60);
|
||||
/*
|
||||
ApiStatus N(func_80240120_CAEE60)(ScriptInstance *script, s32 isInitialCall) {
|
||||
ApiStatus N(func_802401CC_CAEF0C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
PlayerData* playerData = &gPlayerData;
|
||||
N(UnkStruct)* ptr;
|
||||
s32 i;
|
||||
s16 var = script->varTable[12] >= 0;
|
||||
s32 partnerLevel;
|
||||
s32 var, partnerActiveCount;
|
||||
s32 idx;
|
||||
|
||||
if (isInitialCall) {
|
||||
script->functionTemp[2].s = heap_malloc(0x330);
|
||||
ptr = script->functionTemp[2].s;
|
||||
|
||||
partnerActiveCount = 0;
|
||||
var = script->varTable[12] >= 0;
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
idx = N(D_80241FB8_CB0CF8)[i];
|
||||
|
||||
if (playerData->partners[idx].enabled) {
|
||||
ptr->unk_108[i] = idx;
|
||||
ptr->unk_84[i] = *D_8008EF20[idx];
|
||||
partnerLevel = N(UnkFunc37)(idx, var);
|
||||
if (partnerLevel >= 0) {
|
||||
ptr->unk_00[i] = D_800F7F00[idx];
|
||||
ptr->unk_18C[i] = 1;
|
||||
ptr->unk_294[i] = N(D_80241FC8_CB0D08)[i][partnerLevel];
|
||||
} else {
|
||||
ptr->unk_00[i] = D_800F7F40[idx];
|
||||
ptr->unk_18C[i] = 0;
|
||||
ptr->unk_294[i] = N(D_80241FB0_CB0CF0)[var];
|
||||
}
|
||||
ptr->unk_210[i] = playerData->partners[idx].level;
|
||||
partnerActiveCount++;
|
||||
}
|
||||
}
|
||||
|
||||
ptr->unk_318 = 4;
|
||||
ptr->unk_324 = partnerActiveCount;
|
||||
ptr->unk_328 = 0;
|
||||
func_800F4E40(ptr);
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
|
||||
ptr = script->functionTemp[2].s;
|
||||
if (script->functionTemp[0].s == 0) {
|
||||
script->functionTemp[1].s = ptr->unk_32C;
|
||||
if (script->functionTemp[1].s != 0) {
|
||||
func_800F13B0();
|
||||
} else {
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
}
|
||||
|
||||
script->functionTemp[0].s++;
|
||||
|
||||
if (script->functionTemp[0].s < 15) {
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
||||
func_800F1538();
|
||||
if (script->functionTemp[1].s != 0xFF) {
|
||||
script->varTable[0] = D_8008EF20[ptr->unk_108[script->functionTemp[1].s - 1]][0];
|
||||
script->varTable[1] = ptr->unk_108[script->functionTemp[1].s - 1];
|
||||
} else {
|
||||
script->varTable[0] = -1;
|
||||
}
|
||||
|
||||
for (i = 1; i < 12; i++) {
|
||||
if (playerData->partners[i].enabled && N(func_802424A4_C389D4)(i, var) != -1) {
|
||||
script->varTable[0] = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
heap_free(script->functionTemp[2].s);
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
#else
|
||||
INCLUDE_ASM(ApiStatus, "world/area_flo/flo_08/CAED40", flo_08_func_802401CC_CAEF0C, ScriptInstance *script, s32 isInitialCall);
|
||||
#endif
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_802401CC_CAEF0C);
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_8024041C_CAF15C);
|
||||
/*
|
||||
ApiStatus N(func_8024041C_CAF15C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_800EB168(get_variable(script, *script->ptrReadPos));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/UnkFunc19.inc.c"
|
||||
|
||||
#include "world/common/UnkFunc20.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_80240510_CAF250);
|
||||
/*
|
||||
ApiStatus N(func_80240510_CAF250)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Effect* effect = get_variable(script, *script->ptrReadPos);
|
||||
|
||||
effect->flags |= 0x10;
|
||||
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
#include "world/common/UnkFunc39.inc.c"
|
||||
|
||||
#include "world/common/UnkFunc21.inc.c"
|
||||
|
||||
#include "world/common/UnkFunc22.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_80240600_CAF340);
|
||||
/*
|
||||
typedef struct {
|
||||
s32 unk_00;
|
||||
s32 unk_04;
|
||||
Effect* unk_08[3];
|
||||
f32 unk_14[3];
|
||||
f32 unk_20[3];
|
||||
f32 unk_2C[3];
|
||||
f32 unk_38[3];
|
||||
f32 unk_44[3];
|
||||
f32 unk_50[3];
|
||||
Entity* unk_5C;
|
||||
s32 unk_60;
|
||||
s32 unk_64;
|
||||
} N(UserData);
|
||||
|
||||
ApiStatus N(func_80240600_CAF340)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Bytecode *args = script->ptrReadPos;
|
||||
Npc* npc = get_npc_safe(-4);
|
||||
f32 sinTheta, cosTheta;
|
||||
s32 i;
|
||||
f32 var;
|
||||
UserData* userDataPtr;
|
||||
UserData* scriptPtr;
|
||||
N(UserData)* userDataPtr;
|
||||
N(UserData)* scriptPtr;
|
||||
f32 save, save2;
|
||||
|
||||
sin_cos_deg(gCameras[gCurrentCameraID].currentYaw, &sinTheta, &cosTheta);
|
||||
|
||||
if (isInitialCall) {
|
||||
script->userData = (UserData*)general_heap_malloc(0x68);
|
||||
scriptPtr = (UserData*)script->userData;
|
||||
script->userData = (N(UserData)*)general_heap_malloc(0x68);
|
||||
scriptPtr = (N(UserData)*)script->userData;
|
||||
|
||||
scriptPtr->unk_5C = get_entity_by_index(get_variable(script, *args));
|
||||
|
||||
@ -104,7 +178,7 @@ ApiStatus N(func_80240600_CAF340)(ScriptInstance *script, s32 isInitialCall) {
|
||||
userDataPtr = scriptPtr;
|
||||
for (i = 0, save = 50.0f; i < 3; i++) {
|
||||
var = 0;
|
||||
add_vec2D_polar(&var, &scriptPtr->unk_44[i], save, *(N(D_80243D88_C3A2B8) + i)); //*(dataPtr++));
|
||||
add_vec2D_polar(&var, &scriptPtr->unk_44[i], save, N(D_80242008_CB0D48)[i]);
|
||||
userDataPtr->unk_38[i] = cosTheta * var;
|
||||
userDataPtr->unk_50[i] = sinTheta * var;
|
||||
userDataPtr->unk_38[i] = npc->pos.x - (scriptPtr->unk_5C->position.x + userDataPtr->unk_38[i]);
|
||||
@ -113,7 +187,7 @@ ApiStatus N(func_80240600_CAF340)(ScriptInstance *script, s32 isInitialCall) {
|
||||
}
|
||||
}
|
||||
|
||||
scriptPtr = (UserData*)script->userData;
|
||||
scriptPtr = (N(UserData)*)script->userData;
|
||||
switch (scriptPtr->unk_00) {
|
||||
case 0:
|
||||
save = update_lerp(5, 0.0f, 50.0f, scriptPtr->unk_60, 0x14);
|
||||
@ -121,7 +195,7 @@ ApiStatus N(func_80240600_CAF340)(ScriptInstance *script, s32 isInitialCall) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
scriptPtr->unk_20[i] = save2;
|
||||
var = save2;
|
||||
add_vec2D_polar(&var, &scriptPtr->unk_20[i], save, *(N(D_80243D88_C3A2B8) + i));
|
||||
add_vec2D_polar(&var, &scriptPtr->unk_20[i], save, N(D_80242008_CB0D48)[i]);
|
||||
scriptPtr->unk_14[i] = cosTheta * var;
|
||||
scriptPtr->unk_2C[i] = sinTheta * var;
|
||||
}
|
||||
@ -139,7 +213,7 @@ ApiStatus N(func_80240600_CAF340)(ScriptInstance *script, s32 isInitialCall) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
scriptPtr->unk_20[i] = save2;
|
||||
var = save2;
|
||||
add_vec2D_polar(&var, &scriptPtr->unk_20[i], save, *(N(D_80243D88_C3A2B8) + i));
|
||||
add_vec2D_polar(&var, &scriptPtr->unk_20[i], save, N(D_80242008_CB0D48)[i]);
|
||||
scriptPtr->unk_14[i] = cosTheta * var;
|
||||
scriptPtr->unk_2C[i] = sinTheta * var;
|
||||
}
|
||||
@ -193,10 +267,9 @@ ApiStatus N(func_80240600_CAF340)(ScriptInstance *script, s32 isInitialCall) {
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/UnkFunc23.inc.c"
|
||||
|
||||
#include "world/common/UnkPartnerPosFuncs.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAED40", func_80240D08_CAFA48);
|
||||
#include "world/common/UnkFunc40.inc.c"
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_08.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CAFA80", func_80240D40_CAFA80);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240D40_CAFA80)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(1, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,3 @@
|
||||
#include "flo_08.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_08/CB0B80", func_80241E40_CB0B80);
|
||||
#include "world/common/UnkFunc43.inc.c"
|
||||
|
@ -2,3 +2,41 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_08
|
||||
|
||||
ApiStatus N(AddPlayerHandsOffset)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetOverrideFlags_40)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc17)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc18)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc19)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc20)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc21)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc22)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc23)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkPartnerPosFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkPartnerPosFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024003C_CAED7C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc38)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802401CC_CAEF0C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024041C_CAF15C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc39)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240600_CAF340)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc40)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240D40_CAFA80)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024150C_CB024C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241970_CB06B0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802419C4_CB0704)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802419FC_CB073C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241A98_CB07D8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241B5C_CB089C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241BCC_CB090C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc43)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_80244EC4);
|
||||
extern Script N(80245914);
|
||||
extern Script N(80245F5C);
|
||||
extern Script N(main);
|
||||
extern s32 N(D_80241FB0_CB0CF0)[];
|
||||
extern s16 N(D_80241FB8_CB0CF8)[];
|
||||
extern s32 N(D_80241FC8_CB0D08)[8][2];
|
||||
extern f32 N(D_80242008_CB0D48)[3];
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_09.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5000", func_80240000_CB5000);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240000_CB5000)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(1, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
#include "flo_09.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5040", func_80240040_CB5040);
|
||||
#include "world/common/UnkFunc43.inc.c"
|
||||
|
@ -1,4 +1,672 @@
|
||||
#include "flo_09.h"
|
||||
#include "message_ids.h"
|
||||
#include "sprite/npc/bzzap.h"
|
||||
#include "sprite/npc/dayzee.h"
|
||||
|
||||
enum {
|
||||
NPC_DAYZEE0,
|
||||
NPC_DAYZEE1,
|
||||
NPC_BZZAP0,
|
||||
NPC_BZZAP1,
|
||||
};
|
||||
|
||||
EntryList N(entryList) = {
|
||||
{ -520.0f, 0.0f, 0.0f, 90.0f },
|
||||
{ 520.0f, 0.0f, 0.0f, 270.0f },
|
||||
};
|
||||
|
||||
MapConfig N(config) = {
|
||||
.main = &N(main),
|
||||
.entryList = &N(entryList),
|
||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_flo_09_tattle },
|
||||
};
|
||||
|
||||
Script N(80241880) = SCRIPT({
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8);
|
||||
}
|
||||
else {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_SUNNY, 0, 8);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802418F0) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(exitWalk_80241B9C) = EXIT_WALK_SCRIPT(60, 0, "flo_00", 5);
|
||||
|
||||
Script N(exitWalk_80241BF8) = EXIT_WALK_SCRIPT(60, 1, "flo_03", 0);
|
||||
|
||||
Script N(80241C54) = SCRIPT({
|
||||
bind N(exitWalk_80241B9C) to TRIGGER_FLOOR_ABOVE 0;
|
||||
bind N(exitWalk_80241BF8) to TRIGGER_FLOOR_ABOVE 4;
|
||||
});
|
||||
|
||||
Script N(main) = SCRIPT({
|
||||
WORLD_LOCATION = LOCATION_FLOWER_FIELDS;
|
||||
SetSpriteShading(-1);
|
||||
SetCamPerspective(0, 3, 25, 16, 4096);
|
||||
SetCamBGColor(0, 0, 0, 0);
|
||||
SetCamEnabled(0, 1);
|
||||
MakeNpcs(0, N(npcGroupList_8024414C));
|
||||
spawn N(802425DC);
|
||||
spawn N(802434A8);
|
||||
ModifyColliderFlags(3, 9, 0x00000006);
|
||||
SI_VAR(0) = -511;
|
||||
SI_VAR(1) = -4;
|
||||
SI_VAR(2) = -319;
|
||||
SI_VAR(3) = 10;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(802418F0);
|
||||
SI_VAR(0) = -302;
|
||||
SI_VAR(1) = 77;
|
||||
SI_VAR(2) = -32;
|
||||
SI_VAR(3) = 116;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(802418F0);
|
||||
SI_VAR(0) = 51;
|
||||
SI_VAR(1) = 18;
|
||||
SI_VAR(2) = 141;
|
||||
SI_VAR(3) = 127;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(802418F0);
|
||||
SI_VAR(0) = 234;
|
||||
SI_VAR(1) = 38;
|
||||
SI_VAR(2) = 502;
|
||||
SI_VAR(3) = 98;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(802418F0);
|
||||
SI_VAR(0) = -525;
|
||||
SI_VAR(1) = -163;
|
||||
SI_VAR(2) = -400;
|
||||
SI_VAR(3) = -80;
|
||||
SI_VAR(4) = 60;
|
||||
spawn N(802418F0);
|
||||
SI_VAR(0) = -346;
|
||||
SI_VAR(1) = -148;
|
||||
SI_VAR(2) = 517;
|
||||
SI_VAR(3) = -91;
|
||||
SI_VAR(4) = 60;
|
||||
spawn N(802418F0);
|
||||
ModifyColliderFlags(0, 1, 0x7FFFFE00);
|
||||
ModifyColliderFlags(0, 5, 0x7FFFFE00);
|
||||
SI_VAR(0) = N(80241C54);
|
||||
spawn EnterWalk;
|
||||
await N(80241880);
|
||||
if (STORY_PROGRESS >= STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) {
|
||||
N(func_80240000_CB5000)();
|
||||
}
|
||||
});
|
||||
|
||||
static s32 N(pad_2004)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(80242010) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(802422BC) = SCRIPT({
|
||||
SI_VAR(9) = SI_VAR(6);
|
||||
SI_VAR(8) = SI_VAR(5);
|
||||
SI_VAR(7) = SI_VAR(4);
|
||||
SI_VAR(6) = SI_VAR(3);
|
||||
SI_VAR(5) = SI_VAR(2);
|
||||
SI_VAR(4) = SI_VAR(1);
|
||||
SI_VAR(3) = SI_VAR(0);
|
||||
EnableModel(SI_VAR(6), 0);
|
||||
0:
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
N(UnkFunc43)();
|
||||
if (SI_VAR(0) == 0) {
|
||||
sleep 1;
|
||||
goto 0;
|
||||
}
|
||||
spawn {
|
||||
sleep 5;
|
||||
EnableModel(SI_VAR(6), 1);
|
||||
}
|
||||
if (SI_VAR(10) != 0) {
|
||||
spawn {
|
||||
sleep 5;
|
||||
SI_VAR(0) = SI_VAR(3);
|
||||
SI_VAR(1) = SI_VAR(4);
|
||||
SI_VAR(2) = SI_VAR(5);
|
||||
SI_VAR(1) += 10;
|
||||
SI_VAR(2) += 8;
|
||||
PlayEffect(0x11, 4, SI_VAR(0), SI_VAR(1), SI_VAR(2), 15, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep 15;
|
||||
SI_VAR(1) -= 10;
|
||||
MakeItemEntity(SI_VAR(10), SI_VAR(0), SI_VAR(1), SI_VAR(2), 14, 0);
|
||||
}
|
||||
}
|
||||
spawn {
|
||||
sleep 10;
|
||||
PlaySoundAt(0xF8, 0, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
}
|
||||
MakeLerp(0, 180, 20, 2);
|
||||
1:
|
||||
UpdateLerp();
|
||||
RotateModel(SI_VAR(8), SI_VAR(0), 1, 0, 0);
|
||||
RotateModel(SI_VAR(9), SI_VAR(0), 1, 0, 0);
|
||||
if (SI_VAR(1) == 1) {
|
||||
sleep 1;
|
||||
goto 1;
|
||||
}
|
||||
EnableModel(SI_VAR(7), 0);
|
||||
});
|
||||
|
||||
Script N(802425DC) = SCRIPT({
|
||||
GetModelCenter(69);
|
||||
SI_VAR(3) = 69;
|
||||
SI_VAR(4) = 70;
|
||||
SI_VAR(5) = 71;
|
||||
SI_VAR(6) = 72;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(802422BC);
|
||||
GetModelCenter(75);
|
||||
SI_VAR(3) = 75;
|
||||
SI_VAR(4) = 76;
|
||||
SI_VAR(5) = 77;
|
||||
SI_VAR(6) = 78;
|
||||
SI_VAR(10) = 174;
|
||||
spawn N(802422BC);
|
||||
GetModelCenter(83);
|
||||
SI_VAR(3) = 83;
|
||||
SI_VAR(4) = 84;
|
||||
SI_VAR(5) = 85;
|
||||
SI_VAR(6) = 86;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(802422BC);
|
||||
GetModelCenter(89);
|
||||
SI_VAR(3) = 89;
|
||||
SI_VAR(4) = 90;
|
||||
SI_VAR(5) = 91;
|
||||
SI_VAR(6) = 92;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(802422BC);
|
||||
GetModelCenter(97);
|
||||
SI_VAR(3) = 97;
|
||||
SI_VAR(4) = 98;
|
||||
SI_VAR(5) = 99;
|
||||
SI_VAR(6) = 100;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(802422BC);
|
||||
GetModelCenter(103);
|
||||
SI_VAR(3) = 103;
|
||||
SI_VAR(4) = 104;
|
||||
SI_VAR(5) = 105;
|
||||
SI_VAR(6) = 106;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(802422BC);
|
||||
});
|
||||
|
||||
static s32 N(pad_2874)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
#include "world/common/foliage.inc.c"
|
||||
|
||||
Script N(802431E4) = SCRIPT({
|
||||
GetNpcPos(NPC_BZZAP1, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
if (SI_VAR(1) < 0) {
|
||||
GetModelCenter(SI_VAR(9));
|
||||
SI_VAR(2) += 35;
|
||||
SetNpcPos(NPC_BZZAP1, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
}
|
||||
});
|
||||
|
||||
Script N(tree1_Callback) = SCRIPT({
|
||||
if (SI_SAVE_FLAG(1382) == 0) {
|
||||
if (SI_AREA_VAR(5) == 1) {
|
||||
MakeItemEntity(ITEM_HAPPY_FLOWER_B, -250, 100, 0, 13, SI_SAVE_FLAG(1382));
|
||||
} else {
|
||||
SI_VAR(9) = 14;
|
||||
spawn N(802431E4);
|
||||
}
|
||||
SI_AREA_VAR(4) = 0;
|
||||
SI_AREA_VAR(5) = 0;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(tree2_Callback) = SCRIPT({
|
||||
if (SI_SAVE_FLAG(1382) == 0) {
|
||||
SI_AREA_VAR(4) = 1;
|
||||
SI_AREA_VAR(5) = 0;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(tree3_Callback) = SCRIPT({
|
||||
if (SI_SAVE_FLAG(1382) == 0) {
|
||||
if (SI_AREA_VAR(4) == 1) {
|
||||
if (SI_AREA_VAR(5) == 0) {
|
||||
SI_AREA_VAR(5) = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
SI_VAR(9) = 22;
|
||||
spawn N(802431E4);
|
||||
SI_AREA_VAR(4) = 0;
|
||||
SI_AREA_VAR(5) = 0;
|
||||
}
|
||||
});
|
||||
|
||||
FoliageModelList N(tree1_Leaves) = {
|
||||
.count = 2,
|
||||
.models = { 15, 16 }
|
||||
};
|
||||
|
||||
FoliageModelList N(tree1_Trunk) = {
|
||||
.count = 1,
|
||||
.models = { 14 }
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(tree1) = {
|
||||
.leaves = &N(tree1_Leaves),
|
||||
.trunk = &N(tree1_Trunk),
|
||||
.callback = &N(tree1_Callback),
|
||||
};
|
||||
|
||||
Vec4f N(triggerCoord_80243428) = { -200.0f, 0.0f, 1.0f, 0.0f };
|
||||
|
||||
FoliageModelList N(tree2_Leaves) = {
|
||||
.count = 2,
|
||||
.models = { 19, 20 }
|
||||
};
|
||||
|
||||
FoliageModelList N(tree2_Trunk) = {
|
||||
.count = 1,
|
||||
.models = { 18 }
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(tree2) = {
|
||||
.leaves = &N(tree2_Leaves),
|
||||
.trunk = &N(tree2_Trunk),
|
||||
.callback = &N(tree2_Callback),
|
||||
};
|
||||
|
||||
Vec4f N(triggerCoord_80243460) = { 0.0f, 0.0f, 1.0f, 0.0f };
|
||||
|
||||
FoliageModelList N(tree3_Leaves) = {
|
||||
.count = 2,
|
||||
.models = { 23, 24 }
|
||||
};
|
||||
|
||||
FoliageModelList N(tree3_Trunk) = {
|
||||
.count = 1,
|
||||
.models = { 22 }
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(tree3) = {
|
||||
.leaves = &N(tree3_Leaves),
|
||||
.trunk = &N(tree3_Trunk),
|
||||
.callback = &N(tree3_Callback),
|
||||
};
|
||||
|
||||
Vec4f N(triggerCoord_80243498) = { 200.0f, 0.0f, 1.0f, 0.0f };
|
||||
|
||||
Script N(802434A8) = SCRIPT({
|
||||
SI_AREA_VAR(4) = 0;
|
||||
SI_AREA_VAR(5) = 0;
|
||||
SI_VAR(0) = N(tree1);
|
||||
bind N(shakeTree) to TRIGGER_WALL_HAMMER 15;
|
||||
bind N(shakeTree) to TRIGGER_POINT_BOMB N(triggerCoord_80243428);
|
||||
SI_VAR(0) = N(tree2);
|
||||
bind N(shakeTree) to TRIGGER_WALL_HAMMER 16;
|
||||
bind N(shakeTree) to TRIGGER_POINT_BOMB N(triggerCoord_80243460);
|
||||
SI_VAR(0) = N(tree3);
|
||||
bind N(shakeTree) to TRIGGER_WALL_HAMMER 17;
|
||||
bind N(shakeTree) to TRIGGER_POINT_BOMB N(triggerCoord_80243498);
|
||||
});
|
||||
|
||||
NpcAISettings N(npcAISettings_802435B0) = {
|
||||
.moveSpeed = 1.0f,
|
||||
.moveTime = 500,
|
||||
.waitTime = 10,
|
||||
.alertRadius = 50.0f,
|
||||
.unk_10 = { .f = 30.0f },
|
||||
.unk_14 = 3,
|
||||
.chaseSpeed = 3.5f,
|
||||
.unk_1C = { .s = 40 },
|
||||
.unk_20 = 3,
|
||||
.chaseRadius = 100.0f,
|
||||
.unk_28 = { .f = 30.0f },
|
||||
.unk_2C = 1,
|
||||
};
|
||||
|
||||
Script N(npcAI_802435E0) = SCRIPT({
|
||||
DoBasicAI(N(npcAISettings_802435B0));
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80243600) = {
|
||||
.height = 30,
|
||||
.radius = 24,
|
||||
.ai = &N(npcAI_802435E0),
|
||||
.onHit = EnemyNpcHit,
|
||||
.onDefeat = EnemyNpcDefeat,
|
||||
.level = 19,
|
||||
};
|
||||
|
||||
f32 N(D_8024362C_CB862C)[] = {
|
||||
4.5f, 3.5f, 2.6f, 2.0f,
|
||||
1.5f, 20.0f,
|
||||
};
|
||||
|
||||
NpcAISettings N(npcAISettings_80243644) = {
|
||||
.moveSpeed = 1.0f,
|
||||
.moveTime = 30,
|
||||
.waitTime = 5,
|
||||
.alertRadius = 80.0f,
|
||||
.unk_10 = { .f = 30.0f },
|
||||
.unk_14 = 2,
|
||||
.chaseSpeed = 4.5f,
|
||||
.unk_1C = { .s = 6 },
|
||||
.unk_20 = 1,
|
||||
.chaseRadius = 90.0f,
|
||||
.unk_28 = { .f = 30.0f },
|
||||
.unk_2C = 1,
|
||||
};
|
||||
|
||||
Script N(npcAI_80243674) = SCRIPT({
|
||||
SetSelfVar(0, 0);
|
||||
SetSelfVar(5, -630);
|
||||
SetSelfVar(6, 50);
|
||||
SetSelfVar(1, 200);
|
||||
N(func_8024162C_CB662C)(N(npcAISettings_80243644));
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_802436E4) = {
|
||||
.height = 26,
|
||||
.radius = 24,
|
||||
.ai = &N(npcAI_80243674),
|
||||
.onHit = EnemyNpcHit,
|
||||
.onDefeat = EnemyNpcDefeat,
|
||||
.level = 19,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_80243710) = {
|
||||
.height = 24,
|
||||
.radius = 24,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
Script N(npcAI_8024373C) = SCRIPT({
|
||||
loop {
|
||||
GetSelfVar(0, SI_VAR(0));
|
||||
match SI_VAR(0) {
|
||||
== 0 {
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
if (SI_VAR(1) > 0) {
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetNpcJumpscale(NPC_SELF, 0);
|
||||
NpcJump0(NPC_SELF, SI_VAR(0), 50, SI_VAR(2), 15);
|
||||
SetSelfVar(0, 1);
|
||||
BindNpcAI(NPC_SELF, N(npcAI_80243674));
|
||||
}
|
||||
}
|
||||
== 2 {
|
||||
DisablePlayerInput(TRUE);
|
||||
sleep 25;
|
||||
SetNpcPos(NPC_SELF, 0, -1000, 0);
|
||||
SetNpcFlagBits(NPC_SELF, ((0x00000002)), FALSE);
|
||||
SetSelfVar(0, 0);
|
||||
DisablePlayerInput(FALSE);
|
||||
}
|
||||
}
|
||||
sleep 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(defeat_802438C8) = SCRIPT({
|
||||
GetBattleOutcome(SI_VAR(0));
|
||||
match SI_VAR(0) {
|
||||
== 0 {
|
||||
SetSelfVar(0, 2);
|
||||
BindNpcAI(NPC_SELF, N(npcAI_8024373C));
|
||||
DoNpcDefeat();
|
||||
}
|
||||
== 1 {}
|
||||
== 2 {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(init_80243954) = SCRIPT({
|
||||
BindNpcIdle(NPC_SELF, N(npcAI_8024373C));
|
||||
BindNpcDefeat(NPC_SELF, N(defeat_802438C8));
|
||||
});
|
||||
|
||||
StaticNpc N(npcGroup_8024398C) = {
|
||||
.id = NPC_DAYZEE0,
|
||||
.settings = &N(npcSettings_80243600),
|
||||
.pos = { -350.0f, 0.0f, 40.0f },
|
||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 15,
|
||||
.itemDrops = {
|
||||
{ ITEM_MAPLE_SYRUP, 6, 0 },
|
||||
{ ITEM_HONEY_SYRUP, 4, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(4),
|
||||
.maxCoinBonus = 3,
|
||||
.movement = { -350, 0, 40, 30, 0, -32767, 0, -350, 0, 40, 200, 0, 0, 1 },
|
||||
.animations = {
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_2),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_3),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_3),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_8),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_8),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_6),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_7),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
},
|
||||
.unk_1E0 = { 00, 00, 00, 03, 00, 00, 00, 00},
|
||||
};
|
||||
|
||||
StaticNpc N(npcGroup_80243B7C) = {
|
||||
.id = NPC_DAYZEE1,
|
||||
.settings = &N(npcSettings_80243600),
|
||||
.pos = { 260.0f, 0.0f, 75.0f },
|
||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||
.yaw = 270,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 15,
|
||||
.itemDrops = {
|
||||
{ ITEM_MAPLE_SYRUP, 6, 0 },
|
||||
{ ITEM_HONEY_SYRUP, 4, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(4),
|
||||
.maxCoinBonus = 3,
|
||||
.movement = { 260, 0, 75, 30, 0, -32767, 0, 260, 0, 75, 200, 0, 0, 1 },
|
||||
.animations = {
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_2),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_3),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_3),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_8),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_8),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_6),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_7),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
NPC_ANIM(dayzee, Palette_00, Anim_1),
|
||||
},
|
||||
.unk_1E0 = { 00, 00, 00, 03, 00, 00, 00, 00},
|
||||
};
|
||||
|
||||
StaticNpc N(npcGroup_80243D6C) = {
|
||||
.id = NPC_BZZAP0,
|
||||
.settings = &N(npcSettings_802436E4),
|
||||
.pos = { -50.0f, 55.0f, 90.0f },
|
||||
.flags = NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 15,
|
||||
.itemDrops = {
|
||||
{ ITEM_MAPLE_SYRUP, 6, 0 },
|
||||
{ ITEM_HONEY_SYRUP, 4, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(3),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||
.minCoinBonus = 1,
|
||||
.maxCoinBonus = 4,
|
||||
.movement = { -50, 55, 90, 30, 0, -32767, 0, -50, 50, 90, 250, 0, 0, 1 },
|
||||
.animations = {
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_3),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_3),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_6),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_6),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_4),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
},
|
||||
.unk_1E0 = { 00, 00, 00, 03, 00, 00, 00, 00},
|
||||
};
|
||||
|
||||
StaticNpc N(npcGroup_80243F5C) = {
|
||||
.id = NPC_BZZAP1,
|
||||
.settings = &N(npcSettings_80243710),
|
||||
.pos = { 0.0f, -1000.0f, 0.0f },
|
||||
.flags = NPC_FLAG_4 | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_NO_PROJECT_SHADOW,
|
||||
.init = &N(init_80243954),
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 15,
|
||||
.itemDrops = {
|
||||
{ ITEM_MAPLE_SYRUP, 6, 0 },
|
||||
{ ITEM_HONEY_SYRUP, 4, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(3),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||
.minCoinBonus = 1,
|
||||
.maxCoinBonus = 4,
|
||||
.movement = { -50, 55, 90, 100, 0, -32767, 0, -50, 50, 90, 250, 0, 0, 1 },
|
||||
.animations = {
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_3),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_3),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_6),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_6),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_4),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
},
|
||||
.unk_1E0 = { 00, 00, 00, 03, 00, 00, 00, 00},
|
||||
};
|
||||
|
||||
NpcGroupList N(npcGroupList_8024414C) = {
|
||||
NPC_GROUP(N(npcGroup_8024398C), BATTLE_ID(24, 16, 0, 5)),
|
||||
NPC_GROUP(N(npcGroup_80243B7C), BATTLE_ID(24, 21, 0, 5)),
|
||||
NPC_GROUP(N(npcGroup_80243D6C), BATTLE_ID(24, 23, 0, 2)),
|
||||
NPC_GROUP(N(npcGroup_80243F5C), BATTLE_ID(24, 23, 0, 2)),
|
||||
{},
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
#include "flo_09.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5320", func_80240320_CB5320);
|
||||
/*
|
||||
void N(func_80240320_CB5320)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
@ -25,9 +23,154 @@ void N(func_80240320_CB5320)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
*/
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5320", func_802404D0_CB54D0);
|
||||
#ifdef NON_MATCHING
|
||||
void N(func_802404D0_CB54D0)(ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 temp_f24;
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 var;
|
||||
f32 temp_f0;
|
||||
f32 phi_f4;
|
||||
s32 phi_v0;
|
||||
s32 phi_s4 = 0;
|
||||
|
||||
f32 a = enemy->varTable[7];
|
||||
f32 temp_f2 = a / 100.0;
|
||||
f32 b = enemy->varTable[3];
|
||||
f32 temp_f26 = b / 100.0;
|
||||
f32 c = enemy->varTable[4];
|
||||
f32 temp_f20 = c / 100.0;
|
||||
f32 d = enemy->varTable[1];
|
||||
f32 temp_f22 = d / 100.0;
|
||||
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
temp_f24 = temp_f26 + temp_f2;
|
||||
|
||||
if ((enemy->varTable[0] & 0x11) == 1) {
|
||||
if (npc->flags & 8) {
|
||||
if (temp_f22 < (temp_f24 - npc->pos.y)) {
|
||||
enemy->varTable[0] |= 0x10;
|
||||
}
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
if (temp_f22 < (temp_f26 - posW)) {
|
||||
enemy->varTable[0] |= 0x10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((enemy->varTable[0] & 0x11) == 0x11) {
|
||||
// original m2c reference:
|
||||
//if ((temp_s0->flags & 8) != 0) {
|
||||
// phi_f0 = temp_f20 + ((temp_f24 - temp_f20) * D_802441A8_CB91A8);
|
||||
// phi_f4 = temp_f24;
|
||||
//} else {
|
||||
// func_800DCB7C(temp_s0->unk_80, &subroutine_argA, &subroutine_argB, &subroutine_argC, &subroutine_argD, temp_s0->pos.x, temp_f20, temp_s0->pos.z, 1000.0f);
|
||||
// temp_f4 = subroutine_argB + temp_f26;
|
||||
// phi_f0 = temp_f20 + ((temp_f4 - temp_f20) * D_802441B0_CB91B0);
|
||||
// phi_f4 = temp_f4;
|
||||
//}
|
||||
//temp_s0->pos.y = phi_f0;
|
||||
|
||||
f64 test;
|
||||
if (npc->flags & 8) {
|
||||
phi_f4 = temp_f24;
|
||||
npc->pos.y = temp_f20 + ((phi_f4 - temp_f20) * 0.09);
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = temp_f20;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
phi_f4 = posY + temp_f26;
|
||||
npc->pos.y = temp_f20 + ((phi_f4 - temp_f20) * 0.09);
|
||||
}
|
||||
|
||||
if (fabsf(phi_f4 - npc->pos.y) < 1.0) {
|
||||
npc->pos.y = phi_f4;
|
||||
enemy->varTable[0] &= ~0x10;
|
||||
}
|
||||
} else if (enemy->varTable[1] > 0) {
|
||||
temp_f0 = sin_deg(enemy->varTable[2]);
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f26 + (temp_f0 * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f24 + (temp_f0 * temp_f22);
|
||||
}
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) &&
|
||||
func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if (is_point_within_region(enemy->territory->wander.wanderShape,
|
||||
enemy->territory->wander.point.x, enemy->territory->wander.point.z,
|
||||
npc->pos.x, npc->pos.z,
|
||||
enemy->territory->wander.wanderSizeX, enemy->territory->wander.wanderSizeZ)) {
|
||||
posW = dist2D(enemy->territory->wander.point.x, enemy->territory->wander.point.z, npc->pos.x, npc->pos.z);
|
||||
if (npc->moveSpeed < posW) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, enemy->territory->wander.point.x, enemy->territory->wander.point.z);
|
||||
phi_s4 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (enemy->territory->wander.wanderSizeX | enemy->territory->wander.wanderSizeZ | phi_s4) {
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
if (aiSettings->moveTime > 0) {
|
||||
if ((npc->duration <= 0) || (--npc->duration <= 0)) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->waitTime <= 0) || (script->functionTemp[1].s < 3)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(ApiStatus, "world/area_flo/flo_09/CB5320", flo_09_func_802404D0_CB54D0, ScriptInstance *script, NpcAISettings *aiSettings, EnemyTerritoryThing *territory);
|
||||
#endif
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
@ -35,18 +178,15 @@ INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5320", func_802404D0_CB54D0);
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5320", func_80240F74_CB5F74);
|
||||
/*
|
||||
void N(func_80240F74_CB5F74)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
npc->pos.y += N(D_802436DC_BE6E8C)[npc->duration++];
|
||||
npc->pos.y += N(D_8024362C_CB862C)[npc->duration++];
|
||||
if (npc->duration >= 5) {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/UnkNpcAIFunc14.inc.c"
|
||||
|
||||
@ -56,4 +196,60 @@ void N(func_80240F74_CB5F74)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_09/CB5320", func_8024162C_CB662C);
|
||||
ApiStatus N(func_8024162C_CB662C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
Npc *npc = get_npc_unsafe(enemy->npcID);
|
||||
EnemyTerritoryThing territory;
|
||||
EnemyTerritoryThing* territoryPtr = &territory;
|
||||
NpcAISettings* npcAISettings = (NpcAISettings*)get_variable(script, *args++);
|
||||
|
||||
territory.unk_00 = 0;
|
||||
territory.shape = enemy->territory->wander.detectShape;
|
||||
territory.pointX = enemy->territory->wander.detect.x;
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(UnkFunc5)(npc, enemy, script, npcAISettings);
|
||||
}
|
||||
npc->unk_AB = -2;
|
||||
|
||||
if (enemy->unk_B0 & 4) {
|
||||
if (enemy->unk_B4 != 0) {
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
enemy->unk_B0 &= ~4;
|
||||
}
|
||||
|
||||
switch (script->functionTemp[0].s) {
|
||||
case 0:
|
||||
N(func_80240320_CB5320)(script, npcAISettings, territoryPtr);
|
||||
case 1:
|
||||
N(func_802404D0_CB54D0)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, npcAISettings, territoryPtr);
|
||||
case 3:
|
||||
N(UnkFunc4)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, npcAISettings, territoryPtr);
|
||||
case 11:
|
||||
N(func_80240F74_CB5F74)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 12:
|
||||
N(UnkNpcAIFunc14)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 13:
|
||||
N(UnkNpcAIFunc3)(script, npcAISettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(UnkFunc6)(script, npcAISettings, territoryPtr);
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
|
@ -2,3 +2,14 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_09
|
||||
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240000_CB5000)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc43)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024162C_CB662C)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern f32 N(D_8024362C_CB862C)[];
|
||||
extern NpcGroupList N(npcGroupList_8024414C);
|
||||
extern Script N(802425DC);
|
||||
extern Script N(802434A8);
|
||||
extern Script N(main);
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_10.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_10/CB9200", func_80240000_CB9200);
|
||||
s32 N(func_80240000_CB9200)(void) {
|
||||
if (get_variable(NULL, SI_SAVE_VAR(0)) <= 0x30) {
|
||||
return MESSAGE_ID(0x19, 0x0119);
|
||||
}
|
||||
return MESSAGE_ID(0x19, 0x011A);
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_10.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_10/CB9240", func_80240040_CB9240);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240040_CB9240)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(1, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,29 +1,827 @@
|
||||
#include "flo_10.h"
|
||||
#include "message_ids.h"
|
||||
#include "sprite/npc/lily.h"
|
||||
|
||||
enum {
|
||||
NPC_LILY,
|
||||
};
|
||||
|
||||
EntryList N(entryList) = {
|
||||
{ -360.0f, 0.0f, 0.0f, 90.0f },
|
||||
{ -360.0f, 0.0f, 0.0f, 90.0f },
|
||||
{ -100.0f, -10.0f, -172.0f, 135.0f },
|
||||
};
|
||||
|
||||
MapConfig N(config) = {
|
||||
.main = &N(main),
|
||||
.entryList = &N(entryList),
|
||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = N(func_80240000_CB9200),
|
||||
};
|
||||
|
||||
Script N(802414E0) = SCRIPT({
|
||||
GetEntryID(SI_VAR(0));
|
||||
if (SI_VAR(0) == 1) {
|
||||
SetMusicTrack(0, SONG_SUNSHINE_RETURNS, 0, 8);
|
||||
} else {
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8);
|
||||
}
|
||||
else {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_SUNNY, 0, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (STORY_PROGRESS >= STORY_CH6_FILLED_SPRING_WITH_WATER) {
|
||||
PlaySound(0x80000022);
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802415C4) = SCRIPT({
|
||||
func_802D5FF8(137, 2);
|
||||
});
|
||||
|
||||
Script N(802415E8) = SCRIPT({
|
||||
FadeOutMusic(0, 250);
|
||||
sleep 10;
|
||||
func_802D5FD8();
|
||||
});
|
||||
|
||||
static s32 N(pad_1624)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(80241630) = SCRIPT({
|
||||
if (STORY_PROGRESS >= STORY_CH6_FILLED_SPRING_WITH_WATER) {
|
||||
MakeItemEntity(ITEM_WATER_STONE, 0, -60, 6, 1, 0);
|
||||
}
|
||||
});
|
||||
|
||||
static s32 N(pad_167C) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(80241680) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(exitWalk_8024192C) = EXIT_WALK_SCRIPT(60, 0, "flo_24", 1);
|
||||
|
||||
Script N(80241988) = SCRIPT({
|
||||
bind N(exitWalk_8024192C) to TRIGGER_FLOOR_ABOVE 0;
|
||||
});
|
||||
|
||||
Script N(main) = SCRIPT({
|
||||
WORLD_LOCATION = LOCATION_FLOWER_FIELDS;
|
||||
SetSpriteShading(-1);
|
||||
SetCamLeadPlayer(0, 0);
|
||||
SetCamPerspective(0, 3, 25, 16, 4096);
|
||||
SetCamBGColor(0, 0, 0, 0);
|
||||
SetCamEnabled(0, 1);
|
||||
MakeNpcs(0, N(npcGroupList_80244054));
|
||||
await N(80241630);
|
||||
spawn N(80244A50);
|
||||
spawn N(802435F8);
|
||||
spawn N(80242AE8);
|
||||
spawn N(80244074);
|
||||
ModifyColliderFlags(3, 11, 0x00000006);
|
||||
ModifyColliderFlags(3, 12, 0x00000006);
|
||||
SI_VAR(0) = -265;
|
||||
SI_VAR(1) = 247;
|
||||
SI_VAR(2) = 199;
|
||||
SI_VAR(3) = 313;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80241680);
|
||||
SI_VAR(0) = -300;
|
||||
SI_VAR(1) = -275;
|
||||
SI_VAR(2) = -140;
|
||||
SI_VAR(3) = -185;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80241680);
|
||||
SI_VAR(0) = 263;
|
||||
SI_VAR(1) = -248;
|
||||
SI_VAR(2) = 362;
|
||||
SI_VAR(3) = 146;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80241680);
|
||||
GetEntryID(SI_VAR(0));
|
||||
match SI_VAR(0) {
|
||||
== 1 {
|
||||
spawn N(8024324C);
|
||||
}
|
||||
== 2 {
|
||||
spawn N(802427EC);
|
||||
spawn N(80241988);
|
||||
}
|
||||
else {
|
||||
ModifyColliderFlags(0, 1, 0x7FFFFE00);
|
||||
SI_VAR(0) = N(80241988);
|
||||
spawn EnterWalk;
|
||||
}
|
||||
}
|
||||
await N(802414E0);
|
||||
if (STORY_PROGRESS >= STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) {
|
||||
N(func_80240040_CB9240)();
|
||||
}
|
||||
});
|
||||
|
||||
static s32 N(pad_1CA8)[] = {
|
||||
0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
s32** N(D_80241CB0_CBAEB0) = NULL;
|
||||
|
||||
Script N(80241CB4) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 0);
|
||||
return;
|
||||
});
|
||||
|
||||
Script N(80241CE4) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 16);
|
||||
return;
|
||||
});
|
||||
|
||||
Script N(updateTexturePan_80241D14) = SCRIPT({
|
||||
group 0;
|
||||
if (SI_VAR(5) == 1) {
|
||||
if (SI_VAR(6) == 1) {
|
||||
if (SI_VAR(7) == 1) {
|
||||
if (SI_VAR(8) == 1) {
|
||||
N(UnkTexturePanFunc)();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
N(UnkTexturePanFunc2)();
|
||||
});
|
||||
|
||||
Script N(80241DB0) = SCRIPT({
|
||||
MakeLerp(-50, 170, 385, 0);
|
||||
1:
|
||||
UpdateLerp();
|
||||
TranslateGroup(56, 0, SI_VAR(0), 0);
|
||||
if (SI_VAR(1) == 1) {
|
||||
sleep 1;
|
||||
goto 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80241E40) = SCRIPT({
|
||||
MakeLerp(0, 100, 90, 1);
|
||||
1:
|
||||
UpdateLerp();
|
||||
SI_VAR(2) = (float) SI_VAR(0);
|
||||
SI_VAR(3) = (float) SI_VAR(0);
|
||||
SI_VAR(2) /= 333.0;
|
||||
SI_VAR(3) /= 100.0;
|
||||
SI_VAR(2) += 0.703125;
|
||||
ScaleGroup(56, SI_VAR(2), SI_VAR(3), SI_VAR(2));
|
||||
if (SI_VAR(1) == 1) {
|
||||
sleep 1;
|
||||
goto 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80241F20) = SCRIPT({
|
||||
EnableTexPanning(53, 1);
|
||||
spawn {
|
||||
SI_VAR(0) = 10;
|
||||
SI_VAR(1) = -150;
|
||||
SI_VAR(2) = 0;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 1;
|
||||
SI_VAR(6) = 0;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80242030) = SCRIPT({
|
||||
sleep 60;
|
||||
EnableModel(53, 1);
|
||||
spawn N(80241F20);
|
||||
});
|
||||
|
||||
Script N(8024206C) = SCRIPT({
|
||||
sleep 80;
|
||||
EnableNpcShadow(NPC_LILY, FALSE);
|
||||
GetNpcPos(NPC_LILY, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
MakeLerp(10, 55, 108, 0);
|
||||
loop {
|
||||
UpdateLerp();
|
||||
SI_VAR(6) = SI_VAR(4);
|
||||
SI_VAR(6) += SI_VAR(0);
|
||||
SI_VAR(6) += -10;
|
||||
SetNpcPos(NPC_LILY, SI_VAR(3), SI_VAR(6), SI_VAR(5));
|
||||
TranslateGroup(60, 0, SI_VAR(0), 0);
|
||||
sleep 1;
|
||||
if (SI_VAR(1) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80242188) = SCRIPT({
|
||||
DisablePlayerPhysics(TRUE);
|
||||
sleep 40;
|
||||
SetPlayerAnimation(0x80024);
|
||||
GetPlayerPos(SI_VAR(2), SI_VAR(0), SI_VAR(3));
|
||||
MakeLerp(-50, 90, 60, 1);
|
||||
loop {
|
||||
UpdateLerp();
|
||||
SI_VAR(2) /= 1.2001953125;
|
||||
SI_VAR(3) /= 1.2001953125;
|
||||
SetPlayerPos(SI_VAR(2), SI_VAR(0), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(1) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
MakeLerp(90, 270, 280, 0);
|
||||
loop {
|
||||
UpdateLerp();
|
||||
SetPlayerPos(0, SI_VAR(0), 0);
|
||||
sleep 1;
|
||||
if (SI_VAR(1) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
DisablePlayerPhysics(FALSE);
|
||||
});
|
||||
|
||||
Script N(8024230C) = SCRIPT({
|
||||
sleep 80;
|
||||
GetPlayerPos(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
UseSettingsFrom(0, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
SetPanTarget(0, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
SetCamSpeed(0, 0.7001953125);
|
||||
SetCamPitch(0, 25.0, -22.0);
|
||||
SetCamDistance(0, 450);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
});
|
||||
|
||||
Script N(802423E4) = SCRIPT({
|
||||
DisablePartnerAI(0);
|
||||
spawn N(80241DB0);
|
||||
spawn N(80241E40);
|
||||
spawn N(80242030);
|
||||
spawn N(8024206C);
|
||||
spawn N(80242188);
|
||||
spawn N(8024230C);
|
||||
});
|
||||
|
||||
Script N(8024244C) = SCRIPT({
|
||||
MakeLerp(170, 75, 150, 0);
|
||||
1:
|
||||
UpdateLerp();
|
||||
TranslateGroup(56, 0, SI_VAR(0), 0);
|
||||
if (SI_VAR(1) == 1) {
|
||||
sleep 1;
|
||||
goto 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802424DC) = SCRIPT({
|
||||
MakeLerp(100, 15, 150, 1);
|
||||
1:
|
||||
UpdateLerp();
|
||||
SI_VAR(2) = (float) SI_VAR(0);
|
||||
SI_VAR(3) = (float) SI_VAR(0);
|
||||
SI_VAR(2) /= 333.0;
|
||||
SI_VAR(3) /= 100.0;
|
||||
SI_VAR(2) += 0.703125;
|
||||
ScaleGroup(56, SI_VAR(2), SI_VAR(3), SI_VAR(2));
|
||||
if (SI_VAR(1) == 1) {
|
||||
sleep 1;
|
||||
goto 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802425BC) = SCRIPT({
|
||||
spawn N(8024244C);
|
||||
spawn N(802424DC);
|
||||
});
|
||||
|
||||
const char N(flo_24_name_hack)[];
|
||||
|
||||
Script N(802425E4) = SCRIPT({
|
||||
sleep 20;
|
||||
SetPlayerAnimation(ANIM_STAND_STILL);
|
||||
GetPlayerPos(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
UseSettingsFrom(0, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
SetPanTarget(0, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
SetCamSpeed(0, 1.0);
|
||||
SetCamDistance(0, 600);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
EnableGroup(56, 1);
|
||||
TranslateGroup(56, 0, -50, 0);
|
||||
ScaleGroup(56, 0, 0, 0);
|
||||
EnableGroup(60, 1);
|
||||
await N(802423E4);
|
||||
sleep 20;
|
||||
PlaySound(0x80000024);
|
||||
sleep 360;
|
||||
InterpPlayerYaw(90, 0);
|
||||
SetPlayerAnimation(ANIM_80017);
|
||||
SetPlayerJumpscale(0.2001953125);
|
||||
PlayerJump1(-100, -10, -172, 75);
|
||||
ShakeCam(0, 0, 5, 1.0);
|
||||
await N(802425BC);
|
||||
sleep 60;
|
||||
GotoMap(N(flo_24_name_hack), 2);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(802427EC) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePlayerPhysics(TRUE);
|
||||
SetPlayerPos(-100, -10, -172);
|
||||
InterpPlayerYaw(150, 0);
|
||||
SetPlayerAnimation(ANIM_DEAD_STILL);
|
||||
SetNpcPos(NPC_PARTNER, -129, 9, -177);
|
||||
EnablePartnerAI();
|
||||
ClearPartnerMoveHistory(-4);
|
||||
EnableGroup(52, 1);
|
||||
EnableGroup(19, 0);
|
||||
EnableGroup(61, 0);
|
||||
EnableGroup(60, 0);
|
||||
SetNpcPos(NPC_LILY, -57, -20, -105);
|
||||
InterpNpcYaw(NPC_LILY, 90, 0);
|
||||
AdjustCam(0, 90.0, 0, 450, 25.0, -6.0);
|
||||
sleep 30;
|
||||
SetPlayerAnimation(ANIM_GET_UP);
|
||||
sleep 20;
|
||||
SetPlayerAnimation(ANIM_10002);
|
||||
sleep 10;
|
||||
await N(802415C4);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 5, MESSAGE_ID(0x11, 0x0082));
|
||||
NpcFacePlayer(NPC_LILY, 1);
|
||||
SpeakToPlayer(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_3), NPC_ANIM(lily, Palette_00, Anim_7), 0, MESSAGE_ID(0x11, 0x0083));
|
||||
SetNpcAnimation(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_6));
|
||||
sleep 20;
|
||||
SetNpcAnimation(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_1));
|
||||
SI_VAR(0) = 90;
|
||||
SI_VAR(1) = 1;
|
||||
await N(80241CB4);
|
||||
AddKeyItem(ITEM_MIRACLE_WATER);
|
||||
SpeakToPlayer(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_3), NPC_ANIM(lily, Palette_00, Anim_7), 0, MESSAGE_ID(0x11, 0x0084));
|
||||
EndSpeech(0, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 0);
|
||||
SetNpcAnimation(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_1));
|
||||
ResetCam(0, 4.0);
|
||||
await N(802415E8);
|
||||
DisablePlayerPhysics(FALSE);
|
||||
DisablePlayerInput(FALSE);
|
||||
});
|
||||
|
||||
Script N(80242AE8) = SCRIPT({
|
||||
if (STORY_PROGRESS < STORY_CH6_FILLED_SPRING_WITH_WATER) {
|
||||
EnableGroup(52, 0);
|
||||
EnableGroup(61, 0);
|
||||
ModifyColliderFlags(0, 21, 0x7FFFFE00);
|
||||
} else {
|
||||
EnableGroup(19, 0);
|
||||
EnableGroup(61, 0);
|
||||
EnableGroup(60, 0);
|
||||
ModifyColliderFlags(0, 14, 0x7FFFFE00);
|
||||
ModifyColliderFlags(0, 15, 0x7FFFFE00);
|
||||
ModifyColliderFlags(0, 16, 0x7FFFFE00);
|
||||
ModifyColliderFlags(0, 17, 0x7FFFFE00);
|
||||
}
|
||||
EnableTexPanning(54, 1);
|
||||
EnableTexPanning(48, 1);
|
||||
EnableTexPanning(55, 1);
|
||||
EnableTexPanning(59, 1);
|
||||
EnableTexPanning(49, 1);
|
||||
EnableTexPanning(51, 1);
|
||||
spawn {
|
||||
SI_VAR(0) = 1;
|
||||
SI_VAR(1) = 0;
|
||||
SI_VAR(2) = -2000;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 0;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 3;
|
||||
SI_VAR(1) = -100;
|
||||
SI_VAR(2) = 80;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 1;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 5;
|
||||
SI_VAR(1) = -1000;
|
||||
SI_VAR(2) = 2000;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 1;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 6;
|
||||
SI_VAR(1) = 0;
|
||||
SI_VAR(2) = -2000;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 0;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 8;
|
||||
SI_VAR(1) = 0;
|
||||
SI_VAR(2) = -1500;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 0;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 9;
|
||||
SI_VAR(1) = 0;
|
||||
SI_VAR(2) = -1000;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 0;
|
||||
SI_VAR(6) = 1;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80241D14);
|
||||
}
|
||||
if (STORY_PROGRESS >= STORY_CH6_FILLED_SPRING_WITH_WATER) {
|
||||
spawn N(80241F20);
|
||||
}
|
||||
});
|
||||
|
||||
static s32 N(pad_3218)[] = {
|
||||
0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_80243220) = {
|
||||
.height = 45,
|
||||
.radius = 65,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
const char N(flo_24_name_hack)[] = "flo_24";
|
||||
|
||||
Script N(8024324C) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePlayerPhysics(TRUE);
|
||||
SetNpcPos(NPC_LILY, 60, 0, 55);
|
||||
UseSettingsFrom(0, 0, 0, 0);
|
||||
SetPanTarget(0, 0, 0, 0);
|
||||
SetCamDistance(0, 450);
|
||||
SetCamPitch(0, 17.0, -6.0);
|
||||
SetCamSpeed(0, 90.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x00C6));
|
||||
sleep 10;
|
||||
GotoMap("flo_12", 1);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
s32 N(itemList_80243394)[] = {
|
||||
ITEM_WATER_STONE,
|
||||
ITEM_NONE,
|
||||
};
|
||||
|
||||
Script N(8024339C) = SCRIPT({
|
||||
if (SI_SAVE_FLAG(1376) == 1) {
|
||||
GetCurrentPartner(SI_VAR(10));
|
||||
if (SI_VAR(10) != 0) {
|
||||
AwaitPlayerLeave(0, 0, 19);
|
||||
return;
|
||||
}
|
||||
DisablePlayerInput(TRUE);
|
||||
group 0;
|
||||
func_802D5830(1);
|
||||
func_802D6420();
|
||||
SI_VAR(2) = SI_VAR(0);
|
||||
match SI_VAR(2) {
|
||||
== -1 {
|
||||
func_802D6954();
|
||||
func_802D5830(0);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_LILY, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 0, MESSAGE_ID(0x11, 0x0081));
|
||||
}
|
||||
else {
|
||||
GetPlayerPos(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
PlayerMoveTo(-17, -17, 20);
|
||||
func_802CF56C(2);
|
||||
InterpPlayerYaw(100, 1);
|
||||
sleep 10;
|
||||
AdjustCam(0, 1.0, 0, 450, 25.0, -6.0);
|
||||
sleep 10;
|
||||
SetPlayerAnimation(0x60006);
|
||||
RemoveKeyItemAt(SI_VAR(1));
|
||||
MakeItemEntity(ITEM_WATER_STONE, 0, -60, 6, 1, 0);
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
func_802D6954();
|
||||
func_802D5830(0);
|
||||
await N(802425E4);
|
||||
}
|
||||
}
|
||||
DisablePlayerInput(FALSE);
|
||||
AwaitPlayerLeave(0, 0, 19);
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802435F8) = {
|
||||
SI_CMD(ScriptOpcode_BIND_PADLOCK, N(8024339C), TRIGGER_FLOOR_TOUCH, 15, N(itemList_80243394), 0, 1),
|
||||
SI_CMD(ScriptOpcode_RETURN),
|
||||
SI_CMD(ScriptOpcode_END)
|
||||
};
|
||||
|
||||
Script N(80243628) = SCRIPT({
|
||||
sleep 10;
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
GetPlayerPos(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
if (SI_VAR(5) < SI_VAR(2)) {
|
||||
SI_VAR(6) = 30;
|
||||
} else {
|
||||
SI_VAR(6) = 20;
|
||||
}
|
||||
SI_VAR(1) = SI_VAR(0);
|
||||
SI_VAR(4) = SI_VAR(0);
|
||||
SI_VAR(1) -= SI_VAR(6);
|
||||
SI_VAR(4) += SI_VAR(6);
|
||||
match SI_VAR(3) {
|
||||
SI_VAR(1)..SI_VAR(4) {
|
||||
spawn {
|
||||
if (SI_VAR(3) < SI_VAR(0)) {
|
||||
SI_VAR(0) -= 40;
|
||||
} else {
|
||||
SI_VAR(0) += 40;
|
||||
}
|
||||
SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), TRUE);
|
||||
PlayerMoveTo(SI_VAR(0), SI_VAR(5), 15);
|
||||
PlayerFaceNpc(0, 1);
|
||||
SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(interact_802437C8) = SCRIPT({
|
||||
await N(802415C4);
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_GOT_MAGICAL_BEAN {
|
||||
spawn N(80243628);
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamDistance(0, 325);
|
||||
SetCamPitch(0, 23.0, -9.0);
|
||||
SetCamSpeed(0, 4.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 5, MESSAGE_ID(0x11, 0x0078));
|
||||
EndSpeech(-1, NPC_ANIM(lily, Palette_00, Anim_9), NPC_ANIM(lily, Palette_00, Anim_5), 5);
|
||||
}
|
||||
< STORY_CH6_GOT_WATER_STONE {
|
||||
if (SI_SAVE_FLAG(1375) == 0) {
|
||||
spawn N(80243628);
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamDistance(0, 325);
|
||||
SetCamPitch(0, 23.0, -9.0);
|
||||
SetCamSpeed(0, 4.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 5, MESSAGE_ID(0x11, 0x0079));
|
||||
NpcFacePlayer(NPC_SELF, 1);
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_1));
|
||||
PlaySoundAtNpc(NPC_SELF, SOUND_UNKNOWN_262, 0);
|
||||
ShowEmote(-1, EMOTE_EXCLAMATION, 0, 15, 1, 0, 0, 0, 0);
|
||||
sleep 15;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_1), NPC_ANIM(lily, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x007A));
|
||||
EndSpeech(-1, NPC_ANIM(lily, Palette_00, Anim_5), NPC_ANIM(lily, Palette_00, Anim_1), 0);
|
||||
GetPlayerTargetYaw(SI_VAR(0));
|
||||
InterpNpcYaw(NPC_SELF, SI_VAR(0), 1);
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 5, MESSAGE_ID(0x11, 0x007B));
|
||||
NpcFacePlayer(NPC_SELF, 1);
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x007C));
|
||||
ShowChoice(MESSAGE_ID(0x1E, 0x0011));
|
||||
sleep 10;
|
||||
match SI_VAR(0) {
|
||||
== 0 {
|
||||
ContinueSpeech(-1, NPC_ANIM(lily, Palette_00, Anim_3), NPC_ANIM(lily, Palette_00, Anim_7), 0, MESSAGE_ID(0x11, 0x007D));
|
||||
}
|
||||
== 1 {
|
||||
ContinueSpeech(-1, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 0, MESSAGE_ID(0x11, 0x007E));
|
||||
}
|
||||
}
|
||||
sleep 10;
|
||||
SI_SAVE_FLAG(1375) = 1;
|
||||
SetEnemyFlagBits(-1, 4194304, 0);
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 5, MESSAGE_ID(0x11, 0x007F));
|
||||
}
|
||||
}
|
||||
< 49 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0080));
|
||||
SI_SAVE_FLAG(1376) = 1;
|
||||
}
|
||||
< 53 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 0, MESSAGE_ID(0x11, 0x0085));
|
||||
EndSpeech(-1, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 0);
|
||||
EndSpeech(-1, NPC_ANIM(lily, Palette_00, Anim_4), NPC_ANIM(lily, Palette_00, Anim_8), 0);
|
||||
}
|
||||
< 60 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_3), NPC_ANIM(lily, Palette_00, Anim_7), 0, MESSAGE_ID(0x11, 0x0086));
|
||||
}
|
||||
else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_2), NPC_ANIM(lily, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0087));
|
||||
}
|
||||
}
|
||||
ResetCam(0, 4.0);
|
||||
await N(802415E8);
|
||||
});
|
||||
|
||||
Script N(init_80243D78) = SCRIPT({
|
||||
BindNpcInteract(NPC_SELF, N(interact_802437C8));
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_GOT_WATER_STONE {
|
||||
if (SI_SAVE_FLAG(1375) == 0) {
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(lily, Palette_00, Anim_8));
|
||||
InterpNpcYaw(NPC_SELF, 90, 1);
|
||||
SetEnemyFlagBits(-1, 4194304, 1);
|
||||
}
|
||||
}
|
||||
== STORY_CH6_GOT_WATER_STONE {
|
||||
InterpNpcYaw(NPC_SELF, 270, 1);
|
||||
}
|
||||
>= STORY_CH6_FILLED_SPRING_WITH_WATER {
|
||||
SetNpcPos(NPC_SELF, -67, -20, -105);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
StaticNpc N(npcGroup_80243E64) = {
|
||||
.id = NPC_LILY,
|
||||
.settings = &N(npcSettings_80243220),
|
||||
.pos = { 80.0f, -60.0f, 0.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT,
|
||||
.init = &N(init_80243D78),
|
||||
.yaw = 270,
|
||||
.dropFlags = 0x80,
|
||||
.heartDrops = NO_DROPS,
|
||||
.flowerDrops = NO_DROPS,
|
||||
.animations = {
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
NPC_ANIM(lily, Palette_00, Anim_1),
|
||||
},
|
||||
.tattle = MESSAGE_ID(0x1A, 0x00DF),
|
||||
};
|
||||
|
||||
NpcGroupList N(npcGroupList_80244054) = {
|
||||
NPC_GROUP(N(npcGroup_80243E64), BATTLE_ID(0, 0, 0, 0)),
|
||||
{},
|
||||
};
|
||||
|
||||
static s32 N(pad_406C) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
s32 N(D_80244070_CBD270) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(80244074) = SCRIPT({
|
||||
|
||||
});
|
||||
|
||||
static s32 N(pad_4084)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_10/CB9280", func_80240080_CB9280);
|
||||
/*
|
||||
ApiStatus N(func_80240080_CB9280)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80241C68_BE09F8);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_80241CB0_CBAEB0) == NULL) {
|
||||
N(D_80241CB0_CBAEB0) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_80241CB0_CBAEB0)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_80241CB0_CBAEB0)[i];
|
||||
}
|
||||
ptr = &N(D_80241C68_BE09F8);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_80241CB0_CBAEB0));
|
||||
N(D_80241CB0_CBAEB0) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/GetItemName.inc.c"
|
||||
|
||||
|
@ -1,5 +1,314 @@
|
||||
#include "flo_10.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_10/CB96B0", func_802404B0_CB96B0);
|
||||
extern u16* nuGfxZBuffer;
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_10/CB96B0", func_80240A98_CB9C98);
|
||||
// in no way close at all, may as well start over
|
||||
// good luck have fun
|
||||
#ifdef NON_MATCHING
|
||||
void N(func_802404B0_CB96B0)(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
|
||||
s32 i;
|
||||
s32 phi_a3;
|
||||
s32 temp_s2_2;
|
||||
s32 temp_v0_2;
|
||||
s32 temp_a2_3;
|
||||
s32 phi_s3;
|
||||
s32 phi_s4;
|
||||
s32 phi_s5;
|
||||
s32 phi_s6;
|
||||
s32 phi_s7;
|
||||
s32 phi_a2;
|
||||
|
||||
s32 subroutine_arg4;
|
||||
s32 subroutine_arg5;
|
||||
s32 subroutine_arg6;
|
||||
|
||||
N(D_80244070_CBD270) += 5;
|
||||
if ((arg0 < arg2) && (arg1 < arg3)) {
|
||||
if (arg0 < 0) {
|
||||
phi_s6 = 0;
|
||||
} else {
|
||||
phi_s6 = arg0;
|
||||
}
|
||||
|
||||
if (arg1 < 0) {
|
||||
arg1 = 0;
|
||||
}
|
||||
|
||||
phi_s4 = arg2;
|
||||
if (arg2 < 0) {
|
||||
phi_s4 = 0;
|
||||
}
|
||||
|
||||
phi_a3 = arg3;
|
||||
if (arg3 < 0) {
|
||||
phi_a3 = 0;
|
||||
}
|
||||
|
||||
if (phi_s6 >= 0x140) {
|
||||
phi_s6 = 0x13F;
|
||||
}
|
||||
if (arg1 >= 0xF0) {
|
||||
arg1 = 0xEF;
|
||||
}
|
||||
if (phi_s4 >= 0x140) {
|
||||
phi_s4 = 0x13F;
|
||||
}
|
||||
if (phi_a3 >= 0xF0) {
|
||||
phi_a3 = 0xEF;
|
||||
}
|
||||
|
||||
if ((phi_s6 != phi_s4) && (arg1 != phi_a3)) {
|
||||
if (phi_s6 < 0) {
|
||||
phi_s6 += 3;
|
||||
}
|
||||
phi_s6 = (phi_s6 >> 2) * 4;
|
||||
|
||||
if (phi_s4 < 0) {
|
||||
phi_s4 += 3;
|
||||
}
|
||||
subroutine_arg5 = phi_s4 / 6;
|
||||
subroutine_arg4 = phi_s4 / 6;
|
||||
subroutine_arg6 = D_8009A64C;
|
||||
|
||||
for (i = 0; i < subroutine_arg4; i++) {
|
||||
phi_s5 = arg1 - ((i + 1) * 6);
|
||||
phi_s7 = arg1 + ((i + 1) * 6);
|
||||
|
||||
if (phi_s5 >= 0) {
|
||||
phi_a2 = phi_s5 * 2;
|
||||
if (phi_a2 >= 0x100) {
|
||||
phi_a2 = 0xFF;
|
||||
}
|
||||
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 255, 255, 255, phi_a2);
|
||||
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(subroutine_arg6));
|
||||
|
||||
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, (phi_s4 - phi_s6) / 6, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 9, G_TX_NOLOD);
|
||||
gDPLoadSync(gMasterGfxPos++);
|
||||
|
||||
gDPLoadTile(gMasterGfxPos++, G_TX_LOADTILE, phi_s6 * 4, phi_s5 * 4, (phi_s4 - 1) * 4, (phi_s5 - 1) * 4);
|
||||
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, phi_s4 - phi_s6, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 9, G_TX_NOLOD);
|
||||
|
||||
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, phi_s6 * 4, phi_s5 * 4, (phi_s4 - 1) * 4, (phi_s5 - 1) * 4);
|
||||
|
||||
gSPTextureRectangle(gMasterGfxPos++,
|
||||
(phi_s4 - 1) * 4, (phi_s5 - 1) * 4, phi_s6 * 4, phi_s5 * 4,
|
||||
G_TX_RENDERTILE,
|
||||
phi_s6, phi_s5,
|
||||
0x0400, (sin_deg(N(D_80244070_CBD270) + (i * 30)) * 500.0f) - 0x1F4);
|
||||
}
|
||||
}
|
||||
|
||||
if (subroutine_arg5 != 0) {
|
||||
temp_s2_2 = arg1 - (i * 6);
|
||||
temp_v0_2 = temp_s2_2 - 6;
|
||||
temp_a2_3 = temp_v0_2 * 2;
|
||||
if (temp_v0_2 >= 0) {
|
||||
phi_a2 = temp_a2_3;
|
||||
if (temp_a2_3 >= 0x100) {
|
||||
phi_a2 = 0xFF;
|
||||
}
|
||||
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 255, 255, 255, phi_a2);
|
||||
gDPSetTextureImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(subroutine_arg6));
|
||||
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, (phi_s4 - phi_s6) / 6, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 9, G_TX_NOLOD);
|
||||
gDPLoadSync(gMasterGfxPos++);
|
||||
|
||||
gDPLoadTile(gMasterGfxPos++, G_TX_LOADTILE, phi_s6 * 4, (temp_s2_2 - subroutine_arg5) * 4, (phi_s4 - 1) * 4, (temp_s2_2 - 1) * 4);
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
gDPSetTile(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, (phi_s4 - phi_s6) / 6, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 9, G_TX_NOLOD);
|
||||
gDPSetTileSize(gMasterGfxPos++, G_TX_RENDERTILE, (phi_s4 - 1) * 4, (temp_s2_2 - subroutine_arg5) * 4, phi_s6 * 4, (temp_s2_2 - subroutine_arg5) * 4);
|
||||
gSPTextureRectangle(gMasterGfxPos++, phi_s6 * 4, arg1 + (i * 6), phi_s4 * 4, ((arg1 + (i * 6)) + subroutine_arg5) * 4, G_TX_RENDERTILE, phi_s6, temp_s2_2, 0x0400, -0x0400);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(void, "world/area_flo/flo_10/CB96B0", flo_10_func_802404B0_CB96B0, s32 arg0, s32 arg1, s32 arg2, s32 arg3);
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ char unk_00[0x4];
|
||||
/* 0x04 */ s32 unk_04;
|
||||
/* 0x08 */ char unk_08[0x14];
|
||||
/* 0x1C */ s32 unk_1C;
|
||||
} N(UnkStruct2);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ char unk_00[0xC];
|
||||
/* 0x0C */ N(UnkStruct2)* unk_0C;
|
||||
} N(UnkStruct);
|
||||
|
||||
void N(func_80240A98_CB9C98)(void) {
|
||||
Camera* camera = &gCameras[gCurrentCameraID];
|
||||
Model* model = get_model_from_list_index(get_model_list_index_from_tree_index(0x30));
|
||||
// modelNode propertylist? Causes too many derefences and conflicts with the modelNode load below
|
||||
N(UnkStruct2)* unk1 = ((N(UnkStruct)*)model->modelNode)->unk_0C;
|
||||
f32 temp_f24;
|
||||
f32 temp_f26;
|
||||
f32 temp_f20;
|
||||
f32 temp_f22;
|
||||
s32 test;
|
||||
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
f32 sp30;
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
|
||||
sp3C = unk1->unk_04;
|
||||
sp38 = unk1->unk_1C;
|
||||
|
||||
transform_point(camera->perspectiveMatrix,
|
||||
model->center[0] - sp3C, model->center[1], model->center[2] - sp38, 1.0f,
|
||||
&sp28, &sp2C, &sp30, &sp34);
|
||||
|
||||
sp28 = sp28 * (1.0f / sp34);
|
||||
sp2C = sp2C * -(1.0f / sp34);
|
||||
sp30 = sp30 * (1.0f / sp34);
|
||||
sp34 = (1.0f / sp34);
|
||||
|
||||
if (sp34 < 0.0f) {
|
||||
sp28 = 0.0f;
|
||||
sp2C = 1.0f;
|
||||
}
|
||||
temp_f20 = sp28;
|
||||
temp_f22 = sp2C;
|
||||
|
||||
transform_point(camera->perspectiveMatrix,
|
||||
model->center[0] - sp3C, model->center[1], model->center[2] + sp38, 1.0f,
|
||||
&sp28, &sp2C, &sp30, &sp34);
|
||||
|
||||
sp28 = sp28 * (1.0f / sp34);
|
||||
sp2C = sp2C * -(1.0f / sp34);
|
||||
sp30 = sp30 * (1.0f / sp34);
|
||||
sp34 = 1.0f / sp34;
|
||||
|
||||
temp_f24 = temp_f20;
|
||||
temp_f26 = temp_f22;
|
||||
if (sp34 < 0.0f) {
|
||||
sp28 = 0.0f;
|
||||
sp2C = 1.0f;
|
||||
}
|
||||
|
||||
if (sp28 < temp_f20) {
|
||||
temp_f24 = sp28;
|
||||
}
|
||||
|
||||
if (sp2C < temp_f22) {
|
||||
temp_f26 = sp2C;
|
||||
}
|
||||
|
||||
if (temp_f20 < sp28) {
|
||||
temp_f20 = sp28;
|
||||
}
|
||||
|
||||
if (temp_f22 < sp2C) {
|
||||
temp_f22 = sp2C;
|
||||
}
|
||||
|
||||
transform_point(camera->perspectiveMatrix,
|
||||
model->center[0] + sp3C, model->center[1], model->center[2] + sp38, 1.0f,
|
||||
&sp28, &sp2C, &sp30, &sp34);
|
||||
|
||||
sp28 = sp28 * (1.0f / sp34);
|
||||
sp2C = sp2C * -(1.0f / sp34);
|
||||
sp30 = sp30 * (1.0f / sp34);
|
||||
sp34 = (1.0f / sp34);
|
||||
|
||||
if (sp34 < 0.0f) {
|
||||
sp28 = 1.0f;
|
||||
sp2C = 1.0f;
|
||||
}
|
||||
|
||||
if (sp28 < temp_f24) {
|
||||
temp_f24 = sp28;
|
||||
}
|
||||
|
||||
if (sp2C < temp_f26) {
|
||||
temp_f26 = sp2C;
|
||||
}
|
||||
|
||||
if (temp_f20 < sp28) {
|
||||
temp_f20 = sp28;
|
||||
}
|
||||
|
||||
if (temp_f22 < sp2C) {
|
||||
temp_f22 = sp2C;
|
||||
}
|
||||
|
||||
transform_point(camera->perspectiveMatrix,
|
||||
model->center[0] + sp3C, model->center[1], model->center[2] - sp38, 1.0f,
|
||||
&sp28, &sp2C, &sp30, &sp34);
|
||||
|
||||
sp28 = sp28 * (1.0f / sp34);
|
||||
sp2C = sp2C * -(1.0f / sp34);
|
||||
sp30 = sp30 * (1.0f / sp34);
|
||||
sp34 = (1.0f / sp34);
|
||||
|
||||
if (sp34 < 0.0f) {
|
||||
sp28 = 1.0f;
|
||||
sp2C = 1.0f;
|
||||
}
|
||||
|
||||
if (sp28 < temp_f24) {
|
||||
temp_f24 = sp28;
|
||||
}
|
||||
|
||||
if (sp2C < temp_f26) {
|
||||
temp_f26 = sp2C;
|
||||
}
|
||||
|
||||
if (temp_f20 < sp28) {
|
||||
temp_f20 = sp28;
|
||||
}
|
||||
|
||||
if (temp_f22 < sp2C) {
|
||||
temp_f22 = sp2C;
|
||||
}
|
||||
|
||||
if ((temp_f24 != temp_f20) || (temp_f26 != temp_f22)) {
|
||||
temp_f24 = ((temp_f24 * camera->viewportW) + camera->viewportW) * 0.5f;
|
||||
temp_f26 = ((temp_f26 * camera->viewportH) + camera->viewportH) * 0.5f;
|
||||
temp_f20 = ((temp_f20 * camera->viewportW) + camera->viewportW) * 0.5f;
|
||||
temp_f22 = ((temp_f22 * camera->viewportH) + camera->viewportH) * 0.5f;
|
||||
|
||||
temp_f24 += camera->viewportStartX;
|
||||
temp_f26 += camera->viewportStartY;
|
||||
temp_f20 += camera->viewportStartX;
|
||||
temp_f22 += camera->viewportStartY;
|
||||
|
||||
gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE);
|
||||
gDPSetRenderMode(gMasterGfxPos++, Z_CMP | CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL | G_RM_PASS, Z_CMP | CVG_DST_CLAMP | ZMODE_OPA | FORCE_BL | GBL_c2(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1));
|
||||
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(nuGfxZBuffer));
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, PRIMITIVE, 0, 0, 0, 0, 0, 0, 0, PRIMITIVE, 0, 0, 0, 0);
|
||||
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 248, 240, 240, 0);
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
|
||||
gSPDisplayList(gMasterGfxPos++, model->modelNode[1]->type);
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
|
||||
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, osVirtualToPhysical(D_8009A64C));
|
||||
gDPSetDepthSource(gMasterGfxPos++, G_ZS_PRIM);
|
||||
gDPSetPrimDepth(gMasterGfxPos++, 32734, 0);
|
||||
gDPSetRenderMode(gMasterGfxPos++, G_RM_ZB_XLU_DECAL, G_RM_ZB_XLU_DECAL2);
|
||||
gDPSetTextureFilter(gMasterGfxPos++, G_TF_POINT);
|
||||
gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE);
|
||||
gSPTexture(gMasterGfxPos++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPSetTextureLUT(gMasterGfxPos++, G_TT_NONE);
|
||||
gDPSetTextureDetail(gMasterGfxPos++, G_TD_CLAMP);
|
||||
gDPSetTextureLOD(gMasterGfxPos++, G_TL_TILE);
|
||||
gDPSetCombineLERP(gMasterGfxPos++, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE);
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
|
||||
N(func_802404B0_CB96B0)(temp_f24, temp_f26, temp_f20, temp_f22);
|
||||
|
||||
gDPPipeSync(gMasterGfxPos++);
|
||||
gDPSetCycleType(gMasterGfxPos++, G_CYC_2CYCLE);
|
||||
gDPSetDepthSource(gMasterGfxPos++, G_ZS_PIXEL);
|
||||
}
|
||||
}
|
||||
|
@ -2,3 +2,38 @@
|
||||
|
||||
#include "world/common/foliage.inc.c"
|
||||
|
||||
FoliageModelList N(tree1_Leaves) = {
|
||||
.count = 3,
|
||||
.models = { 33, 34, 35 }
|
||||
};
|
||||
|
||||
FoliageModelList N(tree1_Trunk) = {
|
||||
.count = 1,
|
||||
.models = { 32 }
|
||||
};
|
||||
|
||||
FoliageDropList N(tree1_Drops) = {
|
||||
.count = 1,
|
||||
.drops = {
|
||||
{
|
||||
.itemID = ITEM_JAMMIN_JELLY,
|
||||
.pos = { 80, 100, -240 },
|
||||
.spawnMode = 0xF,
|
||||
.pickupFlag = SI_SAVE_FLAG(1383),
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
ShakeTreeConfig N(tree1) = {
|
||||
.leaves = &N(tree1_Leaves),
|
||||
.trunk = &N(tree1_Trunk),
|
||||
.drops = &N(tree1_Drops),
|
||||
};
|
||||
|
||||
Vec4f N(triggerCoord_80244A40) = { 137.0f, 0.0f, -283.0f, 0.0f };
|
||||
|
||||
Script N(80244A50) = SCRIPT({
|
||||
SI_VAR(0) = N(tree1);
|
||||
bind N(shakeTree) to TRIGGER_WALL_HAMMER 9;
|
||||
bind N(shakeTree) to TRIGGER_POINT_BOMB N(triggerCoord_80244A40);
|
||||
});
|
||||
|
@ -2,3 +2,20 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_10
|
||||
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkTexturePanFunc)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkTexturePanFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
s32 N(func_80240000_CB9200)(void);
|
||||
ApiStatus N(func_80240040_CB9240)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern s32 N(D_80244070_CBD270);
|
||||
extern s32** N(D_80241CB0_CBAEB0);
|
||||
extern NpcGroupList N(npcGroupList_80244054);
|
||||
extern Script N(802427EC);
|
||||
extern Script N(80242AE8);
|
||||
extern Script N(8024324C);
|
||||
extern Script N(802435F8);
|
||||
extern Script N(80244074);
|
||||
extern Script N(80244A50);
|
||||
extern Script N(main);
|
||||
|
@ -1,10 +1,845 @@
|
||||
#include "flo_11.h"
|
||||
#include "message_ids.h"
|
||||
#include "sprite/npc/lakitu.h"
|
||||
|
||||
enum {
|
||||
NPC_LAKITU0,
|
||||
NPC_LAKITU1,
|
||||
};
|
||||
|
||||
EntryList N(entryList) = {
|
||||
{ 470.0f, 0.0f, -15.0f, 270.0f },
|
||||
{ -470.0f, 0.0f, -15.0f, 90.0f },
|
||||
{ 360.0f, 50.0f, -237.0f, 270.0f },
|
||||
{ 118.0f, 50.0f, -420.0f, 270.0f },
|
||||
{ 0.0f, 50.0f, 0.0f, 270.0f },
|
||||
{ -120.0f, 50.0f, 357.0f, 90.0f },
|
||||
{ -360.0f, 50.0f, -240.0f, 90.0f },
|
||||
{ -360.0f, 35.0f, 0.0f, 90.0f },
|
||||
};
|
||||
|
||||
MapConfig N(config) = {
|
||||
.main = &N(main),
|
||||
.entryList = &N(entryList),
|
||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_flo_11_tattle },
|
||||
};
|
||||
|
||||
Script N(802403E0) = SCRIPT({
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8);
|
||||
}
|
||||
else {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_SUNNY, 0, 8);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80240450) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(802406FC) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePlayerPhysics(TRUE);
|
||||
DisablePartnerAI(0);
|
||||
HidePlayerShadow(TRUE);
|
||||
SetPlayerAnimation(ANIM_STAND_STILL);
|
||||
GetCurrentPartnerID(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
EnableNpcShadow(NPC_PARTNER, FALSE);
|
||||
SetNpcPos(NPC_PARTNER, 0, -1000, 0);
|
||||
}
|
||||
GetEntryID(SI_VAR(0));
|
||||
N(GetEntryPos)();
|
||||
SI_VAR(2) -= 40;
|
||||
SetPlayerPos(SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
InterpPlayerYaw(SI_VAR(4), 0);
|
||||
PlaySound(0x163);
|
||||
func_802D286C(256);
|
||||
func_802D2520(ANIM_STAND_STILL, 5, 2, 1, 1, 0);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
loop 40 {
|
||||
SI_VAR(1) += 1;
|
||||
SetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
sleep 1;
|
||||
}
|
||||
sleep 3;
|
||||
GetCurrentPartnerID(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
spawn {
|
||||
DisablePartnerAI(0);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(2) -= 3;
|
||||
SetNpcPos(NPC_PARTNER, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetNpcFlagBits(NPC_PARTNER, ((0x00000002)), FALSE);
|
||||
EnablePartnerAI();
|
||||
EnableNpcShadow(NPC_PARTNER, TRUE);
|
||||
}
|
||||
}
|
||||
sleep 2;
|
||||
func_802D2520(ANIM_STAND_STILL, 0, 0, 0, 0, 0);
|
||||
sleep 1;
|
||||
SetPlayerAnimation(ANIM_10002);
|
||||
DisablePlayerPhysics(FALSE);
|
||||
DisablePlayerInput(FALSE);
|
||||
HidePlayerShadow(FALSE);
|
||||
0:
|
||||
N(GetCurrentFloor)();
|
||||
sleep 1;
|
||||
if (SI_VAR(0) != -1) {
|
||||
goto 0;
|
||||
}
|
||||
spawn 0xFE363C8A;
|
||||
});
|
||||
|
||||
Script N(80240A50) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePlayerPhysics(TRUE);
|
||||
HidePlayerShadow(TRUE);
|
||||
ModifyColliderFlags(0, SI_VAR(11), 0x7FFFFE00);
|
||||
GetEntryID(SI_VAR(0));
|
||||
N(GetEntryPos)();
|
||||
SI_VAR(5) = SI_VAR(1);
|
||||
SI_VAR(6) = SI_VAR(2);
|
||||
SI_VAR(7) = SI_VAR(3);
|
||||
SI_VAR(2) += 2;
|
||||
SetPlayerPos(SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
InterpPlayerYaw(SI_VAR(4), 0);
|
||||
if (SI_VAR(4) == 90) {
|
||||
SI_VAR(5) += 40;
|
||||
} else {
|
||||
SI_VAR(5) -= 40;
|
||||
}
|
||||
UseSettingsFrom(0, SI_VAR(5), SI_VAR(6), SI_VAR(7));
|
||||
SetPanTarget(0, SI_VAR(5), SI_VAR(6), SI_VAR(7));
|
||||
SetCamSpeed(0, 90.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
GetCurrentPartnerID(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
DisablePartnerAI(0);
|
||||
EnableNpcShadow(NPC_PARTNER, FALSE);
|
||||
SetNpcPos(NPC_PARTNER, 0, -1000, 0);
|
||||
InterpNpcYaw(NPC_PARTNER, SI_VAR(0), 0);
|
||||
}
|
||||
sleep 1;
|
||||
PlaySound(0x163);
|
||||
spawn {
|
||||
sleep 25;
|
||||
HidePlayerShadow(FALSE);
|
||||
}
|
||||
func_802D286C(2304);
|
||||
func_802D2520(ANIM_10002, 5, 3, 1, 1, 0);
|
||||
loop 40 {
|
||||
N(SomeXYZFunc2)(1.0);
|
||||
SetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
sleep 1;
|
||||
}
|
||||
GetCurrentPartnerID(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
spawn {
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(2) -= 3;
|
||||
SetNpcPos(NPC_PARTNER, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
EnableNpcShadow(NPC_PARTNER, TRUE);
|
||||
EnablePartnerAI();
|
||||
}
|
||||
}
|
||||
sleep 5;
|
||||
func_802D2520(ANIM_10002, 0, 0, 0, 0, 0);
|
||||
ModifyColliderFlags(1, SI_VAR(11), 0x7FFFFE00);
|
||||
DisablePlayerInput(FALSE);
|
||||
DisablePlayerPhysics(FALSE);
|
||||
PanToTarget(0, 0, 0);
|
||||
spawn 0xFE363C8A;
|
||||
});
|
||||
|
||||
Script N(80240E40) = SCRIPT({
|
||||
N(UnkFunc25)();
|
||||
if (SI_VAR(0) == 0) {
|
||||
return;
|
||||
}
|
||||
GetCurrentPartner(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
GetCurrentPartnerID(SI_VAR(1));
|
||||
if (SI_VAR(1) != 6) {
|
||||
return;
|
||||
} else {
|
||||
func_802D2B6C();
|
||||
DisablePlayerInput(TRUE);
|
||||
}
|
||||
} else {
|
||||
DisablePlayerInput(TRUE);
|
||||
}
|
||||
await N(80240F1C);
|
||||
});
|
||||
|
||||
Script N(80240F1C) = SCRIPT({
|
||||
N(SetPlayerStatusAnimFlags100000)();
|
||||
group 27;
|
||||
DisablePlayerPhysics(TRUE);
|
||||
HidePlayerShadow(TRUE);
|
||||
SI_VAR(0) = SI_VAR(10);
|
||||
N(GetEntryPos)();
|
||||
PlayerMoveTo(SI_VAR(1), SI_VAR(3), 3);
|
||||
SI_VAR(0) = SI_VAR(10);
|
||||
N(GetEntryPos)();
|
||||
SetPlayerPos(SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
SetPlayerFlagBits(2097152, 1);
|
||||
N(GetCurrentCameraYawClamped180)();
|
||||
InterpPlayerYaw(SI_VAR(0), 0);
|
||||
sleep 2;
|
||||
SetPlayerFlagBits(2097152, 0);
|
||||
PlaySound(0x163);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
spawn {
|
||||
sleep 4;
|
||||
loop 40 {
|
||||
SI_VAR(1) -= 1;
|
||||
SetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
sleep 1;
|
||||
}
|
||||
}
|
||||
func_802D286C(2048);
|
||||
func_802D2520(ANIM_10002, 5, 2, 1, 1, 0);
|
||||
sleep 25;
|
||||
await 0xFE363C8C;
|
||||
});
|
||||
|
||||
Script N(802410F8) = SCRIPT({
|
||||
IsPlayerOnValidFloor(SI_VAR(0));
|
||||
if (SI_VAR(0) == 0) {
|
||||
return;
|
||||
}
|
||||
GetPlayerActionState(SI_VAR(0));
|
||||
if (SI_VAR(0) == 26) {
|
||||
return;
|
||||
}
|
||||
GetCurrentPartner(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
GetCurrentPartnerID(SI_VAR(1));
|
||||
if (SI_VAR(1) != 6) {
|
||||
return;
|
||||
} else {
|
||||
func_802D2B6C();
|
||||
DisablePlayerInput(TRUE);
|
||||
}
|
||||
} else {
|
||||
DisablePlayerInput(TRUE);
|
||||
}
|
||||
group 27;
|
||||
N(SetPlayerStatusAnimFlags100000)();
|
||||
DisablePlayerPhysics(TRUE);
|
||||
ModifyColliderFlags(0, SI_VAR(11), 0x7FFFFE00);
|
||||
SI_VAR(0) = SI_VAR(10);
|
||||
N(GetEntryPos)();
|
||||
SI_VAR(5) = SI_VAR(1);
|
||||
SI_VAR(6) = SI_VAR(2);
|
||||
SI_VAR(6) += 2;
|
||||
SI_VAR(7) = SI_VAR(3);
|
||||
SI_VAR(8) = SI_VAR(4);
|
||||
SI_VAR(8) += 180;
|
||||
if (SI_VAR(4) >= 360) {
|
||||
SI_VAR(4) -= 360;
|
||||
}
|
||||
InterpPlayerYaw(SI_VAR(8), 1);
|
||||
sleep 1;
|
||||
PlaySound(0x163);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPlayerPos(SI_VAR(0), SI_VAR(6), SI_VAR(7));
|
||||
SetPlayerAnimation(ANIM_STAND_STILL);
|
||||
func_802D286C(2048);
|
||||
func_802D2520(ANIM_STAND_STILL, 5, 3, 1, 1, 0);
|
||||
spawn {
|
||||
sleep 8;
|
||||
HidePlayerShadow(TRUE);
|
||||
}
|
||||
spawn {
|
||||
sleep 3;
|
||||
loop 40 {
|
||||
N(SomeXYZFunc2)(1.0);
|
||||
SetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
sleep 1;
|
||||
}
|
||||
}
|
||||
sleep 25;
|
||||
await 0xFE363C8C;
|
||||
});
|
||||
|
||||
Script N(exitWalk_8024142C) = EXIT_WALK_SCRIPT(60, 0, "flo_23", 1);
|
||||
|
||||
Script N(exitWalk_80241488) = EXIT_WALK_SCRIPT(60, 1, "flo_12", 0);
|
||||
|
||||
Script N(802414E4) = SCRIPT({
|
||||
group 27;
|
||||
GotoMap("flo_11", 5);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(80241520) = SCRIPT({
|
||||
group 27;
|
||||
GotoMap("flo_11", 6);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(8024155C) = SCRIPT({
|
||||
group 27;
|
||||
GotoMap("flo_11", 7);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(80241598) = SCRIPT({
|
||||
group 27;
|
||||
GotoMap("flo_11", 2);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(802415D4) = SCRIPT({
|
||||
group 27;
|
||||
GotoMap("flo_11", 3);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(80241610) = SCRIPT({
|
||||
group 27;
|
||||
GotoMap("flo_11", 4);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(8024164C) = SCRIPT({
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
await N(80240E40);
|
||||
});
|
||||
|
||||
Script N(80241698) = SCRIPT({
|
||||
bind N(exitWalk_80241488) to TRIGGER_FLOOR_ABOVE 0;
|
||||
bind N(exitWalk_8024142C) to TRIGGER_FLOOR_ABOVE 4;
|
||||
SI_VAR(0) = 2;
|
||||
SI_VAR(1) = 35;
|
||||
SI_VAR(2) = N(802414E4);
|
||||
bind N(8024164C) to TRIGGER_FLOOR_TOUCH SI_VAR(1);
|
||||
SI_VAR(0) = 3;
|
||||
SI_VAR(1) = 34;
|
||||
SI_VAR(2) = N(80241520);
|
||||
bind N(8024164C) to TRIGGER_FLOOR_TOUCH SI_VAR(1);
|
||||
SI_VAR(0) = 4;
|
||||
SI_VAR(1) = 33;
|
||||
SI_VAR(2) = N(8024155C);
|
||||
bind N(8024164C) to TRIGGER_FLOOR_TOUCH SI_VAR(1);
|
||||
SI_VAR(0) = 5;
|
||||
SI_VAR(1) = 32;
|
||||
SI_VAR(2) = N(80241598);
|
||||
bind N(8024164C) to TRIGGER_FLOOR_TOUCH SI_VAR(1);
|
||||
SI_VAR(0) = 6;
|
||||
SI_VAR(1) = 31;
|
||||
SI_VAR(2) = N(802415D4);
|
||||
bind N(8024164C) to TRIGGER_FLOOR_TOUCH SI_VAR(1);
|
||||
SI_VAR(0) = 7;
|
||||
SI_VAR(1) = 30;
|
||||
SI_VAR(2) = N(80241610);
|
||||
bind N(8024164C) to TRIGGER_FLOOR_TOUCH SI_VAR(1);
|
||||
});
|
||||
|
||||
Script N(main) = SCRIPT({
|
||||
WORLD_LOCATION = LOCATION_FLOWER_FIELDS;
|
||||
SetSpriteShading(-1);
|
||||
SetCamLeadPlayer(0, 0);
|
||||
SetCamPerspective(0, 3, 25, 16, 4096);
|
||||
SetCamBGColor(0, 0, 0, 0);
|
||||
SetCamEnabled(0, 1);
|
||||
func_80044238(5);
|
||||
MakeNpcs(0, N(npcGroupList_802430D4));
|
||||
await N(makeEntities);
|
||||
ModifyColliderFlags(0, 1, 0x7FFFFE00);
|
||||
ModifyColliderFlags(0, 5, 0x7FFFFE00);
|
||||
GetEntryID(SI_VAR(0));
|
||||
if (SI_VAR(0) <= 1) {
|
||||
SI_VAR(0) = N(80241698);
|
||||
spawn EnterWalk;
|
||||
spawn N(80242240);
|
||||
sleep 1;
|
||||
} else {
|
||||
SI_VAR(10) = N(80241698);
|
||||
spawn N(802406FC);
|
||||
sleep 1;
|
||||
}
|
||||
await N(802403E0);
|
||||
if (STORY_PROGRESS >= STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) {
|
||||
N(func_802402E0_CBDFB0)();
|
||||
}
|
||||
ModifyColliderFlags(3, 9, 0x00000009);
|
||||
ModifyColliderFlags(3, 10, 0x00000009);
|
||||
ModifyColliderFlags(3, 11, 0x00000009);
|
||||
ModifyColliderFlags(3, 12, 0x00000009);
|
||||
});
|
||||
|
||||
static s32 N(pad_1AB8)[] = {
|
||||
0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_80241AC0) = {
|
||||
.height = 32,
|
||||
.radius = 24,
|
||||
.onHit = EnemyNpcHit,
|
||||
.onDefeat = EnemyNpcDefeat,
|
||||
.level = 20,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241AEC)[] = {
|
||||
0x43E60000, 0x43480000, 0xC3700000, 0x43B40000, 0x43160000, 0xC30C0000, 0x43820000, 0x42C80000,
|
||||
0xC3700000, 0x43B40000, 0x42C80000, 0xC3DC0000, 0x43E60000, 0x42C80000, 0xC3700000, 0x43B40000,
|
||||
0x42C80000, 0xC30C0000, 0x43820000, 0x42C80000, 0xC3700000, 0x43B40000, 0x42C80000, 0xC3DC0000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241B4C)[] = {
|
||||
0xC2C80000, 0x43480000, 0xC2480000, 0x00000000, 0x43160000, 0xC3160000, 0x42C80000, 0x42C80000,
|
||||
0xC2480000, 0x00000000, 0x42C80000, 0x42480000, 0xC2C80000, 0x42C80000, 0xC2480000, 0x00000000,
|
||||
0x42C80000, 0xC3160000, 0x42C80000, 0x42C80000, 0xC2480000, 0x00000000, 0x42C80000, 0x42480000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241BAC)[] = {
|
||||
0x43B40000, 0x42C80000, 0xC3DC0000, 0x43AF0000, 0x42F00000, 0xC35C0000, 0x43960000, 0x42F00000,
|
||||
0xC3240000, 0x43200000, 0x42DC0000, 0xC3340000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241BDC)[] = {
|
||||
0x00000000, 0x42C80000, 0x42480000, 0x43480000, 0x42DC0000, 0x41E80000, 0x43670000, 0x42DC0000,
|
||||
0xC1900000, 0x42E60000, 0x42C80000, 0xC3160000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241C0C)[] = {
|
||||
0x438E8000, 0x42F00000, 0xC2D80000, 0x43B90000, 0x42C80000, 0xC3020000, 0x43E30000, 0x42700000,
|
||||
0xC1A00000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241C30)[] = {
|
||||
0x43838000, 0x42DC0000, 0xC2840000, 0x43B40000, 0x42B40000, 0x42480000, 0x43E30000, 0x42480000,
|
||||
0x41A00000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241C54)[] = {
|
||||
0x43C80000, 0x41F00000, 0xC2200000, 0x43960000, 0x42A00000, 0xC2200000, 0x43160000, 0x43480000,
|
||||
0xC2200000, 0x42C80000, 0x43AF0000, 0xC2200000,
|
||||
};
|
||||
|
||||
s32 N(vectorList_80241C84)[] = {
|
||||
0x43C80000, 0x41F00000, 0x42200000, 0x43960000, 0x42A00000, 0x42200000, 0x43160000, 0x43480000,
|
||||
0x42200000, 0x42C80000, 0x43AF0000, 0x42200000,
|
||||
};
|
||||
|
||||
Script N(80241CB4) = SCRIPT({
|
||||
loop {
|
||||
PlaySound(0x295);
|
||||
sleep SI_VAR(0);
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80241CF4) = SCRIPT({
|
||||
SI_VAR(0) = 5;
|
||||
SI_MAP_VAR(11) = spawn N(80241CB4);
|
||||
spawn {
|
||||
LoadPath(160, N(vectorList_80241AEC), 8, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU0, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
LoadPath(160, N(vectorList_80241B4C), 8, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU1, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
SI_MAP_VAR(10) = 1;
|
||||
});
|
||||
|
||||
Script N(80241E4C) = SCRIPT({
|
||||
spawn {
|
||||
LoadPath(30, N(vectorList_80241BAC), 4, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU0, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
LoadPath(45, N(vectorList_80241BDC), 4, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU1, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
kill SI_MAP_VAR(11);
|
||||
});
|
||||
|
||||
Script N(80241F80) = SCRIPT({
|
||||
SI_VAR(0) = 4;
|
||||
SI_MAP_VAR(11) = spawn N(80241CB4);
|
||||
spawn {
|
||||
LoadPath(35, N(vectorList_80241C0C), 3, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU0, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
LoadPath(35, N(vectorList_80241C30), 3, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU1, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802420C8) = SCRIPT({
|
||||
spawn {
|
||||
LoadPath(40, N(vectorList_80241C54), 4, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU0, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
SetNpcPos(NPC_LAKITU0, 0, -1000, 0);
|
||||
}
|
||||
LoadPath(40, N(vectorList_80241C84), 4, 0);
|
||||
loop {
|
||||
GetNextPathPos();
|
||||
SetNpcPos(NPC_LAKITU1, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
SetNpcPos(NPC_LAKITU1, 0, -1000, 0);
|
||||
sleep 40;
|
||||
kill SI_MAP_VAR(11);
|
||||
});
|
||||
|
||||
Script N(80242240) = SCRIPT({
|
||||
if (SI_SAVE_FLAG(1377) == 1) {
|
||||
return;
|
||||
}
|
||||
if (STORY_PROGRESS < STORY_CH6_GOT_MAGICAL_BEAN) {
|
||||
return;
|
||||
}
|
||||
if (SI_SAVE_FLAG(1375) == 0) {
|
||||
return;
|
||||
}
|
||||
SetNpcPos(NPC_LAKITU0, 460, 200, -240);
|
||||
SetNpcPos(NPC_LAKITU1, -100, 200, -50);
|
||||
loop {
|
||||
sleep 1;
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
if (SI_VAR(0) < 440) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
DisablePlayerInput(TRUE);
|
||||
SI_MAP_VAR(10) = 0;
|
||||
spawn N(80241CF4);
|
||||
SetCamType(0, 1, 0);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamSpeed(0, 90.0);
|
||||
SetCamPitch(0, 25.0, -7.0);
|
||||
SetCamDistance(0, 450);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 20;
|
||||
SI_VAR(0) = 270;
|
||||
SI_VAR(1) = 100;
|
||||
SI_VAR(2) = -87;
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamPitch(0, 14.0, -11.0);
|
||||
SetCamPosA(0, 87, 0);
|
||||
SetCamPosB(0, 0, -50);
|
||||
SetCamPosC(0, 87, 0);
|
||||
SetCamSpeed(0, 1.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 30;
|
||||
SetCamDistance(0, 150);
|
||||
SetCamPitch(0, 17.0, -16.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
loop {
|
||||
sleep 1;
|
||||
if (SI_MAP_VAR(10) == 1) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
NpcFaceNpc(NPC_LAKITU0, NPC_LAKITU1, 1);
|
||||
NpcFaceNpc(NPC_LAKITU1, NPC_LAKITU0, 1);
|
||||
spawn N(80241E4C);
|
||||
sleep 30;
|
||||
SpeakToPlayer(NPC_LAKITU0, NPC_ANIM(lakitu, Palette_00, Anim_16), NPC_ANIM(lakitu, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0088));
|
||||
NpcFaceNpc(NPC_LAKITU1, NPC_LAKITU0, 1);
|
||||
SpeakToPlayer(NPC_LAKITU1, NPC_ANIM(lakitu, Palette_00, Anim_16), NPC_ANIM(lakitu, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x0089));
|
||||
InterpNpcYaw(NPC_LAKITU0, 0, 1);
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_LAKITU0, NPC_ANIM(lakitu, Palette_00, Anim_16), NPC_ANIM(lakitu, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x008A));
|
||||
SpeakToPlayer(NPC_LAKITU1, NPC_ANIM(lakitu, Palette_00, Anim_16), NPC_ANIM(lakitu, Palette_00, Anim_1), 0, MESSAGE_ID(0x11, 0x008B));
|
||||
SetCamType(0, 1, 0);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamSpeed(0, 90.0);
|
||||
SetCamPitch(0, 14.0, -11.0);
|
||||
SetCamDistance(0, 450);
|
||||
SetCamPosA(0, 87, 0);
|
||||
SetCamPosB(0, 0, -50);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
spawn N(80241F80);
|
||||
SetNpcVar(0, 0, 1);
|
||||
});
|
||||
|
||||
Script N(idle_80242810) = SCRIPT({
|
||||
loop {
|
||||
GetSelfVar(0, SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
break loop;
|
||||
}
|
||||
sleep 1;
|
||||
}
|
||||
spawn {
|
||||
AdjustCam(0, 4.0, 0, 1000, 14.0, -11.0);
|
||||
}
|
||||
StartBossBattle(3);
|
||||
});
|
||||
|
||||
Script N(defeat_802428B8) = SCRIPT({
|
||||
GetBattleOutcome(SI_VAR(0));
|
||||
match SI_VAR(0) {
|
||||
== 0 {
|
||||
SetNpcPos(NPC_LAKITU0, 400, 20, -40);
|
||||
SetNpcPos(NPC_LAKITU1, 400, 20, 40);
|
||||
InterpNpcYaw(NPC_LAKITU0, 270, 0);
|
||||
InterpNpcYaw(NPC_LAKITU1, 270, 0);
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(2) += -60;
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamDistance(0, 900);
|
||||
SetCamPitch(0, 24.0, -4.0);
|
||||
SetCamPosA(0, -95.0, 0.0);
|
||||
SetCamPosB(0, 0.0, -50.0);
|
||||
SetCamSpeed(0, 90.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
await N(802420C8);
|
||||
ResetCam(0, 4.0);
|
||||
SI_SAVE_FLAG(1377) = 1;
|
||||
SI_MAP_VAR(0) = 1;
|
||||
DisablePlayerInput(FALSE);
|
||||
}
|
||||
== 1 {}
|
||||
== 2 {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(defeat_80242AC4) = SCRIPT({
|
||||
GetBattleOutcome(SI_VAR(0));
|
||||
match SI_VAR(0) {
|
||||
== 0 {
|
||||
0:
|
||||
if (SI_MAP_VAR(0) == 0) {
|
||||
sleep 1;
|
||||
goto 0;
|
||||
}
|
||||
}
|
||||
== 1 {}
|
||||
== 2 {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(init_80242B58) = SCRIPT({
|
||||
SetNpcPos(NPC_LAKITU0, 0, -1000, 0);
|
||||
if (SI_SAVE_FLAG(1377) == 0) {
|
||||
if (STORY_PROGRESS >= STORY_CH6_GOT_MAGICAL_BEAN) {
|
||||
if (SI_SAVE_FLAG(1375) == 1) {
|
||||
SI_MAP_VAR(0) = 0;
|
||||
BindNpcIdle(NPC_SELF, N(idle_80242810));
|
||||
BindNpcDefeat(NPC_SELF, N(defeat_802428B8));
|
||||
SetNpcPos(NPC_LAKITU0, 350, 120, -220);
|
||||
InterpNpcYaw(NPC_LAKITU0, 270, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(init_80242C38) = SCRIPT({
|
||||
SetNpcPos(NPC_LAKITU1, 0, -1000, 0);
|
||||
if (SI_SAVE_FLAG(1377) == 0) {
|
||||
if (STORY_PROGRESS >= STORY_CH6_GOT_MAGICAL_BEAN) {
|
||||
if (SI_SAVE_FLAG(1375) == 1) {
|
||||
BindNpcDefeat(NPC_SELF, N(defeat_80242AC4));
|
||||
SetNpcPos(NPC_LAKITU1, 200, 110, 29);
|
||||
InterpNpcYaw(NPC_LAKITU1, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
StaticNpc N(npcGroup_80242CF4)[] = {
|
||||
{
|
||||
.id = NPC_LAKITU0,
|
||||
.settings = &N(npcSettings_80241AC0),
|
||||
.pos = { 553.0f, 60.0f, 52.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_40000,
|
||||
.init = &N(init_80242B58),
|
||||
.yaw = 270,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 25,
|
||||
.itemDrops = {
|
||||
{ ITEM_SUPER_SHROOM, 2, 0 },
|
||||
{ ITEM_MAPLE_SYRUP, 2, 0 },
|
||||
{ ITEM_THUNDER_RAGE, 2, 0 },
|
||||
{ ITEM_STOP_WATCH, 2, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(3),
|
||||
.maxCoinBonus = 2,
|
||||
.animations = {
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_2),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_3),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_3),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_4),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_4),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_3),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
},
|
||||
},
|
||||
{
|
||||
.id = NPC_LAKITU1,
|
||||
.settings = &N(npcSettings_80241AC0),
|
||||
.pos = { 553.0f, 60.0f, 52.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_40000,
|
||||
.init = &N(init_80242C38),
|
||||
.yaw = 270,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 25,
|
||||
.itemDrops = {
|
||||
{ ITEM_SUPER_SHROOM, 2, 0 },
|
||||
{ ITEM_MAPLE_SYRUP, 2, 0 },
|
||||
{ ITEM_THUNDER_RAGE, 2, 0 },
|
||||
{ ITEM_STOP_WATCH, 2, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(2),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(3),
|
||||
.maxCoinBonus = 2,
|
||||
.animations = {
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_2),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_3),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_3),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_4),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_4),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_3),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
NPC_ANIM(lakitu, Palette_00, Anim_1),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
NpcGroupList N(npcGroupList_802430D4) = {
|
||||
NPC_GROUP(N(npcGroup_80242CF4), BATTLE_ID(24, 7, 0, 9)),
|
||||
{},
|
||||
};
|
||||
|
||||
static s32 N(pad_30EC) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(makeEntities) = SCRIPT({
|
||||
MakeEntity(0x802EA0E8, -220, 60, -75, 0, MAKE_ENTITY_END);
|
||||
AssignBlockFlag(SI_SAVE_FLAG(1384));
|
||||
});
|
||||
|
||||
#include "world/common/SetPlayerStatusAnimFlags100000.inc.c"
|
||||
|
||||
#include "world/common/GetCurrentFloor.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_11/CBDCD0", func_80240034_CBDD04);
|
||||
#include "world/common/UnkFunc25.inc.c"
|
||||
|
||||
#include "world/common/GetEntryPos.inc.c"
|
||||
|
||||
@ -12,4 +847,9 @@ INCLUDE_ASM(s32, "world/area_flo/flo_11/CBDCD0", func_80240034_CBDD04);
|
||||
|
||||
#include "world/common/SomeXYZFunc2.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_11/CBDCD0", func_802402E0_CBDFB0);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_802402E0_CBDFB0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(0, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -2,3 +2,17 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_11
|
||||
|
||||
ApiStatus N(GetCurrentCameraYawClamped180)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetCurrentFloor)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(GetEntryPos)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SetPlayerStatusAnimFlags100000)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(SomeXYZFunc2)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc25)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802402E0_CBDFB0)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_802430D4);
|
||||
extern Script N(80240F1C);
|
||||
extern Script N(80242240);
|
||||
extern Script N(main);
|
||||
extern Script N(makeEntities);
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_12.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_12/CC0E30", func_80240000_CC0E30);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240000_CC0E30)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(0, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,32 +1,491 @@
|
||||
#include "flo_12.h"
|
||||
#include "message_ids.h"
|
||||
#include "sprite/npc/rosie.h"
|
||||
|
||||
enum {
|
||||
NPC_ROSIE0,
|
||||
NPC_ROSIE1,
|
||||
};
|
||||
|
||||
static N(D_802429E0)[112];
|
||||
|
||||
EntryList N(entryList) = {
|
||||
{ 280.0f, 0.0f, 0.0f, 270.0f },
|
||||
{ 280.0f, 0.0f, 0.0f, 270.0f },
|
||||
};
|
||||
|
||||
MapConfig N(config) = {
|
||||
.main = &N(main),
|
||||
.entryList = &N(entryList),
|
||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_flo_12_tattle },
|
||||
};
|
||||
|
||||
Script N(80240750) = SCRIPT({
|
||||
GetEntryID(SI_VAR(0));
|
||||
if (SI_VAR(0) == 1) {
|
||||
SetMusicTrack(0, SONG_SUNSHINE_RETURNS, 0, 8);
|
||||
} else {
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8);
|
||||
}
|
||||
else {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_SUNNY, 0, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(8024080C) = SCRIPT({
|
||||
func_802D5FF8(137, 3);
|
||||
});
|
||||
|
||||
Script N(80240830) = SCRIPT({
|
||||
FadeOutMusic(0, 250);
|
||||
sleep 10;
|
||||
func_802D5FD8();
|
||||
});
|
||||
|
||||
static s32 N(pad_86C) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(80240870) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(exitWalk_80240B1C) = EXIT_WALK_SCRIPT(60, 0, "flo_11", 1);
|
||||
|
||||
Script N(80240B78) = SCRIPT({
|
||||
bind N(exitWalk_80240B1C) to TRIGGER_FLOOR_ABOVE 0;
|
||||
});
|
||||
|
||||
Script N(main) = SCRIPT({
|
||||
WORLD_LOCATION = LOCATION_FLOWER_FIELDS;
|
||||
SetSpriteShading(-1);
|
||||
SetCamLeadPlayer(0, 0);
|
||||
SetCamPerspective(0, 3, 25, 16, 4096);
|
||||
SetCamBGColor(0, 0, 0, 0);
|
||||
SetCamEnabled(0, 1);
|
||||
SI_AREA_FLAG(22) = 0;
|
||||
MakeNpcs(0, N(npcGroupList_802429B8));
|
||||
ModifyColliderFlags(3, 11, 0x00000006);
|
||||
SI_VAR(0) = -65;
|
||||
SI_VAR(1) = -210;
|
||||
SI_VAR(2) = 90;
|
||||
SI_VAR(3) = -110;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80240870);
|
||||
SI_VAR(0) = -200;
|
||||
SI_VAR(1) = 130;
|
||||
SI_VAR(2) = -80;
|
||||
SI_VAR(3) = 170;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80240870);
|
||||
SI_VAR(0) = -270;
|
||||
SI_VAR(1) = -80;
|
||||
SI_VAR(2) = -225;
|
||||
SI_VAR(3) = 125;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80240870);
|
||||
GetEntryID(SI_VAR(0));
|
||||
if (SI_VAR(0) == 1) {
|
||||
spawn N(802419F4);
|
||||
} else {
|
||||
ModifyColliderFlags(0, 1, 0x7FFFFE00);
|
||||
SI_VAR(0) = N(80240B78);
|
||||
spawn EnterWalk;
|
||||
}
|
||||
await N(80240750);
|
||||
if (STORY_PROGRESS >= STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) {
|
||||
N(func_80240000_CC0E30)();
|
||||
}
|
||||
});
|
||||
|
||||
static s32 N(pad_E28)[] = {
|
||||
0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_80240E30) = {
|
||||
.height = 56,
|
||||
.radius = 40,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_80240E5C) = {
|
||||
.height = 24,
|
||||
.radius = 24,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
#include "world/common/foliage.inc.c"
|
||||
|
||||
s32** N(D_802417EC_CC261C) = NULL;
|
||||
|
||||
Script N(802417F0) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 0);
|
||||
return;
|
||||
});
|
||||
|
||||
Script N(80241820) = SCRIPT({
|
||||
ShowGotItem(SI_VAR(0), 1, 16);
|
||||
return;
|
||||
});
|
||||
|
||||
s32 N(D_80241850_CC2680) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
s32 N(D_80241854_CC2684) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(80241858) = SCRIPT({
|
||||
SI_VAR(9) = SI_VAR(1);
|
||||
func_802D6420();
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
match SI_VAR(0) {
|
||||
== 0 {}
|
||||
== -1 {}
|
||||
else {
|
||||
RemoveKeyItemAt(SI_VAR(1));
|
||||
GetPlayerPos(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
N(AddPlayerHandsOffset)(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
SI_VAR(0) |= (const) 0x50000;
|
||||
MakeItemEntity(SI_VAR(0), SI_VAR(3), SI_VAR(4), SI_VAR(5), 1, 0);
|
||||
SetPlayerAnimation(0x60005);
|
||||
sleep 30;
|
||||
SetPlayerAnimation(ANIM_10002);
|
||||
RemoveItemEntity(SI_VAR(0));
|
||||
}
|
||||
}
|
||||
N(func_80240614_CC1444)(SI_VAR(10));
|
||||
func_802D6954();
|
||||
unbind;
|
||||
});
|
||||
|
||||
Script N(8024199C) = {
|
||||
SI_CMD(ScriptOpcode_CALL, N(func_8024064C_CC147C), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_BIND_PADLOCK, N(80241858), 0x10, 0, N(D_802429E0), 0, 1),
|
||||
SI_CMD(ScriptOpcode_CALL, N(func_802405C0_CC13F0), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_RETURN),
|
||||
SI_CMD(ScriptOpcode_END)
|
||||
};
|
||||
|
||||
s32 N(D_802419EC_CC281C)[] = {
|
||||
0x0000001E, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(802419F4) = SCRIPT({
|
||||
DisablePlayerInput(TRUE);
|
||||
DisablePlayerPhysics(TRUE);
|
||||
GetNpcPos(NPC_ROSIE0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
UseSettingsFrom(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetPanTarget(0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamDistance(0, 350);
|
||||
SetCamPitch(0, 17.0, -9.5);
|
||||
SetCamPosA(0, 0, 0);
|
||||
SetCamPosB(0, 0, -50);
|
||||
SetCamSpeed(0, 90.0);
|
||||
PanToTarget(0, 0, 1);
|
||||
WaitForCam(0, 1.0);
|
||||
sleep 20;
|
||||
SpeakToPlayer(NPC_ROSIE0, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x00C7));
|
||||
sleep 10;
|
||||
GotoMap("flo_03", 2);
|
||||
sleep 100;
|
||||
});
|
||||
|
||||
Script N(80241B6C) = SCRIPT({
|
||||
sleep 10;
|
||||
SetNpcFlagBits(NPC_ROSIE0, ((NPC_FLAG_100)), TRUE);
|
||||
PlayerMoveTo(-5, 20, 20);
|
||||
SetNpcFlagBits(NPC_ROSIE0, ((NPC_FLAG_100)), FALSE);
|
||||
PlayerFaceNpc(0, 1);
|
||||
});
|
||||
|
||||
Script N(80241BE4) = SCRIPT({
|
||||
sleep 10;
|
||||
SetNpcFlagBits(NPC_ROSIE0, ((NPC_FLAG_100)), TRUE);
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_100)), TRUE);
|
||||
PlayerMoveTo(-5, 20, 20);
|
||||
SetNpcFlagBits(NPC_ROSIE0, ((NPC_FLAG_100)), FALSE);
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_100)), FALSE);
|
||||
PlayerFaceNpc(0, 1);
|
||||
});
|
||||
|
||||
Script N(interact_80241C8C) = SCRIPT({
|
||||
await N(8024080C);
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_GOT_CRYSTAL_BERRY {
|
||||
match SI_SAVE_FLAG(1378) {
|
||||
== 0 {
|
||||
spawn N(80241B6C);
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(0) += 30;
|
||||
SetCamProperties(0, 4.0, SI_VAR(0), SI_VAR(1), SI_VAR(2), 325, 19.0, -9.5);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_3), NPC_ANIM(rosie, Palette_00, Anim_1), 5, MESSAGE_ID(0x11, 0x008C));
|
||||
ShowChoice(MESSAGE_ID(0x1E, 0x0011));
|
||||
sleep 10;
|
||||
match SI_VAR(0) {
|
||||
== 0 {
|
||||
ContinueSpeech(-1, NPC_ANIM(rosie, Palette_00, Anim_3), NPC_ANIM(rosie, Palette_00, Anim_1), 5, MESSAGE_ID(0x11, 0x008D));
|
||||
}
|
||||
== 1 {
|
||||
ContinueSpeech(-1, NPC_ANIM(rosie, Palette_00, Anim_3), NPC_ANIM(rosie, Palette_00, Anim_1), 5, MESSAGE_ID(0x11, 0x008E));
|
||||
}
|
||||
}
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_100)), FALSE);
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_5));
|
||||
sleep 10;
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_2));
|
||||
MakeItemEntity(ITEM_WATER_STONE, -33, 14, 19, 1, 1380);
|
||||
sleep 10;
|
||||
match SI_SAVE_FLAG(1375) {
|
||||
== 0 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_4), 5, MESSAGE_ID(0x11, 0x008F));
|
||||
}
|
||||
== 1 {
|
||||
SetPlayerAnimation(0x60002);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_4), 5, MESSAGE_ID(0x11, 0x008F));
|
||||
SetPlayerAnimation(0x60005);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0091));
|
||||
SetPlayerAnimation(ANIM_PRAY);
|
||||
sleep 40;
|
||||
SetPlayerAnimation(ANIM_10002);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0092));
|
||||
SI_SAVE_FLAG(1379) = 1;
|
||||
}
|
||||
}
|
||||
SI_SAVE_FLAG(1378) = 1;
|
||||
}
|
||||
== 1 {
|
||||
match SI_SAVE_FLAG(1379) {
|
||||
== 0 {
|
||||
if (SI_SAVE_FLAG(1375) == 1) {
|
||||
spawn N(80241BE4);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_4), 5, MESSAGE_ID(0x11, 0x0090));
|
||||
SetPlayerAnimation(0x60005);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0091));
|
||||
SetPlayerAnimation(ANIM_PRAY);
|
||||
sleep 40;
|
||||
SetPlayerAnimation(ANIM_10002);
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0092));
|
||||
SI_SAVE_FLAG(1379) = 1;
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_4), 5, MESSAGE_ID(0x11, 0x0090));
|
||||
}
|
||||
}
|
||||
== 1 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0093));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
< 48 {
|
||||
FindKeyItem(ITEM_CRYSTAL_BERRY, SI_VAR(0));
|
||||
if (SI_VAR(0) != -1) {
|
||||
spawn N(80241BE4);
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(0) += 30;
|
||||
SetCamProperties(0, 4.0, SI_VAR(0), SI_VAR(1), SI_VAR(2), 325, 19.0, -9.5);
|
||||
}
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0094));
|
||||
SI_VAR(0) = N(D_802419EC_CC281C);
|
||||
SI_VAR(1) = 0;
|
||||
await N(8024199C);
|
||||
match SI_VAR(0) {
|
||||
<= 0 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0093));
|
||||
}
|
||||
else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0095));
|
||||
RemoveItemEntity(SI_VAR(7));
|
||||
MakeItemEntity(ITEM_CRYSTAL_BERRY, -33, 14, 19, 1, 1380);
|
||||
SI_VAR(0) = 87;
|
||||
SI_VAR(1) = 1;
|
||||
await N(802417F0);
|
||||
AddKeyItem(ITEM_WATER_STONE);
|
||||
sleep 10;
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0096));
|
||||
SI_AREA_FLAG(22) = 1;
|
||||
STORY_PROGRESS = STORY_CH6_GOT_WATER_STONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
< 53 {
|
||||
match SI_AREA_FLAG(22) {
|
||||
== 0 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0097));
|
||||
}
|
||||
== 1 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0096));
|
||||
}
|
||||
}
|
||||
}
|
||||
< 60 {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0098));
|
||||
}
|
||||
else {
|
||||
SpeakToPlayer(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_4), NPC_ANIM(rosie, Palette_00, Anim_2), 5, MESSAGE_ID(0x11, 0x0099));
|
||||
}
|
||||
}
|
||||
ResetCam(0, 4.0);
|
||||
await N(80240830);
|
||||
});
|
||||
|
||||
Script N(init_802423D0) = SCRIPT({
|
||||
BindNpcInteract(NPC_SELF, N(interact_80241C8C));
|
||||
GetNpcPos(NPC_SELF, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(0) += 35;
|
||||
SetNpcPos(NPC_ROSIE1, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((0x00000002)), TRUE);
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_HAS_SHADOW)), TRUE);
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_GOT_CRYSTAL_BERRY {
|
||||
if (SI_SAVE_FLAG(1378) == 1) {
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_100)), FALSE);
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_2));
|
||||
MakeItemEntity(ITEM_WATER_STONE, -33, 14, 19, 1, 1380);
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
}
|
||||
}
|
||||
< STORY_CH6_GOT_WATER_STONE {
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_100)), FALSE);
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_2));
|
||||
MakeItemEntity(ITEM_WATER_STONE, -33, 14, 19, 1, 1380);
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
}
|
||||
else {
|
||||
SetNpcFlagBits(NPC_ROSIE1, ((NPC_FLAG_100)), FALSE);
|
||||
SetNpcAnimation(NPC_SELF, NPC_ANIM(rosie, Palette_00, Anim_2));
|
||||
MakeItemEntity(ITEM_CRYSTAL_BERRY, -33, 14, 19, 1, 1380);
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
StaticNpc N(npcGroup_802425D8)[] = {
|
||||
{
|
||||
.id = NPC_ROSIE0,
|
||||
.settings = &N(npcSettings_80240E30),
|
||||
.pos = { -70.0f, 0.0f, 20.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_400000,
|
||||
.init = &N(init_802423D0),
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.heartDrops = NO_DROPS,
|
||||
.flowerDrops = NO_DROPS,
|
||||
.animations = {
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
},
|
||||
.tattle = MESSAGE_ID(0x1A, 0x00E0),
|
||||
},
|
||||
{
|
||||
.id = NPC_ROSIE1,
|
||||
.settings = &N(npcSettings_80240E5C),
|
||||
.pos = { -70.0f, 0.0f, 20.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_GRAVITY,
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.heartDrops = NO_DROPS,
|
||||
.flowerDrops = NO_DROPS,
|
||||
.animations = {
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
NPC_ANIM(rosie, Palette_00, Anim_1),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
NpcGroupList N(npcGroupList_802429B8) = {
|
||||
NPC_GROUP(N(npcGroup_802425D8), BATTLE_ID(0, 0, 0, 0)),
|
||||
{},
|
||||
};
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_12/CC0E70", func_8024027C_CC10AC);
|
||||
/*
|
||||
ApiStatus N(func_8024027C_CC10AC)(ScriptInstance* script, s32 isInitialCall) {
|
||||
s32** ptr = &N(D_80241C68_BE09F8);
|
||||
s32 i;
|
||||
s32* test;
|
||||
|
||||
if (*ptr == NULL) {
|
||||
i = heap_malloc(16 * sizeof(s32));
|
||||
*ptr = i;
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
*test++ = script->varTable[i];
|
||||
if (N(D_802417EC_CC261C) == NULL) {
|
||||
N(D_802417EC_CC261C) = heap_malloc(16 * sizeof(s32));
|
||||
for (i = 0; i < 16; i++) {
|
||||
N(D_802417EC_CC261C)[i] = script->varTable[i];
|
||||
}
|
||||
} else {
|
||||
for (i = 0, test = *ptr; i < 16; i++) {
|
||||
script->varTable[i] = *test++;
|
||||
for (i = 0; i < 16; i++) {
|
||||
script->varTable[i] = N(D_802417EC_CC261C)[i];
|
||||
}
|
||||
ptr = &N(D_80241C68_BE09F8);
|
||||
heap_free(*ptr);
|
||||
*ptr = NULL;
|
||||
heap_free(N(D_802417EC_CC261C));
|
||||
N(D_802417EC_CC261C) = NULL;
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/GetItemName.inc.c"
|
||||
|
||||
@ -34,38 +493,45 @@ ApiStatus N(func_8024027C_CC10AC)(ScriptInstance* script, s32 isInitialCall) {
|
||||
|
||||
#include "world/common/AddPlayerHandsOffset.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_12/CC0E70", func_802405C0_CC13F0);
|
||||
/*
|
||||
ApiStatus N(func_802405C0_CC13F0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr;
|
||||
|
||||
if (isInitialCall) {
|
||||
ptr = &D_80241CCC_BE0A5C;
|
||||
*ptr = 0;
|
||||
N(D_80241850_CC2680) = FALSE;
|
||||
}
|
||||
|
||||
ptr = &D_80241CCC_BE0A5C;
|
||||
if (*ptr != NULL) {
|
||||
ptr = &D_80241CCC_BE0A5C;
|
||||
*ptr = 0;
|
||||
set_variable(script, *args, D_80241CD0_BE0A60);
|
||||
if (N(D_80241850_CC2680)) {
|
||||
N(D_80241850_CC2680) = FALSE;
|
||||
set_variable(script, *args, N(D_80241854_CC2684));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
*/
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_12/CC0E70", func_80240614_CC1444);
|
||||
/*
|
||||
ApiStatus N(func_80240614_CC1444)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
|
||||
D_80241CD0_BE0A60 = get_variable(script, *args);
|
||||
D_80241CCC_BE0A5C = 1;
|
||||
N(D_80241854_CC2684) = get_variable(script, *args);
|
||||
N(D_80241850_CC2680) = TRUE;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_12/CC0E70", func_8024064C_CC147C);
|
||||
ApiStatus N(func_8024064C_CC147C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr = get_variable(script, *args);
|
||||
s32 i;
|
||||
|
||||
if (ptr != NULL) {
|
||||
for (i = 0; ptr[i] != 0; i++) {
|
||||
N(D_802429E0)[i] = ptr[i];
|
||||
}
|
||||
N(D_802429E0)[i] = 0;
|
||||
} else {
|
||||
for (i = 0; i < 0x70; i++) {
|
||||
N(D_802429E0)[i] = i + 16;
|
||||
N(D_802429E0)[112] = 0;
|
||||
}
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -2,3 +2,14 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_12
|
||||
|
||||
ApiStatus N(AddPlayerHandsOffset)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(TransformFoliage)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240000_CC0E30)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802405C0_CC13F0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80240614_CC1444)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_8024064C_CC147C)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_802429B8);
|
||||
extern Script N(802419F4);
|
||||
extern Script N(main);
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_13.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_13/CC3810", func_80240000_CC3810);
|
||||
void func_80072950();
|
||||
|
||||
ApiStatus N(func_80240000_CC3810)(ScriptInstance* script, s32 isInitialCall) {
|
||||
func_80072950(0, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,31 @@
|
||||
#include "flo_13.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_13/CC6DE0", func_802435D0_CC6DE0);
|
||||
typedef struct {
|
||||
/* 0x00 */ s32* unk_00;
|
||||
/* 0x04 */ s32* unk_04;
|
||||
/* 0x08 */ s16 unk_08;
|
||||
/* 0x0A */ s16 unk_0A;
|
||||
/* 0x0C */ s32 unk_0C;
|
||||
/* 0x10 */ s32 unk_10;
|
||||
} N(Unk_bss_struct);
|
||||
|
||||
static s8 N(D_80247B00)[0x200];
|
||||
static s8 N(D_80247D00)[0x3D90];
|
||||
static N(Unk_bss_struct) N(D_8024BA90);
|
||||
|
||||
ApiStatus N(func_802435D0_CC6DE0)(ScriptInstance *script, s32 isInitialCall) {
|
||||
s32 var;
|
||||
void* temp_s0 = load_asset_by_name("party_pokopi", &var);
|
||||
|
||||
decode_yay0(temp_s0, N(D_80247B00));
|
||||
general_heap_free(temp_s0);
|
||||
|
||||
N(D_8024BA90).unk_00 = N(D_80247D00);
|
||||
N(D_8024BA90).unk_08 = 0x96;
|
||||
N(D_8024BA90).unk_0A = 0x69;
|
||||
N(D_8024BA90).unk_0C = 2;
|
||||
N(D_8024BA90).unk_04 = N(D_80247B00);
|
||||
N(D_8024BA90).unk_10 = 1;
|
||||
set_message_images(&N(D_8024BA90));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -2,3 +2,15 @@
|
||||
#include "map.h"
|
||||
|
||||
#define NAMESPACE flo_13
|
||||
|
||||
ApiStatus N(func_80240000_CC3810)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc41)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80241DB8_CC55C8)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_80242A6C_CC627C)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(UnkFunc42)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802433C0_CC6BD0)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802434D4_CC6CE4)(ScriptInstance* script, s32 isInitialCall);
|
||||
ApiStatus N(func_802435D0_CC6DE0)(ScriptInstance* script, s32 isInitialCall);
|
||||
|
||||
extern NpcGroupList N(npcGroupList_80247984);
|
||||
extern Script N(main);
|
@ -1,19 +1,688 @@
|
||||
#include "flo_14.h"
|
||||
#include "message_ids.h"
|
||||
|
||||
EntryList N(entryList) = {
|
||||
{ 720.0f, 0.0f, 0.0f, 270.0f },
|
||||
{ -720.0f, 0.0f, 0.0f, 90.0f },
|
||||
};
|
||||
|
||||
MapConfig N(config) = {
|
||||
.main = &N(main),
|
||||
.entryList = &N(entryList),
|
||||
.entryCount = ENTRY_COUNT(N(entryList)),
|
||||
.background = &gBackgroundImage,
|
||||
.tattle = { MSG_flo_14_tattle },
|
||||
};
|
||||
|
||||
Script N(802423F0) = SCRIPT({
|
||||
match STORY_PROGRESS {
|
||||
< STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8);
|
||||
}
|
||||
else {
|
||||
SetMusicTrack(0, SONG_FLOWER_FIELDS_SUNNY, 0, 8);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Script N(updateTexturePan_80242460) = SCRIPT({
|
||||
group 0;
|
||||
if (SI_VAR(5) == 1) {
|
||||
if (SI_VAR(6) == 1) {
|
||||
if (SI_VAR(7) == 1) {
|
||||
if (SI_VAR(8) == 1) {
|
||||
N(UnkTexturePanFunc)();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
N(UnkTexturePanFunc2)();
|
||||
});
|
||||
|
||||
Script N(exitWalk_802424FC) = EXIT_WALK_SCRIPT(60, 0, "flo_00", 1);
|
||||
|
||||
Script N(exitWalk_80242558) = EXIT_WALK_SCRIPT(60, 1, "flo_13", 0);
|
||||
|
||||
Script N(802425B4) = SCRIPT({
|
||||
bind N(exitWalk_80242558) to TRIGGER_FLOOR_ABOVE 0;
|
||||
bind N(exitWalk_802424FC) to TRIGGER_FLOOR_ABOVE 4;
|
||||
});
|
||||
|
||||
s32 N(lavaResetList_802425FC)[] = {
|
||||
0x0000001F, 0xC3FA0000, 0x00000000, 0xC2B40000, 0x00000019, 0xC3FF0000, 0x00000000, 0x00000000,
|
||||
0x00000020, 0xC3FA0000, 0x00000000, 0x42DC0000, 0x00000021, 0xC37A0000, 0x00000000, 0xC2B40000,
|
||||
0x0000001A, 0xC3700000, 0x00000000, 0x00000000, 0x00000022, 0xC37A0000, 0x00000000, 0x42DC0000,
|
||||
0x0000001B, 0xC2480000, 0x00000000, 0x41C80000, 0x0000001C, 0x428C0000, 0x42700000, 0xC2BE0000,
|
||||
0x0000001D, 0x43CD0000, 0x42700000, 0xC2BE0000, 0x0000001E, 0x44098000, 0x00000000, 0x42480000,
|
||||
0x00000023, 0xC2480000, 0x00000000, 0x42DC0000, 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(main) = SCRIPT({
|
||||
WORLD_LOCATION = LOCATION_FLOWER_FIELDS;
|
||||
SetSpriteShading(-1);
|
||||
SetCamPerspective(0, 3, 25, 16, 4096);
|
||||
SetCamBGColor(0, 0, 0, 0);
|
||||
SetCamEnabled(0, 1);
|
||||
MakeNpcs(0, N(npcGroupList_80244F00));
|
||||
spawn N(80244F30);
|
||||
ModifyColliderFlags(3, 9, 0x00000002);
|
||||
spawn {
|
||||
ResetFromLava(N(lavaResetList_802425FC));
|
||||
}
|
||||
EnableTexPanning(29, 1);
|
||||
EnableTexPanning(31, 1);
|
||||
EnableTexPanning(32, 1);
|
||||
EnableTexPanning(35, 1);
|
||||
EnableTexPanning(36, 1);
|
||||
EnableTexPanning(39, 1);
|
||||
EnableTexPanning(41, 1);
|
||||
EnableTexPanning(43, 1);
|
||||
EnableTexPanning(45, 1);
|
||||
EnableTexPanning(47, 1);
|
||||
EnableTexPanning(49, 1);
|
||||
EnableTexPanning(51, 1);
|
||||
EnableTexPanning(53, 1);
|
||||
EnableTexPanning(30, 1);
|
||||
EnableTexPanning(33, 1);
|
||||
EnableTexPanning(34, 1);
|
||||
EnableTexPanning(37, 1);
|
||||
EnableTexPanning(38, 1);
|
||||
EnableTexPanning(42, 1);
|
||||
EnableTexPanning(44, 1);
|
||||
EnableTexPanning(46, 1);
|
||||
EnableTexPanning(48, 1);
|
||||
EnableTexPanning(50, 1);
|
||||
EnableTexPanning(52, 1);
|
||||
EnableTexPanning(54, 1);
|
||||
spawn {
|
||||
SI_VAR(0) = 1;
|
||||
SI_VAR(1) = 140;
|
||||
SI_VAR(2) = 0;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 1;
|
||||
SI_VAR(6) = 0;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80242460);
|
||||
}
|
||||
spawn {
|
||||
SI_VAR(0) = 2;
|
||||
SI_VAR(1) = -200;
|
||||
SI_VAR(2) = 0;
|
||||
SI_VAR(3) = 0;
|
||||
SI_VAR(4) = 0;
|
||||
SI_VAR(5) = 1;
|
||||
SI_VAR(6) = 0;
|
||||
SI_VAR(7) = 0;
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(9) = 0;
|
||||
SI_VAR(10) = 0;
|
||||
SI_VAR(11) = 0;
|
||||
SI_VAR(12) = 0;
|
||||
spawn N(updateTexturePan_80242460);
|
||||
}
|
||||
spawn N(80243E78);
|
||||
spawn N(80245224);
|
||||
ModifyColliderFlags(0, 1, 0x7FFFFE00);
|
||||
ModifyColliderFlags(0, 5, 0x7FFFFE00);
|
||||
SI_VAR(0) = N(802425B4);
|
||||
spawn EnterWalk;
|
||||
await N(802423F0);
|
||||
if (STORY_PROGRESS >= STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) {
|
||||
N(func_8024030C_CCB61C)();
|
||||
}
|
||||
});
|
||||
|
||||
static s32 N(pad_2BF4)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(80242C00) = SCRIPT({
|
||||
group 11;
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
SI_VAR(11) = SI_VAR(1);
|
||||
SI_VAR(12) = SI_VAR(2);
|
||||
SI_VAR(13) = SI_VAR(3);
|
||||
SI_VAR(14) = SI_VAR(4);
|
||||
SI_VAR(12) -= SI_VAR(0);
|
||||
SI_VAR(13) -= SI_VAR(1);
|
||||
SI_VAR(0) = (float) SI_VAR(12);
|
||||
SI_VAR(0) /= 100.0;
|
||||
SI_VAR(15) = 100.0;
|
||||
SI_VAR(15) /= (float) SI_VAR(0);
|
||||
SI_VAR(15) += 11;
|
||||
SI_VAR(5) = 200;
|
||||
SI_VAR(5) /= SI_VAR(15);
|
||||
SI_VAR(5) += 1;
|
||||
loop SI_VAR(5) {
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
RandInt(199, SI_VAR(2));
|
||||
SI_VAR(3) = 210;
|
||||
SI_VAR(3) -= SI_VAR(2);
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
SI_VAR(2) += SI_VAR(14);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(2), SI_VAR(1), SI_VAR(3), 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
sleep SI_VAR(15);
|
||||
0:
|
||||
RandInt(SI_VAR(12), SI_VAR(0));
|
||||
RandInt(SI_VAR(13), SI_VAR(1));
|
||||
SI_VAR(0) += SI_VAR(10);
|
||||
SI_VAR(1) += SI_VAR(11);
|
||||
PlayEffect(0xD, SI_VAR(0), SI_VAR(14), SI_VAR(1), 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep SI_VAR(15);
|
||||
goto 0;
|
||||
});
|
||||
|
||||
Script N(80242EAC) = SCRIPT({
|
||||
SI_VAR(9) = SI_VAR(6);
|
||||
SI_VAR(8) = SI_VAR(5);
|
||||
SI_VAR(7) = SI_VAR(4);
|
||||
SI_VAR(6) = SI_VAR(3);
|
||||
SI_VAR(5) = SI_VAR(2);
|
||||
SI_VAR(4) = SI_VAR(1);
|
||||
SI_VAR(3) = SI_VAR(0);
|
||||
EnableModel(SI_VAR(6), 0);
|
||||
0:
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
N(UnkFunc43)();
|
||||
if (SI_VAR(0) == 0) {
|
||||
sleep 1;
|
||||
goto 0;
|
||||
}
|
||||
spawn {
|
||||
sleep 5;
|
||||
EnableModel(SI_VAR(6), 1);
|
||||
}
|
||||
if (SI_VAR(10) != 0) {
|
||||
spawn {
|
||||
sleep 5;
|
||||
SI_VAR(0) = SI_VAR(3);
|
||||
SI_VAR(1) = SI_VAR(4);
|
||||
SI_VAR(2) = SI_VAR(5);
|
||||
SI_VAR(1) += 10;
|
||||
SI_VAR(2) += 8;
|
||||
PlayEffect(0x11, 4, SI_VAR(0), SI_VAR(1), SI_VAR(2), 15, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sleep 15;
|
||||
SI_VAR(1) -= 10;
|
||||
MakeItemEntity(SI_VAR(10), SI_VAR(0), SI_VAR(1), SI_VAR(2), 14, 0);
|
||||
}
|
||||
}
|
||||
spawn {
|
||||
sleep 10;
|
||||
PlaySoundAt(0xF8, 0, SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
}
|
||||
MakeLerp(0, 180, 20, 2);
|
||||
1:
|
||||
UpdateLerp();
|
||||
RotateModel(SI_VAR(8), SI_VAR(0), 1, 0, 0);
|
||||
RotateModel(SI_VAR(9), SI_VAR(0), 1, 0, 0);
|
||||
if (SI_VAR(1) == 1) {
|
||||
sleep 1;
|
||||
goto 1;
|
||||
}
|
||||
EnableModel(SI_VAR(7), 0);
|
||||
});
|
||||
|
||||
s32 N(D_802431CC_CCE4DC) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(802431D0) = SCRIPT({
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
MakeLerp(SI_VAR(1), 48, 15, 0);
|
||||
loop {
|
||||
UpdateLerp();
|
||||
GetPlayerPos(SI_VAR(2), SI_VAR(3), SI_VAR(4));
|
||||
SetCamTarget(0, SI_VAR(2), SI_VAR(0), SI_VAR(4));
|
||||
sleep 1;
|
||||
if (SI_VAR(1) == 0) {
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
loop {
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SetCamTarget(0, SI_VAR(0), 48, SI_VAR(2));
|
||||
sleep 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(802432E8) = SCRIPT({
|
||||
SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_GRAVITY)), FALSE);
|
||||
loop {
|
||||
GetPlayerPos(SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
SI_VAR(1) += 20;
|
||||
SI_VAR(2) += -5;
|
||||
SetNpcPos(NPC_PARTNER, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
sleep 1;
|
||||
}
|
||||
});
|
||||
|
||||
Vec3f N(vectorList_80243384)[] = {
|
||||
{ 531.0, 75.0, 81.0 }, { 481.0, 80.0, 81.0 },
|
||||
{ 431.0, 75.0, 81.0 }, { 381.0, 70.0, 81.0 },
|
||||
{ 331.0, 75.0, 81.0 }, { 281.0, 80.0, 81.0 },
|
||||
{ 231.0, 75.0, 81.0 }, { 181.0, 70.0, 81.0 },
|
||||
{ 131.0, 75.0, 81.0 }, { 81.0, 80.0, 81.0 },
|
||||
{ 31.0, 75.0, 81.0 }, { -19.0, 70.0, 81.0 },
|
||||
{ -69.0, 75.0, 81.0 },
|
||||
};
|
||||
|
||||
Script N(80243420) = SCRIPT({
|
||||
sleep 20;
|
||||
PlaySound(0x80000023);
|
||||
LoadPath(165, N(vectorList_80243384), 13, 10);
|
||||
0:
|
||||
GetNextPathPos();
|
||||
TranslateModel(123, SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
SI_VAR(2) += -27;
|
||||
SI_VAR(3) += -10;
|
||||
SetPlayerPos(SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
N(func_8024046C_CCB77C)(SI_VAR(1), SI_VAR(2), SI_VAR(3));
|
||||
sleep 1;
|
||||
if (SI_VAR(0) == 1) {
|
||||
goto 0;
|
||||
}
|
||||
StopSound(0x80000023);
|
||||
});
|
||||
|
||||
Script N(8024352C) = SCRIPT({
|
||||
IsPlayerWithin(531, 81, 30, SI_VAR(0));
|
||||
if (SI_VAR(0) == 0) {
|
||||
return;
|
||||
}
|
||||
DisablePlayerInput(TRUE);
|
||||
GetCurrentPartner(SI_VAR(0));
|
||||
if (SI_VAR(0) != 0) {
|
||||
func_802D2B6C();
|
||||
sleep 20;
|
||||
}
|
||||
DisablePlayerPhysics(TRUE);
|
||||
DisablePartnerAI(0);
|
||||
SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_GRAVITY)), FALSE);
|
||||
SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_100)), TRUE);
|
||||
GetModelCenter(123);
|
||||
spawn {
|
||||
SI_VAR(2) += -10;
|
||||
SetPlayerJumpscale(0.2001953125);
|
||||
PlayerJump(531, 48, SI_VAR(2), 10);
|
||||
SetPlayerActionState(10);
|
||||
}
|
||||
spawn {
|
||||
sleep 5;
|
||||
SI_VAR(2) += -15;
|
||||
SetNpcJumpscale(NPC_PARTNER, 0.2001953125);
|
||||
NpcJump0(NPC_PARTNER, 531, 68, SI_VAR(2), 10);
|
||||
}
|
||||
SI_MAP_VAR(9) = spawn N(802431D0);
|
||||
sleep 15;
|
||||
N(func_802403D4_CCB6E4)();
|
||||
if (SI_VAR(14) != 0) {
|
||||
SI_VAR(14) = spawn N(802432E8);
|
||||
}
|
||||
await N(80243420);
|
||||
if (SI_VAR(14) != 0) {
|
||||
kill SI_VAR(14);
|
||||
N(func_8024042C_CCB73C)();
|
||||
}
|
||||
GetModelCenter(123);
|
||||
PlayEffect(0x43, 0, SI_VAR(0), SI_VAR(1), SI_VAR(2), 2, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
PlaySoundAt(0x2F3, 0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
ClearPartnerMoveHistory(-4);
|
||||
EnableModel(123, 0);
|
||||
SI_AREA_FLAG(37) = 0;
|
||||
kill SI_MAP_VAR(9);
|
||||
SetNpcFlagBits(NPC_PARTNER, ((NPC_FLAG_GRAVITY)), TRUE);
|
||||
EnablePartnerAI();
|
||||
DisablePlayerPhysics(FALSE);
|
||||
DisablePlayerInput(FALSE);
|
||||
unbind;
|
||||
});
|
||||
|
||||
Script N(80243870) = SCRIPT({
|
||||
PlaySoundAt(0x193, 0, 591, 55, 121);
|
||||
EnableModel(123, 1);
|
||||
SI_VAR(2) = 1.0;
|
||||
SI_VAR(4) = 0.0;
|
||||
SI_VAR(5) = 0.0;
|
||||
SI_VAR(6) = 0.0;
|
||||
SI_VAR(7) = -30;
|
||||
SI_VAR(8) = 20;
|
||||
SI_VAR(7) /= 90.0;
|
||||
SI_VAR(8) /= 90.0;
|
||||
SI_VAR(9) = 180;
|
||||
loop SI_VAR(9) {
|
||||
TranslateModel(123, 591, 55, 121);
|
||||
SI_VAR(3) = (float) SI_VAR(2);
|
||||
SI_VAR(3) /= (float) 10;
|
||||
ScaleModel(123, SI_VAR(3), SI_VAR(3), SI_VAR(3));
|
||||
TranslateModel(123, SI_VAR(4), SI_VAR(5), SI_VAR(6));
|
||||
SI_VAR(2) += 0.05078125;
|
||||
if (SI_VAR(9) > 90) {
|
||||
SI_VAR(4) += (float) SI_VAR(7);
|
||||
SI_VAR(5) += (float) SI_VAR(8);
|
||||
}
|
||||
sleep 1;
|
||||
}
|
||||
SI_VAR(7) = -30;
|
||||
SI_VAR(8) = -40;
|
||||
SI_VAR(7) /= 60.0;
|
||||
SI_VAR(8) /= 60.0;
|
||||
loop 60 {
|
||||
TranslateModel(123, 591, 55, 121);
|
||||
ScaleModel(123, SI_VAR(3), SI_VAR(3), SI_VAR(3));
|
||||
TranslateModel(123, SI_VAR(4), SI_VAR(5), SI_VAR(6));
|
||||
SI_VAR(4) += (float) SI_VAR(7);
|
||||
SI_VAR(6) += (float) SI_VAR(8);
|
||||
sleep 1;
|
||||
}
|
||||
SI_AREA_FLAG(36) = 0;
|
||||
SI_AREA_FLAG(37) = 1;
|
||||
});
|
||||
|
||||
s32 N(D_80243B14_CCEE24) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
s32 N(D_80243B18_CCEE28) = {
|
||||
0x0000005A,
|
||||
};
|
||||
|
||||
// *INDENT-OFF*
|
||||
Script N(80243B1C) = {
|
||||
SI_CMD(ScriptOpcode_SET_GROUP, 0),
|
||||
SI_CMD(ScriptOpcode_SET, SI_VAR(15), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_LABEL, 0),
|
||||
SI_CMD(ScriptOpcode_IF_EQ, SI_AREA_FLAG(35), 1),
|
||||
SI_CMD(ScriptOpcode_SLEEP_FRAMES, 10),
|
||||
SI_CMD(ScriptOpcode_GOTO, 0),
|
||||
SI_CMD(ScriptOpcode_END_IF),
|
||||
SI_CMD(ScriptOpcode_USE_BUFFER, &N(D_802431CC_CCE4DC)),
|
||||
SI_CMD(ScriptOpcode_BUFFER_READ_1, SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_IF_EQ, SI_VAR(0), 0),
|
||||
SI_CMD(ScriptOpcode_CALL, RandInt, 10, SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_ADD, SI_VAR(0), 1),
|
||||
SI_CMD(ScriptOpcode_SLEEP_FRAMES, SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_GOTO, 0),
|
||||
SI_CMD(ScriptOpcode_END_IF),
|
||||
SI_CMD(ScriptOpcode_CALL, EnableModel, SI_VAR(15), 1),
|
||||
SI_CMD(ScriptOpcode_CALL, RandInt, 4, SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(0), SI_FIXED(4.0)),
|
||||
SI_CMD(ScriptOpcode_MUL_F, SI_VAR(0), SI_FIXED(-1.0)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(1), SI_FIXED(2.0)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(2), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_DIV_F, SI_VAR(2), SI_FIXED(10.0)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(3), SI_FIXED(0.400390625)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(4), SI_FIXED(591.0)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(5), SI_FIXED(60.0)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(6), SI_FIXED(121.0)),
|
||||
SI_CMD(ScriptOpcode_CALL, RandInt, 3, SI_VAR(7)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(7), SI_FIXED(3.0)),
|
||||
SI_CMD(ScriptOpcode_MUL_F, SI_VAR(7), SI_FIXED(0.0400390625)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(9), SI_VAR(7)),
|
||||
SI_CMD(ScriptOpcode_DIV_F, SI_VAR(9), SI_FIXED(5.0)),
|
||||
SI_CMD(ScriptOpcode_CALL, RandInt, 50, SI_VAR(8)),
|
||||
SI_CMD(ScriptOpcode_ADD, SI_VAR(8), 50),
|
||||
SI_CMD(ScriptOpcode_LOOP, SI_VAR(8)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(14), SI_VAR(2)),
|
||||
SI_CMD(ScriptOpcode_SUB_F, SI_VAR(14), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_MUL_F, SI_VAR(14), SI_FIXED(0.046875)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(0), SI_VAR(14)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(14), SI_VAR(3)),
|
||||
SI_CMD(ScriptOpcode_SUB_F, SI_VAR(14), SI_VAR(1)),
|
||||
SI_CMD(ScriptOpcode_MUL_F, SI_VAR(14), SI_FIXED(0.046875)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(1), SI_VAR(14)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(4), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(5), SI_VAR(1)),
|
||||
SI_CMD(ScriptOpcode_SET_F, SI_VAR(14), SI_VAR(7)),
|
||||
SI_CMD(ScriptOpcode_SUB_F, SI_VAR(14), SI_VAR(9)),
|
||||
SI_CMD(ScriptOpcode_MUL_F, SI_VAR(14), SI_FIXED(0.203125)),
|
||||
SI_CMD(ScriptOpcode_ADD_F, SI_VAR(9), SI_VAR(14)),
|
||||
SI_CMD(ScriptOpcode_CALL, TranslateModel, SI_VAR(15), SI_VAR(4), SI_VAR(5), SI_VAR(6)),
|
||||
SI_CMD(ScriptOpcode_CALL, ScaleModel, SI_VAR(15), SI_VAR(9), SI_VAR(9), SI_VAR(9)),
|
||||
SI_CMD(ScriptOpcode_SLEEP_FRAMES, 1),
|
||||
SI_CMD(ScriptOpcode_END_LOOP),
|
||||
SI_CMD(ScriptOpcode_CALL, EnableModel, SI_VAR(15), 0),
|
||||
SI_CMD(ScriptOpcode_GOTO, 0),
|
||||
SI_CMD(ScriptOpcode_RETURN),
|
||||
SI_CMD(ScriptOpcode_END)
|
||||
};
|
||||
// *INDENT-ON*
|
||||
|
||||
Script N(80243E78) = SCRIPT({
|
||||
ModifyColliderFlags(3, 31, 0x00000006);
|
||||
ModifyColliderFlags(3, 32, 0x00000006);
|
||||
ModifyColliderFlags(3, 33, 0x00000006);
|
||||
ModifyColliderFlags(3, 34, 0x00000006);
|
||||
ModifyColliderFlags(3, 35, 0x00000006);
|
||||
SI_VAR(0) = -730;
|
||||
SI_VAR(1) = -130;
|
||||
SI_VAR(2) = -470;
|
||||
SI_VAR(3) = -70;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80242C00);
|
||||
SI_VAR(0) = -730;
|
||||
SI_VAR(1) = 70;
|
||||
SI_VAR(2) = -470;
|
||||
SI_VAR(3) = 140;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80242C00);
|
||||
SI_VAR(0) = -280;
|
||||
SI_VAR(1) = 130;
|
||||
SI_VAR(2) = -110;
|
||||
SI_VAR(3) = -70;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80242C00);
|
||||
SI_VAR(0) = -280;
|
||||
SI_VAR(1) = 70;
|
||||
SI_VAR(2) = -10;
|
||||
SI_VAR(3) = 140;
|
||||
SI_VAR(4) = 0;
|
||||
spawn N(80242C00);
|
||||
GetModelCenter(96);
|
||||
SI_VAR(3) = 96;
|
||||
SI_VAR(4) = 97;
|
||||
SI_VAR(5) = 98;
|
||||
SI_VAR(6) = 99;
|
||||
SI_VAR(10) = 174;
|
||||
spawn N(80242EAC);
|
||||
GetModelCenter(82);
|
||||
SI_VAR(3) = 82;
|
||||
SI_VAR(4) = 83;
|
||||
SI_VAR(5) = 84;
|
||||
SI_VAR(6) = 85;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(80242EAC);
|
||||
GetModelCenter(76);
|
||||
SI_VAR(3) = 76;
|
||||
SI_VAR(4) = 77;
|
||||
SI_VAR(5) = 78;
|
||||
SI_VAR(6) = 79;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(80242EAC);
|
||||
GetModelCenter(90);
|
||||
SI_VAR(3) = 90;
|
||||
SI_VAR(4) = 91;
|
||||
SI_VAR(5) = 92;
|
||||
SI_VAR(6) = 93;
|
||||
SI_VAR(10) = 0;
|
||||
spawn N(80242EAC);
|
||||
ModifyColliderFlags(0, 15, 0x7FFFFE00);
|
||||
CloneModel(124, 10001);
|
||||
CloneModel(124, 10002);
|
||||
CloneModel(124, 10003);
|
||||
CloneModel(124, 10004);
|
||||
CloneModel(124, 10005);
|
||||
EnableModel(123, 0);
|
||||
EnableModel(124, 0);
|
||||
EnableModel(10001, 0);
|
||||
EnableModel(10002, 0);
|
||||
EnableModel(10003, 0);
|
||||
EnableModel(10004, 0);
|
||||
EnableModel(10005, 0);
|
||||
SI_VAR(0) = 10001;
|
||||
spawn N(80243B1C);
|
||||
SI_VAR(0) = 10002;
|
||||
spawn N(80243B1C);
|
||||
SI_VAR(0) = 10003;
|
||||
spawn N(80243B1C);
|
||||
SI_VAR(0) = 10004;
|
||||
spawn N(80243B1C);
|
||||
SI_VAR(0) = 10005;
|
||||
spawn N(80243B1C);
|
||||
func_802C9C70(0, 123, 1);
|
||||
func_802C94A0(1, N(func_80240504_CCB814), 0);
|
||||
func_802C90FC(123, 1, -1);
|
||||
func_802C90FC(10001, 1, -1);
|
||||
func_802C90FC(10002, 1, -1);
|
||||
func_802C90FC(10003, 1, -1);
|
||||
func_802C90FC(10004, 1, -1);
|
||||
func_802C90FC(10005, 1, -1);
|
||||
func_802C9C70(1, 57, 1);
|
||||
func_802C94A0(2, N(func_802407D4_CCBAE4), 0);
|
||||
func_802C90FC(57, 2, -1);
|
||||
});
|
||||
|
||||
#include "world/common/UnkTexturePanFunc.inc.c"
|
||||
|
||||
#include "world/common/UnkTexturePanFunc2.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_8024030C_CCB61C);
|
||||
void func_80072950();
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_80240340_CCB650);
|
||||
ApiStatus N(func_8024030C_CCB61C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
func_80072950(0, 0, 0, 0, 0, 0);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_802403D4_CCB6E4);
|
||||
#include "world/common/UnkFunc43.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_8024042C_CCB73C);
|
||||
ApiStatus N(func_802403D4_CCB6E4)(ScriptInstance *script, s32 isInitialCall) {
|
||||
if (gPlayerData.currentPartner == PARTNER_NONE) {
|
||||
script->varTable[14] = 0;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_8024046C_CCB77C);
|
||||
script->varTable[14] = 1;
|
||||
set_variable(NULL, SI_MAP_VAR(0), get_npc_unsafe(-4)->flags);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_80240504_CCB814);
|
||||
ApiStatus N(func_8024042C_CCB73C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Npc* npc = get_npc_unsafe(-4);
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCB310", func_802407D4_CCBAE4);
|
||||
npc->flags = get_variable(NULL, SI_MAP_VAR(0));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
ApiStatus N(func_8024046C_CCB77C)(ScriptInstance *script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
|
||||
script->functionTemp[0].s = get_variable(script, *args++);
|
||||
script->functionTemp[1].s = get_variable(script, *args++);
|
||||
script->functionTemp[2].s = get_variable(script, *args++);
|
||||
sfx_adjust_env_sound_pos(0x194, 0, script->functionTemp[0].s, script->functionTemp[1].s, script->functionTemp[2].s);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
// graphics macros
|
||||
#ifdef NON_MATCHING
|
||||
s32 func_8011C2EC(s32);
|
||||
void func_8011C2B0(s32, s32*,s32*, s32*);
|
||||
void guMtxF2L(Matrix4f, Mtx *m);
|
||||
void guMtxIdentF(Matrix4f);
|
||||
|
||||
void N(func_80240504_CCB814)(void) {
|
||||
Matrix4f matrix;
|
||||
s32 x, y, z;
|
||||
|
||||
guMtxIdentF(matrix);
|
||||
|
||||
matrix[0][0] = (sin_rad(N(D_80243B14_CCEE24) / 11.0f) * 0.04) + 0.98;
|
||||
matrix[0][1] = sin_rad(N(D_80243B14_CCEE24) / 12.0f) * 0.04;
|
||||
matrix[0][2] = cos_rad(N(D_80243B14_CCEE24) / 13.0f) * 0.04;
|
||||
|
||||
matrix[1][1] = (sin_rad(N(D_80243B14_CCEE24) / 7.0f + 1.0f) * 0.04) + 0.98;
|
||||
matrix[1][0] = sin_rad(N(D_80243B14_CCEE24) / 14.0f) * 0.04;
|
||||
matrix[1][2] = cos_rad(N(D_80243B14_CCEE24) / 15.0f) * 0.04;
|
||||
|
||||
matrix[2][2] = (sin_rad(N(D_80243B14_CCEE24) * 0.25f + 2.0f) * 0.04) + 0.98;
|
||||
matrix[2][0] = sin_rad(N(D_80243B14_CCEE24) * 0.0625f) * 0.04;
|
||||
matrix[2][1] = cos_rad(N(D_80243B14_CCEE24) / 17.0f) * 0.04;
|
||||
|
||||
guMtxF2L(matrix, &gDisplayContext->matrixStack[gMatrixListPos]);
|
||||
|
||||
func_8011C2B0(0, &x, &y, &z);
|
||||
gSPMatrix(gMasterGfxPos++, &gDisplayContext->matrixStack[gMatrixListPos++], G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gMasterGfxPos++, func_8011C2EC(0));
|
||||
|
||||
N(D_80243B14_CCEE24) += 1.0f;
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(void, "world/area_flo/flo_14/CCB310", flo_14_func_80240504_CCB814, void);
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */s16 unk_00;
|
||||
/* 0x02 */s16 unk_02;
|
||||
/* 0x04 */s16 unk_04;
|
||||
/* 0x06 */char unk_06[0xA];
|
||||
} N(UnkStruct); // size = 0x10
|
||||
|
||||
void N(func_802407D4_CCBAE4)(void) {
|
||||
s32 i;
|
||||
N(UnkStruct)* x;
|
||||
N(UnkStruct)* y;
|
||||
s32 z;
|
||||
f32 temp_f20;
|
||||
f32 temp_f0;
|
||||
|
||||
func_8011C2B0(1, &x, &y, &z);
|
||||
|
||||
for (i = 0; i < z; i++) {
|
||||
N(UnkStruct)* ptr1 = &x[i];
|
||||
N(UnkStruct)* ptr2 = &y[i];
|
||||
|
||||
if (ptr1->unk_00 < 0x259) {
|
||||
temp_f20 = (sin_rad((N(D_80243B18_CCEE28) / 180.0f) * 3.141592) * 0.3) + 0.7;
|
||||
temp_f0 = 0.2 - (sin_rad((N(D_80243B18_CCEE28) / 180.0f) * 3.141592) * 0.2);
|
||||
ptr2->unk_00 = ((ptr1->unk_00 - 0x268) * temp_f20) + 616.0f + (temp_f0 * -48.0f);
|
||||
ptr2->unk_02 = ((ptr1->unk_02 - 0x2C) * temp_f20) + 44.0f + (temp_f0 * 25.0f);
|
||||
ptr2->unk_04 = ((ptr1->unk_04 - 0x71) * temp_f20) + 113.0f + (temp_f0 * -87.0f);
|
||||
}
|
||||
}
|
||||
|
||||
gSPDisplayList(gMasterGfxPos++, func_8011C2EC(1));
|
||||
|
||||
if (get_variable(NULL, SI_AREA_FLAG(36)) != 0) {
|
||||
if (N(D_80243B18_CCEE28) > 90) {
|
||||
N(D_80243B18_CCEE28) -= 360;
|
||||
}
|
||||
if (N(D_80243B18_CCEE28) >= -90) {
|
||||
N(D_80243B18_CCEE28) += 5;
|
||||
} else {
|
||||
N(D_80243B18_CCEE28) += 20;
|
||||
}
|
||||
if (N(D_80243B18_CCEE28) >= 90) {
|
||||
N(D_80243B18_CCEE28) = 90;
|
||||
}
|
||||
} else {
|
||||
if (((u32)N(D_80243B18_CCEE28) - 141) < 119) {
|
||||
N(D_802431CC_CCE4DC) = 1;
|
||||
} else {
|
||||
N(D_802431CC_CCE4DC) = 0;
|
||||
}
|
||||
N(D_80243B18_CCEE28) += 5;
|
||||
}
|
||||
|
||||
if (N(D_80243B18_CCEE28) >= 360) {
|
||||
N(D_80243B18_CCEE28) -= 360;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,314 @@
|
||||
#include "flo_14.h"
|
||||
#include "sprite/npc/bubulb.h"
|
||||
#include "sprite/npc/bzzap.h"
|
||||
|
||||
enum {
|
||||
NPC_BUBULB,
|
||||
NPC_BZZAP,
|
||||
};
|
||||
|
||||
static s32 N(D_802453B0_EF79C0)[91];
|
||||
|
||||
f32 N(D_802444C0_CCF7D0)[] = {
|
||||
4.5f, 3.5f, 2.6f, 2.0f,
|
||||
1.5f, 20.0f,
|
||||
};
|
||||
|
||||
NpcAISettings N(npcAISettings_802444D8) = {
|
||||
.moveSpeed = 1.0f,
|
||||
.moveTime = 30,
|
||||
.waitTime = 5,
|
||||
.alertRadius = 80.0f,
|
||||
.unk_10 = { .f = 30.0f },
|
||||
.unk_14 = 2,
|
||||
.chaseSpeed = 4.5f,
|
||||
.unk_1C = { .s = 6 },
|
||||
.unk_20 = 1,
|
||||
.chaseRadius = 90.0f,
|
||||
.unk_28 = { .f = 30.0f },
|
||||
.unk_2C = 1,
|
||||
};
|
||||
|
||||
Script N(npcAI_80244508) = SCRIPT({
|
||||
SetSelfVar(0, 0);
|
||||
SetSelfVar(5, -630);
|
||||
SetSelfVar(6, 50);
|
||||
SetSelfVar(1, 200);
|
||||
N(func_80241E1C_CCD12C)(N(npcAISettings_802444D8));
|
||||
});
|
||||
|
||||
NpcSettings N(npcSettings_80244578) = {
|
||||
.height = 26,
|
||||
.radius = 24,
|
||||
.ai = &N(npcAI_80244508),
|
||||
.onHit = EnemyNpcHit,
|
||||
.onDefeat = EnemyNpcDefeat,
|
||||
.level = 19,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_802445A4) = {
|
||||
.height = 56,
|
||||
.radius = 40,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
NpcSettings N(npcSettings_802445D0) = {
|
||||
.height = 24,
|
||||
.radius = 24,
|
||||
.level = 99,
|
||||
};
|
||||
|
||||
s32 N(D_802445FC_CCF90C) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
s32 N(D_80244600_CCF910) = {
|
||||
0x00000000,
|
||||
};
|
||||
|
||||
Script N(80244604) = SCRIPT({
|
||||
SI_VAR(9) = SI_VAR(1);
|
||||
func_802D663C();
|
||||
SI_VAR(10) = SI_VAR(0);
|
||||
match SI_VAR(0) {
|
||||
== 0 {}
|
||||
== -1 {}
|
||||
else {
|
||||
RemoveItemAt(SI_VAR(1));
|
||||
GetPlayerPos(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
N(AddPlayerHandsOffset)(SI_VAR(3), SI_VAR(4), SI_VAR(5));
|
||||
MakeItemEntity(SI_VAR(0), SI_VAR(3), SI_VAR(4), SI_VAR(5), 1, 0);
|
||||
SetPlayerAnimation(0x60005);
|
||||
sleep 30;
|
||||
SetPlayerAnimation(ANIM_10002);
|
||||
RemoveItemEntity(SI_VAR(0));
|
||||
}
|
||||
}
|
||||
N(func_80242288_CCD598)(SI_VAR(10));
|
||||
func_802D6954();
|
||||
unbind;
|
||||
});
|
||||
|
||||
Script N(80244738) = {
|
||||
SI_CMD(ScriptOpcode_CALL, N(func_802422C0_CCD5D0), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_BIND_PADLOCK, N(80244604), 0x10, 0, N(D_802453B0_EF79C0), 0, 1),
|
||||
SI_CMD(ScriptOpcode_CALL, N(func_80242234_CCD544), SI_VAR(0)),
|
||||
SI_CMD(ScriptOpcode_RETURN),
|
||||
SI_CMD(ScriptOpcode_END)
|
||||
};
|
||||
|
||||
s32 N(D_80244788_CCFA98)[] = {
|
||||
0x000000A1, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(interact_80244790) = SCRIPT({
|
||||
if (SI_AREA_FLAG(37) == 1) {
|
||||
SI_AREA_FLAG(35) = 1;
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 0, MESSAGE_ID(0x11, 0x0063));
|
||||
SI_AREA_FLAG(35) = 0;
|
||||
return;
|
||||
}
|
||||
SI_AREA_FLAG(35) = 1;
|
||||
if (SI_SAVE_FLAG(1412) == 0) {
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 0, MESSAGE_ID(0x11, 0x005F));
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 0, MESSAGE_ID(0x11, 0x0060));
|
||||
}
|
||||
FindItem(161, SI_VAR(0));
|
||||
if (SI_VAR(0) != -1) {
|
||||
SI_VAR(0) = N(D_80244788_CCFA98);
|
||||
SI_VAR(1) = 0;
|
||||
await N(80244738);
|
||||
if (SI_VAR(0) == -1) {
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 0, MESSAGE_ID(0x11, 0x0064));
|
||||
} else {
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 0, MESSAGE_ID(0x11, 0x0061));
|
||||
SI_AREA_FLAG(36) = 1;
|
||||
SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), TRUE);
|
||||
PlayerMoveTo(555, 110, 20);
|
||||
SetNpcFlagBits(NPC_SELF, ((NPC_FLAG_100)), FALSE);
|
||||
InterpPlayerYaw(90, 0);
|
||||
func_802CF56C(2);
|
||||
sleep 5;
|
||||
AdjustCam(0, 1.0, 0, 350, 17.0, -6.0);
|
||||
spawn N(80243870);
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 0, MESSAGE_ID(0x11, 0x0062));
|
||||
spawn {
|
||||
sleep 40;
|
||||
InterpPlayerYaw(315, 0);
|
||||
}
|
||||
10:
|
||||
if (SI_AREA_FLAG(37) == 0) {
|
||||
sleep 1;
|
||||
goto 10;
|
||||
}
|
||||
ResetCam(0, 4.0);
|
||||
SpeakToPlayer(NPC_SELF, -1, -1, 5, MESSAGE_ID(0x11, 0x0063));
|
||||
SI_SAVE_FLAG(1412) = 1;
|
||||
bind N(8024352C) to TRIGGER_FLOOR_PRESS_A 30;
|
||||
}
|
||||
}
|
||||
SI_AREA_FLAG(35) = 0;
|
||||
});
|
||||
|
||||
Script N(init_80244ADC) = SCRIPT({
|
||||
SI_AREA_FLAG(36) = 0;
|
||||
SI_AREA_FLAG(37) = 0;
|
||||
BindNpcInteract(NPC_SELF, N(interact_80244790));
|
||||
});
|
||||
|
||||
StaticNpc N(npcGroup_80244B20) = {
|
||||
.id = NPC_BUBULB,
|
||||
.settings = &N(npcSettings_802445A4),
|
||||
.pos = { 617.0f, 0.0f, 108.0f },
|
||||
.flags = NPC_FLAG_PASSIVE | NPC_FLAG_100 | NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT | NPC_FLAG_4000,
|
||||
.init = &N(init_80244ADC),
|
||||
.yaw = 270,
|
||||
.dropFlags = 0x80,
|
||||
.heartDrops = NO_DROPS,
|
||||
.flowerDrops = NO_DROPS,
|
||||
.animations = {
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_E),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_E),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
NPC_ANIM(bubulb, Palette_00, Anim_2),
|
||||
},
|
||||
.tattle = MESSAGE_ID(0x1A, 0x00E3),
|
||||
};
|
||||
|
||||
StaticNpc N(npcGroup_80244D10) = {
|
||||
.id = NPC_BZZAP,
|
||||
.settings = &N(npcSettings_80244578),
|
||||
.pos = { -175.0f, 55.0f, 15.0f },
|
||||
.flags = NPC_FLAG_LOCK_ANIMS | NPC_FLAG_NO_Y_MOVEMENT,
|
||||
.yaw = 90,
|
||||
.dropFlags = 0x80,
|
||||
.itemDropChance = 15,
|
||||
.itemDrops = {
|
||||
{ ITEM_MAPLE_SYRUP, 6, 0 },
|
||||
{ ITEM_HONEY_SYRUP, 4, 0 },
|
||||
},
|
||||
.heartDrops = STANDARD_HEART_DROPS(3),
|
||||
.flowerDrops = STANDARD_FLOWER_DROPS(2),
|
||||
.minCoinBonus = 1,
|
||||
.maxCoinBonus = 4,
|
||||
.movement = { -175, 55, 15, 30, 0, -32767, 0, -175, 55, 15, 200, 0, 0, 1 },
|
||||
.animations = {
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_3),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_3),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_6),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_6),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_4),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_2),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
NPC_ANIM(bzzap, Palette_00, Anim_1),
|
||||
},
|
||||
.unk_1E0 = { 00, 00, 00, 03, 00, 00, 00, 00},
|
||||
};
|
||||
|
||||
NpcGroupList N(npcGroupList_80244F00) = {
|
||||
NPC_GROUP(N(npcGroup_80244B20), BATTLE_ID(0, 0, 0, 0)),
|
||||
NPC_GROUP(N(npcGroup_80244D10), BATTLE_ID(24, 25, 0, 1)),
|
||||
{},
|
||||
};
|
||||
|
||||
static s32 N(pad_4F24)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(80244F30) = SCRIPT({
|
||||
MakeItemEntity(ITEM_STAR_PIECE, 675, 60, -100, 17, SI_SAVE_FLAG(1387));
|
||||
});
|
||||
|
||||
static s32 N(pad_4F64)[] = {
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
Script N(80244F70) = SCRIPT({
|
||||
loop {
|
||||
N(func_80242360_CCD670)(SI_VAR(0));
|
||||
if (SI_VAR(0) == SI_VAR(4)) {
|
||||
GetPlayerActionState(SI_VAR(0));
|
||||
if (SI_VAR(0) != 23) {
|
||||
if (SI_VAR(8) == 0) {
|
||||
spawn {
|
||||
GetModelCenter(SI_VAR(5));
|
||||
PlaySoundAt(0x1DB, 4194304, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
}
|
||||
}
|
||||
if (SI_VAR(7) < 90) {
|
||||
if (SI_VAR(7) == 0) {
|
||||
sleep 5;
|
||||
SI_VAR(8) = 6;
|
||||
ModifyColliderFlags(0, SI_VAR(9), 0x7FFFFE00);
|
||||
}
|
||||
SI_VAR(8) += 1;
|
||||
SI_VAR(7) += SI_VAR(8);
|
||||
}
|
||||
goto 50;
|
||||
}
|
||||
}
|
||||
if (SI_VAR(7) != 0) {
|
||||
SI_VAR(8) -= 1;
|
||||
SI_VAR(7) += SI_VAR(8);
|
||||
if (SI_VAR(7) <= 0) {
|
||||
SI_VAR(8) = 0;
|
||||
SI_VAR(7) = 0;
|
||||
spawn {
|
||||
GetModelCenter(SI_VAR(5));
|
||||
PlaySoundAt(0x1DC, 0, SI_VAR(0), SI_VAR(1), SI_VAR(2));
|
||||
}
|
||||
ModifyColliderFlags(1, SI_VAR(9), 0x7FFFFE00);
|
||||
}
|
||||
}
|
||||
50:
|
||||
if (SI_VAR(7) >= 90) {
|
||||
SI_VAR(8) = -1;
|
||||
SI_VAR(7) = 90;
|
||||
}
|
||||
RotateModel(SI_VAR(5), SI_VAR(7), -1, 0, 0);
|
||||
RotateModel(SI_VAR(6), SI_VAR(7), -1, 0, 0);
|
||||
sleep 1;
|
||||
}
|
||||
});
|
||||
|
||||
Script N(80245224) = SCRIPT({
|
||||
SI_VAR(4) = 21;
|
||||
SI_VAR(5) = 21;
|
||||
SI_VAR(6) = 20;
|
||||
SI_VAR(7) = SI_MAP_VAR(10);
|
||||
SI_VAR(8) = SI_MAP_VAR(11);
|
||||
SI_VAR(9) = 22;
|
||||
spawn N(80244F70);
|
||||
SI_VAR(4) = 17;
|
||||
SI_VAR(5) = 26;
|
||||
SI_VAR(6) = 25;
|
||||
SI_VAR(7) = SI_MAP_VAR(12);
|
||||
SI_VAR(8) = SI_MAP_VAR(13);
|
||||
SI_VAR(9) = 18;
|
||||
spawn N(80244F70);
|
||||
});
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80240B10_CCBE20);
|
||||
/*
|
||||
void N(func_80240B10_CCBE20)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
@ -25,9 +332,155 @@ void N(func_80240B10_CCBE20)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
script->functionTemp[0].s = 1;
|
||||
}
|
||||
*/
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80240CC0_CCBFD0);
|
||||
#ifdef NON_MATCHING
|
||||
// second func_800DCB7C call
|
||||
void N(func_80240CC0_CCBFD0)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
f32 temp_f24;
|
||||
f32 posX, posY, posZ, posW;
|
||||
s32 var;
|
||||
f32 temp_f0;
|
||||
f32 phi_f4;
|
||||
s32 phi_v0;
|
||||
s32 phi_s4 = 0;
|
||||
|
||||
f32 a = enemy->varTable[7];
|
||||
f32 temp_f2 = a / 100.0;
|
||||
f32 b = enemy->varTable[3];
|
||||
f32 temp_f26 = b / 100.0;
|
||||
f32 c = enemy->varTable[4];
|
||||
f32 temp_f20 = c / 100.0;
|
||||
f32 d = enemy->varTable[1];
|
||||
f32 temp_f22 = d / 100.0;
|
||||
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
temp_f24 = temp_f26 + temp_f2;
|
||||
|
||||
if ((enemy->varTable[0] & 0x11) == 1) {
|
||||
if (npc->flags & 8) {
|
||||
if (temp_f22 < (temp_f24 - npc->pos.y)) {
|
||||
enemy->varTable[0] |= 0x10;
|
||||
}
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
if (temp_f22 < (temp_f26 - posW)) {
|
||||
enemy->varTable[0] |= 0x10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((enemy->varTable[0] & 0x11) == 0x11) {
|
||||
// original m2c reference:
|
||||
//if ((temp_s0->flags & 8) != 0) {
|
||||
// phi_f0 = temp_f20 + ((temp_f24 - temp_f20) * D_802441A8_CB91A8);
|
||||
// phi_f4 = temp_f24;
|
||||
//} else {
|
||||
// func_800DCB7C(temp_s0->unk_80, &subroutine_argA, &subroutine_argB, &subroutine_argC, &subroutine_argD, temp_s0->pos.x, temp_f20, temp_s0->pos.z, 1000.0f);
|
||||
// temp_f4 = subroutine_argB + temp_f26;
|
||||
// phi_f0 = temp_f20 + ((temp_f4 - temp_f20) * D_802441B0_CB91B0);
|
||||
// phi_f4 = temp_f4;
|
||||
//}
|
||||
//temp_s0->pos.y = phi_f0;
|
||||
|
||||
f64 test;
|
||||
if (npc->flags & 8) {
|
||||
phi_f4 = temp_f24;
|
||||
npc->pos.y = temp_f20 + ((phi_f4 - temp_f20) * 0.09);
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = temp_f20;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
phi_f4 = posY + temp_f26;
|
||||
npc->pos.y = temp_f20 + ((phi_f4 - temp_f20) * 0.09);
|
||||
}
|
||||
|
||||
if (fabsf(phi_f4 - npc->pos.y) < 1.0) {
|
||||
npc->pos.y = phi_f4;
|
||||
enemy->varTable[0] &= ~0x10;
|
||||
}
|
||||
} else if (enemy->varTable[1] > 0) {
|
||||
temp_f0 = sin_deg(enemy->varTable[2]);
|
||||
if (npc->flags & 8) {
|
||||
phi_v0 = FALSE;
|
||||
} else {
|
||||
posX = npc->pos.x;
|
||||
posY = npc->pos.y;
|
||||
posZ = npc->pos.z;
|
||||
posW = 1000.0f;
|
||||
phi_v0 = func_800DCB7C(npc->unk_80, &posX, &posY, &posZ, &posW);
|
||||
}
|
||||
if (phi_v0) {
|
||||
npc->pos.y = posY + temp_f26 + (temp_f0 * temp_f22);
|
||||
} else {
|
||||
npc->pos.y = temp_f24 + (temp_f0 * temp_f22);
|
||||
}
|
||||
enemy->varTable[2] = clamp_angle(enemy->varTable[2] + 10);
|
||||
}
|
||||
|
||||
if (enemy->varTable[9] <= 0) {
|
||||
if (aiSettings->unk_14 >= 0) {
|
||||
if (script->functionTemp[1].s <= 0) {
|
||||
script->functionTemp[1].s = aiSettings->unk_14;
|
||||
if ((gPlayerStatusPtr->position.y < ((npc->pos.y + npc->collisionHeight) + 10.0)) &&
|
||||
func_800490B4(territory, enemy, aiSettings->alertRadius, aiSettings->unk_10.f, 0)) {
|
||||
fx_emote(0, npc, 0.0f, npc->collisionHeight, 1.0f, 2.0f, -20.0f, 12, &var);
|
||||
npc->moveToPos.y = npc->pos.y;
|
||||
func_800494C0(npc, 0x2F4, 0x200000);
|
||||
if (enemy->npcSettings->unk_2A & 1) {
|
||||
script->functionTemp[0].s = 10;
|
||||
} else {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
script->functionTemp[1].s--;
|
||||
}
|
||||
} else {
|
||||
enemy->varTable[9]--;
|
||||
}
|
||||
|
||||
if (is_point_within_region(enemy->territory->wander.wanderShape,
|
||||
enemy->territory->wander.point.x, enemy->territory->wander.point.z,
|
||||
npc->pos.x, npc->pos.z,
|
||||
enemy->territory->wander.wanderSizeX, enemy->territory->wander.wanderSizeZ)) {
|
||||
posW = dist2D(enemy->territory->wander.point.x, enemy->territory->wander.point.z, npc->pos.x, npc->pos.z);
|
||||
if (npc->moveSpeed < posW) {
|
||||
npc->yaw = atan2(npc->pos.x, npc->pos.z, enemy->territory->wander.point.x, enemy->territory->wander.point.z);
|
||||
phi_s4 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (enemy->territory->wander.wanderSizeX | enemy->territory->wander.wanderSizeZ | phi_s4) {
|
||||
if (npc->turnAroundYawAdjustment == 0) {
|
||||
npc_move_heading(npc, npc->moveSpeed, npc->yaw);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
enemy->varTable[4] = npc->pos.y * 100.0;
|
||||
if (aiSettings->moveTime > 0) {
|
||||
if ((npc->duration <= 0) || (--npc->duration <= 0)) {
|
||||
script->functionTemp[0].s = 2;
|
||||
script->functionTemp[1].s = (rand_int(1000) % 3) + 2;
|
||||
if ((aiSettings->unk_2C <= 0) || (aiSettings->waitTime <= 0) || (script->functionTemp[1].s < 3)) {
|
||||
script->functionTemp[0].s = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
INCLUDE_ASM(void, "world/area_flo/flo_14/CCBE20", flo_14_func_80240CC0_CCBFD0, ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory);
|
||||
#endif
|
||||
|
||||
#include "world/common/UnkNpcAIFunc1.inc.c"
|
||||
|
||||
@ -35,18 +488,15 @@ INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80240CC0_CCBFD0);
|
||||
|
||||
#include "world/common/UnkNpcAIFunc2.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80241764_CCCA74);
|
||||
/*
|
||||
void N(func_80241764_CCCA74)(ScriptInstance* script, NpcAISettings* aiSettings, EnemyTerritoryThing* territory) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Npc* npc = get_npc_unsafe(enemy->npcID);
|
||||
|
||||
npc->pos.y += N(D_802436DC_BE6E8C)[npc->duration++];
|
||||
npc->pos.y += N(D_802444C0_CCF7D0)[npc->duration++];
|
||||
if (npc->duration >= 5) {
|
||||
script->functionTemp[0].s = 12;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/UnkNpcAIFunc14.inc.c"
|
||||
|
||||
@ -56,8 +506,6 @@ void N(func_80241764_CCCA74)(ScriptInstance* script, NpcAISettings* aiSettings,
|
||||
|
||||
#include "world/common/UnkFunc5.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80241E1C_CCD12C);
|
||||
/*
|
||||
ApiStatus N(func_80241E1C_CCD12C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Enemy* enemy = script->owner1.enemy;
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
@ -72,11 +520,11 @@ ApiStatus N(func_80241E1C_CCD12C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
territory.pointZ = enemy->territory->wander.detect.z;
|
||||
territory.sizeX = enemy->territory->wander.detectSizeX;
|
||||
territory.sizeZ = enemy->territory->wander.detectSizeZ;
|
||||
territory.unk_34 = 120.0f;
|
||||
territory.unk_18 = 120.0f;
|
||||
territory.unk_1C = 0;
|
||||
|
||||
if (isInitialCall) {
|
||||
N(func_80241CF8_CCD008)(npc, enemy, script, aiSettings);
|
||||
N(UnkFunc5)(npc, enemy, script, aiSettings);
|
||||
}
|
||||
|
||||
npc->unk_AB = -2;
|
||||
@ -97,7 +545,7 @@ ApiStatus N(func_80241E1C_CCD12C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
case 2:
|
||||
N(UnkNpcAIFunc1)(script, aiSettings, territoryPtr);
|
||||
case 3:
|
||||
N(func_802413A8_CCC6B8)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc4)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 10:
|
||||
N(UnkNpcAIFunc2)(script, aiSettings, territoryPtr);
|
||||
@ -111,50 +559,58 @@ ApiStatus N(func_80241E1C_CCD12C)(ScriptInstance* script, s32 isInitialCall) {
|
||||
N(UnkNpcAIFunc3)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
case 14:
|
||||
N(func_80241968_CCCC78)(script, aiSettings, territoryPtr);
|
||||
N(UnkFunc6)(script, aiSettings, territoryPtr);
|
||||
break;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
*/
|
||||
|
||||
#include "world/common/GetNpcCollisionHeight.inc.c"
|
||||
|
||||
#include "world/common/AddPlayerHandsOffset.inc.c"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80242234_CCD544);
|
||||
/*
|
||||
ApiStatus N(func_80242234_CCD544)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr;
|
||||
|
||||
if (isInitialCall) {
|
||||
ptr = &D_80241CCC_BE0A5C;
|
||||
*ptr = 0;
|
||||
N(D_802445FC_CCF90C) = FALSE;
|
||||
}
|
||||
|
||||
ptr = &D_80241CCC_BE0A5C;
|
||||
if (*ptr != NULL) {
|
||||
ptr = &D_80241CCC_BE0A5C;
|
||||
*ptr = 0;
|
||||
set_variable(script, *args, D_80241CD0_BE0A60);
|
||||
if (N(D_802445FC_CCF90C)) {
|
||||
N(D_802445FC_CCF90C) = FALSE;
|
||||
set_variable(script, *args, N(D_80244600_CCF910));
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
||||
return ApiStatus_BLOCK;
|
||||
}
|
||||
*/
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_80242288_CCD598);
|
||||
/*
|
||||
ApiStatus N(func_80242288_CCD598)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
|
||||
D_80241CD0_BE0A60 = get_variable(script, *args);
|
||||
D_80241CCC_BE0A5C = 1;
|
||||
N(D_80244600_CCF910) = get_variable(script, *args);
|
||||
N(D_802445FC_CCF90C) = TRUE;
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
*/
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCBE20", func_802422C0_CCD5D0);
|
||||
extern s32 N(D_802453B0_EF79C0)[91];
|
||||
|
||||
ApiStatus N(func_802422C0_CCD5D0)(ScriptInstance* script, s32 isInitialCall) {
|
||||
Bytecode* args = script->ptrReadPos;
|
||||
s32* ptr = get_variable(script, *args);
|
||||
s32 i;
|
||||
|
||||
if (ptr != NULL) {
|
||||
for (i = 0; ptr[i] != 0; i++) {
|
||||
N(D_802453B0_EF79C0)[i] = ptr[i];
|
||||
}
|
||||
N(D_802453B0_EF79C0)[i] = 0;
|
||||
} else {
|
||||
for (i = 0; i <= 90; i++) {
|
||||
N(D_802453B0_EF79C0)[i] = i + 128;
|
||||
N(D_802453B0_EF79C0)[91] = 0;
|
||||
}
|
||||
}
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
#include "flo_14.h"
|
||||
|
||||
INCLUDE_ASM(s32, "world/area_flo/flo_14/CCD670", func_80242360_CCD670);
|
||||
ApiStatus N(func_80242360_CCD670)(ScriptInstance *script, s32 isInitialCall) {
|
||||
CollisionStatus* collisionStatus = &gCollisionStatus;
|
||||
|
||||
set_variable(script, *script->ptrReadPos, collisionStatus->floorBelow);
|
||||
return ApiStatus_DONE2;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user