118 lines
3.3 KiB
C
118 lines
3.3 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
|
|
void func_80389B1C(Actor *this);
|
|
|
|
/* .data */
|
|
ActorAnimationInfo D_80390EA0[] = {
|
|
{0x00, 0.0f},
|
|
{0xDF, 4.5f},
|
|
{0xE3, 2.0f},
|
|
{0xE4, 1.95f},
|
|
{0xCE, 2.4f},
|
|
{0xDF, 4.5f}
|
|
};
|
|
|
|
ActorInfo D_80390ED0 = { MARKER_A9_RUBEE, ACTOR_11B_RUBEE, ASSET_3DD_MODEL_RUBEE,
|
|
0x2, D_80390EA0,
|
|
func_80389B1C, func_80326224, func_80325888,
|
|
2500, 0, 1.6f, 0
|
|
};
|
|
|
|
|
|
/* .code */
|
|
void func_80389A20(ActorMarker *caller, enum asset_e text_id, s32 arg2){
|
|
Actor *this = marker_getActor(caller);
|
|
func_8038E18C();
|
|
func_80328B8C(this, 3, 0.0f, 1);
|
|
}
|
|
|
|
void func_80389A60(Actor *this){
|
|
func_80311480(ASSET_A70_TEXT_CHARMER_HELPED, 4, NULL, this->marker, func_80389A20, NULL);
|
|
this->unk138_24 = TRUE;
|
|
func_80328A84(this, 5);
|
|
}
|
|
|
|
void func_80389ABC(Actor *this){
|
|
if(this->unk138_23){
|
|
func_80389A20(this->marker, ASSET_A70_TEXT_CHARMER_HELPED, -1);
|
|
}
|
|
else{
|
|
this->unk138_23 = TRUE;
|
|
mapSpecificFlags_set(2, TRUE);
|
|
func_80389A60(this);
|
|
}
|
|
}
|
|
|
|
void func_80389B1C(Actor *this){
|
|
if(!this->unk16C_4){
|
|
this->unk60 = (f32) func_8038E184();
|
|
this->unk138_24 = jiggyscore_isCollected(JIGGY_43_GV_HISTUP) || mapSpecificFlags_get(0);
|
|
this->unk138_23 = jiggyscore_isCollected(JIGGY_43_GV_HISTUP) || mapSpecificFlags_get(2);
|
|
this->unk16C_4 = TRUE;
|
|
}
|
|
|
|
if(!this->initialized){
|
|
this->marker->propPtr->unk8_3 = TRUE;
|
|
actor_collisionOff(this);
|
|
this->initialized = TRUE;
|
|
}
|
|
|
|
animctrl_setTransitionDuration(this->animctrl, 0.15f);
|
|
|
|
if(this->state == 1 || this->state == 2){
|
|
if(! this->unk138_24 && func_80329530(this, 250) && !func_80329530(this, 0x50)){
|
|
func_80311480(ASSET_A6F_TEXT_CHARMER_MEET, 0xe, this->position, NULL, NULL, NULL);
|
|
this->unk138_24 = TRUE;
|
|
mapSpecificFlags_set(0, TRUE);
|
|
}
|
|
}
|
|
|
|
switch(this->state){
|
|
case 1://L80389CC4
|
|
if(this->unk60 <= (f32)func_8038E178()){
|
|
func_80389ABC(this);
|
|
}
|
|
else if(actor_animationIsAt(this, 0.99f)){
|
|
func_80328B38(this, 2, 0.9f);
|
|
}
|
|
|
|
if( actor_animationIsAt(this, 0.42f)
|
|
|| actor_animationIsAt(this, 0.46f)
|
|
|| actor_animationIsAt(this, 0.51f)
|
|
|| actor_animationIsAt(this, 0.57f)
|
|
){
|
|
FUNC_8030E8B4(SFX_8_BANJO_LANDING_04, 3.802f, 8000, this->position, 1500, 4500);
|
|
}
|
|
|
|
if( actor_animationIsAt(this, 0.4f)){
|
|
func_803865E8();
|
|
}
|
|
break;
|
|
|
|
case 2: //L80389DB0
|
|
if(this->unk60 <= (f32)func_8038E178()){
|
|
func_80389ABC(this);
|
|
}
|
|
else if(actor_animationIsAt(this, 0.99f)){
|
|
func_80328B38(this, 1, 0.4f);
|
|
}
|
|
break;
|
|
case 3: //L80389E14
|
|
if( actor_animationIsAt(this, 0.2f)){
|
|
func_8025A58C(500, 400);
|
|
func_8025A6EC(COMUSIC_27_GV_RUBEES_SONG, 28000);
|
|
}
|
|
|
|
if( actor_animationIsAt(this, 0.99f)){
|
|
func_80328A84(this, 4);
|
|
}
|
|
break;
|
|
case 4: //L80389E64
|
|
if(!func_8038E178())
|
|
func_80328A84(this, 2);
|
|
break;
|
|
}//L80389E80
|
|
}
|