Document map Spiral Mountain

This commit is contained in:
Owlenuff 2024-10-02 09:35:58 +02:00
parent 6fb4f2b3f1
commit de24d9230d
6 changed files with 91 additions and 69 deletions

View File

@ -2439,6 +2439,25 @@ enum bs_e
BS_A5_WONDERWING_UNKA5 BS_A5_WONDERWING_UNKA5
}; };
enum sm_specific_flags {
SM_SPECIFIC_FLAG_1 = 0x1,
SM_SPECIFIC_FLAG_2,
SM_SPECIFIC_FLAG_3,
SM_SPECIFIC_FLAG_4,
SM_SPECIFIC_FLAG_5,
SM_SPECIFIC_FLAG_7 = 0x7,
SM_SPECIFIC_FLAG_8,
SM_SPECIFIC_FLAG_9,
SM_SPECIFIC_FLAG_A,
SM_SPECIFIC_FLAG_C = 0xC,
SM_SPECIFIC_FLAG_E = 0xE,
SM_SPECIFIC_FLAG_F,
SM_SPECIFIC_FLAG_10
};
enum mm_specific_flags { enum mm_specific_flags {
MM_SPECIFIC_FLAG_0_CHIMPY_STUMP_RAISED, MM_SPECIFIC_FLAG_0_CHIMPY_STUMP_RAISED,
MM_SPECIFIC_FLAG_1_ORANGE_HAS_BEEN_COLLECTED, MM_SPECIFIC_FLAG_1_ORANGE_HAS_BEEN_COLLECTED,
@ -2487,11 +2506,10 @@ enum item_e
ITEM_6_HOURGLASS, ITEM_6_HOURGLASS,
ITEM_7_SKULL_HOURGLASS, ITEM_7_SKULL_HOURGLASS,
ITEM_9_PROPELLOR = 0x9, ITEM_9_PROPELLOR = 0x9,
ITEM_B_XMAS_TREE = 0xb, ITEM_B_XMAS_TREE = 0xb,
ITEM_C_NOTE = 0xC, ITEM_C_NOTE,
ITEM_D_EGGS, ITEM_D_EGGS,
ITEM_E_JIGGY, ITEM_E_JIGGY,
ITEM_F_RED_FEATHER, ITEM_F_RED_FEATHER,

View File

@ -85,12 +85,13 @@ void chAttackTutorial_setState(Actor * this, s32 arg1){
SM_func_803871FC(this, ++this->unk10_12); SM_func_803871FC(this, ++this->unk10_12);
break; break;
case 3://L8038742C case 3://L8038742C
mapSpecificFlags_set(5,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_5, TRUE);
mapSpecificFlags_set(0xC, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_C, TRUE);
marker_despawn(this->marker); marker_despawn(this->marker);
break; break;
case 4://L80387454 case 4://L80387454
mapSpecificFlags_set(0xC, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_C, TRUE);
if(!honeycombscore_get(HONEYCOMB_17_SM_COLIWOBBLE)){ if(!honeycombscore_get(HONEYCOMB_17_SM_COLIWOBBLE)){
this->unk10_12 = 3; this->unk10_12 = 3;
this->unk38_31 = 1; this->unk38_31 = 1;
@ -129,18 +130,22 @@ void chAttackTutorial_update(Actor *this){
switch(this->state){ switch(this->state){
case 1://L80387610 case 1://L80387610
if(mapSpecificFlags_get(4)) if (mapSpecificFlags_get(SM_SPECIFIC_FLAG_4)) {
chAttackTutorial_setState(this, 5); chAttackTutorial_setState(this, 5);
}
if(func_803874C4() || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE))
if (func_803874C4() || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)) {
chAttackTutorial_setState(this, 4); chAttackTutorial_setState(this, 4);
break;
case 2://L80387658
if(mapSpecificFlags_get(7)){
func_80387764(this->marker);
mapSpecificFlags_set(7,0);
} }
break; break;
case 2://L80387658
if (mapSpecificFlags_get(SM_SPECIFIC_FLAG_7)) {
func_80387764(this->marker);
mapSpecificFlags_set(SM_SPECIFIC_FLAG_7, FALSE);
}
break;
case 5://L80387680 case 5://L80387680
break; break;
}////L80387680 }////L80387680
@ -206,8 +211,8 @@ void func_80387764(ActorMarker * marker){
func_8028F94C(2, actor->unk1C); func_8028F94C(2, actor->unk1C);
} }
//L80387848 //L80387848
if (!mapSpecificFlags_get(3) && chmole_learnedAllSpiralMountainAbilities() && temp_a2) { if (!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && chmole_learnedAllSpiralMountainAbilities() && temp_a2) {
mapSpecificFlags_set(3, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE);
sp34 = ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES; sp34 = ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES;
}//L80387898 }//L80387898

View File

@ -206,8 +206,7 @@ void func_80387C28(Actor * this){
func_802CA1CC(HONEYCOMB_17_SM_COLIWOBBLE); func_802CA1CC(HONEYCOMB_17_SM_COLIWOBBLE);
__spawnQueue_add_4((GenFunction_4) spawnQueue_bundle_f32, BUNDLE_1F_SM_EMPTY_HONEYCOMB, reinterpret_cast(s32, this->position_x), reinterpret_cast(s32, this->position_y), reinterpret_cast(s32, this->position_z)); __spawnQueue_add_4((GenFunction_4) spawnQueue_bundle_f32, BUNDLE_1F_SM_EMPTY_HONEYCOMB, reinterpret_cast(s32, this->position_x), reinterpret_cast(s32, this->position_y), reinterpret_cast(s32, this->position_z));
}//L80387D64 }//L80387D64
timed_mapSpecificFlags_setTrue(1.5f, SM_SPECIFIC_FLAG_7);
timed_mapSpecificFlags_setTrue(1.5f, 7);
actor_collisionOff(this); actor_collisionOff(this);
if(local->unkC != 3){ if(local->unkC != 3){
subaddie_set_state_with_direction(this, 3, 0.0f, 1); subaddie_set_state_with_direction(this, 3, 0.0f, 1);
@ -248,7 +247,7 @@ void func_80387E64(Actor *this){
void func_80387F00(Actor *this){ void func_80387F00(Actor *this){
ChVeg *local = (ChVeg *)&this->local; ChVeg *local = (ChVeg *)&this->local;
this->position_y += (mapSpecificFlags_get(0xC) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)) ? 120.0 : 180.0; this->position_y += (mapSpecificFlags_get(SM_SPECIFIC_FLAG_C) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)) ? 120.0 : 180.0;
local->unk0_x = this->position_x; local->unk0_x = this->position_x;
local->unk0_y = this->position_y; local->unk0_y = this->position_y;
local->unk0_z = this->position_z; local->unk0_z = this->position_z;
@ -331,9 +330,9 @@ void func_80388080(Actor *this){
switch (this->state) switch (this->state)
{ {
case 1: //L803882B0 case 1: //L803882B0
if(mapSpecificFlags_get(0xC) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) || this->unk10_12){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_C) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) || this->unk10_12){
//L803882E4 //L803882E4
if(mapSpecificFlags_get(0xC) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)){ //L8038830C if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_C) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)){ //L8038830C
this->unk1C_y += (local->unkC == 3)? 120.0 : 0.0; this->unk1C_y += (local->unkC == 3)? 120.0 : 0.0;
}else{//L80388350 }else{//L80388350
this->unk1C_y += (local->unkC == 3)? 270.0 : 85.0; this->unk1C_y += (local->unkC == 3)? 270.0 : 85.0;
@ -374,7 +373,7 @@ void func_80388080(Actor *this){
}else{//L80388520 }else{//L80388520
if(local->unkC == 1){ if(local->unkC == 1){
this->actor_specific_1_f = 3.0f; this->actor_specific_1_f = 3.0f;
if(mapSpecificFlags_get(0xC) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)){//L80388554 if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_C) || volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE)){//L80388554
if(!func_80329030(this, 0) && func_80329480(this)){ if(!func_80329030(this, 0) && func_80329480(this)){
func_80328CEC(this, (s32)this->yaw, 0x78, 0xb4); func_80328CEC(this, (s32)this->yaw, 0x78, 0xb4);
this->unk38_0 = 1; this->unk38_0 = 1;
@ -398,7 +397,7 @@ void func_80388080(Actor *this){
func_80328CEC(this, (s32)this->yaw, 0x78, 0xB4); func_80328CEC(this, (s32)this->yaw, 0x78, 0xB4);
this->unk38_0 = 1; this->unk38_0 = 1;
}//L80388698 }//L80388698
if(mapSpecificFlags_get(0xC) || (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) && func_803292E0(this))){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_C) || (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) && func_803292E0(this))){
this->yaw_ideal = func_80329784(this); this->yaw_ideal = func_80329784(this);
}else{//L803886E4 }else{//L803886E4
if(randf() < 0.02){//D_8038B1D0){ if(randf() < 0.02){//D_8038B1D0){
@ -429,7 +428,7 @@ void func_80388080(Actor *this){
func_80387E64(this); func_80387E64(this);
} }
this->actor_specific_1_f = 5.0f; this->actor_specific_1_f = 5.0f;
if(mapSpecificFlags_get(0xC) || (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE))){ //L8038892C if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_C) || (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE))){ //L8038892C
if(!func_80387FA8(this, local, (s32)this->yaw, (s32)this->actor_specific_1_f)){ if(!func_80387FA8(this, local, (s32)this->yaw, (s32)this->actor_specific_1_f)){
if(func_80329480(this)){ if(func_80329480(this)){
func_80328CEC(this, (s32)this->yaw, 0x78, 0xb4); func_80328CEC(this, (s32)this->yaw, 0x78, 0xb4);

View File

@ -101,7 +101,7 @@ void chsmmole_skipIntroTutorial(void){
ability_unlock(ABILITY_8_FLAP_FLIP); ability_unlock(ABILITY_8_FLAP_FLIP);
ability_unlock(ABILITY_5_CLIMB); ability_unlock(ABILITY_5_CLIMB);
chsmmole_setSpiralMountainAbilitiesAsUsed(); chsmmole_setSpiralMountainAbilitiesAsUsed();
mapSpecificFlags_set(3,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE);
} }
/** /**
* @brief If the player is talking to Intro Bottles for the first time, use the * @brief If the player is talking to Intro Bottles for the first time, use the
@ -109,7 +109,7 @@ void chsmmole_skipIntroTutorial(void){
*/ */
void chsmmole_setSpiralMountainStaticCamera(Actor *this){ void chsmmole_setSpiralMountainStaticCamera(Actor *this){
if(this->unkF4_8 == 1 && !mapSpecificFlags_get(1)){ if(this->unkF4_8 == 1 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_1)){
timed_setStaticCameraToNode(0.0f, 0x12); timed_setStaticCameraToNode(0.0f, 0x12);
} }
else{ //L80388F68 else{ //L80388F68
@ -193,7 +193,7 @@ static void __chsmmole_additionalAbilityLearnActions(ActorMarker *marker, enum a
timed_setStaticCameraToNode(0.0f, 2); timed_setStaticCameraToNode(0.0f, 2);
break; break;
case 4: case 4:
mapSpecificFlags_set(4,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_4, TRUE);
break; break;
case 5: case 5:
timed_setStaticCameraToNode(0.0f, 0x12); timed_setStaticCameraToNode(0.0f, 0x12);
@ -211,8 +211,8 @@ void func_803892C8(ActorMarker *marker, enum asset_e text_id, s32 arg2){
Actor *actor; Actor *actor;
actor = marker_getActor(marker); actor = marker_getActor(marker);
if(!mapSpecificFlags_get(3) && chmole_learnedAllSpiralMountainAbilities()){ if(!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(3, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE);
gcdialog_showText(ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES, 0xe, actor->position, actor->marker, func_803892C8, NULL); gcdialog_showText(ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES, 0xe, actor->position, actor->marker, func_803892C8, NULL);
}//L8038933C }//L8038933C
else{ else{
@ -290,7 +290,7 @@ void chsmmole_80389610(Actor * this){
switch(this->unkF4_8){ switch(this->unkF4_8){
case 1://L8038965C case 1://L8038965C
if(mapSpecificFlags_get(1)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_1)){
sp28 |= 1; sp28 |= 1;
if(fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)){ if(fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)){
sp2C = D_8038AFE4 + 0xE0A; //dialog index sp2C = D_8038AFE4 + 0xE0A; //dialog index
@ -302,34 +302,34 @@ void chsmmole_80389610(Actor * this){
} }
else{//L803896E8 else{//L803896E8
sp2C = smMoleTable[this->unkF4_8 -1].learn_text; sp2C = smMoleTable[this->unkF4_8 -1].learn_text;
mapSpecificFlags_set(1,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_1, TRUE);
} }
break; break;
case 8://L80389720 case 8://L80389720
if(mapSpecificFlags_get(3)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_3)){
if(fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){ if(fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){
sp2C = ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN; sp2C = ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN;
sp28 |= 1; sp28 |= 1;
}else{//L80389758 }else{//L80389758
if(mapSpecificFlags_get(0xf)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_F)){
sp2C = ASSET_E0F_TEXT_BOTTLES_STOP_WASTING_TIME_BEFORE_FURNACE_FUN; sp2C = ASSET_E0F_TEXT_BOTTLES_STOP_WASTING_TIME_BEFORE_FURNACE_FUN;
sp28 |= 1; sp28 |= 1;
}else{//L80389780 }else{//L80389780
chsmmole_setSpiralMountainAbilitiesAsUsed(); chsmmole_setSpiralMountainAbilitiesAsUsed();
sp2C = fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL) ? 0xe1e : 0xe13; sp2C = fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL) ? 0xe1e : 0xe13;
mapSpecificFlags_set(0xf, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_F, TRUE);
} }
} //L803897B4 } //L803897B4
mapSpecificFlags_set(2, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_2, TRUE);
} }
else{//L803897C8 else{//L803897C8
if(mapSpecificFlags_get(2)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_2)){
sp2C = smMoleTable[this->unkF4_8 -1].refresher_text; sp2C = smMoleTable[this->unkF4_8 -1].refresher_text;
sp28 |= 1; sp28 |= 1;
} }
else{ else{
sp2C = smMoleTable[this->unkF4_8 -1].learn_text; sp2C = smMoleTable[this->unkF4_8 -1].learn_text;
mapSpecificFlags_set(2, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_2, TRUE);
} }
} }
@ -340,7 +340,7 @@ void chsmmole_80389610(Actor * this){
|| !ability_isUnlocked(ABILITY_C_ROLL) || !ability_isUnlocked(ABILITY_C_ROLL)
|| !ability_isUnlocked(ABILITY_B_RATATAT_RAP) || !ability_isUnlocked(ABILITY_B_RATATAT_RAP)
){//L803898D4 ){//L803898D4
mapSpecificFlags_set(4, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_4, TRUE);
} }
else{//L803898E4 else{//L803898E4
chsmmole_learnAbility(this, &sp2C, &sp28); chsmmole_learnAbility(this, &sp2C, &sp28);
@ -352,7 +352,7 @@ void chsmmole_80389610(Actor * this){
|| !ability_isUnlocked(ABILITY_7_FEATHERY_FLAP) || !ability_isUnlocked(ABILITY_7_FEATHERY_FLAP)
|| !ability_isUnlocked(ABILITY_8_FLAP_FLIP) || !ability_isUnlocked(ABILITY_8_FLAP_FLIP)
){//L803898D4 ){//L803898D4
mapSpecificFlags_set(0xE, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_E, TRUE);
} }
else{//L803898E4 else{//L803898E4
chsmmole_learnAbility(this, &sp2C, &sp28); chsmmole_learnAbility(this, &sp2C, &sp28);
@ -426,13 +426,13 @@ void chsmmole_Update(Actor * this){
} }
}//L80389AC8 }//L80389AC8
if(chsmmole_learnedAnySpiralMountainAbilities()){ if(chsmmole_learnedAnySpiralMountainAbilities()){
mapSpecificFlags_set(1,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_1, TRUE);
if(chmole_learnedAllSpiralMountainAbilities()){ if(chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(3, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE);
mapSpecificFlags_set(2, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_2, TRUE);
mapSpecificFlags_set(0xC, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_C, TRUE);
mapSpecificFlags_set(0xF, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_F, TRUE);
} }
} }
}//L80389B20 }//L80389B20
@ -453,13 +453,13 @@ void chsmmole_Update(Actor * this){
case 1://L80389BAC case 1://L80389BAC
this->yaw_ideal = (f32)func_80329784(this); this->yaw_ideal = (f32)func_80329784(this);
func_80328FB0(this, 4.0f); func_80328FB0(this, 4.0f);
if( (this->unkF4_8 == 1 && !mapSpecificFlags_get(1)) if( (this->unkF4_8 == 1 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_1))
|| (this->unkF4_8 == 8 && !mapSpecificFlags_get(2)) || (this->unkF4_8 == 8 && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_2))
|| (this->unkF4_8 == 8 && mapSpecificFlags_get(3) && !mapSpecificFlags_get(0xF)) || (this->unkF4_8 == 8 && mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_F))
){//L80389C50 ){//L80389C50
if( ((ml_distance_vec3f(sp44, this->unk1C) < this->actor_specific_1_f) && func_8028F20C()) if( ((ml_distance_vec3f(sp44, this->unk1C) < this->actor_specific_1_f) && func_8028F20C())
|| mapSpecificFlags_get(0x10) || mapSpecificFlags_get(SM_SPECIFIC_FLAG_10)
){//L80389C8C ){//L80389C8C
if(func_80329530(this, 0x96)) if(func_80329530(this, 0x96))
func_8028F45C(9, this->position); func_8028F45C(9, this->position);
@ -506,7 +506,7 @@ void chsmmole_Update(Actor * this){
func_8030E2C4(this->unk44_31); func_8030E2C4(this->unk44_31);
}//L80389EA0 }//L80389EA0
if(actor_animationIsAt(this, 0.9999f)){ if(actor_animationIsAt(this, 0.9999f)){
if(!mapSpecificFlags_get(1)){ if(!mapSpecificFlags_get(SM_SPECIFIC_FLAG_1)){
chsmmole_80389610(this); chsmmole_80389610(this);
} }
func_80388FA0(this, 3); func_80388FA0(this, 3);
@ -519,7 +519,7 @@ void chsmmole_Update(Actor * this){
FUNC_8030E8B4(SFX_C5_TWINKLY_POP, 1.0f, 32000, this->position, 1250, 2500); FUNC_8030E8B4(SFX_C5_TWINKLY_POP, 1.0f, 32000, this->position, 1250, 2500);
}else if(actor_animationIsAt(this, 0.35f)){//L80389F78 }else if(actor_animationIsAt(this, 0.35f)){//L80389F78
if(mapSpecificFlags_get(1)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_1)){
chsmmole_80389610(this); chsmmole_80389610(this);
} }
} }
@ -551,8 +551,8 @@ void chsmmole_Update(Actor * this){
func_8030E878(SFX_6F_BANJO_HEADSCRATCH, randf2(1.35f, 1.5f), 6000, this->position, 1250.0f, 2500.0f); func_8030E878(SFX_6F_BANJO_HEADSCRATCH, randf2(1.35f, 1.5f), 6000, this->position, 1250.0f, 2500.0f);
}//L8038A194 }//L8038A194
if(mapSpecificFlags_get(5)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_5)){
mapSpecificFlags_set(5,0); mapSpecificFlags_set(SM_SPECIFIC_FLAG_5, FALSE);
func_80388FA0(this, 4); func_80388FA0(this, 4);
}//L8038A1B8 }//L8038A1B8
user_input = -1; user_input = -1;

View File

@ -37,19 +37,19 @@ void func_8038A4DC(Actor *this, s32 arg1){
player_getPosition(this->velocity); player_getPosition(this->velocity);
func_8028F918(0); func_8028F918(0);
if(ability_isUnlocked(ABILITY_7_FEATHERY_FLAP)){ if(ability_isUnlocked(ABILITY_7_FEATHERY_FLAP)){
mapSpecificFlags_set(9,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_9, TRUE);
}else if(ability_isUnlocked(ABILITY_A_HOLD_A_JUMP_HIGHER)){//L8038A540 }else if(ability_isUnlocked(ABILITY_A_HOLD_A_JUMP_HIGHER)){//L8038A540
mapSpecificFlags_set(8,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_8, TRUE);
}else{//L8038A560 }else{//L8038A560
func_8038A460(this); func_8038A460(this);
ability_unlock(ABILITY_A_HOLD_A_JUMP_HIGHER); ability_unlock(ABILITY_A_HOLD_A_JUMP_HIGHER);
gcdialog_showText(0xdf6, 0xe, this->unk1C, this->marker, func_8038A488, NULL); gcdialog_showText(0xdf6, 0xe, this->unk1C, this->marker, func_8038A488, NULL);
this->sm_4070.unk0 = 0xe1a; this->sm_4070.unk0 = 0xe1a;
mapSpecificFlags_set(8, 0); mapSpecificFlags_set(SM_SPECIFIC_FLAG_8, FALSE);
} }
break; break;
case 3://L8038A5B0 case 3://L8038A5B0
mapSpecificFlags_set(5, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_5, TRUE);
break; break;
}//L8038A5BC }//L8038A5BC
subaddie_set_state(this, arg1); subaddie_set_state(this, arg1);
@ -84,7 +84,7 @@ void SM_func_8038A5D8(Actor *this){
if(fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)){ if(fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)){
marker_despawn(this->marker); marker_despawn(this->marker);
}else{ }else{
if(mapSpecificFlags_get(0xe)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_E)){
func_8038A4DC(this, 2); func_8038A4DC(this, 2);
} }
} }
@ -92,35 +92,35 @@ void SM_func_8038A5D8(Actor *this){
case 2://L8038A6C8 case 2://L8038A6C8
if(!func_803114B0()){ if(!func_803114B0()){
if(mapSpecificFlags_get(8)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_8)){
func_8038A460(this); func_8038A460(this);
ability_unlock(ABILITY_7_FEATHERY_FLAP); ability_unlock(ABILITY_7_FEATHERY_FLAP);
gcdialog_showText(0xdf7, 0xa, this->unk1C, this->marker, func_8038A488, NULL); gcdialog_showText(0xdf7, 0xa, this->unk1C, this->marker, func_8038A488, NULL);
this->sm_4070.unk0 = 0xe1b; this->sm_4070.unk0 = 0xe1b;
mapSpecificFlags_set(8,0); mapSpecificFlags_set(SM_SPECIFIC_FLAG_8, FALSE);
}//L8038A730 }//L8038A730
if(mapSpecificFlags_get(9)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_9)){
func_8038A460(this); func_8038A460(this);
ability_unlock(ABILITY_8_FLAP_FLIP); ability_unlock(ABILITY_8_FLAP_FLIP);
gcdialog_showText(0xdf8, 0xa, this->unk1C, this->marker, func_8038A488, NULL); gcdialog_showText(0xdf8, 0xa, this->unk1C, this->marker, func_8038A488, NULL);
this->sm_4070.unk0 = 0xe1c; this->sm_4070.unk0 = 0xe1c;
mapSpecificFlags_set(9,0); mapSpecificFlags_set(SM_SPECIFIC_FLAG_9, FALSE);
}//L8038A794 }//L8038A794
if(mapSpecificFlags_get(0xa)){ if(mapSpecificFlags_get(SM_SPECIFIC_FLAG_A)){
func_8038A460(this); func_8038A460(this);
func_8028F94C(2, this->unk1C); func_8028F94C(2, this->unk1C);
if(!mapSpecificFlags_get(3) && chmole_learnedAllSpiralMountainAbilities()){ if(!mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(3,1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_3, TRUE);
temp_a0 = 0xe12; temp_a0 = 0xe12;
}else{ }else{
temp_a0 = 0xdf9; temp_a0 = 0xdf9;
} }
gcdialog_showText(temp_a0, 0xe, this->unk1C, this->marker, func_8038A488, NULL); gcdialog_showText(temp_a0, 0xe, this->unk1C, this->marker, func_8038A488, NULL);
mapSpecificFlags_set(0xa,0); mapSpecificFlags_set(SM_SPECIFIC_FLAG_A, FALSE);
this->sm_4070.unk0 = 0; this->sm_4070.unk0 = 0;
} }
}//L8038A828 }//L8038A828

View File

@ -18,7 +18,7 @@ ActorInfo D_8038B0E0 = { 0x1F0, 0x3BD, 0, 0, NULL,
/* .code */ /* .code */
void func_8038A8C0(ActorMarker *arg0){ void func_8038A8C0(ActorMarker *arg0){
mapSpecificFlags_set(0x10, 0); mapSpecificFlags_set(SM_SPECIFIC_FLAG_10, FALSE);
func_8028E6EC(2); func_8028E6EC(2);
func_8028F918(0); func_8028F918(0);
} }
@ -44,13 +44,13 @@ void func_8038A8F8(Actor *this){
if(sp2C < (f32) this->unkF4_8) if(sp2C < (f32) this->unkF4_8)
func_80388D48(); func_80388D48();
if( !mapSpecificFlags_get(0x10) && sp2C < (f32) this->unkF4_8 && 1780.0f < func_8028E82C()){ if( !mapSpecificFlags_get(SM_SPECIFIC_FLAG_10) && sp2C < (f32) this->unkF4_8 && 1780.0f < func_8028E82C()){
if( !mapSpecificFlags_get(2) if( !mapSpecificFlags_get(SM_SPECIFIC_FLAG_2)
|| (mapSpecificFlags_get(3) && !mapSpecificFlags_get(0xf)) || (mapSpecificFlags_get(SM_SPECIFIC_FLAG_3) && !mapSpecificFlags_get(SM_SPECIFIC_FLAG_F))
){ //L8038AA54 ){ //L8038AA54
this->yaw_ideal = ml_distance_vec3f(this->velocity, this->unk1C) / 150.0; this->yaw_ideal = ml_distance_vec3f(this->velocity, this->unk1C) / 150.0;
func_8028F3D8(this->unk1C, this->yaw_ideal, func_8038A8C0, this->marker); func_8028F3D8(this->unk1C, this->yaw_ideal, func_8038A8C0, this->marker);
mapSpecificFlags_set(0x10, 1); mapSpecificFlags_set(SM_SPECIFIC_FLAG_10, TRUE);
} }
} }
} }