Merge branch 'mr-origin-86'
This commit is contained in:
@@ -1736,6 +1736,8 @@ enum actor_e
|
|||||||
ACTOR_E_BULL_INTRO,
|
ACTOR_E_BULL_INTRO,
|
||||||
ACTOR_F_CHIMPY = 0xF,
|
ACTOR_F_CHIMPY = 0xF,
|
||||||
|
|
||||||
|
ACTOR_10E_BLUBBER_SHIP_TOP_HATCH = 0x10e,
|
||||||
|
|
||||||
ACTOR_11_JUJU_CTRL = 0x11,
|
ACTOR_11_JUJU_CTRL = 0x11,
|
||||||
ACTOR_12_BEEHIVE,
|
ACTOR_12_BEEHIVE,
|
||||||
//ACTOR_13_SINKING_BOBBER
|
//ACTOR_13_SINKING_BOBBER
|
||||||
@@ -1914,6 +1916,10 @@ enum actor_e
|
|||||||
ACTOR_146_GV_KAZOOIE_TARGET,
|
ACTOR_146_GV_KAZOOIE_TARGET,
|
||||||
ACTOR_147_ANCIENT_ONE,
|
ACTOR_147_ANCIENT_ONE,
|
||||||
|
|
||||||
|
ACTOR_149_TTC_BLUBBER_UNKNOWN = 0x149,
|
||||||
|
ACTOR_14A_TTC_BLUBBER_UNKNOWN = 0x14a,
|
||||||
|
ACTOR_14B_TTC_BLUBBER_UNKNOWN = 0x14b,
|
||||||
|
|
||||||
ACTOR_14E_BGS_ELEVATED_WALKWAY_SWITCH = 0x14E,
|
ACTOR_14E_BGS_ELEVATED_WALKWAY_SWITCH = 0x14E,
|
||||||
ACTOR_14F_DESTROYED_JIGGY,
|
ACTOR_14F_DESTROYED_JIGGY,
|
||||||
|
|
||||||
@@ -2071,6 +2077,11 @@ enum actor_e
|
|||||||
|
|
||||||
ACTOR_2DB_DINGPOT = 0x2DB,
|
ACTOR_2DB_DINGPOT = 0x2DB,
|
||||||
|
|
||||||
|
ACTOR_2DF_LIGHTHOUSE_B = 0x2DF,
|
||||||
|
ACTOR_2E0_TTC_STAIRS_1,
|
||||||
|
ACTOR_2E1_TTC_STAIRS_2,
|
||||||
|
ACTOR_2E2_LIGHTHOUSE_A,
|
||||||
|
|
||||||
ACTOR_2E5_DOOR_OF_GRUNTY = 0x2e5,
|
ACTOR_2E5_DOOR_OF_GRUNTY = 0x2e5,
|
||||||
|
|
||||||
ACTOR_30D_BOOM_BOX_FAST = 0x30D,
|
ACTOR_30D_BOOM_BOX_FAST = 0x30D,
|
||||||
@@ -2404,6 +2415,18 @@ enum mm_specific_flags {
|
|||||||
MM_SPECIFIC_FLAG_A_UNKNOWN
|
MM_SPECIFIC_FLAG_A_UNKNOWN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum ttc_specific_flags {
|
||||||
|
TTC_SPECIFIC_FLAG_0_BLUBBER_UNKNOWN,
|
||||||
|
TTC_SPECIFIC_FLAG_1_UNKNOWN, // something related to the sand castle
|
||||||
|
TTC_SPECIFIC_FLAG_2_BLUBBER_JIGGY_SPAWNED_TEXT_SHOWN,
|
||||||
|
TTC_SPECIFIC_FLAG_3_BLUBBER_SHOW_JIGGY_SPAWNED_TEXT_FLAG,
|
||||||
|
// unused
|
||||||
|
TTC_SPECIFIC_FLAG_5_CLAM_FIRST_MEET_TEXT_SHOWN = 0x5,
|
||||||
|
// unused
|
||||||
|
TTC_SPECIFIC_FLAG_7_NIPPER_FIRST_MEET_TEXT_SHOWN = 0x7
|
||||||
|
};
|
||||||
|
|
||||||
enum item_e
|
enum item_e
|
||||||
{
|
{
|
||||||
ITEM_0_HOURGLASS_TIMER = 0x0,
|
ITEM_0_HOURGLASS_TIMER = 0x0,
|
||||||
@@ -2856,7 +2879,7 @@ enum asset_e
|
|||||||
ASSET_236_ANIM_BSPUMPKIN_REBOUND = 0x236,
|
ASSET_236_ANIM_BSPUMPKIN_REBOUND = 0x236,
|
||||||
|
|
||||||
ASSET_238_ANIM_LOGGO_IDLE = 0x238,
|
ASSET_238_ANIM_LOGGO_IDLE = 0x238,
|
||||||
|
ASSET_239_ANIM_LEAKY_IDLE = 0x239,
|
||||||
ASSET_240_ANIM_LOGGO_FLUSH = 0x240,
|
ASSET_240_ANIM_LOGGO_FLUSH = 0x240,
|
||||||
|
|
||||||
ASSET_242_ANIM_GOBI_RELAXING = 0x242,
|
ASSET_242_ANIM_GOBI_RELAXING = 0x242,
|
||||||
@@ -3110,16 +3133,16 @@ enum asset_e
|
|||||||
// 3b3 Mumbo's Hut
|
// 3b3 Mumbo's Hut
|
||||||
// Unused
|
// Unused
|
||||||
// Unused
|
// Unused
|
||||||
// 3b6 TTC Stairs 1
|
ASSET_3B6_MODEL_TTC_STAIRS_1 = 0x3B6,
|
||||||
// 3b7 TTC Stairs 2
|
ASSET_3B7_MODEL_TTC_STAIRS_1,
|
||||||
// Unused
|
// Unused
|
||||||
// Unused
|
// Unused
|
||||||
// Unused
|
// Unused
|
||||||
ASSET_3BB_MODEL_JINJO_YELLOW = 0x3BB,
|
ASSET_3BB_MODEL_JINJO_YELLOW = 0x3BB,
|
||||||
ASSET_3BC_MODEL_JINJO_ORANGE,
|
ASSET_3BC_MODEL_JINJO_ORANGE,
|
||||||
// 3bd TTC Lighthouse A
|
ASSET_3BD_MODEL_LIGHTHOUSE_A,
|
||||||
// 3be TTC Lighthouse B
|
ASSET_3BE_MODEL_LIGHTHOUSE_B,
|
||||||
ASSET_3BF_MODEL_PLAYER_SHADOW = 0x3BF,
|
ASSET_3BF_MODEL_PLAYER_SHADOW,
|
||||||
ASSET_3C0_MODEL_JINJO_BLUE,
|
ASSET_3C0_MODEL_JINJO_BLUE,
|
||||||
ASSET_3C1_MODEL_JINJO_PINK,
|
ASSET_3C1_MODEL_JINJO_PINK,
|
||||||
ASSET_3C2_MODEL_JINJO_GREEN,
|
ASSET_3C2_MODEL_JINJO_GREEN,
|
||||||
@@ -3138,7 +3161,7 @@ enum asset_e
|
|||||||
// 3cf MMM Cellar Hatch
|
// 3cf MMM Cellar Hatch
|
||||||
// 3d0 MMM Locked Gate (Lock On Left)
|
// 3d0 MMM Locked Gate (Lock On Left)
|
||||||
// 3d1 MMM Locked Gate (Lock On Right) 1
|
// 3d1 MMM Locked Gate (Lock On Right) 1
|
||||||
// 3d2 TTC Blubber's Ship Top Hatch
|
ASSET_3D2_MODEL_BLUBBER_SHIP_TOP_HATCH = 0x3d2,
|
||||||
// 3d3 MMM Church Door
|
// 3d3 MMM Church Door
|
||||||
// 3d4 Lockup
|
// 3d4 Lockup
|
||||||
ASSET_3D4_MODEL_LOCKUP = 0x3d4,
|
ASSET_3D4_MODEL_LOCKUP = 0x3d4,
|
||||||
@@ -4080,17 +4103,24 @@ enum asset_e
|
|||||||
|
|
||||||
ASSET_896_MODEL_GOLD_ROCK = 0x896,
|
ASSET_896_MODEL_GOLD_ROCK = 0x896,
|
||||||
|
|
||||||
ASSET_89D_ZOOMBOX_SPRITE = 0x89d,
|
ASSET_89D_ZOOMBOX_SPRITE = 0x89D,
|
||||||
|
|
||||||
ASSET_8A0_SPRITE_WATER_DROP = 0x8a0,
|
ASSET_8A0_SPRITE_WATER_DROP = 0x8A0,
|
||||||
|
|
||||||
ASSET_A0B_TEXT_UNKNOWN = 0xA0B,
|
ASSET_A0B_TEXT_BLUBBER_FIRST_MEET = 0xA0B,
|
||||||
ASSET_A0C_TEXT_UNKNOWN = 0xA0C,
|
ASSET_A0C_TEXT_BLUBBER_HALF_GOLD,
|
||||||
ASSET_A0D_TEXT_UNKNOWN = 0xA0D,
|
ASSET_A0D_TEXT_BLUBBER_COMPLETE,
|
||||||
|
ASSET_A0E_TEXT_NIPPER_SPAWNED,
|
||||||
|
|
||||||
ASSET_A14_TEXT_UNKNOWN = 0xA14,
|
ASSET_A10_TEXT_TTC_NIPPER_HURT = 0xa10,
|
||||||
|
|
||||||
ASSET_A17_TEXT_BURIED_TREASURE_SPAWNED = 0xa17,
|
ASSET_A14_TEXT_CLAM_TAUNT = 0xA14,
|
||||||
|
ASSET_A15_TEXT_TTC_LOCKUP_SPAWNED,
|
||||||
|
|
||||||
|
ASSET_A17_TEXT_BURIED_TREASURE_SPAWNED = 0xA17,
|
||||||
|
ASSET_A18_TEXT_TREASUREHUNT_FOLLOW_CLUES,
|
||||||
|
ASSET_A19_TEXT_TREASUREHUNT_SECOND_STEP,
|
||||||
|
ASSET_A1A_TEXT_LEAKY_FIRST_MEET,
|
||||||
|
|
||||||
ASSET_A1F_DIALOG_SHOCKJUMP_LEARN = VER_SELECT(0xa1f, 0x91f, 0, 0),
|
ASSET_A1F_DIALOG_SHOCKJUMP_LEARN = VER_SELECT(0xa1f, 0x91f, 0, 0),
|
||||||
ASSET_A20_DIALOG_FLY_LEARN,
|
ASSET_A20_DIALOG_FLY_LEARN,
|
||||||
@@ -4103,7 +4133,7 @@ enum asset_e
|
|||||||
ASSET_A27_TEXT_BOTTLES_ALL_TTC_MOVES_LEARNED,
|
ASSET_A27_TEXT_BOTTLES_ALL_TTC_MOVES_LEARNED,
|
||||||
ASSET_A28_TEXT_LEAKY_DONE,
|
ASSET_A28_TEXT_LEAKY_DONE,
|
||||||
|
|
||||||
ASSET_A2A_TEXT_UNKNOWN = 0xA2A,
|
ASSET_A2A_BLUBBER_COMPLETE_JIGGY_COLLECTED = 0xA2A,
|
||||||
|
|
||||||
ASSET_A6F_TEXT_CHARMER_MEET = 0xA6F,
|
ASSET_A6F_TEXT_CHARMER_MEET = 0xA6F,
|
||||||
ASSET_A70_TEXT_CHARMER_HELPED,
|
ASSET_A70_TEXT_CHARMER_HELPED,
|
||||||
@@ -4668,6 +4698,8 @@ enum marker_e{
|
|||||||
|
|
||||||
MARKER_99_TEEHEE = 0x99,
|
MARKER_99_TEEHEE = 0x99,
|
||||||
|
|
||||||
|
MARKER_A1_BLUBBER_SHIP_TOP_HATCH = 0xa1,
|
||||||
|
|
||||||
MARKER_A3_BLUBBER = 0xA3,
|
MARKER_A3_BLUBBER = 0xA3,
|
||||||
MARKER_A4_LOCKUP_SLOW,
|
MARKER_A4_LOCKUP_SLOW,
|
||||||
MARKER_A5_NIPPER,
|
MARKER_A5_NIPPER,
|
||||||
@@ -4773,6 +4805,7 @@ enum marker_e{
|
|||||||
MARKER_169_SNS_EGG,
|
MARKER_169_SNS_EGG,
|
||||||
|
|
||||||
MARKER_16B_SNIPPET_UPSIDEDOWN = 0x16B,
|
MARKER_16B_SNIPPET_UPSIDEDOWN = 0x16B,
|
||||||
|
MARKER_16C_NIPPER,
|
||||||
|
|
||||||
MARKER_173_CHUMP_FISH_2 = 0x173,
|
MARKER_173_CHUMP_FISH_2 = 0x173,
|
||||||
MARKER_174_GAME_OVER = 0x174,
|
MARKER_174_GAME_OVER = 0x174,
|
||||||
@@ -4905,6 +4938,11 @@ enum marker_e{
|
|||||||
|
|
||||||
MARKER_261_FIGHT_FLIGHT_PAD = 0x261,
|
MARKER_261_FIGHT_FLIGHT_PAD = 0x261,
|
||||||
|
|
||||||
|
MARKER_267_LIGHTHOUSE_A = 0x267,
|
||||||
|
MARKER_268_STAIRS_1,
|
||||||
|
MARKER_269_STAIRS_2,
|
||||||
|
MARKER_26A_LIGHTHOUSE_B,
|
||||||
|
|
||||||
MARKER_276_STONE_JINJO = 0x276,
|
MARKER_276_STONE_JINJO = 0x276,
|
||||||
|
|
||||||
MARKER_27A_JINJO_STATUE_BASE = 0x27A,
|
MARKER_27A_JINJO_STATUE_BASE = 0x27A,
|
||||||
|
@@ -450,7 +450,7 @@ void func_80352CF4(f32 *, f32 *, f32, f32);
|
|||||||
AnimCtrl *baanim_getAnimCtrlPtr(void);
|
AnimCtrl *baanim_getAnimCtrlPtr(void);
|
||||||
void player_setYPosition(f32);
|
void player_setYPosition(f32);
|
||||||
|
|
||||||
NodeProp *func_80304C38(enum actor_e arg0, Actor *arg1);
|
NodeProp *nodeprop_findByActorIdAndActorPosition(enum actor_e arg0, Actor *arg1);
|
||||||
NodeProp *func_80304CAC(s32 arg0, f32 position[3]);
|
NodeProp *func_80304CAC(s32 arg0, f32 position[3]);
|
||||||
Actor *actorArray_findClosestActorFromActorId(f32 position[3], enum actor_e actor_id, s32 arg2, f32 *min_distance_ptr);
|
Actor *actorArray_findClosestActorFromActorId(f32 position[3], enum actor_e actor_id, s32 arg2, f32 *min_distance_ptr);
|
||||||
Actor *subaddie_getLinkedActor(Actor *);
|
Actor *subaddie_getLinkedActor(Actor *);
|
||||||
|
@@ -165,7 +165,7 @@ typedef struct actor_s{
|
|||||||
u32 is_bundle:1;
|
u32 is_bundle:1;
|
||||||
AnimCtrl *animctrl;
|
AnimCtrl *animctrl;
|
||||||
ActorAnimationInfo *unk18;
|
ActorAnimationInfo *unk18;
|
||||||
TUPLE(f32, unk1C);
|
TUPLE(f32, unk1C); // actor position?
|
||||||
f32 actor_specific_1_f; //used in cheggs
|
f32 actor_specific_1_f; //used in cheggs
|
||||||
TUPLE(f32, velocity);
|
TUPLE(f32, velocity);
|
||||||
u32 unk38_31:10; // hit count for jinjo base in fight
|
u32 unk38_31:10; // hit count for jinjo base in fight
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
sm_func_80386810 = 0x80386810;
|
sm_func_80386810 = 0x80386810;
|
||||||
mm_func_803888B0 = 0x803888B0;
|
mm_func_803888B0 = 0x803888B0;
|
||||||
ttc_func_80388AC0 = 0x80388AC0;
|
TTC_resetSpawnableActors = 0x80388AC0;
|
||||||
ttc_func_8038BF8C = 0x8038BF8C;
|
ttc_func_8038BF8C = 0x8038BF8C;
|
||||||
cc_func_803870E0 = 0x803870E0;
|
cc_func_803870E0 = 0x803870E0;
|
||||||
cc_func_80387DA0 = 0x80387DA0;
|
cc_func_80387DA0 = 0x80387DA0;
|
||||||
|
@@ -260,7 +260,7 @@ func_802F9FD0 = 0x802fa1b0;
|
|||||||
func_802FA060 = 0x802fa240;
|
func_802FA060 = 0x802fa240;
|
||||||
func_802FADD4 = 0x802fafb4;
|
func_802FADD4 = 0x802fafb4;
|
||||||
cubeList_findNodePropByActorId = 0x80304b6c;
|
cubeList_findNodePropByActorId = 0x80304b6c;
|
||||||
func_80304C38 = 0x80304dd8;
|
nodeprop_findByActorIdAndActorPosition = 0x80304dd8;
|
||||||
func_80304CAC = 0x80304e4c;
|
func_80304CAC = 0x80304e4c;
|
||||||
nodeprop_getPosition_s32 = 0x80304eec;
|
nodeprop_getPosition_s32 = 0x80304eec;
|
||||||
nodeprop_getPosition = 0x80304f08;
|
nodeprop_getPosition = 0x80304f08;
|
||||||
|
@@ -100,7 +100,7 @@ void func_8038F6A4(Actor *this)
|
|||||||
NodeProp *temp_v0;
|
NodeProp *temp_v0;
|
||||||
if (!this->initialized)
|
if (!this->initialized)
|
||||||
{
|
{
|
||||||
temp_v0 = func_80304C38(ACTOR_32B_UNKNOWN, this);
|
temp_v0 = nodeprop_findByActorIdAndActorPosition(ACTOR_32B_UNKNOWN, this);
|
||||||
if (temp_v0 == 0)
|
if (temp_v0 == 0)
|
||||||
{
|
{
|
||||||
local->unk18[0] = 3672.0f;
|
local->unk18[0] = 3672.0f;
|
||||||
|
@@ -211,7 +211,7 @@ void func_80391744(Actor *this, Actor* other){
|
|||||||
void *sp24;
|
void *sp24;
|
||||||
f32 tmp_f0;
|
f32 tmp_f0;
|
||||||
|
|
||||||
sp24 = func_80304C38(0x22A, this);
|
sp24 = nodeprop_findByActorIdAndActorPosition(0x22A, this);
|
||||||
tmp_f0 = (f32)func_80304DA8(sp24);
|
tmp_f0 = (f32)func_80304DA8(sp24);
|
||||||
other->yaw = tmp_f0;
|
other->yaw = tmp_f0;
|
||||||
this->yaw = tmp_f0;
|
this->yaw = tmp_f0;
|
||||||
|
@@ -221,7 +221,7 @@ void func_803876D0(Actor *this){
|
|||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
this->velocity_x = 0.0f;
|
this->velocity_x = 0.0f;
|
||||||
this->actor_specific_1_f = 0.0f;
|
this->actor_specific_1_f = 0.0f;
|
||||||
node_prop = func_80304C38(0x150, this);
|
node_prop = nodeprop_findByActorIdAndActorPosition(0x150, this);
|
||||||
((ActorLocal_Conga *)&this->local)->unk1C = nodeprop_getRadius(node_prop);
|
((ActorLocal_Conga *)&this->local)->unk1C = nodeprop_getRadius(node_prop);
|
||||||
nodeprop_getPosition_s32(node_prop, &((ActorLocal_Conga *)&this->local)->unk10);
|
nodeprop_getPosition_s32(node_prop, &((ActorLocal_Conga *)&this->local)->unk10);
|
||||||
}
|
}
|
||||||
|
@@ -409,7 +409,7 @@ void chsmmole_Update(Actor * this){
|
|||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
marker_setFreeMethod(this->marker, func_80389984);
|
marker_setFreeMethod(this->marker, func_80389984);
|
||||||
if(this->unkF4_8 == 1 || this->unkF4_8 == 8){//L80389A30
|
if(this->unkF4_8 == 1 || this->unkF4_8 == 8){//L80389A30
|
||||||
sp40 = func_80304C38(0x349, this);
|
sp40 = nodeprop_findByActorIdAndActorPosition(0x349, this);
|
||||||
if(!sp40){
|
if(!sp40){
|
||||||
this->unk1C_x = this->position_x;
|
this->unk1C_x = this->position_x;
|
||||||
this->unk1C_y = this->position_y;
|
this->unk1C_y = this->position_y;
|
||||||
|
@@ -28,7 +28,7 @@ void func_8038A8F8(Actor *this){
|
|||||||
NodeProp *other;
|
NodeProp *other;
|
||||||
|
|
||||||
if(!this->volatile_initialized){
|
if(!this->volatile_initialized){
|
||||||
other = func_80304C38(0x3be, this);
|
other = nodeprop_findByActorIdAndActorPosition(0x3be, this);
|
||||||
if(!other){
|
if(!other){
|
||||||
this->unk1C_x = this->position_x;
|
this->unk1C_x = this->position_x;
|
||||||
this->unk1C_y = this->position_y;
|
this->unk1C_y = this->position_y;
|
||||||
|
@@ -2,26 +2,34 @@
|
|||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
|
|
||||||
extern void func_8028E668(f32[3], f32, f32, f32);
|
extern void func_8028E668(f32 arg0[3], f32 arg1, f32 arg2, f32 arg3);
|
||||||
extern void func_8028FA34(s32, Actor*);
|
extern void func_8028FA34(s32, Actor*);
|
||||||
extern s32 func_802E0970(s32, f32, f32, f32, s32, s32, f32[3]);
|
extern s32 func_802E0970(s32, f32, f32, f32, s32, s32, f32[3]);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u8 unk0[0xE];
|
u8 unk0[0xE]; // unused?
|
||||||
s16 unkE;
|
s16 unkE; // some sort of index
|
||||||
f32 throw_target_position[3];
|
f32 throw_target_position[3];
|
||||||
s32 throw_target_radius;
|
s32 throw_target_radius;
|
||||||
NodeProp* unk20;
|
NodeProp* gold_bullion_throw_target_node_prop;
|
||||||
s32 unk24;
|
s32 unk24; // bullions left to collect ? (changes from 4 to 0)
|
||||||
}ActorLocal_Blubber;
|
} ActorLocal_Blubber;
|
||||||
|
|
||||||
void func_803878CC(Actor *this);
|
static void __chBlubber_updateFunc(Actor *this);
|
||||||
void TTC_func_80387CF4(Actor *this);
|
static void __chBlubber_update2Func(Actor *this);
|
||||||
Actor *func_80387D6C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
static Actor *__chBlubber_drawFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||||
|
|
||||||
|
enum ch_blubber_states_e {
|
||||||
|
CH_BLUBBER_STATE_1_UNKNOWN = 1, // initial state (80387A84)
|
||||||
|
CH_BLUBBER_STATE_2_UNKNOWN = 2, // 80387B10
|
||||||
|
CH_BLUBBER_STATE_3_UNKNOWN = 3,
|
||||||
|
CH_BLUBBER_STATE_4_UNKNOWN = 4, // 80387C04
|
||||||
|
CH_BLUBBER_STATE_5_UNKNOWN = 5 // 80387CD4
|
||||||
|
};
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorAnimationInfo D_8038C4E0[] = {
|
ActorAnimationInfo gChBlubberAnimations[6] = {
|
||||||
{0x00, 0.0f},
|
{NULL, NULL},
|
||||||
{ASSET_B5_ANIM_BLUBBER_WALK, 2.0f},
|
{ASSET_B5_ANIM_BLUBBER_WALK, 2.0f},
|
||||||
{ASSET_B6_ANIM_BLUBBER_CRY, 2.0f},
|
{ASSET_B6_ANIM_BLUBBER_CRY, 2.0f},
|
||||||
{ASSET_B6_ANIM_BLUBBER_CRY, 2.0f},
|
{ASSET_B6_ANIM_BLUBBER_CRY, 2.0f},
|
||||||
@@ -29,78 +37,77 @@ ActorAnimationInfo D_8038C4E0[] = {
|
|||||||
{ASSET_B8_ANIM_BLUBBER_RUN, 0.8f}
|
{ASSET_B8_ANIM_BLUBBER_RUN, 0.8f}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo TTC_D_8038C510 = {
|
ActorInfo gChBlubber = {
|
||||||
MARKER_A3_BLUBBER, ACTOR_115_BLUBBER, ASSET_370_MODEL_BLUBBER,
|
MARKER_A3_BLUBBER, ACTOR_115_BLUBBER, ASSET_370_MODEL_BLUBBER,
|
||||||
0x1, D_8038C4E0,
|
0x1, gChBlubberAnimations,
|
||||||
func_803878CC, TTC_func_80387CF4, func_80387D6C,
|
__chBlubber_updateFunc, __chBlubber_update2Func, __chBlubber_drawFunc,
|
||||||
0, 0x399, 1.8f, 0
|
0, 0x399, 1.8f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
void func_80387490(Actor *this){
|
static void __chBlubber_initiliaze(Actor *this){
|
||||||
ActorLocal_Blubber *local = (ActorLocal_Blubber *)&this->local;
|
ActorLocal_Blubber *local = (ActorLocal_Blubber *)&this->local;
|
||||||
|
|
||||||
animctrl_setTransitionDuration(this->animctrl, 0.2f);
|
animctrl_setTransitionDuration(this->animctrl, 0.2f);
|
||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
local->unk20 = func_80304C38(ACTOR_2B_GOLD_BULLION_THROW_TARGET, this);
|
local->gold_bullion_throw_target_node_prop = nodeprop_findByActorIdAndActorPosition(ACTOR_2B_GOLD_BULLION_THROW_TARGET, this);
|
||||||
if(local->unk20){
|
if(local->gold_bullion_throw_target_node_prop){
|
||||||
|
nodeprop_getPosition(local->gold_bullion_throw_target_node_prop, local->throw_target_position);
|
||||||
nodeprop_getPosition(local->unk20, local->throw_target_position);
|
local->throw_target_radius = nodeprop_getRadius(local->gold_bullion_throw_target_node_prop);
|
||||||
local->throw_target_radius = nodeprop_getRadius(local->unk20);
|
|
||||||
}
|
}
|
||||||
local->unk24 = 4;
|
local->unk24 = 4;
|
||||||
func_8032A82C(this, 0x14C);
|
func_8032A82C(this, 0x14C);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80387520(ActorMarker *caller, enum asset_e text_id, s32 arg1){
|
static void __chBlubber_showTextCallback(ActorMarker *caller, enum asset_e text_id, s32 arg1){
|
||||||
Actor *this = marker_getActor(caller);
|
Actor *this = marker_getActor(caller);
|
||||||
ActorLocal_Blubber *local = (ActorLocal_Blubber*)&this->local;
|
ActorLocal_Blubber *local = (ActorLocal_Blubber*)&this->local;
|
||||||
|
|
||||||
if(text_id == 0xa0d || text_id == 0xa2a){
|
if(text_id == ASSET_A0D_TEXT_BLUBBER_COMPLETE || text_id == ASSET_A2A_BLUBBER_COMPLETE_JIGGY_COLLECTED){
|
||||||
local->unk24 = 0;
|
local->unk24 = 0;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
subaddie_set_state_with_direction(this, 2, 0, 1);
|
subaddie_set_state_with_direction(this, CH_BLUBBER_STATE_2_UNKNOWN, 0, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80387574(ActorMarker *caller, enum asset_e text_id, s32 arg1){
|
static void __chBlubber_showTextCallback2(ActorMarker *caller, enum asset_e text_id, s32 arg1){
|
||||||
f32 sp24[3];
|
f32 sp24[3];
|
||||||
|
|
||||||
if(nodeProp_findPositionFromActorId(0x14b, sp24)){
|
if(nodeProp_findPositionFromActorId(ACTOR_14B_TTC_BLUBBER_UNKNOWN, sp24)){
|
||||||
jiggy_spawn(JIGGY_14_TTC_BLUBBER, sp24);
|
jiggy_spawn(JIGGY_14_TTC_BLUBBER, sp24);
|
||||||
__spawnQueue_add_4((GenFunction_4)spawnQueue_actor_f32, ACTOR_4C_STEAM, reinterpret_cast(s32, sp24[0]), reinterpret_cast(s32, sp24[1]), reinterpret_cast(s32, sp24[2]));
|
__spawnQueue_add_4((GenFunction_4)spawnQueue_actor_f32, ACTOR_4C_STEAM, reinterpret_cast(s32, sp24[0]), reinterpret_cast(s32, sp24[1]), reinterpret_cast(s32, sp24[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_803875D4(ActorMarker *marker){
|
static void __chBlubber_showJiggySpawnedText(ActorMarker *marker){
|
||||||
Actor *this = marker_getActor(reinterpret_cast(ActorMarker *, marker));
|
Actor *this = marker_getActor(reinterpret_cast(ActorMarker *, marker));
|
||||||
enum asset_e text_id;
|
enum asset_e text_id;
|
||||||
|
|
||||||
subaddie_set_state(this, 4);
|
subaddie_set_state(this, CH_BLUBBER_STATE_4_UNKNOWN);
|
||||||
actor_loopAnimation(this);
|
actor_loopAnimation(this);
|
||||||
this->actor_specific_1_f = 0.0f;
|
this->actor_specific_1_f = 0.0f;
|
||||||
|
|
||||||
if(!mapSpecificFlags_get(2)) {
|
if(!mapSpecificFlags_get(TTC_SPECIFIC_FLAG_2_BLUBBER_JIGGY_SPAWNED_TEXT_SHOWN)) {
|
||||||
text_id = jiggyscore_isCollected(JIGGY_14_TTC_BLUBBER) ? ASSET_A2A_TEXT_UNKNOWN : ASSET_A0D_TEXT_UNKNOWN;
|
text_id = jiggyscore_isCollected(JIGGY_14_TTC_BLUBBER) ? ASSET_A2A_BLUBBER_COMPLETE_JIGGY_COLLECTED : ASSET_A0D_TEXT_BLUBBER_COMPLETE;
|
||||||
gcdialog_showText(text_id, 0xf, this->position, this->marker, func_80387520, func_80387574);
|
gcdialog_showText(text_id, 0xf, this->position, this->marker, __chBlubber_showTextCallback, __chBlubber_showTextCallback2);
|
||||||
mapSpecificFlags_set(2, TRUE);
|
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_2_BLUBBER_JIGGY_SPAWNED_TEXT_SHOWN, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80387678(Actor *this){
|
static void __chBlubber_checkJiggySpawnedTextAndAdvanceState(Actor *this){
|
||||||
if( !mapSpecificFlags_get(1) ) return;
|
if( !mapSpecificFlags_get(TTC_SPECIFIC_FLAG_1_UNKNOWN) ) return;
|
||||||
if( mapSpecificFlags_get(3) ) return;
|
if( mapSpecificFlags_get(TTC_SPECIFIC_FLAG_3_BLUBBER_SHOW_JIGGY_SPAWNED_TEXT_FLAG) ) return;
|
||||||
|
|
||||||
this->yaw_ideal = (f32) func_80329784(this);
|
this->yaw_ideal = (f32) func_80329784(this);
|
||||||
mapSpecificFlags_set(3, TRUE);
|
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_3_BLUBBER_SHOW_JIGGY_SPAWNED_TEXT_FLAG, TRUE);
|
||||||
func_8028F918(2);
|
func_8028F918(2);
|
||||||
timed_setStaticCameraToNode(0.0f, 4);
|
timed_setStaticCameraToNode(0.0f, 4);
|
||||||
timedFunc_set_1(1.0f, (GenFunction_1)func_803875D4, (s32)this->marker);
|
timedFunc_set_1(1.0f, (GenFunction_1)__chBlubber_showJiggySpawnedText, (s32)this->marker);
|
||||||
subaddie_set_state_with_direction(this, 1, 0.0f, 1);
|
subaddie_set_state_with_direction(this, CH_BLUBBER_STATE_1_UNKNOWN, 0.0f, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8038771C(Actor *this){
|
static void __func_8038771C(Actor *this){
|
||||||
if( !func_80329030(this, 0)
|
if( !func_80329030(this, 0)
|
||||||
&& func_80329480(this)
|
&& func_80329480(this)
|
||||||
){
|
){
|
||||||
@@ -108,39 +115,40 @@ void func_8038771C(Actor *this){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80387774(Actor **this_ptr){
|
// probably something related to blubber throwing the bullions
|
||||||
|
static void __func_80387774(Actor **this_ptr){
|
||||||
ActorLocal_Blubber *local = (ActorLocal_Blubber *)&(*this_ptr)->local;
|
ActorLocal_Blubber *local = (ActorLocal_Blubber *)&(*this_ptr)->local;
|
||||||
|
|
||||||
player_setCarryObjectPoseInCylinder(local->throw_target_position, local->throw_target_radius, 100.0f, ACTOR_2A_GOLD_BULLION, this_ptr);
|
player_setCarryObjectPoseInCylinder(local->throw_target_position, local->throw_target_radius, 100.0f, ACTOR_2A_GOLD_BULLION, this_ptr);
|
||||||
if( func_80329530(*this_ptr, 200)
|
if( func_80329530(*this_ptr, 200)
|
||||||
&& bacarry_get_markerId() == MARKER_37_GOLD_BULLION
|
&& bacarry_get_markerId() == MARKER_37_GOLD_BULLION
|
||||||
&& player_throwCarriedObject()
|
&& player_throwCarriedObject()
|
||||||
){
|
) {
|
||||||
func_8028FA34(!mapSpecificFlags_get(0)? 0x149 : 0x14a, *this_ptr);
|
func_8028FA34(!mapSpecificFlags_get(TTC_SPECIFIC_FLAG_0_BLUBBER_UNKNOWN) ? ACTOR_149_TTC_BLUBBER_UNKNOWN : ACTOR_14A_TTC_BLUBBER_UNKNOWN, *this_ptr);
|
||||||
(*this_ptr)->has_met_before = TRUE;
|
(*this_ptr)->has_met_before = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80387830(Actor *this , f32 arg1, f32 arg2){
|
static void __func_80387830(Actor *this , f32 arg1, f32 arg2){
|
||||||
if( actor_animationIsAt(this, arg1)
|
if( actor_animationIsAt(this, arg1)
|
||||||
|| actor_animationIsAt(this, arg2)
|
|| actor_animationIsAt(this, arg2)
|
||||||
){
|
){
|
||||||
this->unk10_12 = func_802E0970(0x26, 0.75f, 0.85f, 0.05f, 11000, this->unk10_12, this->position);
|
this->unk10_12 = func_802E0970(SFX_26_BANJO_LANDING_09, 0.75f, 0.85f, 0.05f, 11000, this->unk10_12, this->position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_803878CC(Actor * this){
|
static void __chBlubber_updateFunc(Actor *this){
|
||||||
ActorLocal_Blubber *local;
|
ActorLocal_Blubber *local;
|
||||||
|
|
||||||
this->marker->propPtr->unk8_3 = TRUE;
|
this->marker->propPtr->unk8_3 = TRUE;
|
||||||
func_8028E668(this->position, 90.0f, -10.0f, 110.0f);
|
func_8028E668(this->position, 90.0f, -10.0f, 110.0f);
|
||||||
if(!mapSpecificFlags_get(1) && !func_80329530(this, 2500))
|
if(!mapSpecificFlags_get(TTC_SPECIFIC_FLAG_1_UNKNOWN) && !func_80329530(this, 2500))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!this->volatile_initialized){
|
if(!this->volatile_initialized){
|
||||||
if(this->state == 3){
|
if(this->state == CH_BLUBBER_STATE_3_UNKNOWN){
|
||||||
subaddie_set_state_with_direction(this, 2, 0.0f, 1);
|
subaddie_set_state_with_direction(this, CH_BLUBBER_STATE_2_UNKNOWN, 0.0f, 1);
|
||||||
}
|
}
|
||||||
this->volatile_initialized = TRUE;
|
this->volatile_initialized = TRUE;
|
||||||
}//L80387970
|
}//L80387970
|
||||||
@@ -149,44 +157,43 @@ void func_803878CC(Actor * this){
|
|||||||
&& !this->has_met_before
|
&& !this->has_met_before
|
||||||
&& item_getCount(ITEM_18_GOLD_BULLIONS) == 0
|
&& item_getCount(ITEM_18_GOLD_BULLIONS) == 0
|
||||||
){
|
){
|
||||||
gcdialog_showText(ASSET_A0B_TEXT_UNKNOWN, 0xe, this->position, this->marker, func_80387520, NULL);
|
gcdialog_showText(ASSET_A0B_TEXT_BLUBBER_FIRST_MEET, 0xe, this->position, this->marker, __chBlubber_showTextCallback, NULL);
|
||||||
this->has_met_before = TRUE;
|
this->has_met_before = TRUE;
|
||||||
subaddie_set_state_forward(this, 3);
|
subaddie_set_state_forward(this, CH_BLUBBER_STATE_3_UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( mapSpecificFlags_get(0)
|
if( mapSpecificFlags_get(TTC_SPECIFIC_FLAG_0_BLUBBER_UNKNOWN)
|
||||||
&& !this->unk138_23
|
&& !this->unk138_23
|
||||||
){
|
){
|
||||||
if (item_getCount(ITEM_18_GOLD_BULLIONS) == 0) {
|
if (item_getCount(ITEM_18_GOLD_BULLIONS) == 0) {
|
||||||
gcdialog_showText(ASSET_A0C_TEXT_UNKNOWN, 4, NULL, NULL, NULL, NULL);
|
gcdialog_showText(ASSET_A0C_TEXT_BLUBBER_HALF_GOLD, 4, NULL, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
this->unk138_23 = TRUE;
|
this->unk138_23 = TRUE;
|
||||||
this->has_met_before = TRUE;
|
this->has_met_before = TRUE;
|
||||||
|
|
||||||
}//L80387A54
|
}//L80387A54
|
||||||
|
|
||||||
switch(this->state){//D_8038CD40
|
switch(this->state){//D_8038CD40
|
||||||
case 1:// 80387A84
|
case CH_BLUBBER_STATE_1_UNKNOWN:
|
||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
actor_collisionOff(this);
|
actor_collisionOff(this);
|
||||||
func_80387490(this);
|
__chBlubber_initiliaze(this);
|
||||||
}
|
}
|
||||||
func_80387774(&this);
|
__func_80387774(&this);
|
||||||
|
|
||||||
if(subaddie_maybe_set_state_position_direction(this, 2, 0.0f, 1, 0.007f))
|
if(subaddie_maybe_set_state_position_direction(this, CH_BLUBBER_STATE_2_UNKNOWN, 0.0f, 1, 0.007f))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
func_80328FB0(this, 3.0f);
|
func_80328FB0(this, 3.0f);
|
||||||
func_8038771C(this);
|
__func_8038771C(this);
|
||||||
func_80387830(this, 0.14f, 0.68f);
|
__func_80387830(this, 0.14f, 0.68f);
|
||||||
func_80387678(this);
|
__chBlubber_checkJiggySpawnedTextAndAdvanceState(this);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:// 80387B10
|
case CH_BLUBBER_STATE_2_UNKNOWN:
|
||||||
func_80387774(&this);
|
__func_80387774(&this);
|
||||||
if( actor_animationIsAt(this, 0.99f)
|
if( actor_animationIsAt(this, 0.99f)
|
||||||
&& subaddie_maybe_set_state_position_direction(this, 1, 0.0f, 1, 0.78f)
|
&& subaddie_maybe_set_state_position_direction(this, CH_BLUBBER_STATE_1_UNKNOWN, 0.0f, 1, 0.78f)
|
||||||
){
|
){
|
||||||
this->actor_specific_1_f = 4.0f;
|
this->actor_specific_1_f = 4.0f;
|
||||||
break;
|
break;
|
||||||
@@ -204,18 +211,18 @@ void func_803878CC(Actor * this){
|
|||||||
FUNC_8030E8B4(SFX_83_BLUBBER_CRYING, 0.91f, 17000, this->position, 1250, 2500);
|
FUNC_8030E8B4(SFX_83_BLUBBER_CRYING, 0.91f, 17000, this->position, 1250, 2500);
|
||||||
}
|
}
|
||||||
|
|
||||||
func_80387678(this);
|
__chBlubber_checkJiggySpawnedTextAndAdvanceState(this);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case CH_BLUBBER_STATE_3_UNKNOWN:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:// 80387C04
|
case CH_BLUBBER_STATE_4_UNKNOWN:
|
||||||
{
|
{
|
||||||
func_80328FB0(this, 3.0f);
|
func_80328FB0(this, 3.0f);
|
||||||
local = (ActorLocal_Blubber*)&this->local;
|
local = (ActorLocal_Blubber*)&this->local;
|
||||||
if(actor_animationIsAt(this, 0.99f) && !local->unk24){
|
if(actor_animationIsAt(this, 0.99f) && !local->unk24){
|
||||||
subaddie_set_state(this, 5);
|
subaddie_set_state(this, CH_BLUBBER_STATE_5_UNKNOWN);
|
||||||
this->actor_specific_1_f = 8.0f;
|
this->actor_specific_1_f = 8.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,24 +238,24 @@ void func_803878CC(Actor * this){
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:// 80387CD4
|
case CH_BLUBBER_STATE_5_UNKNOWN:
|
||||||
local = (ActorLocal_Blubber*)&this->local;
|
local = (ActorLocal_Blubber*)&this->local;
|
||||||
func_8032A95C(this, local->unkE, 0x21c);
|
func_8032A95C(this, local->unkE, 0x21c);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80387CF4(Actor *this){
|
static void __chBlubber_update2Func(Actor *this){
|
||||||
func_80343DEC(this);
|
func_80343DEC(this);
|
||||||
if(0.99 <= this->unk48){
|
if(0.99 <= this->unk48){
|
||||||
func_8028F918(0);
|
func_8028F918(0);
|
||||||
timed_exitStaticCamera(0.0f);
|
timed_exitStaticCamera(0.0f);
|
||||||
marker_despawn(this->marker);
|
marker_despawn(this->marker);
|
||||||
}
|
}
|
||||||
func_80387830(this, 0.5f, 0.97f);
|
__func_80387830(this, 0.5f, 0.97f);
|
||||||
}
|
}
|
||||||
|
|
||||||
Actor *func_80387D6C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
static Actor *__chBlubber_drawFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||||
func_8033A45C(4, 0);
|
func_8033A45C(4, 0);
|
||||||
return actor_draw(marker, gfx, mtx, vtx);
|
return actor_draw(marker, gfx, mtx, vtx);
|
||||||
}
|
}
|
||||||
|
@@ -6,41 +6,41 @@ extern Actor *spawnQueue_bundle_f32(s32, s32, s32, s32);
|
|||||||
extern f32 func_80257204(f32, f32, f32, f32);
|
extern f32 func_80257204(f32, f32, f32, f32);
|
||||||
extern ActorProp * func_80320EB0(ActorMarker *, f32, s32);
|
extern ActorProp * func_80320EB0(ActorMarker *, f32, s32);
|
||||||
|
|
||||||
void chClam_update(Actor *this);
|
static void __chClam_updateFunc(Actor *this);
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorAnimationInfo chClamAnimations[] = {
|
ActorAnimationInfo gChClamAnimations[4] = {
|
||||||
{0x00, 0.0f},
|
{NULL, NULL},
|
||||||
{ASSET_AA_ANIM_CLAM_IDLE, 2.0f},
|
{ASSET_AA_ANIM_CLAM_IDLE, 2.0f},
|
||||||
{ASSET_24_ANIM_CLAM_HOP, 1.0f},
|
{ASSET_24_ANIM_CLAM_HOP, 1.0f},
|
||||||
{ASSET_AB_ANIM_CLAM_EAT, 0.6f}
|
{ASSET_AB_ANIM_CLAM_EAT, 0.6f}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo chClam = {
|
ActorInfo gChClam = {
|
||||||
MARKER_15_CLAM, ACTOR_69_CLAM, ASSET_351_MODEL_CLAM,
|
MARKER_15_CLAM, ACTOR_69_CLAM, ASSET_351_MODEL_CLAM,
|
||||||
0x1, chClamAnimations,
|
0x1, gChClamAnimations,
|
||||||
chClam_update, actor_update_func_80326224, actor_draw,
|
__chClam_updateFunc, actor_update_func_80326224, actor_draw,
|
||||||
4500, 0x366, 1.6f, 0
|
4500, 0x366, 1.6f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
void __chClam_func_803863F0(enum sfx_e sfx_id, f32 arg1, s32 arg2, f32 position[3], f32 arg4, f32 arg5){
|
static void __chClam_playSfx(enum sfx_e sfx_id, f32 volume, s32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
||||||
if(func_803114B0()){
|
if(func_803114B0()){
|
||||||
arg2 -= 10000;
|
sampleRate -= 10000;
|
||||||
if(arg2 < 0)
|
if(sampleRate < 0)
|
||||||
arg2 = 0;
|
sampleRate = 0;
|
||||||
}
|
}
|
||||||
func_8030E878(sfx_id, arg1, arg2, position, arg4, arg5);
|
|
||||||
|
func_8030E878(sfx_id, volume, sampleRate, position, minFadeDistance, maxFadeDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_func_80386454(Actor *this){
|
static void __chClam_func_80386454(Actor *this){
|
||||||
subaddie_set_state_with_direction(this, 1, 0.01f, 1);
|
subaddie_set_state_with_direction(this, 1, 0.01f, 1);
|
||||||
actor_loopAnimation(this);
|
actor_loopAnimation(this);
|
||||||
animctrl_setDuration(this->animctrl, randf2(1.9f, 2.1f));
|
animctrl_setDuration(this->animctrl, randf2(1.9f, 2.1f));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool __chClam_updateTarget(Actor *this, f32 arg1) {
|
static bool __chClam_updateFuncTarget(Actor *this, f32 arg1) {
|
||||||
f32 egg_dist;
|
f32 egg_dist;
|
||||||
f32 red_feather_dist;
|
f32 red_feather_dist;
|
||||||
f32 pad;
|
f32 pad;
|
||||||
@@ -84,13 +84,13 @@ bool __chClam_updateTarget(Actor *this, f32 arg1) {
|
|||||||
if ((volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) ? 0 : 0x11) < this->actor_specific_1_f) {
|
if ((volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) ? 0 : 0x11) < this->actor_specific_1_f) {
|
||||||
this->actor_specific_1_f = (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) != 0) ? 0.0f : 17.0f;
|
this->actor_specific_1_f = (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) != 0) ? 0.0f : 17.0f;
|
||||||
} else if (sp38 == 0) {
|
} else if (sp38 == 0) {
|
||||||
__chClam_func_803863F0(SFX_AE_YUMYUM_TALKING, randf2(0.9f, 1.0f), 22000, this->position, 500.0f, 2000.0f);
|
__chClam_playSfx(SFX_AE_YUMYUM_TALKING, randf2(0.9f, 1.0f), 22000, this->position, 500.0f, 2000.0f);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
static bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
||||||
f32 temp_f0_2;
|
f32 temp_f0_2;
|
||||||
s32 position;
|
s32 position;
|
||||||
s32 sp2C;
|
s32 sp2C;
|
||||||
@@ -100,7 +100,7 @@ bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
|||||||
|
|
||||||
animctrl_setDuration(this->animctrl, 1.0f);
|
animctrl_setDuration(this->animctrl, 1.0f);
|
||||||
sp2C = (s32) ((f64) (60.0f / (f32) func_8033DD90()) * 0.5);
|
sp2C = (s32) ((f64) (60.0f / (f32) func_8033DD90()) * 0.5);
|
||||||
if ((this->unk1C[0] != 0.0f) || !__chClam_updateTarget(this, sp2C)) {
|
if ((this->unk1C[0] != 0.0f) || !__chClam_updateFuncTarget(this, sp2C)) {
|
||||||
if (((f64) animctrl_getAnimTimer(this->animctrl) < 0.1) && ((f64) randf() < 0.5)) {
|
if (((f64) animctrl_getAnimTimer(this->animctrl) < 0.1) && ((f64) randf() < 0.5)) {
|
||||||
if (this->unk1C[0] != 0.0f) {
|
if (this->unk1C[0] != 0.0f) {
|
||||||
arg1 *= 2;
|
arg1 *= 2;
|
||||||
@@ -132,7 +132,7 @@ bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void __chClam_particalEmitterInit(ParticleEmitter *pCtrl, f32 position[3]){
|
static void __chClam_particalEmitterInit(ParticleEmitter *pCtrl, f32 position[3]){
|
||||||
particleEmitter_setPosition(pCtrl, position);
|
particleEmitter_setPosition(pCtrl, position);
|
||||||
particleEmitter_func_802EF9F8(pCtrl, 0.7f);
|
particleEmitter_func_802EF9F8(pCtrl, 0.7f);
|
||||||
particleEmitter_func_802EFA18(pCtrl, 3);
|
particleEmitter_func_802EFA18(pCtrl, 3);
|
||||||
@@ -144,7 +144,7 @@ void __chClam_particalEmitterInit(ParticleEmitter *pCtrl, f32 position[3]){
|
|||||||
particleEmitter_setDrawMode(pCtrl, 2);
|
particleEmitter_setDrawMode(pCtrl, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_emitLargeShellParticles(f32 position[3], s32 count){
|
static void __chClam_emitLargeShellParticles(f32 position[3], s32 count){
|
||||||
static ParticleSettingsVelocityAcceleration D_8038C3F4 = {
|
static ParticleSettingsVelocityAcceleration D_8038C3F4 = {
|
||||||
{{-50.0f, 750.0f, -50.0f}, {120.0f, 900.0f, 120.0f}},
|
{{-50.0f, 750.0f, -50.0f}, {120.0f, 900.0f, 120.0f}},
|
||||||
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}}
|
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}}
|
||||||
@@ -160,7 +160,7 @@ void __chClam_emitLargeShellParticles(f32 position[3], s32 count){
|
|||||||
particleEmitter_emitN(pCtrl, count);
|
particleEmitter_emitN(pCtrl, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_emitEyeParticles(f32 position[3], s32 count){
|
static void __chClam_emitEyeParticles(f32 position[3], s32 count){
|
||||||
static ParticleSettingsVelocityAcceleration D_8038C424 = {
|
static ParticleSettingsVelocityAcceleration D_8038C424 = {
|
||||||
{{-80.0f, 400.0f, -80.0f}, {160.0f, 860.0f, 160.0f}},
|
{{-80.0f, 400.0f, -80.0f}, {160.0f, 860.0f, 160.0f}},
|
||||||
{{ 0.0f, -1400.0f, 0.0f}, { 0.0f, -1400.0f, 0.0f}}
|
{{ 0.0f, -1400.0f, 0.0f}, { 0.0f, -1400.0f, 0.0f}}
|
||||||
@@ -176,7 +176,7 @@ void __chClam_emitEyeParticles(f32 position[3], s32 count){
|
|||||||
particleEmitter_emitN(pCtrl, count);
|
particleEmitter_emitN(pCtrl, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_emitSmallShellParticles(f32 position[3], s32 count){
|
static void __chClam_emitSmallShellParticles(f32 position[3], s32 count){
|
||||||
static ParticleSettingsVelocityAcceleration D_8038C454 = {
|
static ParticleSettingsVelocityAcceleration D_8038C454 = {
|
||||||
{{-200.0f, 850.0f, -200.0f}, {400.0f, 1000.0f, 400.0f}},
|
{{-200.0f, 850.0f, -200.0f}, {400.0f, 1000.0f, 400.0f}},
|
||||||
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}}
|
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}}
|
||||||
@@ -192,7 +192,7 @@ void __chClam_emitSmallShellParticles(f32 position[3], s32 count){
|
|||||||
particleEmitter_emitN(pCtrl, count);
|
particleEmitter_emitN(pCtrl, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_emitEatencollectibleParticles(f32 position[3], enum asset_e sprite_id, s32 count){
|
static void __chClam_emitEatencollectibleParticles(f32 position[3], enum asset_e sprite_id, s32 count){
|
||||||
static ParticleScaleAndLifetimeRanges D_8038C484 = {
|
static ParticleScaleAndLifetimeRanges D_8038C484 = {
|
||||||
{0.2f, 0.35f},
|
{0.2f, 0.35f},
|
||||||
{0.0f, 0.0f},
|
{0.0f, 0.0f},
|
||||||
@@ -217,14 +217,14 @@ void __chClam_emitEatencollectibleParticles(f32 position[3], enum asset_e sprite
|
|||||||
particleEmitter_emitN(pCtrl, count);
|
particleEmitter_emitN(pCtrl, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_takeDamage(ActorMarker *this_marker, ActorMarker *other_marker){
|
static void __chClam_takeDamage(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||||
Actor *this;
|
Actor *this;
|
||||||
|
|
||||||
this = marker_getActor(this_marker);
|
this = marker_getActor(this_marker);
|
||||||
this->marker->collidable = FALSE;
|
this->marker->collidable = FALSE;
|
||||||
this->unk138_27 = TRUE;
|
this->unk138_27 = TRUE;
|
||||||
__chClam_func_803863F0(SFX_1D_HITTING_AN_ENEMY_1, 1.0f, 26000, this->position, 1500.0f, 2000.0f);
|
__chClam_playSfx(SFX_1D_HITTING_AN_ENEMY_1, 1.0f, 26000, this->position, 1500.0f, 2000.0f);
|
||||||
__chClam_func_803863F0(SFX_115_BUZZBOMB_DEATH, 1.2f, 26000, this->position, 1500.0f, 2000.0f);
|
__chClam_playSfx(SFX_115_BUZZBOMB_DEATH, 1.2f, 26000, this->position, 1500.0f, 2000.0f);
|
||||||
__chClam_emitLargeShellParticles(this->position, 2);
|
__chClam_emitLargeShellParticles(this->position, 2);
|
||||||
__chClam_emitEyeParticles(this->position, 2);
|
__chClam_emitEyeParticles(this->position, 2);
|
||||||
__chClam_emitSmallShellParticles(this->position, 0xC);
|
__chClam_emitSmallShellParticles(this->position, 0xC);
|
||||||
@@ -232,7 +232,7 @@ void __chClam_takeDamage(ActorMarker *this_marker, ActorMarker *other_marker){
|
|||||||
marker_despawn(this->marker);
|
marker_despawn(this->marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_playerDropsItem(enum bundle_e bundle_id, enum item_e item_id){
|
static void __chClam_playerDropsItem(enum bundle_e bundle_id, enum item_e item_id){
|
||||||
f32 position[3];
|
f32 position[3];
|
||||||
|
|
||||||
player_getPosition(position);
|
player_getPosition(position);
|
||||||
@@ -241,12 +241,12 @@ void __chClam_playerDropsItem(enum bundle_e bundle_id, enum item_e item_id){
|
|||||||
item_dec(item_id);
|
item_dec(item_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chClam_attackOther(ActorMarker *this_marker, ActorMarker *other_marker){
|
static void __chClam_attackOther(ActorMarker *this_marker, ActorMarker *other_marker){
|
||||||
|
|
||||||
if(func_80297C6C() == 3) return;
|
if(func_80297C6C() == 3) return;
|
||||||
|
|
||||||
if( !mapSpecificFlags_get(5) && gcdialog_showText(ASSET_A14_TEXT_UNKNOWN, 0, NULL, NULL, NULL, NULL)){
|
if( !mapSpecificFlags_get(TTC_SPECIFIC_FLAG_5_CLAM_FIRST_MEET_TEXT_SHOWN) && gcdialog_showText(ASSET_A14_TEXT_CLAM_TAUNT, 0, NULL, NULL, NULL, NULL)){
|
||||||
mapSpecificFlags_set(5, TRUE);
|
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_5_CLAM_FIRST_MEET_TEXT_SHOWN, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item_getCount(ITEM_D_EGGS) != 0) {
|
if (item_getCount(ITEM_D_EGGS) != 0) {
|
||||||
@@ -258,7 +258,7 @@ void __chClam_attackOther(ActorMarker *this_marker, ActorMarker *other_marker){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void chClam_update(Actor *this){
|
static void __chClam_updateFunc(Actor *this){
|
||||||
ActorProp *sp4C = func_80320EB0(this->marker, 30.0f, 1);
|
ActorProp *sp4C = func_80320EB0(this->marker, 30.0f, 1);
|
||||||
f32 sp48;
|
f32 sp48;
|
||||||
s32 sp44;
|
s32 sp44;
|
||||||
@@ -290,8 +290,8 @@ void chClam_update(Actor *this){
|
|||||||
animctrl_setDuration(this->animctrl, 0.6f);
|
animctrl_setDuration(this->animctrl, 0.6f);
|
||||||
marker_despawn(sp4C->marker);
|
marker_despawn(sp4C->marker);
|
||||||
}
|
}
|
||||||
}//L80387140
|
}
|
||||||
}//L80387144
|
}
|
||||||
|
|
||||||
switch(this->state){
|
switch(this->state){
|
||||||
case 1://L80387170
|
case 1://L80387170
|
||||||
@@ -299,7 +299,7 @@ void chClam_update(Actor *this){
|
|||||||
subaddie_set_state_with_direction(this, 2, 0.01f, 1);
|
subaddie_set_state_with_direction(this, 2, 0.01f, 1);
|
||||||
actor_playAnimationOnce(this);
|
actor_playAnimationOnce(this);
|
||||||
animctrl_setDuration(this->animctrl, 1.0f);
|
animctrl_setDuration(this->animctrl, 1.0f);
|
||||||
__chClam_func_803863F0(SFX_3F2_UNKNOWN, randf2(1.0f, 1.1f), 22000, this->position, 1500.0f, 2000.0f);
|
__chClam_playSfx(SFX_3F2_UNKNOWN, randf2(1.0f, 1.1f), 22000, this->position, 1500.0f, 2000.0f);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
animctrl_setDuration(this->animctrl, 2.0f);
|
animctrl_setDuration(this->animctrl, 2.0f);
|
||||||
@@ -310,7 +310,7 @@ void chClam_update(Actor *this){
|
|||||||
this->position_y += this->velocity_y;
|
this->position_y += this->velocity_y;
|
||||||
this->velocity_y += -5.0f;
|
this->velocity_y += -5.0f;
|
||||||
if(actor_animationIsAt(this, 0.63f)){
|
if(actor_animationIsAt(this, 0.63f)){
|
||||||
__chClam_func_803863F0(SFX_80_YUMYUM_CLACK, 1.0f, 20000, this->position, 1500.0f, 2000.0f);
|
__chClam_playSfx(SFX_80_YUMYUM_CLACK, 1.0f, 20000, this->position, 1500.0f, 2000.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->position_y <= sp48){
|
if(this->position_y <= sp48){
|
||||||
@@ -337,7 +337,7 @@ void chClam_update(Actor *this){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(actor_animationIsAt(this, 0.8f) && 2.0f == this->velocity_x){
|
if(actor_animationIsAt(this, 0.8f) && 2.0f == this->velocity_x){
|
||||||
__chClam_func_803863F0(SFX_4B_GULPING, randf2(0.8f, 0.9f), 22000, this->position, 700.0f, 2000.0f);
|
__chClam_playSfx(SFX_4B_GULPING, randf2(0.8f, 0.9f), 22000, this->position, 700.0f, 2000.0f);
|
||||||
break;
|
break;
|
||||||
}//L803873C4
|
}//L803873C4
|
||||||
|
|
||||||
@@ -345,7 +345,7 @@ void chClam_update(Actor *this){
|
|||||||
|
|
||||||
if(!this->marker->unk14_21) break;
|
if(!this->marker->unk14_21) break;
|
||||||
|
|
||||||
__chClam_func_803863F0(SFX_4C_LIP_SMACK, 1.0f, 20000, this->position, 500.0f, 2000.0f);
|
__chClam_playSfx(SFX_4C_LIP_SMACK, 1.0f, 20000, this->position, 500.0f, 2000.0f);
|
||||||
func_8034A174(this->marker->unk44, 5, sp38);
|
func_8034A174(this->marker->unk44, 5, sp38);
|
||||||
|
|
||||||
switch(this->unk38_31){
|
switch(this->unk38_31){
|
||||||
|
@@ -6,33 +6,33 @@ extern void func_8028E668(f32 [3], f32, f32, f32);
|
|||||||
extern void func_8028F9DC(s32);
|
extern void func_8028F9DC(s32);
|
||||||
extern void func_803272D0(f32 arg0[3], f32 arg1, s32 arg2, int (*arg3)(Actor *));
|
extern void func_803272D0(f32 arg0[3], f32 arg1, s32 arg2, int (*arg3)(Actor *));
|
||||||
|
|
||||||
void chLeaky_update(Actor *this);
|
static void __chLeaky_updateFunc(Actor *this);
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorAnimationInfo D_8038C700[] = {
|
ActorAnimationInfo gChLeakyAnimations[3] = {
|
||||||
{0x000, 0.0f},
|
{NULL, NULL},
|
||||||
{0x239, 2.5f},
|
{ASSET_239_ANIM_LEAKY_IDLE, 2.5f},
|
||||||
{0x239, 2.5f}
|
{ASSET_239_ANIM_LEAKY_IDLE, 2.5f}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C718 = {
|
ActorInfo gChLeaky = {
|
||||||
MARKER_33_LEAKY, ACTOR_1E_LEAKY, ASSET_51A_MODEL_LEAKY,
|
MARKER_33_LEAKY, ACTOR_1E_LEAKY, ASSET_51A_MODEL_LEAKY,
|
||||||
0x1, D_8038C700,
|
0x1, gChLeakyAnimations,
|
||||||
chLeaky_update, actor_update_func_80326224, actor_draw,
|
__chLeaky_updateFunc, actor_update_func_80326224, actor_draw,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
bool TTC_func_80388F70(Actor *this){
|
static bool __chLeaky_isCurrentModelShrapnel(Actor *this){
|
||||||
return this->modelCacheIndex == ACTOR_56_SHRAPNEL;
|
return this->modelCacheIndex == ACTOR_56_SHRAPNEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388F88(void){
|
static void __func_80388F88(void){
|
||||||
static f32 D_8038C73C[3] = {2500.0f, 250.0f, 4600.0f};
|
static f32 D_8038C73C[3] = {2500.0f, 250.0f, 4600.0f};
|
||||||
func_803272D0(D_8038C73C, 2000.0f, 2, TTC_func_80388F70);
|
func_803272D0(D_8038C73C, 2000.0f, 2, __chLeaky_isCurrentModelShrapnel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void chLeaky_update(Actor *this) {
|
static void __chLeaky_updateFunc(Actor *this) {
|
||||||
void *temp_v0_2;
|
void *temp_v0_2;
|
||||||
|
|
||||||
func_8028E668(this->position, 100.0f, -20.0f, 100.0f);
|
func_8028E668(this->position, 100.0f, -20.0f, 100.0f);
|
||||||
@@ -55,21 +55,23 @@ void chLeaky_update(Actor *this) {
|
|||||||
this->state = 1;
|
this->state = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( this->state == 1
|
if( this->state == 1
|
||||||
&& !this->has_met_before
|
&& !this->has_met_before
|
||||||
&& func_80329530(this, 250) && !func_80329530(this, 160)
|
&& func_80329530(this, 250) && !func_80329530(this, 160)
|
||||||
&& !func_8028ECAC()
|
&& !func_8028ECAC()
|
||||||
&& gcdialog_showText(0xA1A, 0, NULL, NULL, NULL, NULL)
|
&& gcdialog_showText(ASSET_A1A_TEXT_LEAKY_FIRST_MEET, 0, NULL, NULL, NULL, NULL)
|
||||||
){
|
){
|
||||||
this->has_met_before = TRUE;
|
this->has_met_before = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (func_803114B0() == 0) {
|
if (func_803114B0() == 0) {
|
||||||
if (actor_animationIsAt(this, 0.83f)) {
|
if (actor_animationIsAt(this, 0.83f)) {
|
||||||
func_8030E878(0x109, randf2(0.775f, 0.825f), 22000, this->position, 400.0f, 1000.0f);
|
func_8030E878(SFX_109_LOGGO_LID_CLAP, randf2(0.775f, 0.825f), 22000, this->position, 400.0f, 1000.0f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (actor_animationIsAt(this, 0.01f)) {
|
if (actor_animationIsAt(this, 0.01f)) {
|
||||||
func_8030E878(0x109, randf2(1.025f, 1.075f), 18000, this->position, 400.0f, 1000.0f);
|
func_8030E878(SFX_109_LOGGO_LID_CLAP, randf2(1.025f, 1.075f), 18000, this->position, 400.0f, 1000.0f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if( actor_animationIsAt(this, 0.15f)
|
if( actor_animationIsAt(this, 0.15f)
|
||||||
@@ -77,12 +79,12 @@ void chLeaky_update(Actor *this) {
|
|||||||
|| actor_animationIsAt(this, 0.53f)
|
|| actor_animationIsAt(this, 0.53f)
|
||||||
|| actor_animationIsAt(this, 0.66f)
|
|| actor_animationIsAt(this, 0.66f)
|
||||||
){
|
){
|
||||||
func_8030E878(0x109, randf2(1.225f, 1.275f), 14000, this->position, 400.0f, 1000.0f);
|
func_8030E878(SFX_109_LOGGO_LID_CLAP, randf2(1.225f, 1.275f), 14000, this->position, 400.0f, 1000.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chLeaky_startCutscene(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
static void __chLeaky_showDoneText(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
||||||
Actor *this = marker_getActor(caller);
|
Actor *this = marker_getActor(caller);
|
||||||
Struct73s *temp_v0;
|
Struct73s *temp_v0;
|
||||||
subaddie_set_state(this, 2);
|
subaddie_set_state(this, 2);
|
||||||
@@ -93,7 +95,7 @@ void __chLeaky_startCutscene(ActorMarker *caller, enum asset_e text_id, s32 arg2
|
|||||||
|
|
||||||
func_80324E38(0.0f, 3);
|
func_80324E38(0.0f, 3);
|
||||||
timed_setStaticCameraToNode(0.5f, 7);
|
timed_setStaticCameraToNode(0.5f, 7);
|
||||||
timedFunc_set_0(1.0f, func_80388F88);
|
timedFunc_set_0(1.0f, __func_80388F88);
|
||||||
func_80324E38(2.5f, 0);
|
func_80324E38(2.5f, 0);
|
||||||
timedFunc_set_1(2.5f, func_8028F9DC, 2);
|
timedFunc_set_1(2.5f, func_8028F9DC, 2);
|
||||||
timedFunc_set_3(2.5f, (GenFunction_3)func_802E4078, MAP_A_TTC_SANDCASTLE, 0, 0);
|
timedFunc_set_3(2.5f, (GenFunction_3)func_802E4078, MAP_A_TTC_SANDCASTLE, 0, 0);
|
||||||
@@ -114,8 +116,8 @@ bool chLeaky_eggCollision(ActorMarker *marker){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
levelSpecificFlags_set(LEVEL_FLAG_2_TTC_UNKNOWN, TRUE);
|
levelSpecificFlags_set(2, TRUE);
|
||||||
levelSpecificFlags_set(LEVEL_FLAG_5_TTC_UNKNOWN, TRUE);
|
levelSpecificFlags_set(5, TRUE);
|
||||||
gcdialog_showText(ASSET_A28_TEXT_LEAKY_DONE, 0x2a, this->position, this->marker, __chLeaky_startCutscene, NULL);
|
gcdialog_showText(ASSET_A28_TEXT_LEAKY_DONE, 0x2a, this->position, this->marker, __chLeaky_showDoneText, NULL);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -5,16 +5,24 @@
|
|||||||
extern void func_802EE6CC(f32[3], s32[4], s32[4], s32, f32, f32, s32, s32, s32);
|
extern void func_802EE6CC(f32[3], s32[4], s32[4], s32, f32, f32, s32, s32, s32);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
s32 unk0;
|
s32 closed_ticks_counter;
|
||||||
s32 unk4;
|
s32 open_ticks_counter;
|
||||||
}ActorLocal_Lockup;
|
} ActorLocal_Lockup;
|
||||||
|
|
||||||
Actor *func_803894C0(ActorMarker *this, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
static Actor *__chLockup_drawFunc(ActorMarker *this, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||||
void func_80389600(Actor *this);
|
static void __chLockup_updateFunc(Actor *this);
|
||||||
|
|
||||||
|
enum ch_lockup_states_e {
|
||||||
|
CH_LOCKUP_STATE_CLOSED = 1, // L803896F0
|
||||||
|
CH_LOCKUP_STATE_OPENING = 2, // L803897DC
|
||||||
|
CH_LOCKUP_STATE_OPEN = 3, // L80389864
|
||||||
|
CH_LOCKUP_STATE_CLOSING = 4, // L803898F4
|
||||||
|
CH_LOCKUP_STATE_CLOSING2 = 5 // L803898F4
|
||||||
|
};
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorAnimationInfo D_8038C760[] ={
|
ActorAnimationInfo gChLockupAnimations[6] ={
|
||||||
{0, 0.0f},
|
{NULL, NULL},
|
||||||
{ASSET_BC_ANIM_LOCKUP, 8000000.0f},
|
{ASSET_BC_ANIM_LOCKUP, 8000000.0f},
|
||||||
{ASSET_BC_ANIM_LOCKUP, 4.0f},
|
{ASSET_BC_ANIM_LOCKUP, 4.0f},
|
||||||
{ASSET_BC_ANIM_LOCKUP, 8000000.0f},
|
{ASSET_BC_ANIM_LOCKUP, 8000000.0f},
|
||||||
@@ -22,55 +30,53 @@ ActorAnimationInfo D_8038C760[] ={
|
|||||||
{ASSET_BC_ANIM_LOCKUP, 8000000.0f}
|
{ASSET_BC_ANIM_LOCKUP, 8000000.0f}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C790 = {
|
ActorInfo gChLockupSlow = {
|
||||||
MARKER_A4_LOCKUP_SLOW, ACTOR_151_LOCKUP_SLOW, ASSET_3D4_MODEL_LOCKUP,
|
MARKER_A4_LOCKUP_SLOW, ACTOR_151_LOCKUP_SLOW, ASSET_3D4_MODEL_LOCKUP,
|
||||||
1, D_8038C760,
|
1, gChLockupAnimations,
|
||||||
func_80389600, actor_update_func_80326224, func_803894C0,
|
__chLockup_updateFunc, actor_update_func_80326224, __chLockup_drawFunc,
|
||||||
2500, 0x366, 0.0f, 0
|
2500, 0x366, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C7B4 = {
|
ActorInfo gChLockupMedium = {
|
||||||
MARKER_F6_LOCKUP_MEDIUM, ACTOR_152_LOCKUP_MEDIUM, ASSET_3D4_MODEL_LOCKUP,
|
MARKER_F6_LOCKUP_MEDIUM, ACTOR_152_LOCKUP_MEDIUM, ASSET_3D4_MODEL_LOCKUP,
|
||||||
1, D_8038C760,
|
1, gChLockupAnimations,
|
||||||
func_80389600, actor_update_func_80326224, func_803894C0,
|
__chLockup_updateFunc, actor_update_func_80326224, __chLockup_drawFunc,
|
||||||
2500, 0x366, 0.0f, 0
|
2500, 0x366, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C7D8 = {
|
ActorInfo gChLockupFast = {
|
||||||
MARKER_F7_LOCKUP_FAST, ACTOR_153_LOCKUP_FAST, ASSET_3D4_MODEL_LOCKUP,
|
MARKER_F7_LOCKUP_FAST, ACTOR_153_LOCKUP_FAST, ASSET_3D4_MODEL_LOCKUP,
|
||||||
1, D_8038C760,
|
1, gChLockupAnimations,
|
||||||
func_80389600, actor_update_func_80326224, func_803894C0,
|
__chLockup_updateFunc, actor_update_func_80326224, __chLockup_drawFunc,
|
||||||
2500, 0x366, 0.0f, 0
|
2500, 0x366, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 D_8038C7FC[4] = {120, 120, 120, 120};
|
static s32 sLockup_CloseColor[4] = {120, 120, 120, 120};
|
||||||
s32 D_8038C80C[4] = {0,0,0,0};
|
static s32 sLockup_CloseVelocity[3] = {0,0,0};
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
Actor *func_803894C0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
static Actor *__chLockup_drawFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||||
Actor * actor = marker_getActor(marker);
|
Actor * actor = marker_getActor(marker);
|
||||||
func_8033A45C(3, actor->unk38_31);
|
func_8033A45C(3, actor->unk38_31);
|
||||||
func_8033A45C(4, actor->unk38_31);
|
func_8033A45C(4, actor->unk38_31);
|
||||||
actor_draw(marker, gfx, mtx, vtx);
|
actor_draw(marker, gfx, mtx, vtx);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80389530(Actor *this){
|
static void __chLockup_close(Actor *this){
|
||||||
subaddie_set_state_with_direction(this, 1, 0.2f, 1);
|
subaddie_set_state_with_direction(this, CH_LOCKUP_STATE_CLOSED, 0.2f, 1);
|
||||||
this->marker->collidable = FALSE;
|
this->marker->collidable = FALSE;
|
||||||
this->unk38_31 = 0;
|
this->unk38_31 = 0;
|
||||||
FUNC_8030E8B4(SFX_6C_LOCKUP_CLOSING, 1.0f, 32000, this->position, 1250, 2500);
|
FUNC_8030E8B4(SFX_6C_LOCKUP_CLOSING, 1.0f, 32000, this->position, 1250, 2500);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8038959C(Actor *this){
|
static void __chLockup_open(Actor *this){
|
||||||
func_80389468();
|
func_80389468();
|
||||||
subaddie_set_state_with_direction(this, 2, 0.2f, 1);
|
subaddie_set_state_with_direction(this, CH_LOCKUP_STATE_OPENING, 0.2f, 1);
|
||||||
this->unk38_31 = 1;
|
this->unk38_31 = 1;
|
||||||
FUNC_8030E8B4(SFX_6B_LOCKUP_OPENING, 1.0f, 32000, this->position, 1250, 2500);
|
FUNC_8030E8B4(SFX_6B_LOCKUP_OPENING, 1.0f, 32000, this->position, 1250, 2500);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389600(Actor *this){
|
static void __chLockup_updateFunc(Actor *this){
|
||||||
ActorLocal_Lockup *local = (ActorLocal_Lockup *)&this->local;
|
ActorLocal_Lockup *local = (ActorLocal_Lockup *)&this->local;
|
||||||
s32 tmp_v1;
|
s32 tmp_v1;
|
||||||
int i;
|
int i;
|
||||||
@@ -81,25 +87,25 @@ void func_80389600(Actor *this){
|
|||||||
&& func_80329530(this, 320)
|
&& func_80329530(this, 320)
|
||||||
&& !func_80329530(this, 160)
|
&& !func_80329530(this, 160)
|
||||||
&& !func_8028ECAC()
|
&& !func_8028ECAC()
|
||||||
&& gcdialog_showText(0xA15, 0, NULL, NULL, NULL, NULL)
|
&& gcdialog_showText(ASSET_A15_TEXT_TTC_LOCKUP_SPAWNED, 0, NULL, NULL, NULL, NULL)
|
||||||
){
|
){
|
||||||
this->has_met_before = TRUE;
|
this->has_met_before = TRUE;
|
||||||
}//L803896AC
|
}
|
||||||
|
|
||||||
if(!this->volatile_initialized){
|
if(!this->volatile_initialized){
|
||||||
this->volatile_initialized = TRUE;
|
this->volatile_initialized = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(this->state){
|
switch(this->state){
|
||||||
case 1: //L803896F0
|
case CH_LOCKUP_STATE_CLOSED:
|
||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
this->marker->propPtr->unk8_3 = TRUE;
|
this->marker->propPtr->unk8_3 = TRUE;
|
||||||
subaddie_set_state_with_direction(this, 1, 0.2f, 1);
|
subaddie_set_state_with_direction(this, CH_LOCKUP_STATE_CLOSED, 0.2f, 1);
|
||||||
this->marker->collidable = FALSE;
|
this->marker->collidable = FALSE;
|
||||||
this->unk38_31 = 0;
|
this->unk38_31 = 0;
|
||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
}//L80389758
|
}
|
||||||
local->unk0++;
|
local->closed_ticks_counter++;
|
||||||
|
|
||||||
tmp_v1 = (this->modelCacheIndex == ACTOR_151_LOCKUP_SLOW) ? 0x1E :
|
tmp_v1 = (this->modelCacheIndex == ACTOR_151_LOCKUP_SLOW) ? 0x1E :
|
||||||
(this->modelCacheIndex == ACTOR_152_LOCKUP_MEDIUM) ? 0x14 :
|
(this->modelCacheIndex == ACTOR_152_LOCKUP_MEDIUM) ? 0x14 :
|
||||||
@@ -107,47 +113,47 @@ void func_80389600(Actor *this){
|
|||||||
10000;
|
10000;
|
||||||
|
|
||||||
|
|
||||||
if(!(local->unk0 < tmp_v1)){
|
if(!(local->closed_ticks_counter < tmp_v1)){
|
||||||
local->unk0 = 0;
|
local->closed_ticks_counter = 0;
|
||||||
func_8038959C(this);
|
__chLockup_open(this);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: //L803897DC
|
case CH_LOCKUP_STATE_OPENING:
|
||||||
if(subaddie_playerIsWithinSphere(this, 400) && func_8028FB48(0x8000000)){
|
if(subaddie_playerIsWithinSphere(this, 400) && func_8028FB48(0x8000000)){
|
||||||
func_8028F428(0xA, this->marker);
|
func_8028F428(0xA, this->marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(actor_animationIsAt(this, 0.5f)){
|
if(actor_animationIsAt(this, 0.5f)){
|
||||||
subaddie_set_state_with_direction(this, 3, 0.5f, 1);
|
subaddie_set_state_with_direction(this, CH_LOCKUP_STATE_OPEN, 0.5f, 1);
|
||||||
}
|
}
|
||||||
if(0.15 < animctrl_getAnimTimer(this->animctrl)){
|
if(0.15 < animctrl_getAnimTimer(this->animctrl)){
|
||||||
this->marker->collidable = TRUE;
|
this->marker->collidable = TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: //L80389864
|
case CH_LOCKUP_STATE_OPEN:
|
||||||
local->unk4++;
|
local->open_ticks_counter++;
|
||||||
tmp_v1 = (this->modelCacheIndex == ACTOR_151_LOCKUP_SLOW) ? 0x1E :
|
tmp_v1 = (this->modelCacheIndex == ACTOR_151_LOCKUP_SLOW) ? 0x1E :
|
||||||
(this->modelCacheIndex == ACTOR_152_LOCKUP_MEDIUM) ? 0x14 :
|
(this->modelCacheIndex == ACTOR_152_LOCKUP_MEDIUM) ? 0x14 :
|
||||||
(this->modelCacheIndex == ACTOR_153_LOCKUP_FAST) ? 0xA :
|
(this->modelCacheIndex == ACTOR_153_LOCKUP_FAST) ? 0xA :
|
||||||
10000;
|
10000;
|
||||||
|
|
||||||
if(!(local->unk4 < tmp_v1)){
|
if(!(local->open_ticks_counter < tmp_v1)){
|
||||||
local->unk4 = 0;
|
local->open_ticks_counter = 0;
|
||||||
subaddie_set_state_with_direction(this, 4, 0.5f, 1);
|
subaddie_set_state_with_direction(this, CH_LOCKUP_STATE_CLOSING, 0.5f, 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: //L803898F4
|
case CH_LOCKUP_STATE_CLOSING:
|
||||||
case 5: //L803898F4
|
case CH_LOCKUP_STATE_CLOSING2:
|
||||||
if(this->marker->unk14_21 && actor_animationIsAt(this, 0.99f)){
|
if(this->marker->unk14_21 && actor_animationIsAt(this, 0.99f)){
|
||||||
TTC_func_80389530(this);
|
__chLockup_close(this);
|
||||||
for(i = 5; i < 0xe; i++){
|
for(i = 5; i < 0xe; i++){
|
||||||
func_8034A174(this->marker->unk44, i, this->unk1C);
|
func_8034A174(this->marker->unk44, i, this->unk1C);
|
||||||
func_802EE6CC(this->unk1C, D_8038C80C, D_8038C7FC, 1, 0.4f, 50.0f, 0xb4, 0xa0, 0);
|
func_802EE6CC(this->unk1C, sLockup_CloseVelocity, sLockup_CloseColor, 1, 0.4f, 50.0f, 0xb4, 0xa0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}//L8038999C
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,33 +2,40 @@
|
|||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
|
|
||||||
void func_80388434(Actor *this);
|
static void __chNipper_updateFunc(Actor *this);
|
||||||
Actor *func_80387EB0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
static Actor *__chNipper_animFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||||
|
|
||||||
|
enum ch_nipper_states_e {
|
||||||
|
CH_NIPPER_STATE_1_UNKNOWN = 1, // L80388578
|
||||||
|
CH_NIPPER_STATE_2_UNKNOWN, // L8038872C
|
||||||
|
CH_NIPPER_STATE_3_UNKNOWN, // L803887B4
|
||||||
|
CH_NIPPER_STATE_4_DIEING, // L80388910
|
||||||
|
CH_NIPPER_STATE_5_SPAWNED, // L80388938
|
||||||
|
CH_NIPPER_STATE_6_DEAD, // L803889A8
|
||||||
|
CH_NIPPER_STATE_7_UNKNOWN // already dead? L80388A20
|
||||||
|
};
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorAnimationInfo D_8038C540[] = {
|
ActorAnimationInfo gChNipperAnimations[8] = {
|
||||||
{0x00, 0.0f},
|
{NULL, NULL},
|
||||||
{ASSET_C0_ANIM_NIPPER_IDLE, 2.0f},
|
{ASSET_C0_ANIM_NIPPER_IDLE, 2.0f},
|
||||||
{ASSET_BD_ANIM_NIPPER_VULNERABLE, 1.5f},
|
{ASSET_BD_ANIM_NIPPER_VULNERABLE, 1.5f},
|
||||||
{ASSET_BF_ANIM_NIPPER_ATTACK, 1.2f},
|
{ASSET_BF_ANIM_NIPPER_ATTACK, 1.2f},
|
||||||
{ASSET_BE_ANIM_NIPPER_OW, 1.3f},
|
{ASSET_BE_ANIM_NIPPER_OW, 1.3f},
|
||||||
{ASSET_C0_ANIM_NIPPER_IDLE, 2.0f},
|
{ASSET_C0_ANIM_NIPPER_IDLE, 2.0f},
|
||||||
{ASSET_133_ANIM_NIPPER_DIE, 3.0f},
|
{ASSET_133_ANIM_NIPPER_DIE, 3.0f},
|
||||||
{0x00, 0.0f}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C580 = {
|
ActorInfo gChNipper = {
|
||||||
MARKER_A5_NIPPER, ACTOR_117_NIPPER, ASSET_3D5_MODEL_NIPPER,
|
MARKER_A5_NIPPER, ACTOR_117_NIPPER, ASSET_3D5_MODEL_NIPPER,
|
||||||
0x1, D_8038C540,
|
0x1, gChNipperAnimations,
|
||||||
func_80388434, actor_update_func_80326224, func_80387EB0,
|
__chNipper_updateFunc, actor_update_func_80326224, __chNipper_animFunc,
|
||||||
0, 0x299, 10.0f, 0
|
0, 0x299, 10.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
void func_80387DC0(f32 *position, s32 count) {
|
static void __chNipper_drawParticlesAtPosition(f32 *position, s32 count) {
|
||||||
static s32 D_8038C5A4[3] = {180, 180, 180};
|
static s32 D_8038C5A4[3] = {180, 180, 180};
|
||||||
static ParticleScaleAndLifetimeRanges D_8038C5B0 = {
|
static ParticleScaleAndLifetimeRanges D_8038C5B0 = {
|
||||||
{0.1f, 0.5f},
|
{0.1f, 0.5f},
|
||||||
@@ -57,7 +64,7 @@ void func_80387DC0(f32 *position, s32 count) {
|
|||||||
particleEmitter_emitN(pCtrl, count);
|
particleEmitter_emitN(pCtrl, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
Actor *func_80387EB0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
static Actor *__chNipper_animFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
||||||
Actor *this;
|
Actor *this;
|
||||||
|
|
||||||
this = marker_getActor(marker);
|
this = marker_getActor(marker);
|
||||||
@@ -65,43 +72,45 @@ Actor *func_80387EB0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
|||||||
return actor_draw(marker, gfx, mtx, vtx);
|
return actor_draw(marker, gfx, mtx, vtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80387F18(Actor *this) {
|
static void __chNipper_setAnimationDuration(Actor *this) {
|
||||||
subaddie_set_state_looped(this, 3);
|
subaddie_set_state_looped(this, CH_NIPPER_STATE_3_UNKNOWN);
|
||||||
this->unk1C[0] = 0.0f;
|
this->unk1C[0] = 0.0f;
|
||||||
switch((s32)this->lifetime_value){
|
switch((s32)this->lifetime_value){
|
||||||
case 0x78:
|
case 120:
|
||||||
animctrl_setDuration(this->animctrl, 1.2f);
|
animctrl_setDuration(this->animctrl, 1.2f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x50:
|
case 80:
|
||||||
animctrl_setDuration(this->animctrl, 1.05f);
|
animctrl_setDuration(this->animctrl, 1.05f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x28:
|
case 40:
|
||||||
animctrl_setDuration(this->animctrl, 0.9f);
|
animctrl_setDuration(this->animctrl, 0.9f);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80387FB0(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
static void __chNipper_spawnedShowTextCallback(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
||||||
Actor *this;
|
Actor *this;
|
||||||
this = marker_getActor(caller);
|
this = marker_getActor(caller);
|
||||||
TTC_func_80387F18(this);
|
__chNipper_setAnimationDuration(this);
|
||||||
ncStaticCamera_exit();
|
ncStaticCamera_exit();
|
||||||
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, -1, 300);
|
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, -1, 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80387FF4(Actor *this) {
|
static void __chNipper_playDeathAnimation(Actor *this) {
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
subaddie_set_state_with_direction(this, 4, 0.01f, 1);
|
subaddie_set_state_with_direction(this, CH_NIPPER_STATE_4_DIEING, 0.01f, 1);
|
||||||
actor_playAnimationOnce(this);
|
actor_playAnimationOnce(this);
|
||||||
for(i = 0; i < 3; i ++){
|
for(i = 0; i < 3; i ++){
|
||||||
FUNC_8030E8B4(SFX_79_TICKER_DEATH, 0.5f, 17000, this->position, 1500, 3000);
|
FUNC_8030E8B4(SFX_79_TICKER_DEATH, 0.5f, 17000, this->position, 1500, 3000);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool func_80388088(Actor *this){
|
// if player too far away -> false
|
||||||
|
// otherwise return whether sp2C is within -35 and 35?
|
||||||
|
static bool __func_80388088(Actor *this){
|
||||||
f32 sp2C;
|
f32 sp2C;
|
||||||
f32 sp20[3];
|
f32 sp20[3];
|
||||||
bool out;
|
bool out;
|
||||||
@@ -115,11 +124,11 @@ bool func_80388088(Actor *this){
|
|||||||
return BOOL(-35.0f < sp2C && sp2C < 35.0f);
|
return BOOL(-35.0f < sp2C && sp2C < 35.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool func_8038812C(Actor *this){
|
static bool __chNipper_shouldShowActor(Actor *this){
|
||||||
return BOOL(func_80329530(this, 1300) && func_80388088(this));
|
return BOOL(func_80329530(this, 1300) && __func_80388088(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388178(ActorMarker *this_marker, ActorMarker *other_marker) {
|
static void __chNipper_dieFunc(ActorMarker *this_marker, ActorMarker *other_marker) {
|
||||||
Actor *this;
|
Actor *this;
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
@@ -127,33 +136,33 @@ void func_80388178(ActorMarker *this_marker, ActorMarker *other_marker) {
|
|||||||
func_8032B4DC(this, other_marker, 7);
|
func_8032B4DC(this, other_marker, 7);
|
||||||
|
|
||||||
if (this->lifetime_value == 40.0f) {
|
if (this->lifetime_value == 40.0f) {
|
||||||
subaddie_set_state_with_direction(this, 6, 0.01f, 1);
|
subaddie_set_state_with_direction(this, CH_NIPPER_STATE_6_DEAD, 0.01f, 1);
|
||||||
actor_playAnimationOnce(this);
|
actor_playAnimationOnce(this);
|
||||||
for(i = 0; i < 3; i++){
|
for(i = 0; i < 3; i++){
|
||||||
FUNC_8030E8B4(SFX_78_EAGLECRY, 0.7f, 20000, this->position, 1500, 3000);
|
FUNC_8030E8B4(SFX_78_EAGLECRY, 0.7f, 20000, this->position, 1500, 3000);
|
||||||
};
|
};
|
||||||
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, 0, 300);
|
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, 0, 300);
|
||||||
func_8025AABC(0x12);
|
func_8025AABC(COMUSIC_12_TTC_NIPPER);
|
||||||
func_8032BB88(this, -1, 300);
|
func_8032BB88(this, -1, 300);
|
||||||
func_802BAFE4(0x1C);
|
func_802BAFE4(0x1C);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->lifetime_value == 80.0f) {
|
if (this->lifetime_value == 80.0f) {
|
||||||
TTC_func_80387FF4(this);
|
__chNipper_playDeathAnimation(this);
|
||||||
this->lifetime_value = 40.0f;
|
this->lifetime_value = 40.0f;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TTC_func_80387FF4(this);
|
__chNipper_playDeathAnimation(this);
|
||||||
this->lifetime_value = 80.0f;
|
this->lifetime_value = 80.0f;
|
||||||
gcdialog_showText(0xA10, 4, NULL, NULL, NULL, NULL);
|
gcdialog_showText(ASSET_A10_TEXT_TTC_NIPPER_HURT, 4, NULL, NULL, NULL, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool func_803882E4(ActorMarker * this_marker, ActorMarker * other_marker){
|
static bool __chNipper_determineMarkerId(ActorMarker * this_marker, ActorMarker * other_marker){
|
||||||
if(this_marker->unk40_31 == 1){
|
if(this_marker->unk40_31 == 1){
|
||||||
this_marker->id = 0x16C;
|
this_marker->id = MARKER_16C_NIPPER;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
this_marker->id = MARKER_A5_NIPPER;
|
this_marker->id = MARKER_A5_NIPPER;
|
||||||
@@ -161,21 +170,21 @@ bool func_803882E4(ActorMarker * this_marker, ActorMarker * other_marker){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388344(ActorMarker * this_marker, ActorMarker *other_marker){
|
static void __chNipper_ow2Func(ActorMarker * this_marker, ActorMarker *other_marker){
|
||||||
Actor *this;
|
Actor *this;
|
||||||
|
|
||||||
if(other_marker->id == 1){
|
if(other_marker->id == 1){
|
||||||
this = marker_getActor(this_marker);
|
this = marker_getActor(this_marker);
|
||||||
if( !mapSpecificFlags_get(7)
|
if( !mapSpecificFlags_get(TTC_SPECIFIC_FLAG_7_NIPPER_FIRST_MEET_TEXT_SHOWN)
|
||||||
&& this->has_met_before
|
&& this->has_met_before
|
||||||
&& gcdialog_showText(0xa0f, 0, NULL, NULL, NULL, NULL)
|
&& gcdialog_showText(0xa0f, 0, NULL, NULL, NULL, NULL)
|
||||||
){
|
){
|
||||||
mapSpecificFlags_set(7, TRUE);
|
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_7_NIPPER_FIRST_MEET_TEXT_SHOWN, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_803883C8(ActorMarker * this_marker, ActorMarker *other_marker){
|
static void __chNipper_owFunc(ActorMarker * this_marker, ActorMarker *other_marker){
|
||||||
Actor *this = marker_getActor(this_marker);
|
Actor *this = marker_getActor(this_marker);
|
||||||
if( !this->unk138_23
|
if( !this->unk138_23
|
||||||
&& this->has_met_before
|
&& this->has_met_before
|
||||||
@@ -185,68 +194,67 @@ void func_803883C8(ActorMarker * this_marker, ActorMarker *other_marker){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388434(Actor *this){
|
static void __chNipper_updateFunc(Actor *this){
|
||||||
f32 sp4C[3];
|
f32 particlePosition[3];
|
||||||
s32 sp48;
|
s32 sp48;
|
||||||
s32 sp44;
|
s32 xVelocity;
|
||||||
f32 sp38[3];
|
f32 playerPosition[3];
|
||||||
s32 temp_v0;
|
s32 temp_v0;
|
||||||
|
|
||||||
player_getPosition(sp38);
|
player_getPosition(playerPosition);
|
||||||
sp44 = func_80309D58(sp38, 1);
|
xVelocity = func_80309D58(playerPosition, 1);
|
||||||
if(!this->volatile_initialized){
|
if(!this->volatile_initialized){
|
||||||
this->volatile_initialized = TRUE;
|
this->volatile_initialized = TRUE;
|
||||||
this->velocity_x = sp44;
|
this->velocity_x = xVelocity;
|
||||||
func_8032BC18(this);
|
func_8032BC18(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->state != 7){
|
if(this->state != CH_NIPPER_STATE_7_UNKNOWN){
|
||||||
// sp30 = sp44;
|
if(0.0f == this->velocity_x && xVelocity){
|
||||||
if(0.0f == this->velocity_x && sp44){
|
|
||||||
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, -1, 5000);
|
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, -1, 5000);
|
||||||
func_8032BB88(this, 0, 4000);
|
func_8032BB88(this, 0, 4000);
|
||||||
func_8024BD08(0);
|
func_8024BD08(0);
|
||||||
}
|
}
|
||||||
else if(!sp44 && 0.0f != this->velocity_x){
|
else if(!xVelocity && 0.0f != this->velocity_x){
|
||||||
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, 0, 300);
|
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, 0, 300);
|
||||||
func_8025AABC(COMUSIC_12_TTC_NIPPER);
|
func_8025AABC(COMUSIC_12_TTC_NIPPER);
|
||||||
func_8032BB88(this, -1, 300);
|
func_8032BB88(this, -1, 300);
|
||||||
func_8024BD08(1);
|
func_8024BD08(1);
|
||||||
}
|
}
|
||||||
this->velocity_x = sp44;
|
this->velocity_x = xVelocity;
|
||||||
}//L80388554
|
}
|
||||||
|
|
||||||
switch(this->state){
|
switch(this->state){
|
||||||
case 1:// L80388578
|
case CH_NIPPER_STATE_1_UNKNOWN:
|
||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
animctrl_setTransitionDuration(this->animctrl, 0.35f);
|
animctrl_setTransitionDuration(this->animctrl, 0.35f);
|
||||||
subaddie_set_state_with_direction(this, 1, 0.01f, 1);
|
subaddie_set_state_with_direction(this, CH_NIPPER_STATE_1_UNKNOWN, 0.01f, 1);
|
||||||
this->lifetime_value = 120.0f;
|
this->lifetime_value = 120.0f;
|
||||||
this->marker->propPtr->unk8_3 = TRUE;
|
this->marker->propPtr->unk8_3 = TRUE;
|
||||||
marker_setCollisionScripts(this->marker, func_803883C8, func_80388344, func_80388178);
|
marker_setCollisionScripts(this->marker, __chNipper_owFunc, __chNipper_ow2Func, __chNipper_dieFunc);
|
||||||
func_803300C0(this->marker, func_803882E4);
|
func_803300C0(this->marker, __chNipper_determineMarkerId);
|
||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
}//L8038860C
|
}
|
||||||
if(func_8038812C(this)){
|
|
||||||
|
if(__chNipper_shouldShowActor(this)){
|
||||||
temp_v0 = func_8028ECAC();
|
temp_v0 = func_8028ECAC();
|
||||||
if( !this->has_met_before
|
if( !this->has_met_before
|
||||||
&& temp_v0 != 1
|
&& temp_v0 != 1
|
||||||
&& temp_v0 != 10
|
&& temp_v0 != 10
|
||||||
){
|
){
|
||||||
subaddie_set_state_with_direction(this, 5, 0.01f, 1);
|
subaddie_set_state_with_direction(this, CH_NIPPER_STATE_5_SPAWNED, 0.01f, 1);
|
||||||
if(gcdialog_showText(0xa0e, 0xf, this->position, this->marker, TTC_func_80387FB0, NULL)){
|
if(gcdialog_showText(ASSET_A0E_TEXT_NIPPER_SPAWNED, 0xf, this->position, this->marker, __chNipper_spawnedShowTextCallback, NULL)){
|
||||||
this->has_met_before = TRUE;
|
this->has_met_before = TRUE;
|
||||||
}
|
}
|
||||||
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, 5000, 300);
|
comusic_8025AB44(COMUSIC_12_TTC_NIPPER, 5000, 300);
|
||||||
ncStaticCamera_setToNode(11);
|
ncStaticCamera_setToNode(11);
|
||||||
}
|
}
|
||||||
else{//L803886B0
|
else{
|
||||||
TTC_func_80387F18(this);
|
__chNipper_setAnimationDuration(this);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//L803886C0
|
|
||||||
if( actor_animationIsAt(this, 0.2f)
|
if( actor_animationIsAt(this, 0.2f)
|
||||||
|| actor_animationIsAt(this, 0.2f)
|
|| actor_animationIsAt(this, 0.2f)
|
||||||
|| actor_animationIsAt(this, 0.6f)
|
|| actor_animationIsAt(this, 0.6f)
|
||||||
@@ -256,35 +264,35 @@ void func_80388434(Actor *this){
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:// L8038872C
|
case CH_NIPPER_STATE_2_UNKNOWN:
|
||||||
if(!func_8038812C(this)){
|
if(!__chNipper_shouldShowActor(this)){
|
||||||
subaddie_set_state_looped(this, 1);
|
subaddie_set_state_looped(this, CH_NIPPER_STATE_1_UNKNOWN);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this->lifetime_value <= this->unk38_31){
|
if(this->lifetime_value <= this->unk38_31){
|
||||||
TTC_func_80387F18(this);
|
__chNipper_setAnimationDuration(this);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
this->unk38_31++;
|
this->unk38_31++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:// L803887B4
|
case CH_NIPPER_STATE_3_UNKNOWN:
|
||||||
if(actor_animationIsAt(this, 0.5f) && this->marker->unk14_21){
|
if(actor_animationIsAt(this, 0.5f) && this->marker->unk14_21){
|
||||||
func_8034A174(this->marker->unk44, 6, sp4C);
|
func_8034A174(this->marker->unk44, 6, particlePosition);
|
||||||
func_80387DC0(sp4C, 2);
|
__chNipper_drawParticlesAtPosition(particlePosition, 2);
|
||||||
}
|
}
|
||||||
else if(actor_animationIsAt(this, 0.95f) && this->marker->unk14_21){//L80388800
|
else if(actor_animationIsAt(this, 0.95f) && this->marker->unk14_21){//L80388800
|
||||||
func_8034A174(this->marker->unk44, 5, sp4C);
|
func_8034A174(this->marker->unk44, 5, particlePosition);
|
||||||
func_80387DC0(sp4C, 2);
|
__chNipper_drawParticlesAtPosition(particlePosition, 2);
|
||||||
}//L80388848
|
}
|
||||||
|
|
||||||
if(actor_animationIsAt(this, 0.99f)){
|
if(actor_animationIsAt(this, 0.99f)){
|
||||||
this->unk1C[0] += 1.0f;
|
this->unk1C[0] += 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(2.0f <= this->unk1C[0]){
|
if(2.0f <= this->unk1C[0]){
|
||||||
subaddie_set_state_looped(this, 2);
|
subaddie_set_state_looped(this, CH_NIPPER_STATE_2_UNKNOWN);
|
||||||
this->unk38_31 = 0;
|
this->unk38_31 = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -298,13 +306,13 @@ void func_80388434(Actor *this){
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:// L80388910
|
case CH_NIPPER_STATE_4_DIEING:
|
||||||
if(actor_animationIsAt(this, 0.99f)){
|
if(actor_animationIsAt(this, 0.99f)){
|
||||||
TTC_func_80387F18(this);
|
__chNipper_setAnimationDuration(this);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:// L80388938
|
case CH_NIPPER_STATE_5_SPAWNED:
|
||||||
if( actor_animationIsAt(this, 0.2f)
|
if( actor_animationIsAt(this, 0.2f)
|
||||||
|| actor_animationIsAt(this, 0.2f)
|
|| actor_animationIsAt(this, 0.2f)
|
||||||
|| actor_animationIsAt(this, 0.6f)
|
|| actor_animationIsAt(this, 0.6f)
|
||||||
@@ -314,7 +322,7 @@ void func_80388434(Actor *this){
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:// L803889A8
|
case CH_NIPPER_STATE_6_DEAD:
|
||||||
this->marker->collidable = FALSE;
|
this->marker->collidable = FALSE;
|
||||||
if(actor_animationIsAt(this, 0.6f)){
|
if(actor_animationIsAt(this, 0.6f)){
|
||||||
FUNC_8030E8B4(SFX_7C_CHEBOOF, 0.9f, 20000, this->position, 1500, 3000);
|
FUNC_8030E8B4(SFX_7C_CHEBOOF, 0.9f, 20000, this->position, 1500, 3000);
|
||||||
@@ -322,18 +330,17 @@ void func_80388434(Actor *this){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(actor_animationIsAt(this, 0.99f)){
|
if(actor_animationIsAt(this, 0.99f)){
|
||||||
subaddie_set_state_with_direction(this, 7, 0.01f, 1);
|
subaddie_set_state_with_direction(this, CH_NIPPER_STATE_7_UNKNOWN, 0.01f, 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:// L80388A20
|
case CH_NIPPER_STATE_7_UNKNOWN:
|
||||||
this->marker->collidable = FALSE;
|
this->marker->collidable = FALSE;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}//L80388A30
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool func_80388A44(s16 arg0[3]){
|
bool chNipper_isInState7(s16 arg0[3]){
|
||||||
f32 sp1C[3];
|
f32 sp1C[3];
|
||||||
Actor *nipper;
|
Actor *nipper;
|
||||||
|
|
||||||
@@ -342,5 +349,5 @@ bool func_80388A44(s16 arg0[3]){
|
|||||||
sp1C[2] = (f32) arg0[2];
|
sp1C[2] = (f32) arg0[2];
|
||||||
|
|
||||||
nipper = actorArray_findClosestActorFromActorId(sp1C, ACTOR_117_NIPPER, -1, NULL);
|
nipper = actorArray_findClosestActorFromActorId(sp1C, ACTOR_117_NIPPER, -1, NULL);
|
||||||
return nipper->state == 7;
|
return nipper->state == CH_NIPPER_STATE_7_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
@@ -2,25 +2,25 @@
|
|||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
|
|
||||||
void chtreasure_update(Actor *this);
|
static void __chTreasure_updateFunc(Actor *this);
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorAnimationInfo gChTreasureAnim[]={
|
ActorAnimationInfo gChTreasureAnimations[4] = {
|
||||||
{0, 0.0f},
|
{NULL, NULL},
|
||||||
{ASSET_153_ANIM_BURIED_TREASURE_APPEAR, 2.0f},
|
{ASSET_153_ANIM_BURIED_TREASURE_APPEAR, 2.0f},
|
||||||
{ASSET_166_ANIM_BURIED_TREASURE_BOUNCE, 0.33f},
|
{ASSET_166_ANIM_BURIED_TREASURE_BOUNCE, 0.33f},
|
||||||
{0, 0.0}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo gChTreasureInfo = {
|
ActorInfo gChTreasure = {
|
||||||
MARKER_DB_BURIED_TREASURE, ACTOR_F4_BURIED_TREASURE, ASSET_42C_MODEL_BURIED_TREASURE,
|
MARKER_DB_BURIED_TREASURE, ACTOR_F4_BURIED_TREASURE, ASSET_42C_MODEL_BURIED_TREASURE,
|
||||||
1, gChTreasureAnim,
|
1, gChTreasureAnimations,
|
||||||
chtreasure_update, actor_update_func_80326224, actor_draw,
|
__chTreasure_updateFunc, actor_update_func_80326224, actor_draw,
|
||||||
0, 0, 1.7f, 0
|
0, 0, 1.7f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
void __chtreasure_die(ActorMarker *marker, ActorMarker *otherMarker){
|
static void __chTreasure_die(ActorMarker *marker, ActorMarker *otherMarker){
|
||||||
Actor *this = marker_getActor(marker);
|
Actor *this = marker_getActor(marker);
|
||||||
__spawnQueue_add_4((GenFunction_4) spawnQueue_actor_f32, 0x4C, reinterpret_cast(s32, this->position[0]), reinterpret_cast(s32, this->position[1]), reinterpret_cast(s32, this->position[2]));
|
__spawnQueue_add_4((GenFunction_4) spawnQueue_actor_f32, 0x4C, reinterpret_cast(s32, this->position[0]), reinterpret_cast(s32, this->position[1]), reinterpret_cast(s32, this->position[2]));
|
||||||
func_802EE278(this, 3, 0xf, 0x3C, 0.2f, 1.2f);
|
func_802EE278(this, 3, 0xf, 0x3C, 0.2f, 1.2f);
|
||||||
@@ -29,7 +29,7 @@ void __chtreasure_die(ActorMarker *marker, ActorMarker *otherMarker){
|
|||||||
marker_despawn(marker);
|
marker_despawn(marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __chtreasure_updatePosition(Actor *this){
|
static void __chTreasure_updateFuncPosition(Actor *this){
|
||||||
this->position[0] = this->unk1C[0];\
|
this->position[0] = this->unk1C[0];\
|
||||||
this->position[1] = this->unk1C[1];\
|
this->position[1] = this->unk1C[1];\
|
||||||
this->position[2] = this->unk1C[2];
|
this->position[2] = this->unk1C[2];
|
||||||
@@ -42,7 +42,7 @@ void __chtreasure_updatePosition(Actor *this){
|
|||||||
this->yaw = this->lifetime_value*180.0/M_PI;
|
this->yaw = this->lifetime_value*180.0/M_PI;
|
||||||
}
|
}
|
||||||
|
|
||||||
void chtreasure_update(Actor *this){
|
static void __chTreasure_updateFunc(Actor *this){
|
||||||
f32 sp3C[3];
|
f32 sp3C[3];
|
||||||
s16 sp34[3];
|
s16 sp34[3];
|
||||||
|
|
||||||
@@ -61,9 +61,9 @@ void chtreasure_update(Actor *this){
|
|||||||
this->unk1C[2] = this->position[2];
|
this->unk1C[2] = this->position[2];
|
||||||
|
|
||||||
actor_playAnimationOnce(this);
|
actor_playAnimationOnce(this);
|
||||||
marker_setCollisionScripts(this->marker, NULL, NULL, __chtreasure_die);
|
marker_setCollisionScripts(this->marker, NULL, NULL, __chTreasure_die);
|
||||||
}//L8038C214
|
}
|
||||||
__chtreasure_updatePosition(this);
|
__chTreasure_updateFuncPosition(this);
|
||||||
func_8034A174(this->marker->unk44, 5, sp3C);
|
func_8034A174(this->marker->unk44, 5, sp3C);
|
||||||
sp34[0] = (s16)sp3C[0];
|
sp34[0] = (s16)sp3C[0];
|
||||||
sp34[1] = (s16)sp3C[1];
|
sp34[1] = (s16)sp3C[1];
|
||||||
|
@@ -7,15 +7,15 @@ extern void func_8028F45C(s32, f32[3]);
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
s32 unk0;
|
s32 unk0;
|
||||||
}ActorLocal_TreasureHunt;
|
} ActorLocal_TreasureHunt;
|
||||||
|
|
||||||
void TTC_func_80389E90(Actor *this);
|
static void __chTreasurehunt_updateFunc(Actor *this);
|
||||||
Actor *func_8038A0D0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
static Actor *__chTreasurehunt_animFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
|
||||||
|
|
||||||
extern u32 D_8037DCB4;
|
extern u32 CH_TREASUREHUNT_PUZZLE_CURRENT_STEP;
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
f32 D_8038C820[6][3] = {
|
static f32 sChTreasurehunt_stepPositions[6][3] = {
|
||||||
{2904.0f, 2458.0f, -7351.0f},
|
{2904.0f, 2458.0f, -7351.0f},
|
||||||
{-7007.0f, 2013.0f, 401.0f},
|
{-7007.0f, 2013.0f, 401.0f},
|
||||||
{-3388.0f, 1519.0f, 5939.0f},
|
{-3388.0f, 1519.0f, 5939.0f},
|
||||||
@@ -24,40 +24,41 @@ f32 D_8038C820[6][3] = {
|
|||||||
{7667.0f, 717.0f, 1676.0f}
|
{7667.0f, 717.0f, 1676.0f}
|
||||||
};
|
};
|
||||||
|
|
||||||
f32 D_8038C868[6] = { 300.0f, 180.0f, 220.0f, 270.0f, 330.0f, 255.0f};
|
static f32 sChTreasurehunt_StepRedXYaws[6] = { 300.0f, 180.0f, 220.0f, 270.0f, 330.0f, 255.0f };
|
||||||
s32 D_8038C880[6] = {0x6E, 0xD2, 0x10E, 0x145, 0x14A, 0};
|
static s32 sChTreasurehunt_StepYaws[6] = { 0x6E, 0xD2, 0x10E, 0x145, 0x14A, 0 };
|
||||||
s32 D_8038C898[6] = {
|
static s32 sChTreasurehunt_StepActors[6] = {
|
||||||
ACTOR_53_RED_ARROW,
|
ACTOR_53_RED_ARROW,
|
||||||
ACTOR_53_RED_ARROW,
|
ACTOR_53_RED_ARROW,
|
||||||
ACTOR_53_RED_ARROW,
|
ACTOR_53_RED_ARROW,
|
||||||
ACTOR_53_RED_ARROW,
|
ACTOR_53_RED_ARROW,
|
||||||
ACTOR_54_RED_QUESTION_MARK,
|
ACTOR_54_RED_QUESTION_MARK,
|
||||||
0x46
|
ACTOR_46_JIGGY
|
||||||
}; //enum actor_e
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C8B0 = {
|
ActorInfo gChTreasurehuntRedArrow = {
|
||||||
MARKER_62_RED_ARROW, ACTOR_53_RED_ARROW, ASSET_3E9_MODEL_RED_ARROW,
|
MARKER_62_RED_ARROW, ACTOR_53_RED_ARROW, ASSET_3E9_MODEL_RED_ARROW,
|
||||||
0, NULL,
|
0, NULL,
|
||||||
TTC_func_80389E90, actor_update_func_80326224, func_8038A0D0,
|
__chTreasurehunt_updateFunc, actor_update_func_80326224, __chTreasurehunt_animFunc,
|
||||||
0, 0x400, 0.0f, 0
|
0, 0x400, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C8D4 = {
|
ActorInfo gChTreasurehuntRedQuestionMark = {
|
||||||
MARKER_63_RED_QUESTION_MARK, ACTOR_54_RED_QUESTION_MARK, ASSET_3EB_MODEL_RED_QUESTION_MARK,
|
MARKER_63_RED_QUESTION_MARK, ACTOR_54_RED_QUESTION_MARK, ASSET_3EB_MODEL_RED_QUESTION_MARK,
|
||||||
0, NULL,
|
0, NULL,
|
||||||
TTC_func_80389E90, actor_update_func_80326224, func_8038A0D0,
|
__chTreasurehunt_updateFunc, actor_update_func_80326224, __chTreasurehunt_animFunc,
|
||||||
0, 0x400, 0.0f, 0
|
0, 0x400, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C8F8 = {
|
ActorInfo gChTreasurehuntRedX = {
|
||||||
MARKER_64_RED_X, ACTOR_55_RED_X, ASSET_3EA_MODEL_RED_X,
|
MARKER_64_RED_X, ACTOR_55_RED_X, ASSET_3EA_MODEL_RED_X,
|
||||||
0, NULL,
|
0, NULL,
|
||||||
TTC_func_80389E90, actor_update_func_80326224, func_8038A0D0,
|
__chTreasurehunt_updateFunc, actor_update_func_80326224, __chTreasurehunt_animFunc,
|
||||||
0, 0x400, 0.0f, 0
|
0, 0x400, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 D_8038C91C[3] = {160, 120, 20};
|
static s32 sChTreasurehuntParticleRGB[3] = {160, 120, 20};
|
||||||
ParticleScaleAndLifetimeRanges D_8038C928 = {
|
|
||||||
|
ParticleScaleAndLifetimeRanges CH_TREASUREHUNT_PARTICLE_SCALE_AND_LIFETIME_RANGES = {
|
||||||
{1.1f, 1.5f},
|
{1.1f, 1.5f},
|
||||||
{4.0f, 4.6f},
|
{4.0f, 4.6f},
|
||||||
{0.0f, 0.01f},
|
{0.0f, 0.01f},
|
||||||
@@ -65,121 +66,120 @@ ParticleScaleAndLifetimeRanges D_8038C928 = {
|
|||||||
0.0f, 0.01f
|
0.0f, 0.01f
|
||||||
};
|
};
|
||||||
|
|
||||||
ParticleSettingsVelocityPosition D_8038C950 = {
|
ParticleSettingsVelocityPosition CH_TREASUREHUNT_VELOCITY_RANGES = {
|
||||||
{{-230.0f, 30.0f, -230.0f}, {230.0f, 110.0f, 230.0f}},
|
{{-230.0f, 30.0f, -230.0f}, {230.0f, 110.0f, 230.0f}},
|
||||||
{{-60.0f, 0.0f, -60.0f}, {60.0f, 30.0f, 60.0f}},
|
{{-60.0f, 0.0f, -60.0f}, {60.0f, 30.0f, 60.0f}},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
bool TTC_func_803899C0(void) {
|
static bool __chTreasurehunt_isActiveHitboxBeakBusterHitbox(void) {
|
||||||
enum comusic_e phi_a0;
|
enum comusic_e comusic_id;
|
||||||
s32 phi_a1;
|
s32 music_volume;
|
||||||
|
|
||||||
if (player_getActiveHitbox(0) == HITBOX_1_BEAK_BUSTER) {
|
if (player_getActiveHitbox(0) == HITBOX_1_BEAK_BUSTER) {
|
||||||
phi_a0 = COMUSIC_2B_DING_B;
|
comusic_id = COMUSIC_2B_DING_B;
|
||||||
phi_a1 = 28000;
|
music_volume = 28000;
|
||||||
if (D_8037DCB4 == 5) {
|
if (CH_TREASUREHUNT_PUZZLE_CURRENT_STEP == 5) {
|
||||||
phi_a0 = COMUSIC_2D_PUZZLE_SOLVED_FANFARE;
|
comusic_id = COMUSIC_2D_PUZZLE_SOLVED_FANFARE;
|
||||||
phi_a1 = 0x7FFF;
|
music_volume = 0x7FFF;
|
||||||
}
|
}
|
||||||
func_8025A6EC(phi_a0, phi_a1);
|
func_8025A6EC(comusic_id, music_volume);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389A1C(void) {
|
static void __chTreasurehunt_spawnRedXForNextStep(void) {
|
||||||
Actor *actor;
|
Actor *actor;
|
||||||
ActorLocal_TreasureHunt *local;
|
ActorLocal_TreasureHunt *local;
|
||||||
|
|
||||||
actor = actor_spawnWithYaw_f32(0x55, D_8038C820[D_8037DCB4], 0);
|
actor = actor_spawnWithYaw_f32(ACTOR_55_RED_X, sChTreasurehunt_stepPositions[CH_TREASUREHUNT_PUZZLE_CURRENT_STEP], 0);
|
||||||
local = (ActorLocal_TreasureHunt *)&actor->local;
|
local = (ActorLocal_TreasureHunt *)&actor->local;
|
||||||
actor->yaw = D_8038C868[D_8037DCB4];
|
actor->yaw = sChTreasurehunt_StepRedXYaws[CH_TREASUREHUNT_PUZZLE_CURRENT_STEP];
|
||||||
local->unk0 = D_8037DCB4;
|
local->unk0 = CH_TREASUREHUNT_PUZZLE_CURRENT_STEP;
|
||||||
actor->lifetime_value = 0.0f;
|
actor->lifetime_value = 0.0f;
|
||||||
actor->state = 0;
|
actor->state = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389A9C(void) {
|
static void __chTreasurehunt_spawnActorForNextStep(void) {
|
||||||
Actor *actor;
|
Actor *actor;
|
||||||
ActorLocal_TreasureHunt *local;
|
ActorLocal_TreasureHunt *local;
|
||||||
s32 actor_id;
|
|
||||||
|
|
||||||
actor = actor_spawnWithYaw_f32((D_8038C898 - 1)[D_8037DCB4], D_8038C820[D_8037DCB4 - 1], 0);
|
actor = actor_spawnWithYaw_f32((sChTreasurehunt_StepActors - 1)[CH_TREASUREHUNT_PUZZLE_CURRENT_STEP], sChTreasurehunt_stepPositions[CH_TREASUREHUNT_PUZZLE_CURRENT_STEP - 1], 0);
|
||||||
local = (ActorLocal_TreasureHunt *)&actor->local;
|
local = (ActorLocal_TreasureHunt *)&actor->local;
|
||||||
actor->yaw = D_8038C880[D_8037DCB4 - 1];
|
actor->yaw = sChTreasurehunt_StepYaws[CH_TREASUREHUNT_PUZZLE_CURRENT_STEP - 1];
|
||||||
local->unk0 = D_8037DCB4;
|
local->unk0 = CH_TREASUREHUNT_PUZZLE_CURRENT_STEP;
|
||||||
actor->lifetime_value = 0.0f;
|
actor->lifetime_value = 0.0f;
|
||||||
actor->state = 0;
|
actor->state = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389B38(s32 arg0){
|
static void __chTreasurehunt_checkStepProgress(s32 currentStep){
|
||||||
if(D_8037DCB4 == arg0 && TTC_func_803899C0()){
|
if(CH_TREASUREHUNT_PUZZLE_CURRENT_STEP == currentStep && __chTreasurehunt_isActiveHitboxBeakBusterHitbox()){
|
||||||
if(arg0 == 0 && !jiggyscore_isCollected(JIGGY_11_TTC_RED_X)){
|
if(currentStep == 0 && !jiggyscore_isCollected(JIGGY_11_TTC_RED_X)){
|
||||||
gcdialog_showText(0xA18, 4, NULL, NULL, NULL, NULL);
|
gcdialog_showText(ASSET_A18_TEXT_TREASUREHUNT_FOLLOW_CLUES, 4, NULL, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
else if(arg0 == 4){
|
else if(currentStep == 4){
|
||||||
gcdialog_showText(0xA19, 4, NULL, NULL, NULL, NULL);
|
gcdialog_showText(ASSET_A19_TEXT_TREASUREHUNT_SECOND_STEP, 4, NULL, NULL, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
D_8037DCB4++;
|
CH_TREASUREHUNT_PUZZLE_CURRENT_STEP++;
|
||||||
__spawnQueue_add_0(func_80389A9C);
|
__spawnQueue_add_0(__chTreasurehunt_spawnActorForNextStep);
|
||||||
__spawnQueue_add_0(func_80389A1C);
|
__spawnQueue_add_0(__chTreasurehunt_spawnRedXForNextStep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80389BFC(ActorMarker *this, ActorMarker *arg1){\
|
void chTreasurehunt_checkStepProgress0(ActorMarker *this, ActorMarker *arg1){\
|
||||||
func_80389B38(0);
|
__chTreasurehunt_checkStepProgress(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389C24(ActorMarker *this, ActorMarker *arg1){\
|
void chTreasurehunt_checkStepProgress1(ActorMarker *this, ActorMarker *arg1){\
|
||||||
func_80389B38(1);
|
__chTreasurehunt_checkStepProgress(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389C4C(ActorMarker *this, ActorMarker *arg1){\
|
void chTreasurehunt_checkStepProgress2(ActorMarker *this, ActorMarker *arg1){\
|
||||||
func_80389B38(2);
|
__chTreasurehunt_checkStepProgress(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389C74(ActorMarker *this, ActorMarker *arg1){\
|
void chTreasurehunt_checkStepProgress3(ActorMarker *this, ActorMarker *arg1){\
|
||||||
func_80389B38(3);
|
__chTreasurehunt_checkStepProgress(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389C9C(ActorMarker *this, ActorMarker *arg1){\
|
void chTreasurehunt_checkStepProgress4(ActorMarker *this, ActorMarker *arg1){\
|
||||||
func_80389B38(4);
|
__chTreasurehunt_checkStepProgress(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80389CC4(s16 arg0[3], s32 arg1){
|
void chTreasurehunt_checkStepProgress5(s16 arg0[3], s32 arg1){
|
||||||
static ParticleEmitter *D_8038D700;
|
static ParticleEmitter *particleEmitter;
|
||||||
static f32 D_8038D708[3];
|
static f32 particleTargetPosition[3];
|
||||||
|
|
||||||
if(D_8037DCB4 == 5 && TTC_func_803899C0()){
|
if(CH_TREASUREHUNT_PUZZLE_CURRENT_STEP == 5 && __chTreasurehunt_isActiveHitboxBeakBusterHitbox()){
|
||||||
D_8038D708[0] = (f32)arg0[0];
|
particleTargetPosition[0] = (f32)arg0[0];
|
||||||
D_8038D708[1] = (f32)arg0[1];
|
particleTargetPosition[1] = (f32)arg0[1];
|
||||||
D_8038D708[2] = (f32)arg0[2];
|
particleTargetPosition[2] = (f32)arg0[2];
|
||||||
D_8038D708[1] = mapModel_getFloorY(D_8038D708);
|
particleTargetPosition[1] = mapModel_getFloorY(particleTargetPosition);
|
||||||
__spawnQueue_add_4((GenFunction_4)spawnQueue_actor_f32, 0xF4, reinterpret_cast(s32, D_8038D708[0]), reinterpret_cast(s32, D_8038D708[1]), reinterpret_cast(s32, D_8038D708[2]));
|
__spawnQueue_add_4((GenFunction_4)spawnQueue_actor_f32, 0xF4, reinterpret_cast(s32, particleTargetPosition[0]), reinterpret_cast(s32, particleTargetPosition[1]), reinterpret_cast(s32, particleTargetPosition[2]));
|
||||||
D_8038D700 = partEmitMgr_newEmitter(3);
|
particleEmitter = partEmitMgr_newEmitter(3);
|
||||||
particleEmitter_setRGB(D_8038D700, D_8038C91C);
|
particleEmitter_setRGB(particleEmitter, sChTreasurehuntParticleRGB);
|
||||||
particleEmitter_setSprite(D_8038D700, ASSET_700_SPRITE_DUST);
|
particleEmitter_setSprite(particleEmitter, ASSET_700_SPRITE_DUST);
|
||||||
particleEmitter_setStartingFrameRange(D_8038D700, 0, 7);
|
particleEmitter_setStartingFrameRange(particleEmitter, 0, 7);
|
||||||
particleEmitter_setPosition(D_8038D700, D_8038D708);
|
particleEmitter_setPosition(particleEmitter, particleTargetPosition);
|
||||||
particleEmitter_setPositionAndVelocityRanges(D_8038D700, &D_8038C950);
|
particleEmitter_setPositionAndVelocityRanges(particleEmitter, &CH_TREASUREHUNT_VELOCITY_RANGES);
|
||||||
particleEmitter_setScaleAndLifetimeRanges(D_8038D700, &D_8038C928);
|
particleEmitter_setScaleAndLifetimeRanges(particleEmitter, &CH_TREASUREHUNT_PARTICLE_SCALE_AND_LIFETIME_RANGES);
|
||||||
particleEmitter_emitN(D_8038D700, 5);
|
particleEmitter_emitN(particleEmitter, 5);
|
||||||
D_8038D708[2] += 300.0f;
|
particleTargetPosition[2] += 300.0f;
|
||||||
gcpausemenu_80314AC8(0);
|
gcpausemenu_80314AC8(0);
|
||||||
timedFunc_set_2(0.1f, (GenFunction_2) func_8028F45C, 9, (s32)&D_8038D708);
|
timedFunc_set_2(0.1f, (GenFunction_2) func_8028F45C, 9, (s32)&particleTargetPosition);
|
||||||
timedFunc_set_1(0.1f, (GenFunction_1) gcpausemenu_80314AC8, 1);
|
timedFunc_set_1(0.1f, (GenFunction_1) gcpausemenu_80314AC8, 1);
|
||||||
gcdialog_showText(ASSET_A17_TEXT_BURIED_TREASURE_SPAWNED, 4, NULL, NULL, NULL, NULL);
|
gcdialog_showText(ASSET_A17_TEXT_BURIED_TREASURE_SPAWNED, 4, NULL, NULL, NULL, NULL);
|
||||||
D_8037DCB4++;
|
CH_TREASUREHUNT_PUZZLE_CURRENT_STEP++;
|
||||||
}//L80389E70
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ttc_resetTresureHunt(void){
|
void chTreasurehunt_resetProgress(void){
|
||||||
D_8037DCB4 = 0;
|
CH_TREASUREHUNT_PUZZLE_CURRENT_STEP = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80389E90(Actor *this){
|
static void __chTreasurehunt_updateFunc(Actor *this){
|
||||||
f32 tick = time_getDelta();
|
f32 tick = time_getDelta();
|
||||||
ActorLocal_TreasureHunt *local = (ActorLocal_TreasureHunt*)&this->local;
|
ActorLocal_TreasureHunt *local = (ActorLocal_TreasureHunt*)&this->local;
|
||||||
f64 tmp_f12;
|
f64 tmp_f12;
|
||||||
@@ -191,28 +191,28 @@ void TTC_func_80389E90(Actor *this){
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch(this->state){
|
switch(this->state){
|
||||||
case 0://L80389F20
|
case 0:
|
||||||
this->lifetime_value = MIN(255.0, this->lifetime_value + tick*150.0);
|
this->lifetime_value = MIN(255.0, this->lifetime_value + tick*150.0);
|
||||||
if(255.0 == this->lifetime_value){
|
if(255.0 == this->lifetime_value){
|
||||||
this->state = 1;
|
this->state = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1://L80389F94
|
case 1:
|
||||||
if(local->unk0 < D_8037DCB4){
|
if(local->unk0 < CH_TREASUREHUNT_PUZZLE_CURRENT_STEP){
|
||||||
this->state = 2;
|
this->state = 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2://L80389FC4
|
case 2:
|
||||||
this->lifetime_value = MAX(0.0, this->lifetime_value - tick*((this->marker->modelId == ASSET_3EA_MODEL_RED_X)? 200.0 : 150.0));
|
this->lifetime_value = MAX(0.0, this->lifetime_value - tick*((this->marker->modelId == ASSET_3EA_MODEL_RED_X)? 200.0 : 150.0));
|
||||||
if(0.0 == this->lifetime_value)
|
if(0.0 == this->lifetime_value)
|
||||||
marker_despawn(this->marker);
|
marker_despawn(this->marker);
|
||||||
break;
|
break;
|
||||||
}//L8038A094
|
}
|
||||||
actor_setOpacity(this, (s32)this->lifetime_value);
|
actor_setOpacity(this, (s32)this->lifetime_value);
|
||||||
this->depth_mode = 2;
|
this->depth_mode = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
Actor *func_8038A0D0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
static Actor *__chTreasurehunt_animFunc(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||||
f32 sp4C[3];
|
f32 sp4C[3];
|
||||||
f32 sp40[3];
|
f32 sp40[3];
|
||||||
f32 sp3C;
|
f32 sp3C;
|
||||||
@@ -221,19 +221,19 @@ Actor *func_8038A0D0(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
|||||||
|
|
||||||
actor = marker_getActorAndRotation(marker, sp4C);
|
actor = marker_getActorAndRotation(marker, sp4C);
|
||||||
switch(marker->modelId){
|
switch(marker->modelId){
|
||||||
case ASSET_3E9_MODEL_RED_ARROW://L8038A12C
|
case ASSET_3E9_MODEL_RED_ARROW:
|
||||||
sp3C = 1.0f;
|
sp3C = 1.0f;
|
||||||
sp38 = 8.0f;
|
sp38 = 8.0f;
|
||||||
break;
|
break;
|
||||||
case ASSET_3EB_MODEL_RED_QUESTION_MARK: //L8038A14C
|
case ASSET_3EB_MODEL_RED_QUESTION_MARK:
|
||||||
sp3C = 1.0f;
|
sp3C = 1.0f;
|
||||||
sp38 = 8.0f;
|
sp38 = 8.0f;
|
||||||
break;
|
break;
|
||||||
case ASSET_3EA_MODEL_RED_X://L8038A164
|
case ASSET_3EA_MODEL_RED_X:
|
||||||
sp3C = (((ActorLocal_TreasureHunt *)&actor->local)->unk0 == 5)? 0.8f : 0.4f;
|
sp3C = (((ActorLocal_TreasureHunt *)&actor->local)->unk0 == 5) ? 0.8f : 0.4f;
|
||||||
sp38 = 4.0f;
|
sp38 = 4.0f;
|
||||||
break;
|
break;
|
||||||
}//L8038A1A0
|
}
|
||||||
sp40[0] = actor->position[0];
|
sp40[0] = actor->position[0];
|
||||||
sp40[1] = actor->position[1] + sp38;
|
sp40[1] = actor->position[1] + sp38;
|
||||||
sp40[2] = actor->position[2];
|
sp40[2] = actor->position[2];
|
||||||
|
@@ -5,121 +5,121 @@
|
|||||||
#include "SnS.h"
|
#include "SnS.h"
|
||||||
#include "actor.h"
|
#include "actor.h"
|
||||||
|
|
||||||
extern ActorInfo chClam;
|
extern ActorInfo gChClam;
|
||||||
extern ActorInfo TTC_D_8038C510;
|
extern ActorInfo gChBlubber;
|
||||||
extern ActorInfo D_8038C580;
|
extern ActorInfo gChNipper;
|
||||||
extern ActorInfo D_8038C5E0;
|
extern ActorInfo gBlubberShipTopHatch;
|
||||||
extern ActorInfo D_8038C604;
|
extern ActorInfo gLighthouseDoor;
|
||||||
extern ActorInfo D_8038C628;
|
extern ActorInfo gSharkfoodIsland;
|
||||||
extern ActorInfo D_8038C64C;
|
extern ActorInfo gLighthouseA;
|
||||||
extern ActorInfo D_8038C670;
|
extern ActorInfo gLighthouseB;
|
||||||
extern ActorInfo D_8038C694;
|
extern ActorInfo gStairs1;
|
||||||
extern ActorInfo D_8038C6B8;
|
extern ActorInfo gStairs2;
|
||||||
extern ActorInfo D_8038C6DC;
|
extern ActorInfo gPalmTree;
|
||||||
extern ActorInfo D_8038C718;
|
extern ActorInfo gChLeaky;
|
||||||
extern ActorInfo D_8038C790;
|
extern ActorInfo gChLockupSlow;
|
||||||
extern ActorInfo D_8038C7B4;
|
extern ActorInfo gChLockupMedium;
|
||||||
extern ActorInfo D_8038C7D8;
|
extern ActorInfo gChLockupFast;
|
||||||
extern ActorInfo D_8038C8B0;
|
extern ActorInfo gChTreasurehuntRedArrow;
|
||||||
extern ActorInfo D_8038C8D4;
|
extern ActorInfo gChTreasurehuntRedQuestionMark;
|
||||||
extern ActorInfo D_8038C8F8;
|
extern ActorInfo gChTreasurehuntRedX;
|
||||||
extern ActorInfo gChTreasureInfo;
|
extern ActorInfo gChTreasure;
|
||||||
|
|
||||||
void TTC_func_80388C78(Actor *this);
|
void code26D0_genericUpdateFunc(Actor *this);
|
||||||
void func_80388CB8(Actor *this);
|
void code26D0_palmTreeUpdateFunc(Actor *this);
|
||||||
void func_80388D34(Actor *this);
|
void code26D0_lighthouseAUpdateFunc(Actor *this);
|
||||||
void func_802D3D54(Actor *this);
|
void func_802D3D54(Actor *this);
|
||||||
void func_80388D8C(Actor *this);
|
void code26D0_sharkfoodIslandUpdateFunc(Actor *this);
|
||||||
|
|
||||||
/* .data */
|
/* .data */
|
||||||
ActorInfo D_8038C5E0 = {
|
ActorInfo gBlubberShipTopHatch = {
|
||||||
0xA1, 0x10E, 0x3D2,
|
MARKER_A1_BLUBBER_SHIP_TOP_HATCH, ACTOR_10E_BLUBBER_SHIP_TOP_HATCH, ASSET_3D2_MODEL_BLUBBER_SHIP_TOP_HATCH,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
|
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C604 = {
|
ActorInfo gLighthouseDoor = {
|
||||||
MARKER_EA_LIGHTHOUSE_DOOR, ACTOR_13E_LIGHTHOUSE_DOOR, ASSET_3D6_MODEL_LIGHTHOUSE_DOOR,
|
MARKER_EA_LIGHTHOUSE_DOOR, ACTOR_13E_LIGHTHOUSE_DOOR, ASSET_3D6_MODEL_LIGHTHOUSE_DOOR,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
|
func_802D3D54, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C628 = {
|
ActorInfo gSharkfoodIsland = {
|
||||||
MARKER_167_SHARKFOOD_ISLAND, ACTOR_25C_SHARKFOOD_ISLAND, ASSET_50A_MODEL_SHARKFOOD_ISLAND,
|
MARKER_167_SHARKFOOD_ISLAND, ACTOR_25C_SHARKFOOD_ISLAND, ASSET_50A_MODEL_SHARKFOOD_ISLAND,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
func_80388D8C, actor_update_func_80326224, actor_drawFullDepth,
|
code26D0_sharkfoodIslandUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C64C = {
|
ActorInfo gLighthouseA = {
|
||||||
0x267, 0x2E2, 0x3BD,
|
MARKER_267_LIGHTHOUSE_A, ACTOR_2E2_LIGHTHOUSE_A, ASSET_3BD_MODEL_LIGHTHOUSE_A,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
func_80388D34, actor_update_func_80326224, actor_drawFullDepth,
|
code26D0_lighthouseAUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C670 = {
|
ActorInfo gLighthouseB = {
|
||||||
0x26A, 0x2DF, 0x3BE,
|
MARKER_26A_LIGHTHOUSE_B, ACTOR_2DF_LIGHTHOUSE_B, ASSET_3BE_MODEL_LIGHTHOUSE_B,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
TTC_func_80388C78, actor_update_func_80326224, actor_drawFullDepth,
|
code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C694 = {
|
ActorInfo gStairs1 = {
|
||||||
0x268, 0x2E0, 0x3B6,
|
MARKER_268_STAIRS_1, ACTOR_2E0_TTC_STAIRS_1, ASSET_3B6_MODEL_TTC_STAIRS_1,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
TTC_func_80388C78, actor_update_func_80326224, actor_drawFullDepth,
|
code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C6B8 = {
|
ActorInfo gStairs2 = {
|
||||||
0x269, 0x2E1, 0x3B7,
|
MARKER_269_STAIRS_2, ACTOR_2E1_TTC_STAIRS_2, ASSET_3B7_MODEL_TTC_STAIRS_1,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
TTC_func_80388C78, actor_update_func_80326224, actor_drawFullDepth,
|
code26D0_genericUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
ActorInfo D_8038C6DC = {
|
ActorInfo gPalmTree = {
|
||||||
MARKER_1D5_PALM_TREE, ACTOR_31E_PALM_TREE, ASSET_3A9_MODEL_PALM_TREE,
|
MARKER_1D5_PALM_TREE, ACTOR_31E_PALM_TREE, ASSET_3A9_MODEL_PALM_TREE,
|
||||||
0x1, NULL,
|
0x1, NULL,
|
||||||
func_80388CB8, actor_update_func_80326224, actor_drawFullDepth,
|
code26D0_palmTreeUpdateFunc, actor_update_func_80326224, actor_drawFullDepth,
|
||||||
0, 0, 0.0f, 0
|
0, 0, 0.0f, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/* .code */
|
/* .code */
|
||||||
void TTC_func_80388AC0(void)
|
void TTC_resetSpawnableActors(void)
|
||||||
{
|
{
|
||||||
spawnableActorList_add(&D_8038C5E0, actor_new, ACTOR_FLAG_NONE);
|
spawnableActorList_add(&gBlubberShipTopHatch, actor_new, ACTOR_FLAG_NONE);
|
||||||
spawnableActorList_add(&D_8038C604, actor_new, ACTOR_FLAG_NONE);
|
spawnableActorList_add(&gLighthouseDoor, actor_new, ACTOR_FLAG_NONE);
|
||||||
spawnableActorList_add(&D_8038C580, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_5 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_20 | ACTOR_FLAG_UNKNOWN_26);
|
spawnableActorList_add(&gChNipper, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_5 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_20 | ACTOR_FLAG_UNKNOWN_26);
|
||||||
spawnableActorList_add(&TTC_D_8038C510, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_26);
|
spawnableActorList_add(&gChBlubber, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_8 | ACTOR_FLAG_UNKNOWN_26);
|
||||||
spawnableActorList_add(&D_8038C718, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_7 | ACTOR_FLAG_UNKNOWN_8);
|
spawnableActorList_add(&gChLeaky, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_7 | ACTOR_FLAG_UNKNOWN_8);
|
||||||
spawnableActorList_add(&D_8038C790, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8);
|
spawnableActorList_add(&gChLockupSlow, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8);
|
||||||
spawnableActorList_add(&D_8038C7B4, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8);
|
spawnableActorList_add(&gChLockupMedium, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8);
|
||||||
spawnableActorList_add(&D_8038C7D8, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8);
|
spawnableActorList_add(&gChLockupFast, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_8);
|
||||||
spawnableActorList_add(&D_8038C8B0, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gChTreasurehuntRedArrow, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&D_8038C8D4, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gChTreasurehuntRedQuestionMark, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&D_8038C8F8, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gChTreasurehuntRedX, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&gChTreasureInfo, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_25);
|
spawnableActorList_add(&gChTreasure, actor_new, ACTOR_FLAG_UNKNOWN_3 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_25);
|
||||||
spawnableActorList_add(&D_8038C628, actor_new, ACTOR_FLAG_UNKNOWN_7 | ACTOR_FLAG_UNKNOWN_9 | ACTOR_FLAG_UNKNOWN_10 | ACTOR_FLAG_UNKNOWN_15);
|
spawnableActorList_add(&gSharkfoodIsland, actor_new, ACTOR_FLAG_UNKNOWN_7 | ACTOR_FLAG_UNKNOWN_9 | ACTOR_FLAG_UNKNOWN_10 | ACTOR_FLAG_UNKNOWN_15);
|
||||||
spawnableActorList_add(&D_8038C64C, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gLighthouseA, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&D_8038C670, actor_new, ACTOR_FLAG_UNKNOWN_2 | ACTOR_FLAG_UNKNOWN_10 | ACTOR_FLAG_UNKNOWN_17);
|
spawnableActorList_add(&gLighthouseB, actor_new, ACTOR_FLAG_UNKNOWN_2 | ACTOR_FLAG_UNKNOWN_10 | ACTOR_FLAG_UNKNOWN_17);
|
||||||
spawnableActorList_add(&D_8038C694, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gStairs1, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&D_8038C6B8, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gStairs2, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&D_8038C6DC, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
spawnableActorList_add(&gPalmTree, actor_new, ACTOR_FLAG_UNKNOWN_10);
|
||||||
spawnableActorList_add(&chClam, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_25);
|
spawnableActorList_add(&gChClam, actor_new, ACTOR_FLAG_UNKNOWN_0 | ACTOR_FLAG_UNKNOWN_6 | ACTOR_FLAG_UNKNOWN_25);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTC_func_80388C78(Actor *this){
|
void code26D0_genericUpdateFunc(Actor *this){
|
||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
func_802D3D74(this);
|
func_802D3D74(this);
|
||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388CB8(Actor *this){
|
void code26D0_palmTreeUpdateFunc(Actor *this){
|
||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
func_802D3D74(this);
|
func_802D3D74(this);
|
||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
@@ -127,22 +127,22 @@ void func_80388CB8(Actor *this){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388D04(s32 arg0){
|
void code26D0_spawnLighthouseB(s32 arg0){
|
||||||
ActorMarker *marker = reinterpret_cast(ActorMarker *, arg0);
|
ActorMarker *marker = reinterpret_cast(ActorMarker *, arg0);
|
||||||
Actor *this = marker_getActor(marker);
|
Actor *this = marker_getActor(marker);
|
||||||
spawn_child_actor(0x2df, &this);
|
spawn_child_actor(ACTOR_2DF_LIGHTHOUSE_B, &this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388D34(Actor *this){
|
void code26D0_lighthouseAUpdateFunc(Actor *this){
|
||||||
TTC_func_80388C78(this);
|
code26D0_genericUpdateFunc(this);
|
||||||
if(!this->volatile_initialized){
|
if(!this->volatile_initialized){
|
||||||
__spawnQueue_add_1((GenFunction_1)func_80388D04, (s32)this->marker);
|
__spawnQueue_add_1((GenFunction_1)code26D0_spawnLighthouseB, (s32)this->marker);
|
||||||
this->volatile_initialized = TRUE;
|
this->volatile_initialized = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80388D8C(Actor *this){
|
void code26D0_sharkfoodIslandUpdateFunc(Actor *this){
|
||||||
f32 sp1C[3];
|
f32 player_position[3];
|
||||||
|
|
||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
func_802D3CE8(this);
|
func_802D3CE8(this);
|
||||||
@@ -163,12 +163,12 @@ void func_80388D8C(Actor *this){
|
|||||||
}//L80388E7C
|
}//L80388E7C
|
||||||
|
|
||||||
if(this->position_y == 700.0f){
|
if(this->position_y == 700.0f){
|
||||||
player_getPosition(sp1C);
|
player_getPosition(player_position);
|
||||||
if( 695.0f <= sp1C[1] && sp1C[1] < 1000.0f
|
if( 695.0f <= player_position[1] && player_position[1] < 1000.0f
|
||||||
&& (sp1C[0] - 5542.0f)*(sp1C[0] - 5542.0f) + (sp1C[2] - 8687.0f)*(sp1C[2] - 8687.0f) < 96100.0f
|
&& (player_position[0] - 5542.0f)*(player_position[0] - 5542.0f) + (player_position[2] - 8687.0f)*(player_position[2] - 8687.0f) < 96100.0f
|
||||||
&& (sp1C[0] - 6837.0f)*(sp1C[0] - 6837.0f) + (sp1C[2] - 12714.0f)*(sp1C[2] - 12714.0f) < 17640000.0f
|
&& (player_position[0] - 6837.0f)*(player_position[0] - 6837.0f) + (player_position[2] - 12714.0f)*(player_position[2] - 12714.0f) < 17640000.0f
|
||||||
){
|
){
|
||||||
func_8031D04C(0x8f, 1);
|
func_8031D04C(MAP_8F_TTC_SHARKFOOD_ISLAND, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -147,7 +147,7 @@ void func_8038A328(void) {
|
|||||||
i_ptr->unk3 = 2;
|
i_ptr->unk3 = 2;
|
||||||
i_ptr->unk4 = 0.0f;
|
i_ptr->unk4 = 0.0f;
|
||||||
}
|
}
|
||||||
mapSpecificFlags_set(1, FALSE);
|
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_1_UNKNOWN, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8038A37C(s32 arg0, BKVtxRef *ref, Vtx *dst, s32 arg3) {
|
void func_8038A37C(s32 arg0, BKVtxRef *ref, Vtx *dst, s32 arg3) {
|
||||||
@@ -318,7 +318,7 @@ void func_8038AC48(LetterFloorTile *arg0) {
|
|||||||
if (var_v0 & 1) {
|
if (var_v0 & 1) {
|
||||||
D_8038D720.unk8 = 2U;
|
D_8038D720.unk8 = 2U;
|
||||||
D_8038D720.unkC = 0.0f;
|
D_8038D720.unkC = 0.0f;
|
||||||
mapSpecificFlags_set(1, TRUE);
|
mapSpecificFlags_set(TTC_SPECIFIC_FLAG_1_UNKNOWN, TRUE);
|
||||||
fileProgressFlag_set(0xFA, TRUE);
|
fileProgressFlag_set(0xFA, TRUE);
|
||||||
func_8030E2C4(D_8038D720.sfxsourceIdx);
|
func_8030E2C4(D_8038D720.sfxsourceIdx);
|
||||||
func_8038A258(2);
|
func_8038A258(2);
|
||||||
|
@@ -56,7 +56,7 @@ void bacarriedobj_spawn(enum actor_e actor_id){
|
|||||||
void func_8028DEEC(enum actor_e actor_id, Actor *actor){
|
void func_8028DEEC(enum actor_e actor_id, Actor *actor){
|
||||||
f32 sp1C[3];
|
f32 sp1C[3];
|
||||||
|
|
||||||
nodeprop_getPosition(func_80304C38(actor_id, actor), sp1C);
|
nodeprop_getPosition(nodeprop_findByActorIdAndActorPosition(actor_id, actor), sp1C);
|
||||||
set_throw_target_position(sp1C);
|
set_throw_target_position(sp1C);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,7 +80,7 @@ ActorInfo D_80365F00 = { 0xE6, 0x197, 0x532, 0x1, D_80365ED0, func_802C4C14, act
|
|||||||
|
|
||||||
/* .bss */
|
/* .bss */
|
||||||
s32 mm_hut_smash_count;
|
s32 mm_hut_smash_count;
|
||||||
u32 D_8037DCB4;
|
u32 CH_TREASUREHUNT_PUZZLE_CURRENT_STEP;
|
||||||
struct FF_StorageStruct* D_8037DCB8;
|
struct FF_StorageStruct* D_8037DCB8;
|
||||||
s32 D_8037DCBC;
|
s32 D_8037DCBC;
|
||||||
u8 D_8037DCC0[7];
|
u8 D_8037DCC0[7];
|
||||||
|
@@ -349,7 +349,7 @@ void chmole_update(Actor *this){
|
|||||||
if(!this->initialized){
|
if(!this->initialized){
|
||||||
// Checks if player is within radius of a specific actor exists within the same cube
|
// Checks if player is within radius of a specific actor exists within the same cube
|
||||||
// If actor exists and player is within radius, force trigger conversation
|
// If actor exists and player is within radius, force trigger conversation
|
||||||
node_prop = func_80304C38(0x372, this);
|
node_prop = nodeprop_findByActorIdAndActorPosition(0x372, this);
|
||||||
if(node_prop == NULL){
|
if(node_prop == NULL){
|
||||||
this->unk38_0 = FALSE;
|
this->unk38_0 = FALSE;
|
||||||
}
|
}
|
||||||
@@ -363,7 +363,7 @@ void chmole_update(Actor *this){
|
|||||||
this->marker->collidable = FALSE;
|
this->marker->collidable = FALSE;
|
||||||
this->initialized = TRUE;
|
this->initialized = TRUE;
|
||||||
if(this->unkF4_8 == 0x12){
|
if(this->unkF4_8 == 0x12){
|
||||||
node_prop = func_80304C38(0x349, this);
|
node_prop = nodeprop_findByActorIdAndActorPosition(0x349, this);
|
||||||
if(node_prop == NULL){
|
if(node_prop == NULL){
|
||||||
this->velocity[0] = this->position[0];
|
this->velocity[0] = this->position[0];
|
||||||
this->velocity[1] = this->position[1];
|
this->velocity[1] = this->position[1];
|
||||||
|
@@ -142,7 +142,7 @@ void func_802CEEA4(Actor *this, Struct_core2_47BD0_0 *arg1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void func_802CEF54(Actor *this, f32 arg1[3], f32 arg2){
|
void func_802CEF54(Actor *this, f32 arg1[3], f32 distance){
|
||||||
f32 sp34[3];
|
f32 sp34[3];
|
||||||
s32 phi_v1;
|
s32 phi_v1;
|
||||||
s32 phi_v0;
|
s32 phi_v0;
|
||||||
@@ -153,7 +153,7 @@ void func_802CEF54(Actor *this, f32 arg1[3], f32 arg2){
|
|||||||
|
|
||||||
phi_v1 = (this->state == 5) ? 200 : 50;
|
phi_v1 = (this->state == 5) ? 200 : 50;
|
||||||
phi_v0 = (this->state == 5) ? 200 : 100;
|
phi_v0 = (this->state == 5) ? 200 : 100;
|
||||||
func_802CEDE4(sp34, this->unk1C, arg2, &this->actor_specific_1_f, (f32) phi_v1, (f32) phi_v0);
|
func_802CEDE4(sp34, this->unk1C, distance, &this->actor_specific_1_f, (f32) phi_v1, (f32) phi_v0);
|
||||||
this->unk1C[0] = this->unk1C[0] + arg1[0];
|
this->unk1C[0] = this->unk1C[0] + arg1[0];
|
||||||
this->unk1C[1] = this->unk1C[1] + arg1[1];
|
this->unk1C[1] = this->unk1C[1] + arg1[1];
|
||||||
this->unk1C[2] = this->unk1C[2] + arg1[2];
|
this->unk1C[2] = this->unk1C[2] + arg1[2];
|
||||||
|
@@ -2,13 +2,13 @@
|
|||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
|
|
||||||
s32 func_802E0970(s32 arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, bool arg5, f32 arg6[3]) {
|
s32 func_802E0970(enum sfx_e sfxId, f32 arg1, f32 arg2, f32 arg3, s32 sampleRate, bool arg5, f32 position[3]) {
|
||||||
f32 temp_f0;
|
f32 temp_f0;
|
||||||
f32 phi_f2;
|
f32 phi_f2;
|
||||||
|
|
||||||
phi_f2 = (arg5) ? arg1 : arg2;
|
phi_f2 = (arg5) ? arg1 : arg2;
|
||||||
|
|
||||||
temp_f0 = arg3 * 0.5;
|
temp_f0 = arg3 * 0.5;
|
||||||
func_8030E878(arg0, randf2(phi_f2 - temp_f0, phi_f2 + temp_f0), arg4, arg6, 1000.0f, 2300.0f);
|
func_8030E878(sfxId, randf2(phi_f2 - temp_f0, phi_f2 + temp_f0), sampleRate, position, 1000.0f, 2300.0f);
|
||||||
return NOT(arg5);
|
return NOT(arg5);
|
||||||
}
|
}
|
||||||
|
@@ -995,7 +995,7 @@ NodeProp *cubeList_findNodePropByActorId(enum actor_e actor_id, s32 position[3])
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeProp *func_80304C38(enum actor_e actor_id, Actor *actor){
|
NodeProp *nodeprop_findByActorIdAndActorPosition(enum actor_e actor_id, Actor *actor){
|
||||||
s32 tmp_position[3];
|
s32 tmp_position[3];
|
||||||
s32 *position;
|
s32 *position;
|
||||||
|
|
||||||
|
@@ -39,7 +39,7 @@ typedef struct {
|
|||||||
u8 unk40;
|
u8 unk40;
|
||||||
u8 unk41;
|
u8 unk41;
|
||||||
u8 busy;
|
u8 busy;
|
||||||
u8 unk43_7:3;
|
u8 unk43_7:3; // value is set to 1, 2 or 3
|
||||||
u8 unk43_4:3;
|
u8 unk43_4:3;
|
||||||
u8 unk43_1:2;
|
u8 unk43_1:2;
|
||||||
}SfxSource;
|
}SfxSource;
|
||||||
@@ -420,11 +420,11 @@ void func_8030D644(void){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8030D6C4(enum sfx_e uid, f32 arg1, s32 arg2, s32 arg3, s32 arg4){
|
void func_8030D6C4(enum sfx_e uid, f32 arg1, s32 sampleRate, s32 arg3, s32 arg4){
|
||||||
u8 indx = sfxsource_createSfxsourceAndReturnIndex();
|
u8 indx = sfxsource_createSfxsourceAndReturnIndex();
|
||||||
if(indx){
|
if(indx){
|
||||||
sfxsource_setSfxId(indx, uid);
|
sfxsource_setSfxId(indx, uid);
|
||||||
sfxsource_setSampleRate(indx, arg2);
|
sfxsource_setSampleRate(indx, sampleRate);
|
||||||
sfxsource_playSfxAtVolume(indx, arg1);
|
sfxsource_playSfxAtVolume(indx, arg1);
|
||||||
func_8030DCCC(indx, arg3);
|
func_8030DCCC(indx, arg3);
|
||||||
func_8030DD14(indx, 1);
|
func_8030DD14(indx, 1);
|
||||||
@@ -850,8 +850,8 @@ void func_8030E4E4(enum sfx_e uid){
|
|||||||
func_8030D6C4(uid, 1.0f, 22000, 0, 0);
|
func_8030D6C4(uid, 1.0f, 22000, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sfxsource_play(enum sfx_e uid, s32 sample_rate){
|
void sfxsource_play(enum sfx_e uid, s32 sampleRate){
|
||||||
func_8030D6C4(uid, 1.0f, sample_rate, 0, 2);
|
func_8030D6C4(uid, 1.0f, sampleRate, 0, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8030E540(enum sfx_e uid){
|
void func_8030E540(enum sfx_e uid){
|
||||||
@@ -899,7 +899,7 @@ void func_8030E760(enum sfx_e uid, f32 arg1, s32 arg2){
|
|||||||
func_8030D6C4(uid, arg1, arg2, 0, 0);
|
func_8030D6C4(uid, arg1, arg2, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sfx_play(enum sfx_e uid, f32 arg1, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance, s32 arg6){
|
void sfx_play(enum sfx_e uid, f32 volume, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance, s32 arg6){
|
||||||
u8 sfxsource;
|
u8 sfxsource;
|
||||||
f32 player_position[3];
|
f32 player_position[3];
|
||||||
|
|
||||||
@@ -913,7 +913,7 @@ void sfx_play(enum sfx_e uid, f32 arg1, u32 sampleRate, f32 position[3], f32 min
|
|||||||
func_8030DD90(sfxsource, arg6); // priority ?
|
func_8030DD90(sfxsource, arg6); // priority ?
|
||||||
sfxsource_setSfxId(sfxsource, uid);
|
sfxsource_setSfxId(sfxsource, uid);
|
||||||
sfxsource_setSampleRate(sfxsource, sampleRate);
|
sfxsource_setSampleRate(sfxsource, sampleRate);
|
||||||
sfxsource_playSfxAtVolume(sfxsource, arg1); // volume ?
|
sfxsource_playSfxAtVolume(sfxsource, volume);
|
||||||
sfxsource_set_fade_distances(sfxsource, minFadeDistance, maxFadeDistance);
|
sfxsource_set_fade_distances(sfxsource, minFadeDistance, maxFadeDistance);
|
||||||
sfxsource_set_position(sfxsource, position);
|
sfxsource_set_position(sfxsource, position);
|
||||||
func_8030DD14(sfxsource, 1);
|
func_8030DD14(sfxsource, 1);
|
||||||
@@ -922,8 +922,8 @@ void sfx_play(enum sfx_e uid, f32 arg1, u32 sampleRate, f32 position[3], f32 min
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8030E878(enum sfx_e id, f32 arg1, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
void func_8030E878(enum sfx_e id, f32 volume, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
||||||
sfx_play(id, arg1, sampleRate, position, minFadeDistance, maxFadeDistance, 2);
|
sfx_play(id, volume, sampleRate, position, minFadeDistance, maxFadeDistance, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fadeDistance is a 32-bit value where the lower 16 bits represent minFadeDistance and the upper 16 bits represent maxFadeDistance.
|
// fadeDistance is a 32-bit value where the lower 16 bits represent minFadeDistance and the upper 16 bits represent maxFadeDistance.
|
||||||
@@ -935,12 +935,12 @@ void func_8030E8B4(u32 arg0, f32 position[3], u32 fadeDistance){
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8030E988(enum sfx_e uid, f32 arg1, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
void func_8030E988(enum sfx_e uid, f32 volume, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
||||||
sfx_play(uid, arg1, sampleRate, position, minFadeDistance, maxFadeDistance, 1);
|
sfx_play(uid, volume, sampleRate, position, minFadeDistance, maxFadeDistance, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8030E9C4(enum sfx_e uid, f32 arg1, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
void func_8030E9C4(enum sfx_e uid, f32 volume, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
||||||
sfx_play(uid, arg1, sampleRate, position, minFadeDistance, maxFadeDistance, 0);
|
sfx_play(uid, volume, sampleRate, position, minFadeDistance, maxFadeDistance, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8030E9FC(enum sfx_e uid, f32 arg1, f32 arg2, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
void func_8030E9FC(enum sfx_e uid, f32 arg1, f32 arg2, u32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
||||||
|
@@ -4,14 +4,14 @@
|
|||||||
|
|
||||||
extern void func_8028F3D8(f32 *, f32, void(*)(ActorMarker *), ActorMarker *);
|
extern void func_8028F3D8(f32 *, f32, void(*)(ActorMarker *), ActorMarker *);
|
||||||
extern void func_8028F760(s32, f32, f32);
|
extern void func_8028F760(s32, f32, f32);
|
||||||
extern void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2);
|
extern void func_8031CE70(f32 *arg0, enum map_e arg1, s32 arg2);
|
||||||
extern s32 fileProgressFlag_get(s32);
|
extern s32 fileProgressFlag_get(s32);
|
||||||
extern s32 fileProgressFlag_getN(s32 offset, s32 numBits);
|
extern s32 fileProgressFlag_getN(s32 offset, s32 numBits);
|
||||||
extern void func_8031FFAC(void);
|
extern void func_8031FFAC(void);
|
||||||
extern void fileProgressFlag_set(s32 index, s32 set);
|
extern void fileProgressFlag_set(s32 index, s32 set);
|
||||||
extern void ml_vec3h_to_vec3f(f32 *, s32);
|
extern void ml_vec3h_to_vec3f(f32 *, s32);
|
||||||
extern NodeProp *func_80304ED0(void*, f32 *);
|
extern NodeProp *func_80304ED0(void*, f32 *);
|
||||||
extern void func_8031CD44(s32, s32, f32, f32, s32);
|
extern void func_8031CD44(enum map_e, s32, f32, f32, s32);
|
||||||
extern void func_80256E24(f32 *, f32, f32, f32, f32, f32);
|
extern void func_80256E24(f32 *, f32, f32, f32, f32, f32);
|
||||||
extern void mapSpecificFlags_set(s32, s32);
|
extern void mapSpecificFlags_set(s32, s32);
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ void func_8031CD20(s32 arg0, s32 arg1, s32 arg2) {
|
|||||||
func_8031CC8C(arg0, (arg1 << 8) + arg2);
|
func_8031CC8C(arg0, (arg1 << 8) + arg2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031CD44(s32 arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) {
|
void func_8031CD44(enum map_e arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) {
|
||||||
f32 sp3C[3];
|
f32 sp3C[3];
|
||||||
f32 sp30[3];
|
f32 sp30[3];
|
||||||
f32 sp24[3];
|
f32 sp24[3];
|
||||||
@@ -195,7 +195,7 @@ void func_8031CE28(s32 arg0, s32 arg1, f32 arg2) {
|
|||||||
func_8031CD44(arg0, arg1, vec[1], arg2, 0x25);
|
func_8031CD44(arg0, arg1, vec[1], arg2, 0x25);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) {
|
void func_8031CE70(f32 *arg0, enum map_e arg1, s32 arg2) {
|
||||||
f32 playerPos[3];
|
f32 playerPos[3];
|
||||||
f32 sp38[3];
|
f32 sp38[3];
|
||||||
NodeProp *phi_s0;
|
NodeProp *phi_s0;
|
||||||
@@ -231,12 +231,12 @@ void func_8031CE70(f32 *arg0, s32 arg1, s32 arg2) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031D04C(s32 arg0, s32 arg1) {
|
void func_8031D04C(enum map_e arg0, s32 arg1) {
|
||||||
func_8031CB50(arg0, arg1, 0);
|
func_8031CB50(arg0, arg1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031D06C(s32 arg0, s32 arg1) {
|
void func_8031D06C(enum map_e arg0, s32 arg1) {
|
||||||
func_8031CB50(0x20, 0, 0);
|
func_8031CB50(MAP_20_CS_END_NOT_100, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031D09C(s32 arg0, s32 arg1) {
|
void func_8031D09C(s32 arg0, s32 arg1) {
|
||||||
@@ -402,7 +402,7 @@ void func_8031D628(s32 arg0, s32 arg1) {
|
|||||||
if (actor) {
|
if (actor) {
|
||||||
marker_despawn(actor->marker);
|
marker_despawn(actor->marker);
|
||||||
}
|
}
|
||||||
func_8031CB50(7, 0xC, 0);
|
func_8031CB50(MAP_7_TTC_TREASURE_TROVE_COVE, 0xC, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void warp_mmmEnterDiningRoomDoor(s32 arg0, s32 arg1) {
|
void warp_mmmEnterDiningRoomDoor(s32 arg0, s32 arg1) {
|
||||||
@@ -527,7 +527,7 @@ void warp_mmmEnterChurchSecretRoom(s32 arg0, s32 arg1) {
|
|||||||
func_8031CC8C(arg0, 0x2B01);
|
func_8031CC8C(arg0, 0x2B01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031DAA8(s32 arg0, s32 arg1) {
|
void func_8031DAA8(enum map_e arg0, s32 arg1) {
|
||||||
func_8028F918(0);
|
func_8028F918(0);
|
||||||
func_8031CB50(arg0, arg1, 0);
|
func_8031CB50(arg0, arg1, 0);
|
||||||
}
|
}
|
||||||
@@ -560,7 +560,7 @@ void warp_mmmEnterRainBarrel(s32 arg0, s32 arg1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void func_8031DBE8(void) {
|
void func_8031DBE8(void) {
|
||||||
func_8031CB50(0x2F, 1, 1);
|
func_8031CB50(MAP_2F_MMM_WATERDRAIN_BARREL, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8031DC10(s32 arg0, s32 arg1) {
|
void func_8031DC10(s32 arg0, s32 arg1) {
|
||||||
@@ -598,7 +598,7 @@ void warp_bgsEnterTanktupConditional(s32 arg0, s32 arg1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void warp_ttcEnterNippersShell(s32 arg0, s32 arg1) {
|
void warp_ttcEnterNippersShell(s32 arg0, s32 arg1) {
|
||||||
if (func_80388A44() != 0) {
|
if (chNipper_isInState7() != 0) {
|
||||||
func_8031CC8C(arg0, 0x601);
|
func_8031CC8C(arg0, 0x601);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -54,7 +54,7 @@ void func_803216D0(enum map_e map){
|
|||||||
mm_resetHuts();
|
mm_resetHuts();
|
||||||
break;
|
break;
|
||||||
case MAP_7_TTC_TREASURE_TROVE_COVE:
|
case MAP_7_TTC_TREASURE_TROVE_COVE:
|
||||||
ttc_resetTresureHunt();
|
chTreasurehunt_resetProgress();
|
||||||
break;
|
break;
|
||||||
case MAP_1B_MMM_MAD_MONSTER_MANSION:
|
case MAP_1B_MMM_MAD_MONSTER_MANSION:
|
||||||
mmm_resetFlowerPots();
|
mmm_resetFlowerPots();
|
||||||
|
@@ -1932,7 +1932,7 @@ void func_8032A82C(Actor *arg0, s32 arg1) {
|
|||||||
Actorlocal_Core2_9E370 *sp1C;
|
Actorlocal_Core2_9E370 *sp1C;
|
||||||
|
|
||||||
sp1C = &arg0->local;
|
sp1C = &arg0->local;
|
||||||
sp24 = func_80304C38(arg1, arg0);
|
sp24 = nodeprop_findByActorIdAndActorPosition(arg1, arg0);
|
||||||
if (sp24 != NULL) {
|
if (sp24 != NULL) {
|
||||||
sp1C->unkC = func_80304DA8(sp24);
|
sp1C->unkC = func_80304DA8(sp24);
|
||||||
nodeprop_getPosition(sp24, sp1C->unk0);
|
nodeprop_getPosition(sp24, sp1C->unk0);
|
||||||
|
@@ -291,12 +291,12 @@ extern void warp_lairEnterLairFromSMLevel(s32, s32);
|
|||||||
|
|
||||||
extern void func_802C1674(s32, s32);
|
extern void func_802C1674(s32, s32);
|
||||||
extern void func_802C169C(s32, s32);
|
extern void func_802C169C(s32, s32);
|
||||||
extern void TTC_func_80389BFC(s32, s32);
|
extern void chTreasurehunt_checkStepProgress0(s32, s32);
|
||||||
extern void func_80389C24(s32, s32);
|
extern void chTreasurehunt_checkStepProgress1(s32, s32);
|
||||||
extern void func_80389C4C(s32, s32);
|
extern void chTreasurehunt_checkStepProgress2(s32, s32);
|
||||||
extern void func_80389C74(s32, s32);
|
extern void chTreasurehunt_checkStepProgress3(s32, s32);
|
||||||
extern void func_80389C9C(s32, s32);
|
extern void chTreasurehunt_checkStepProgress4(s32, s32);
|
||||||
extern void func_80389CC4(s32, s32);
|
extern void chTreasurehunt_checkStepProgress5(s32, s32);
|
||||||
extern void chMumbo_detransformWarn(s32, s32);
|
extern void chMumbo_detransformWarn(s32, s32);
|
||||||
extern void chMumbo_detransformTrigger(s32, s32);
|
extern void chMumbo_detransformTrigger(s32, s32);
|
||||||
extern void func_8033443C(s32, s32);
|
extern void func_8033443C(s32, s32);
|
||||||
@@ -413,8 +413,8 @@ Method_core2_AD110 D_8036FE5C[] ={
|
|||||||
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
||||||
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
||||||
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
||||||
func_8033443C, TTC_func_80389BFC, func_80389C24, func_80389C4C,
|
func_8033443C, chTreasurehunt_checkStepProgress0, chTreasurehunt_checkStepProgress1, chTreasurehunt_checkStepProgress2,
|
||||||
func_80389C74, func_80389C9C, func_80389CC4, chMumbo_detransformWarn,
|
chTreasurehunt_checkStepProgress3, chTreasurehunt_checkStepProgress4, chTreasurehunt_checkStepProgress5, chMumbo_detransformWarn,
|
||||||
chMumbo_detransformTrigger, func_8033443C, func_8033443C, func_8033443C,
|
chMumbo_detransformTrigger, func_8033443C, func_8033443C, func_8033443C,
|
||||||
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
||||||
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
func_8033443C, func_8033443C, func_8033443C, func_8033443C,
|
||||||
|
@@ -374,7 +374,7 @@ void spawnQueue_reset(void){
|
|||||||
GV_func_8038F154();
|
GV_func_8038F154();
|
||||||
break;
|
break;
|
||||||
case OVERLAY_5_BEACH:
|
case OVERLAY_5_BEACH:
|
||||||
TTC_func_80388AC0();
|
TTC_resetSpawnableActors();
|
||||||
break;
|
break;
|
||||||
case OVERLAY_6_JUNGLE:
|
case OVERLAY_6_JUNGLE:
|
||||||
MM_func_803888B0();
|
MM_func_803888B0();
|
||||||
|
@@ -357,7 +357,7 @@ void chWarpCauldron_update(Actor *this) {
|
|||||||
volatileFlag_set(VOLATILE_FLAG_1E, 0);
|
volatileFlag_set(VOLATILE_FLAG_1E, 0);
|
||||||
func_802D677C(0);
|
func_802D677C(0);
|
||||||
func_8028FCAC();
|
func_8028FCAC();
|
||||||
nodeprop_getPosition(func_80304C38(D_80393620[this->unkF4_8 - 1].unk6, this), sp54);
|
nodeprop_getPosition(nodeprop_findByActorIdAndActorPosition(D_80393620[this->unkF4_8 - 1].unk6, this), sp54);
|
||||||
if (this->unkF4_8 == 7) {
|
if (this->unkF4_8 == 7) {
|
||||||
func_8028F66C(BS_INTR_36_DINGPOT);
|
func_8028F66C(BS_INTR_36_DINGPOT);
|
||||||
func_802BAFE4(0x82);
|
func_802BAFE4(0x82);
|
||||||
|
@@ -978,7 +978,7 @@ void func_80388450(Actor *actor1, Actor *actor2)
|
|||||||
{
|
{
|
||||||
f32 vec1[3];
|
f32 vec1[3];
|
||||||
f32 vec2[3];
|
f32 vec2[3];
|
||||||
void *actor3 = func_80304C38(0x22A, actor1);
|
void *actor3 = nodeprop_findByActorIdAndActorPosition(0x22A, actor1);
|
||||||
s32 val = func_80304DA8(actor3);
|
s32 val = func_80304DA8(actor3);
|
||||||
|
|
||||||
actor2->yaw = val;
|
actor2->yaw = val;
|
||||||
|
@@ -35,7 +35,7 @@ void func_80392B6C(Actor *this) {
|
|||||||
marker_despawn(this->marker);
|
marker_despawn(this->marker);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
phi_a0 = func_80304C38(0x3BE, this);
|
phi_a0 = nodeprop_findByActorIdAndActorPosition(0x3BE, this);
|
||||||
if (this == NULL) {
|
if (this == NULL) {
|
||||||
this->unk1C[0] = -1300.0f;
|
this->unk1C[0] = -1300.0f;
|
||||||
this->unk1C[1] = 250.0f;
|
this->unk1C[1] = 250.0f;
|
||||||
|
Reference in New Issue
Block a user