Merge branch 'mr-origin-53'

This commit is contained in:
Banjo Kazooie 2024-09-01 16:26:51 -05:00
commit b26ae6b1f3
32 changed files with 1082 additions and 791 deletions

1
.gitignore vendored
View File

@ -55,6 +55,7 @@ __pycache__/
*__pycache__/
expected/
.*/
!.gitlab/
*.ld
*.map
*auto.txt

View File

@ -0,0 +1,12 @@
## What Type Of PR Is This? (Check All Applicable)
- [ ] Feature
- [ ] Bug Fix
- [ ] Documentation Update
- [ ] Revert
- [ ] Other
## Describe Your Changes
## Checklist Before Requesting A Review
- [ ] Running 'Make' results in 'OK' for version us.v10
- [ ] Documentation follows the writing style found in [Style-Guide](https://gitlab.com/banjo.decomp/banjo-kazooie/-/wikis/Style-Guide)

View File

@ -3764,6 +3764,7 @@ enum asset_e
ASSET_7D9_SPRITE_NOTE,
ASSET_7DD_SPRITE_HEALTH = 0x7dd,
ASSET_7DE_SPRITE_SHOE_SPARKLES,
ASSET_7E5_SPRITE_WATER_HONEYCOMB = 0x7e5,
ASSET_7E6_SPRITE_VILE,
@ -3885,6 +3886,7 @@ enum asset_e
ASSET_A22_DIALOG_FLY_REFRESHER = 0xa22,
ASSET_A23_DIALOG_SHOCKJUMP_REFRESHER,
ASSET_A27_TEXT_BOTTLES_ALL_TTC_MOVES_LEARNED = 0xA27,
ASSET_A28_TEXT_LEAKY_DONE = 0xA28,
ASSET_A6F_TEXT_CHARMER_MEET = 0xA6F,
@ -3938,6 +3940,7 @@ enum asset_e
ASSET_B4B_DIALOG_EGGS_REFRESHER,
ASSET_B4C_DIALOG_BEAKBUSTER_REFRESHER,
ASSET_B4E_TEXT_BOTTLES_ALL_MM_MOVES_LEARNED = 0xB4E,
ASSET_B51_TEXT_BOTTLES_HOW_TO_EXIT_LEVEL = 0xb51,
@ -3949,20 +3952,53 @@ enum asset_e
ASSET_C23_DIALOG_BEAKBOMB_LEARN,
ASSET_C24_DIALOG_BEAKBOMB_REFRESHER,
ASSET_C2A_TEXT_BOTTLES_ALL_FP_GV_MOVES_LEARNED = 0xC2A,
ASSET_C63_TEXT_MR_VILE_INTRO = 0xC63,
ASSET_C64_TEXT_MR_VILE_ROUND_1_START,
ASSET_C65_TEXT_MR_VILE_PLAYER_DECLINES,
ASSET_C66_TEXT_MR_VILE_WINS_ROUND_1,
ASSET_C67_TEXT_MR_VILE_ROUND_2_START,
ASSET_C68_TEXT_MR_VILE_WINS_ROUND_2,
ASSET_C69_TEXT_MR_VILE_ROUND_3_START,
ASSET_C6A_TEXT_MR_VILE_WINS_ROUND_3,
ASSET_C6B_TEXT_MR_VILE_PLAYER_WINS,
ASSET_C6C_TEXT_MR_VILE_TRY_AGAIN,
ASSET_C6D_TEXT_MR_VILE_LOSE_ROUND_1_REMATCH,
ASSET_C6E_TEXT_MR_VILE_LOSE_ROUND_2_REMATCH,
ASSET_C6F_TEXT_MR_VILE_LOSE_ROUND_3_REMATCH,
ASSET_C70_TEXT_MR_VILE_WIN_ROUND_2_REMATCH,
ASSET_C71_TEXT_MR_VILE_WIN_ROUND_3_REMATCH,
text_flibbits_meet = 0xc81,
text_flibbits_defeat = 0xc82,
text_flibbits_return = 0xc83,
ASSET_C88_DIALOG_LONGLEG_LEARN = 0xC88,
ASSET_C89_DIALOG_LONGLEG_REFRESHER,
ASSET_C8A_TEXT_BOTTLES_ALL_BGS_MOVES_LEARNED,
ASSET_C8D_TEXT_MR_VILE_EXTRA_CHALLENGE_INTRO = 0xC8D,
ASSET_C8E_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_1,
ASSET_C8F_TEXT_MR_VILE_PLAYER_DECLINES_EXTRA_CHALLENGE,
ASSET_C90_TEXT_MR_VILE_EXTRA_CHALLENGE_REMATCH_1,
ASSET_C91_TEXT_MR_VILE_EXTRA_CHALLENGE_REMATCH_2,
ASSET_C92_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_2,
ASSET_C93_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_3,
ASSET_C94_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_4,
ASSET_C95_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_1,
ASSET_C96_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_2,
ASSET_C97_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_3,
ASSET_C98_TEXT_MR_VILE_GIVES_PRIZE,
ASSET_D32_DIALOG_MUTANT_CRAB_MEET = 0xD32,
ASSET_D33_DIALOG_MUTANT_CRAB_DEFEAT,
ASSET_D34_TEXT_GLOOP_MEET,
ASSET_D35_DIALOG_WONDERWING_LEARN,
ASSET_D36_DIALOG_WONDERWING_REFRESHER,
ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH = 0xd39,
ASSET_D37_TEXT_BOTTLES_ALL_CC_MOVES_LEARNED,
ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED,
ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH,
ASSET_D8F_DIALOG_MUMBO_MEET = 0xD8F,
ASSET_D90_DIALOG_MUMBO_MAGIC_PAID_FOR,
@ -3993,6 +4029,45 @@ enum asset_e
ASSET_DB1_DIALOG_MUMBO_MISTAKE_1,
ASSET_DB2_DIALOG_MUMBO_MISTAKE_2,
ASSET_DF3_TEXT_BOTTLES_INTRODUCTION = 0xDF3,
ASSET_DF4_TEXT_BOTTLES_CAMERA_CONTROL_LEARN,
ASSET_DF5_TEXT_BOTTLES_CAMERA_CONTROL_REFRESHER,
ASSET_DF6_TEXT_BOTTLES_HIGH_JUMP_LEARN,
ASSET_DF7_TEXT_BOTTLES_FEATHERY_FLAP_LEARN,
ASSET_DF8_TEXT_BOTTLES_FLAP_FLIP_LEARN,
ASSET_DFA_TEXT_BOTTLES_JUMP_REFRESHER = 0xDFA,
ASSET_DFB_TEXT_BOTTLES_DIVE_LEARN,
ASSET_DFD_TEXT_BOTTLES_SWIM_LEARN = 0xDFD,
ASSET_DFE_TEXT_BOTTLES_DIVE_REFRESHER,
ASSET_DFF_TEXT_BOTTLES_CLAW_SWIPE_LEARN,
ASSET_E00_TEXT_BOTTLES_ATTACK_REFRESHER = 0xE00,
ASSET_E01_TEXT_BOTTLES_CLIMB_LEARN,
ASSET_E03_TEXT_BOTTLES_CLIMB_REFRESHER = 0xE03,
ASSET_E04_TEXT_BOTTLES_BEAK_BARGE_LEARN,
ASSET_E06_TEXT_BOTTLES_BEAK_BARGE_REFRESHER = 0xE06,
ASSET_E08_TEXT_BOTTLES_FIND_ANOTHER_MOLEHILL = 0xE08,
ASSET_E09_TEXT_BOTTLES_SKIPPED_TUTORIAL,
ASSET_E0A_TEXT_BOTTLES_REFUSE_HELP_1,
ASSET_E0B_TEXT_BOTTLES_REFUSE_HELP_2,
ASSET_E0C_TEXT_BOTTLES_REFUSE_HELP_3,
ASSET_E0D_TEXT_BOTTLES_REFUSE_HELP_4,
ASSET_E0E_TEXT_BOTTLES_REFUSE_HELP_5,
ASSET_E0F_TEXT_BOTTLES_STOP_WASTING_TIME_BEFORE_FURNACE_FUN, // Skip tutorial, bother bottles, gives help, retalk to bottles
ASSET_E10_TEXT_BOTTLES_BRIDGE_BROKEN,
ASSET_E11_TEXT_BOTTLES_BRIDGE_STILL_BROKEN,
ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES,
ASSET_E1D_TEXT_BOTTLES_TUTORIAL_OFFER_WAIT = 0xE1D,
ASSET_E1F_TEXT_BOTTLES_TUTORIAL_OFFER = 0xE1F,
ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN = 0xE37, // Talk to bottles after beating furnace fun
ASSET_F5B_DIALOG_MUMBO_MAGIC_GET_WEAK_FULL = 0xF5b,
ASSET_F5C_DIALOG_MUMBO_MAGIC_GET_WEAK_ABREV,
ASSET_F5D_DIALOG_MUMBO_MAGIC_RUN_OUT_FULL,

View File

@ -19,5 +19,5 @@ lair_func_8038E0B0 = 0x8038E0B0;
lair_func_8038E768 = 0x8038E768;
fight_func_803863F0 = 0x803863F0;
cutscene_func_8038C4E0 = 0x8038C4E0;
learnedAllTutorialAbilities = 0x802DA498;
chmole_learnedAllSpiralMountainAbilities = 0x802DA498;

View File

@ -36,13 +36,80 @@ void func_8038A068(Actor *this, s32 next_state);
void chvilegame_update(Actor *this);
/* .data */
ActorInfo D_80390960 = {MARKER_C6_VILE_GAME_CTRL, ACTOR_138_VILE_GAME_CTRL, 0, 0, NULL, chvilegame_update, NULL, func_80325340, 0, 0, 0.0f, 0};
enum asset_e D_80390984[] = { 0, 0xC66, 0xC68, 0xC6A, 0xC92, 0xC93, 0xC94, 0};
enum asset_e D_803909A4[] = { 0, 0xC67, 0xC69, 0, 0xC95, 0xC96, 0xC97};
enum asset_e D_803909C0[] = { 0, 0xC6E, 0xC6F, 0, 0xC95, 0xC96, 0xC97};
enum asset_e D_803909DC[] = {0xC65, 0xC65, 0xC65, 0xC8F, 0, 0, 0};
enum asset_e BGS_D_803909F8[] = {0xC64, 0, 0, 0xC8E, 0, 0, 0, 0};
enum asset_e D_80390A18[] = {0xC6D, 0xC70, 0xC71, 0xC8E, 0, 0, 0, 0};
ActorInfo D_80390960 = {
MARKER_C6_VILE_GAME_CTRL, ACTOR_138_VILE_GAME_CTRL, 0,
0, NULL,
chvilegame_update, NULL, func_80325340,
0, 0, 0.0f, 0
};
// Vile Wins
enum asset_e D_80390984[] = {
0,
ASSET_C66_TEXT_MR_VILE_WINS_ROUND_1,
ASSET_C68_TEXT_MR_VILE_WINS_ROUND_2,
ASSET_C6A_TEXT_MR_VILE_WINS_ROUND_3,
ASSET_C92_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_2,
ASSET_C93_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_3,
ASSET_C94_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_4,
0
};
// Player Wins
enum asset_e D_803909A4[] = {
0,
ASSET_C67_TEXT_MR_VILE_ROUND_2_START,
ASSET_C69_TEXT_MR_VILE_ROUND_3_START,
0,
ASSET_C95_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_1,
ASSET_C96_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_2,
ASSET_C97_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_3
};
// Player Wins Rematch
enum asset_e D_803909C0[] = {
0,
ASSET_C6E_TEXT_MR_VILE_LOSE_ROUND_2_REMATCH,
ASSET_C6F_TEXT_MR_VILE_LOSE_ROUND_3_REMATCH,
0,
ASSET_C95_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_1,
ASSET_C96_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_2,
ASSET_C97_TEXT_MR_VILE_LOSES_EXTRA_CHALLENGE_3
};
// Player Declines
enum asset_e D_803909DC[] = {
ASSET_C65_TEXT_MR_VILE_PLAYER_DECLINES,
ASSET_C65_TEXT_MR_VILE_PLAYER_DECLINES,
ASSET_C65_TEXT_MR_VILE_PLAYER_DECLINES,
ASSET_C8F_TEXT_MR_VILE_PLAYER_DECLINES_EXTRA_CHALLENGE,
0,
0,
0
};
// Round 1 Regular & Extra Challenge
enum asset_e BGS_D_803909F8[] = {
ASSET_C64_TEXT_MR_VILE_ROUND_1_START,
0,
0,
ASSET_C8E_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_1,
0,
0,
0,
0
};
enum asset_e D_80390A18[] = {
ASSET_C6D_TEXT_MR_VILE_LOSE_ROUND_1_REMATCH,
ASSET_C70_TEXT_MR_VILE_WIN_ROUND_2_REMATCH,
ASSET_C71_TEXT_MR_VILE_WIN_ROUND_3_REMATCH,
ASSET_C8E_TEXT_MR_VILE_WINS_EXTRA_CHALLENGE_1,
0,
0,
0,
0
};
/* .code */
bool BGS_func_80389810(f32 arg0[3]) {
@ -611,9 +678,9 @@ void chvilegame_update(Actor *this) {
}
if (local->type_change_timer > 3.5) {
if (local->current_type != 0) {
func_803463D4(ITEM_1D_GRUMBLIE, FALSE);
item_adjustByDiffWithHud(ITEM_1D_GRUMBLIE, FALSE);
} else {
func_803463D4(ITEM_1E_YUMBLIE, FALSE);
item_adjustByDiffWithHud(ITEM_1E_YUMBLIE, FALSE);
}
}
}

View File

@ -116,7 +116,7 @@ void chLoggo_update(Actor *this){
this->unk60 -= sp44;
}
else{
func_8031F7D4(0, 0);
warp_mmmEnterLoggo(0, 0);
}
break;
}

View File

@ -206,7 +206,7 @@ void func_80387764(ActorMarker * marker){
func_8028F94C(2, actor->unk1C);
}
//L80387848
if(!mapSpecificFlags_get(3) && learnedAllTutorialAbilities() && temp_a2){
if(!mapSpecificFlags_get(3) && chmole_learnedAllSpiralMountainAbilities() && temp_a2){
mapSpecificFlags_set(3, 1);
sp34 = 0xE12;
}//L80387898

View File

@ -11,19 +11,19 @@ void timed_exitStaticCamera(f32);
void subaddie_set_state_with_direction(Actor *, s32, f32, s32);
//static types
typedef struct sm_2900_struct{
s16 unk0; //text_id
s16 unk2; //text_id
s8 unk4;
s8 unk5; //ability_id
}SM2900Struct;
typedef struct {
s16 learn_text;
s16 refresher_text;
s8 camera_node;
s8 ability;
} ChSmMoleDescription;
//public
void func_803899B0(Actor * this);
void SM_func_80389610(Actor * this);
void chsmmole_Update(Actor * this);
void chsmmole_80389610(Actor * this);
/* .data */
ActorAnimationInfo D_8038AF60[6] = {
ActorAnimationInfo smMoleAnimations[6] = {
{0, 0.0f},
{ASSET_13A_ANIM_BOTTLES_ENTER, 2000000000.0f},
{ASSET_13A_ANIM_BOTTLES_ENTER, 4.5f},
@ -32,27 +32,33 @@ ActorAnimationInfo D_8038AF60[6] = {
{ASSET_13A_ANIM_BOTTLES_ENTER, 2000000000.0f}
};
ActorInfo D_8038AF90 = { MARKER_B7_TUTORIAL_BOTTLES, ACTOR_12B_TUTORIAL_BOTTLES, ASSET_387_MODEL_BOTTLES, 1, D_8038AF60, //bottles
func_803899B0, func_80326224, func_802D94B4,
ActorInfo chSmMole = {
MARKER_B7_TUTORIAL_BOTTLES, ACTOR_12B_TUTORIAL_BOTTLES, ASSET_387_MODEL_BOTTLES,
1, smMoleAnimations,
chsmmole_Update, func_80326224, func_802D94B4,
0, 0, 0.0f, 0
};
SM2900Struct D_8038AFB4[8] = {
{0xdf3, 0xe08, 1, -1},
{0xdf4, 0xdf5, 3, ABILITY_3_CAMERA_CONTROL},
{0xdfb, 0xdfe, 5, ABILITY_F_DIVE},
{ -1, 0xe00, 6, ABILITY_B_RATATAT_RAP},
{0xe04, 0xe06, 8, ABILITY_0_BARGE},
{ -1, 0xdfa, 4, ABILITY_8_FLAP_FLIP},
{0xe01, 0xe03, 7, ABILITY_5_CLIMB},
{0xe10, 0xe11, 0x11, -1},
ChSmMoleDescription smMoleTable[8] = {
{ASSET_DF3_TEXT_BOTTLES_INTRODUCTION, ASSET_E08_TEXT_BOTTLES_FIND_ANOTHER_MOLEHILL, 1, -1},
{ASSET_DF4_TEXT_BOTTLES_CAMERA_CONTROL_LEARN, ASSET_DF5_TEXT_BOTTLES_CAMERA_CONTROL_REFRESHER, 3, ABILITY_3_CAMERA_CONTROL},
{ASSET_DFB_TEXT_BOTTLES_DIVE_LEARN, ASSET_DFE_TEXT_BOTTLES_DIVE_REFRESHER, 5, ABILITY_F_DIVE},
{ -1, ASSET_E00_TEXT_BOTTLES_ATTACK_REFRESHER, 6, ABILITY_B_RATATAT_RAP},
{ASSET_E04_TEXT_BOTTLES_BEAK_BARGE_LEARN, ASSET_E06_TEXT_BOTTLES_BEAK_BARGE_REFRESHER, 8, ABILITY_0_BARGE},
{ -1, ASSET_DFA_TEXT_BOTTLES_JUMP_REFRESHER, 4, ABILITY_8_FLIP},
{ASSET_E01_TEXT_BOTTLES_CLIMB_LEARN, ASSET_E03_TEXT_BOTTLES_CLIMB_REFRESHER, 7, ABILITY_5_CLIMB},
{ASSET_E10_TEXT_BOTTLES_BRIDGE_BROKEN, ASSET_E11_TEXT_BOTTLES_BRIDGE_STILL_BROKEN, 0x11, -1},
};
s32 D_8038AFE4 = 0;
/* .code */
int func_80388D80(void){
/**
* @brief Checks if any Spiral Mountain abilities have been learned
*/
int chsmmole_learnedAnySpiralMountainAbilities(void){
return ability_isUnlocked(ABILITY_F_DIVE)
|| ability_isUnlocked(ABILITY_4_CLAW_SWIPE)
|| ability_isUnlocked(ABILITY_C_ROLL)
@ -64,7 +70,11 @@ int func_80388D80(void){
|| ability_isUnlocked(ABILITY_5_CLIMB);
}
void func_80388E48(void){
/**
* @brief Sets all Spiral Mountain abilities to used & disables the noise
* played when the player uses an ability for the first time.
*/
void chsmmole_setSpiralMountainAbilitiesAsUsed(void){
ability_unlock(ABILITY_3_CAMERA_CONTROL);
ability_setHasUsed(ABILITY_0_BARGE);
ability_setHasUsed(ABILITY_1_BEAK_BOMB);
@ -77,7 +87,10 @@ void func_80388E48(void){
ability_setHasUsed(ABILITY_A_HOLD_A_JUMP_HIGHER);
}
void func_80388EB0(void){
/**
* @brief Unlocks all of the Spiral Mountain moves.
*/
void chsmmole_skipIntroTutorial(void){
ability_unlock(ABILITY_F_DIVE);
ability_unlock(ABILITY_4_CLAW_SWIPE);
ability_unlock(ABILITY_C_ROLL);
@ -87,16 +100,20 @@ void func_80388EB0(void){
ability_unlock(ABILITY_7_FEATHERY_FLAP);
ability_unlock(ABILITY_8_FLAP_FLIP);
ability_unlock(ABILITY_5_CLIMB);
func_80388E48();
chsmmole_setSpiralMountainAbilitiesAsUsed();
mapSpecificFlags_set(3,1);
}
/**
* @brief If the player is talking to Intro Bottles for the first time, use the
* camera that points to the lair. Otherwise, use the camera for the ability.
*/
void chsmmole_setSpiralMountainStaticCamera(Actor *this){
void func_80388F24(Actor *this){
if(this->unkF4_8 == 1 && !mapSpecificFlags_get(1)){
timed_setStaticCameraToNode(0.0f, 0x12);
}
else{ //L80388F68
timed_setStaticCameraToNode(0.0f, D_8038AFB4[this->unkF4_8 -1].unk4);
timed_setStaticCameraToNode(0.0f, smMoleTable[this->unkF4_8 -1].camera_node);
}
}
@ -139,9 +156,9 @@ void func_80388FA0(Actor *this, s32 arg1){
animctrl_setSmoothTransition(this->animctrl, 0);
break;
case 5:
func_80388F24(this);
chsmmole_setSpiralMountainStaticCamera(this);
func_8028F94C(2,this->position);
SM_func_80389610(this);
chsmmole_80389610(this);
break;
case 3:
actor_loopAnimation(this);
@ -158,14 +175,18 @@ void func_80388FA0(Actor *this, s32 arg1){
func_8030DD14(this->unk44_31, 2);
func_8030DBB4(this->unk44_31, 1.4f);
sfxsource_setSampleRate(this->unk44_31, 0x6590);
func_80388F24(this);
chsmmole_setSpiralMountainStaticCamera(this);
func_8028F94C(2, this->position);
break;
}
subaddie_set_state_with_direction(this, arg1, 0.0001f, 1);
}
void func_80389214(ActorMarker *marker, enum asset_e text_id, s32 arg2){
/**
* @brief Performs actions depending on what move is being learned
*
*/
static void __chsmmole_additionalAbilityLearnActions(ActorMarker *marker, enum asset_e text_id, s32 arg2){
Actor *actor = marker_getActor(marker);
switch(arg2){
case 3:
@ -181,7 +202,7 @@ void func_80389214(ActorMarker *marker, enum asset_e text_id, s32 arg2){
func_8025A70C(COMUSIC_2B_DING_B);
break;
case 0xff:
func_80388F24(actor);
chsmmole_setSpiralMountainStaticCamera(actor);
break;
}
}
@ -190,43 +211,45 @@ void func_803892C8(ActorMarker *marker, enum asset_e text_id, s32 arg2){
Actor *actor;
actor = marker_getActor(marker);
if(!mapSpecificFlags_get(3) && learnedAllTutorialAbilities()){
if(!mapSpecificFlags_get(3) && chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(3, 1);
func_80311480(0xe12, 0xe, actor->position, actor->marker, func_803892C8, NULL);
func_80311480(ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES, 0xe, actor->position, actor->marker, func_803892C8, NULL);
}//L8038933C
else{
if( !(text_id == 0xdf3 || text_id == 0xe1f || text_id == 0xe1d) ){
if(!(text_id == ASSET_DF3_TEXT_BOTTLES_INTRODUCTION
|| text_id == ASSET_E1F_TEXT_BOTTLES_TUTORIAL_OFFER
|| text_id == ASSET_E1D_TEXT_BOTTLES_TUTORIAL_OFFER_WAIT)){
timed_exitStaticCamera(0.0f);
}
switch(text_id){
case 0xd38:
case ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED:
break;
case 0xdf3:/* 2FB8 803893A8 3C188039 */
func_80311480(0xe1f, 0x8e, actor->position, actor->marker, func_803892C8, func_80389214);
case ASSET_DF3_TEXT_BOTTLES_INTRODUCTION: /* 2FB8 803893A8 3C188039 */
func_80311480(ASSET_E1F_TEXT_BOTTLES_TUTORIAL_OFFER, 0x8e, actor->position, actor->marker, func_803892C8, __chsmmole_additionalAbilityLearnActions);
break;
case 0xe1f:/* 2FEC 803893DC 9209003B */
case ASSET_E1F_TEXT_BOTTLES_TUTORIAL_OFFER: /* 2FEC 803893DC 9209003B */
actor->unk38_0 = 1;
break;
case 0xe1d:/* 2FFC 803893EC 920B0138 */
case ASSET_E1D_TEXT_BOTTLES_TUTORIAL_OFFER_WAIT: /* 2FFC 803893EC 920B0138 */
actor->unk138_24 = 0;
actor->unk60 = 0.0f;
break;
case 0xdf6: /* 3014 80389404 0C0A3E46 */
case 0xdff: /* 3014 80389404 0C0A3E46 */
case ASSET_DF6_TEXT_BOTTLES_HIGH_JUMP_LEARN: /* 3014 80389404 0C0A3E46 */
case ASSET_DFF_TEXT_BOTTLES_CLAW_SWIPE_LEARN: /* 3014 80389404 0C0A3E46 */
func_8028F918(0);
break;
case 0xe09:
case 0xe12:
case ASSET_E09_TEXT_BOTTLES_SKIPPED_TUTORIAL:
case ASSET_E12_TEXT_BOTTLES_LEARNED_TUTORIAL_MOVES:
func_80388FA0(actor,4);
break;
default:
if(actor->state !=5 )
func_80311480(0xd38, 4, NULL, NULL, NULL, NULL);
if(actor->state != 5)
func_80311480(ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED, 4, NULL, NULL, NULL, NULL);
func_80388FA0(actor, actor->state == 5 ? 1:4);
break;
@ -234,29 +257,31 @@ void func_803892C8(ActorMarker *marker, enum asset_e text_id, s32 arg2){
}
}
void func_80389494(Actor * this, s32* arg1, s32 *arg2){
if(ability_isUnlocked(D_8038AFB4[this->unkF4_8 -1].unk5)){
void chsmmole_learnAbility(Actor * this, s32* arg1, s32 *arg2){
// Selects the learn and refresh dialogs.
// Gives the player the ability if not learned.
if(ability_isUnlocked(smMoleTable[this->unkF4_8 -1].ability)){
if(fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL)){
*arg1 = D_8038AFE4 + 0xE0A; //dialog index
*arg1 = D_8038AFE4 + ASSET_E0A_TEXT_BOTTLES_REFUSE_HELP_1;
D_8038AFE4++;
D_8038AFE4 = MIN(D_8038AFE4, 5);
if(*arg1 != 0xE0E){
if(*arg1 != ASSET_E0E_TEXT_BOTTLES_REFUSE_HELP_5){
*arg2 |= 1;
}
}else{//L8038956C
*arg2 |= 1;
*arg1 = D_8038AFB4[this->unkF4_8 -1].unk2;
if(*arg1 == 0xdfe && !ability_hasUsed(ABILITY_3_CAMERA_CONTROL)){
*arg1 = 0xdfd;
*arg1 = smMoleTable[this->unkF4_8 -1].refresher_text;
if(*arg1 == ASSET_DFE_TEXT_BOTTLES_DIVE_REFRESHER && !ability_hasUsed(ABILITY_3_CAMERA_CONTROL)){
*arg1 = ASSET_DFD_TEXT_BOTTLES_SWIM_LEARN;
}
}
}else{//L803895C0
*arg1 = D_8038AFB4[this->unkF4_8 -1].unk0;
ability_unlock(D_8038AFB4[this->unkF4_8 -1].unk5);
*arg1 = smMoleTable[this->unkF4_8 -1].learn_text;
ability_unlock(smMoleTable[this->unkF4_8 -1].ability);
}
}
void SM_func_80389610(Actor * this){
void chsmmole_80389610(Actor * this){
s32 sp2C;
s32 sp28;
@ -272,25 +297,25 @@ void SM_func_80389610(Actor * this){
D_8038AFE4++;
D_8038AFE4 = MIN(D_8038AFE4, 5);
}else{//L803896C0
sp2C = D_8038AFB4[this->unkF4_8 -1].unk2;
sp2C = smMoleTable[this->unkF4_8 -1].refresher_text;
}
}
else{//L803896E8
sp2C = D_8038AFB4[this->unkF4_8 -1].unk0;
sp2C = smMoleTable[this->unkF4_8 -1].learn_text;
mapSpecificFlags_set(1,1);
}
break;
case 8://L80389720
if(mapSpecificFlags_get(3)){
if(fileProgressFlag_get(FILEPROG_A6_FURNACE_FUN_COMPLETE)){
sp2C = 0xe37;
sp2C = ASSET_E37_TEXT_BOTTLES_STOP_WASTING_TIME_AFTER_FURNACE_FUN;
sp28 |= 1;
}else{//L80389758
if(mapSpecificFlags_get(0xf)){
sp2C = 0xe0f;
sp2C = ASSET_E0F_TEXT_BOTTLES_STOP_WASTING_TIME_BEFORE_FURNACE_FUN;
sp28 |= 1;
}else{//L80389780
func_80388E48();
chsmmole_setSpiralMountainAbilitiesAsUsed();
sp2C = fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL) ? 0xe1e : 0xe13;
mapSpecificFlags_set(0xf, 1);
}
@ -299,11 +324,11 @@ void SM_func_80389610(Actor * this){
}
else{//L803897C8
if(mapSpecificFlags_get(2)){
sp2C = D_8038AFB4[this->unkF4_8 -1].unk2;
sp2C = smMoleTable[this->unkF4_8 -1].refresher_text;
sp28 |= 1;
}
else{
sp2C = D_8038AFB4[this->unkF4_8 -1].unk0;
sp2C = smMoleTable[this->unkF4_8 -1].learn_text;
mapSpecificFlags_set(2, 1);
}
@ -318,7 +343,7 @@ void SM_func_80389610(Actor * this){
mapSpecificFlags_set(4, 1);
}
else{//L803898E4
func_80389494(this, &sp2C, &sp28);
chsmmole_learnAbility(this, &sp2C, &sp28);
}
break;
@ -330,25 +355,28 @@ void SM_func_80389610(Actor * this){
mapSpecificFlags_set(0xE, 1);
}
else{//L803898E4
func_80389494(this, &sp2C, &sp28);
chsmmole_learnAbility(this, &sp2C, &sp28);
}
break;
default://L803898F8
func_80389494(this, &sp2C, &sp28);
chsmmole_learnAbility(this, &sp2C, &sp28);
break;
}//L80389904
if(sp2C){
func_80311480(sp2C, sp28, this->position, this->marker, func_803892C8, func_80389214);
func_80311480(sp2C, sp28, this->position, this->marker, func_803892C8, __chsmmole_additionalAbilityLearnActions);
}
}
void func_80389948(ActorMarker * marker){
/**
* @brief Spawns a molehill for the actor
*/
void chsmmole_spawnMolehill(ActorMarker * marker){
Actor *actor;
Actor *other;
s32 pad;
actor = marker_getActor(marker);
other = spawn_child_actor(0x12c, &actor);
other = spawn_child_actor(ACTOR_12C_MOLEHILL, &actor);
actor->unk100 = other->marker;
if(marker);
@ -362,13 +390,16 @@ void func_80389984(Actor * this){
func_8030DA44(tmp);
}
void func_803899B0(Actor * this){
s32 sp50[6]; //face buttons
f32 sp44[3]; //player position
void chsmmole_Update(Actor * this){
// Sets up the initial functions and state for the actor
s32 sp50[6]; // face buttons
f32 sp44[3]; // player position
void *sp40;
int sp34;
int sp38;
int user_input;
// Checks the actor's selector value is lower than 0x9
// Anything higher is a non-Spiral Mountain ability, and should use a different actor id
if(this->unkF4_8 >= 9)
return;
@ -394,10 +425,10 @@ void func_803899B0(Actor * this){
}
}
}//L80389AC8
if(func_80388D80()){
if(chsmmole_learnedAnySpiralMountainAbilities()){
mapSpecificFlags_set(1,1);
if(learnedAllTutorialAbilities()){
if(chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(3, 1);
mapSpecificFlags_set(2, 1);
mapSpecificFlags_set(0xC, 1);
@ -407,7 +438,7 @@ void func_803899B0(Actor * this){
}//L80389B20
if(!this->unk16C_4){
__spawnQueue_add_1((GenFunction_1)func_80389948, reinterpret_cast(s32, this->marker));
__spawnQueue_add_1((GenFunction_1)chsmmole_spawnMolehill, reinterpret_cast(s32, this->marker));
this->unk16C_4 = 1;
}//L80389B4C
@ -443,7 +474,7 @@ void func_803899B0(Actor * this){
|| func_8028EC04()
) break;
sp34 = !((!(D_8038AFB4[this->unkF4_8-1].unk5 + 1)) || (!ability_isUnlocked( D_8038AFB4[this->unkF4_8-1].unk5)));
sp34 = !((!(smMoleTable[this->unkF4_8-1].ability + 1)) || (!ability_isUnlocked( smMoleTable[this->unkF4_8-1].ability)));
if( (!sp34 && this->unkF4_8 != 1)
|| fileProgressFlag_get(FILEPROG_DB_SKIPPED_TUTORIAL) == 0
|| D_8038AFE4 < 6
@ -476,7 +507,7 @@ void func_803899B0(Actor * this){
}//L80389EA0
if(actor_animationIsAt(this, 0.9999f)){
if(!mapSpecificFlags_get(1)){
SM_func_80389610(this);
chsmmole_80389610(this);
}
func_80388FA0(this, 3);
}//L80389EE0
@ -489,7 +520,7 @@ void func_803899B0(Actor * this){
}else if(actor_animationIsAt(this, 0.35f)){//L80389F78
if(mapSpecificFlags_get(1)){
SM_func_80389610(this);
chsmmole_80389610(this);
}
}
break;
@ -524,21 +555,21 @@ void func_803899B0(Actor * this){
mapSpecificFlags_set(5,0);
func_80388FA0(this, 4);
}//L8038A1B8
sp38 = -1;
user_input = -1;
if(this->unk38_0){
this->unk60 += time_getDelta();
if(func_803114C4() != 0xe1d){
if(sp50[FACE_BUTTON(BUTTON_A)] == 1)
sp38 = 1; //A button pressed
user_input = 1; //A button pressed
else if(sp50[FACE_BUTTON(BUTTON_B)] == 1)
sp38 = 0; //B button pressed
user_input = 0; //B button pressed
}//L8038A218
if( sp38 != -1){ //button was pressed
fileProgressFlag_set(FILEPROG_DB_SKIPPED_TUTORIAL, (sp38)?0:1);
func_80311480((sp38)? 0xe07 : 0xe09, 0xe, this->position, this->marker, func_803892C8, func_80389214);
if(!sp38){
func_80388EB0(); //give all SM moves
if( user_input != -1){ //button was pressed
fileProgressFlag_set(FILEPROG_DB_SKIPPED_TUTORIAL, (user_input)?0:1);
func_80311480((user_input)? 0xe07 : 0xe09, 0xe, this->position, this->marker, func_803892C8, __chsmmole_additionalAbilityLearnActions);
if(!user_input){
chsmmole_skipIntroTutorial(); //give all SM moves
}
this->unk38_0 = 0;
}else if(!this->unk138_24 && 5.0 < this->unk60){

View File

@ -112,7 +112,7 @@ void SM_func_8038A5D8(Actor *this){
func_8038A460(this);
func_8028F94C(2, this->unk1C);
if(!mapSpecificFlags_get(3) && learnedAllTutorialAbilities()){
if(!mapSpecificFlags_get(3) && chmole_learnedAllSpiralMountainAbilities()){
mapSpecificFlags_set(3,1);
temp_a0 = 0xe12;
}else{

View File

@ -17,7 +17,7 @@ extern ActorInfo D_8038AD58; //ch cauliflower A
extern ActorInfo D_8038AC9C; //chCarrot FreeRange?
extern ActorInfo D_8038AD0C; //ch onion B
extern ActorInfo D_8038AD7C; //ch cauliflower B
extern ActorInfo D_8038AF90; //D_8038AF90 bottles
extern ActorInfo chSmMole; //chSmMole bottles
extern ActorInfo D_8038B0B0; //chJumpTutorial code_4070
extern ActorInfo D_8038B0E0;
extern ActorInfo D_8038B008; //chBanjosBed
@ -148,7 +148,7 @@ void SM_func_80386810(void)
spawnableActorList_add(&D_8038AC9C, actor_new, 0X2000121);
spawnableActorList_add(&D_8038AD0C, actor_new, 0X2000121);
spawnableActorList_add(&D_8038AD7C, actor_new, 0X2200121);
spawnableActorList_add(&D_8038AF90, actor_new, 0X100);
spawnableActorList_add(&chSmMole, actor_new, 0X100);
spawnableActorList_add(&D_8038B0B0, actor_new, 0);
spawnableActorList_add(&D_8038B0E0, actor_new, 0);
spawnableActorList_add(&D_8038B008, actor_new, 0X6C8);

View File

@ -328,15 +328,15 @@ void func_8038AC48(LetterFloorTile *arg0) {
default:
break;
case 0:
func_80346448(ITEM_D_EGGS);
item_setMaxCount(ITEM_D_EGGS);
func_802FAFAC(ITEM_D_EGGS, COMUSIC_C_EGG_COLLECTED);
break;
case 1:
func_80346448(ITEM_F_RED_FEATHER);
item_setMaxCount(ITEM_F_RED_FEATHER);
func_802FAFAC(ITEM_F_RED_FEATHER, COMUSIC_B_RED_FEATHER_COLLECTED);
break;
case 2:
func_80346448(ITEM_10_GOLD_FEATHER);
item_setMaxCount(ITEM_10_GOLD_FEATHER);
func_802FAFAC(ITEM_10_GOLD_FEATHER, COMUSIC_14_GOLD_FEATHER_COLLECTED);
break;
}
@ -634,7 +634,7 @@ s32 __sandcastleCodes_getNumberEntered(void){
void func_8038B79C(s32 arg0, s32 arg1, s32 arg2, enum item_e item_id, s32 item_diff, s32 item_val) {
if (((arg2 + 0x14) == secretCodesTable[arg1].id) || (arg0 == 1)) {
if (item_diff != 0) {
func_803463D4(item_id, item_diff);
item_adjustByDiffWithHud(item_id, item_diff);
return;
}
item_set(item_id, item_val);

View File

@ -266,7 +266,7 @@ void func_8024AF48(void){
func_8024A880(0x9000);
}
else{
if(learnedAllTutorialAbilities())
if(chmole_learnedAllSpiralMountainAbilities())
func_8024A9EC(0);
func_8024A880(0x6fff);
}

View File

@ -175,7 +175,7 @@ void __baMarker_resolveMusicNoteCollision(Prop *arg0) {
if (!func_802FADD4(ITEM_1B_VILE_VILE_SCORE)) {
item_inc(ITEM_C_NOTE);
} else {
func_803463F4(ITEM_C_NOTE, 1);
item_adjustByDiffWithoutHud(ITEM_C_NOTE, 1);
}
if (item_getCount(ITEM_C_NOTE) < 100) {
func_8025A6EC(COMUSIC_9_NOTE_COLLECTED, 16000);
@ -532,7 +532,7 @@ void __baMarker_resolveCollision(Prop *other_prop){
|| (func_8028B2E8() && !(3600.0f < ml_distanceSquared_vec3f(actor->position, spA0)))
){
jiggyscore_setCollected(jiggy_id, TRUE);
func_803463F4(ITEM_26_JIGGY_TOTAL, 1);
item_adjustByDiffWithoutHud(ITEM_26_JIGGY_TOTAL, 1);
if(jiggy_id == JIGGY_20_BGS_ELEVATED_WALKWAY || jiggy_id == JIGGY_25_BGS_MAZE){
func_802D6924();
}
@ -687,7 +687,7 @@ void __baMarker_resolveCollision(Prop *other_prop){
case MARKER_6B_GLOOPBUBBLE: //L8028CD20
if(func_8028EE84() == BSWATERGROUP_2_UNDERWATER){
func_803463D4(ITEM_17_AIR, fxairscore_count_to_time(2));
item_adjustByDiffWithHud(ITEM_17_AIR, fxairscore_count_to_time(2));
}
break;
@ -1032,10 +1032,10 @@ void baMarker_8028D7B8(s32 arg0, ActorMarker *arg1, struct5Cs *collision_flags){
if(sp20){
if(func_8033D594(collision_flags) == 3){
func_803463D4(ITEM_14_HEALTH, -item_getCount(ITEM_14_HEALTH));
item_adjustByDiffWithHud(ITEM_14_HEALTH, -item_getCount(ITEM_14_HEALTH));
}
else{//L8028D92C
func_803463D4(ITEM_14_HEALTH, -sp20);
item_adjustByDiffWithHud(ITEM_14_HEALTH, -sp20);
}
}//L8028D948

View File

@ -25,7 +25,7 @@ void bssplat_init(void){
baanim_playForDuration_onceSmooth(ASSET_149_ANIM_BSSPLAT, 1.1f);
func_8029C7F4(1,1,3, BA_PHYSICS_LOCKED_ROTATION);
bafalldamage_get_damage(&sp1C);
func_803463D4(ITEM_14_HEALTH, -sp1C);
item_adjustByDiffWithHud(ITEM_14_HEALTH, -sp1C);
if(func_8029CEB0() == 4){
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.7f, 32000);
FUNC_8030E624(SFX_116_DEAF_RUSTLING, 0.8f, 32000);

View File

@ -82,7 +82,7 @@ bool chCollectible_collectItem(Actor* actor, enum file_progress_e arg1, enum ass
if(!func_802FADD4(0x1b)){
item_inc(itemId);
} else {
func_803463F4(itemId,1);
item_adjustByDiffWithoutHud(itemId,1);
}
if(!actor || !actor->unk38_0)

View File

@ -21,8 +21,8 @@ void func_802C5740(Actor *this);
extern void func_802C71F0(Actor *);
extern void func_802C74F4(Actor *, s32, f32 );
extern void func_8031FB14(s32, s32);
extern void func_8031F678(s32, s32);
extern void warp_lairEnterLairFromSMLevel(s32, s32);
extern void warp_smExitBanjosHouse(s32, s32);
extern void func_80335110(s32);
extern void func_8024E60C(s32, s32[3]);
@ -413,11 +413,11 @@ void func_802C4C14(Actor *this){
sp44 = 0.0f;
if(this->state == 4 && (sp84 == 0 || sp84 == 1))
sp44 = 0.25f;
if(learnedAllTutorialAbilities() && fileProgressFlag_get(FILEPROG_BD_ENTER_LAIR_CUTSCENE)){
timedFunc_set_2(sp44, (GenFunction_2)func_8031FB14, 0, 0);
if(chmole_learnedAllSpiralMountainAbilities() && fileProgressFlag_get(FILEPROG_BD_ENTER_LAIR_CUTSCENE)){
timedFunc_set_2(sp44, (GenFunction_2)warp_lairEnterLairFromSMLevel, 0, 0);
}
else{//L802C5188
timedFunc_set_2(sp44, (GenFunction_2)func_8031F678, 0, 0);
timedFunc_set_2(sp44, (GenFunction_2)warp_smExitBanjosHouse, 0, 0);
}//L802C51A0
timedFunc_set_1(sp44, (GenFunction_1)func_80335110, 1);
}//L802C51B8

View File

@ -51,7 +51,7 @@ void __chJinjo_802CDBA8(ActorMarker *this, ActorMarker *other){
fileProgressFlag_set(FILEPROG_E_JINJO_TEXT, 1);
}
subaddie_set_state_with_direction(actorPtr, 6, 0.0f , -1);
if(func_803463D4(ITEM_12_JINJOS, 1 << (this->unk14_20 + 6) ) == 0x1f)
if(item_adjustByDiffWithHud(ITEM_12_JINJOS, 1 << (this->unk14_20 + 6) ) == 0x1f)
localPtr->unk4 = 1;
actor_loopAnimation(actorPtr);
this->collidable = 0;

View File

@ -2,19 +2,19 @@
#include "functions.h"
#include "variables.h"
void func_802D9D60(Actor *this);
void chmole_update(Actor *this);
Actor *func_802D94B4(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
void func_802D9830(ActorMarker *marker, enum asset_e arg1, s32 arg2);
void chmole_additionalAbilityLearnActions(ActorMarker *marker, enum asset_e arg1, s32 arg2);
typedef struct{
s16 learn_text;
s16 refresher_text;
s8 camera_node;
s8 ability;
} struct_core2_52290;
} ChMoleDescription;
/* .data */
ActorAnimationInfo D_80367D70[]= {
ActorAnimationInfo moleAnimations[]= {
{0, 0.0f},
{ASSET_13A_ANIM_BOTTLES_ENTER, 2000000000.0f},
{ASSET_13A_ANIM_BOTTLES_ENTER, 4.5f},
@ -23,14 +23,15 @@ ActorAnimationInfo D_80367D70[]= {
{ASSET_13A_ANIM_BOTTLES_ENTER, 2000000000.0f},
};
ActorInfo D_80367DA0= {
ActorInfo gChMole = {
0x1DF, ACTOR_37A_BOTTLES, ASSET_387_MODEL_BOTTLES,
1, D_80367D70,
func_802D9D60, func_80326224, func_802D94B4,
1, moleAnimations,
chmole_update, func_80326224, func_802D94B4,
0, 0, 0.0f, 0
};
struct_core2_52290 D_80367DC4[] = {
// D_80367DC4
ChMoleDescription moleTable[] = {
{ASSET_C23_DIALOG_BEAKBOMB_LEARN, ASSET_C24_DIALOG_BEAKBOMB_REFRESHER, 0x0F, ABILITY_1_BEAK_BOMB},
{ASSET_B47_DIALOG_EGGS_LEARN, ASSET_B4B_DIALOG_EGGS_REFRESHER, 0x16, ABILITY_6_EGGS},
{ASSET_B48_DIALOG_BEAKBUSTER_LEARN, ASSET_B4C_DIALOG_BEAKBUSTER_REFRESHER, 0x17, ABILITY_2_BEAK_BUSTER},
@ -44,7 +45,9 @@ struct_core2_52290 D_80367DC4[] = {
};
/* .code */
int func_802D9220(enum level_e level){
// func_802D9220
int chmole_learnedAllLevelAbilities(enum level_e level){
// Checks if all of the level's abilities are learned.
switch (level){
case LEVEL_1_MUMBOS_MOUNTAIN:
return ability_isUnlocked(ABILITY_6_EGGS)
@ -66,30 +69,34 @@ int func_802D9220(enum level_e level){
}
}
enum asset_e func_802D9304(void){
// func_802D9304
enum asset_e chmole_learnedAllLevelAbilitiesDialog(void){
// If the player has learned all game abilities, use "learned all abilities" dialog
// If the player learned all level abilities, use "learned world abilities" dialog
s32 level_id = level_get();
int learned_all_moves = func_802D9220(level_id);
int learned_all_moves = chmole_learnedAllLevelAbilities(level_id);
switch(level_id){
case LEVEL_1_MUMBOS_MOUNTAIN:
return learned_all_moves ? 0xb4e : 0xd38;
return learned_all_moves ? ASSET_B4E_TEXT_BOTTLES_ALL_MM_MOVES_LEARNED : ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
case LEVEL_2_TREASURE_TROVE_COVE:
return learned_all_moves ? 0xa27 : 0xd38;
return learned_all_moves ? ASSET_A27_TEXT_BOTTLES_ALL_TTC_MOVES_LEARNED : ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
case LEVEL_3_CLANKERS_CAVERN:
return learned_all_moves ? 0xd37 : 0xd38;
return learned_all_moves ? ASSET_D37_TEXT_BOTTLES_ALL_CC_MOVES_LEARNED : ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
case LEVEL_4_BUBBLEGLOOP_SWAMP:
return learned_all_moves ? 0xc8a : 0xd38;
return learned_all_moves ? ASSET_C8A_TEXT_BOTTLES_ALL_BGS_MOVES_LEARNED : ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
case LEVEL_5_FREEZEEZY_PEAK:
return learned_all_moves ? 0xc2a : 0xd38;
return learned_all_moves ? ASSET_C2A_TEXT_BOTTLES_ALL_FP_GV_MOVES_LEARNED : ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
case LEVEL_7_GOBIS_VALLEY:
return learned_all_moves ? 0xc2a : 0xd38;
return learned_all_moves ? ASSET_C2A_TEXT_BOTTLES_ALL_FP_GV_MOVES_LEARNED : ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
default:
return 0xd38;
return ASSET_D38_TEXT_BOTTLES_ALL_MOVES_LEARNED;
}
}
int func_802D93EC(void){
// func_802D93EC
int chmole_learnedAllGameAbilities(void){
// Checks if the player has learned all non-Spiral Mountain abilities.
return ability_isUnlocked(ABILITY_6_EGGS)
&& ability_isUnlocked(ABILITY_2_BEAK_BUSTER)
&& ability_isUnlocked(ABILITY_10_TALON_TROT)
@ -135,20 +142,25 @@ void func_802D9600(Actor * this){
this->marker->propPtr->unk8_3 = 0;
}
void func_802D9658(Actor *this){
timed_setStaticCameraToNode(0.0f, D_80367DC4[this->unkF4_8-9].camera_node);
// func_802D9658
void chmole_setStaticCamera(Actor *this){
// Sets the camera to a static camera
timed_setStaticCameraToNode(0.0f, moleTable[this->unkF4_8-9].camera_node);
}
void func_802D9698(ActorMarker *marker, enum asset_e arg1, s32 arg2){
// func_802D9698
void chmole_healthRefill(ActorMarker *marker, enum asset_e arg1, s32 arg2){
// Refills the player's health upon learning a new ability, if needed
// Also releases the camera
Actor *actor = marker_getActor(marker);
if( arg1 == D_80367DC4[actor->unkF4_8-9].learn_text
if( arg1 == moleTable[actor->unkF4_8-9].learn_text
&& item_getCount(ITEM_14_HEALTH) < item_getCount(ITEM_15_HEALTH_TOTAL)
){
func_80311480(ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH, 7, 0, actor->marker, func_802D9698, func_802D9830);
func_80311480(ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH, 7, 0, actor->marker, chmole_healthRefill, chmole_additionalAbilityLearnActions);
}//L802D9738
else if(arg1 == D_80367DC4[actor->unkF4_8-9].learn_text || arg1 == ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH){
func_80311480(func_802D93EC()? 0xa87 : func_802D9304(), 7, 0, actor->marker, func_802D9698, NULL);
else if(arg1 == moleTable[actor->unkF4_8-9].learn_text || arg1 == ASSET_D39_TEXT_BOTTLES_REFILL_HEALTH){
func_80311480(chmole_learnedAllGameAbilities()? 0xa87 : chmole_learnedAllLevelAbilitiesDialog(), 7, 0, actor->marker, chmole_healthRefill, NULL);
}
else{//L802D97BC
if(actor->unk138_24){
@ -166,56 +178,61 @@ void func_802D9698(ActorMarker *marker, enum asset_e arg1, s32 arg2){
}//L802D9820
}
void func_802D9830(ActorMarker *marker, enum asset_e arg1, s32 arg2){
// func_802D9830
void chmole_additionalAbilityLearnActions(ActorMarker *marker, enum asset_e arg1, s32 arg2){
// Performs actions depending on what move is being learned
Actor *actor = marker_getActor(marker);
switch(arg2){
case 1:
case 1: // Stilt Stride
timed_setStaticCameraToNode(0.0f, 0x11);
levelSpecificFlags_set(0x1A, 1);
break;
case 2:
levelSpecificFlags_set(0x1A, 0);
func_802D9658(actor);
chmole_setStaticCamera(actor);
break;
case 3:
case 3: // Turbo Talon Trainer
timed_setStaticCameraToNode(0.0f, 0x29);
levelSpecificFlags_set(0x1A, 1);
break;
case 4:
levelSpecificFlags_set(0x1A, 0);
func_802D9658(actor);
chmole_setStaticCamera(actor);
break;
case 5:
func_803463D4(ITEM_D_EGGS, 50);
case 5: // Egg Firing
item_adjustByDiffWithHud(ITEM_D_EGGS, 50);
break;
case 6:
func_803463D4(ITEM_F_RED_FEATHER, 25);
case 6: // Flight
item_adjustByDiffWithHud(ITEM_F_RED_FEATHER, 25);
break;
case 7:
func_803463D4(ITEM_10_GOLD_FEATHER, 5);
case 7: // Wonderwing
item_adjustByDiffWithHud(ITEM_10_GOLD_FEATHER, 5);
break;
case 8:
case 8: // Refill Health
item_set(ITEM_14_HEALTH, item_getCount(ITEM_15_HEALTH_TOTAL));
break;
case 0xff:
func_802D9658(actor);
chmole_setStaticCamera(actor);
break;
}
}
int func_802D997C(Actor *this){
// func_802D997C
int chmole_learnAbility(Actor *this){
s32 sp2C;
s32 sp28 = 0xe;
if(ability_isUnlocked(D_80367DC4[this->unkF4_8-9].ability)){
// Known Ability: Refresher Dialog
if(ability_isUnlocked(moleTable[this->unkF4_8-9].ability)){
sp28 = 0xf;
sp2C = D_80367DC4[this->unkF4_8-9].refresher_text;
sp2C = moleTable[this->unkF4_8-9].refresher_text;
}//L802D99EC
// New Ability: Learn Dialog & Misc Actions
else{
func_80347A14(0);
this->unk138_24 = 1;
sp2C = D_80367DC4[this->unkF4_8-9].learn_text;
ability_unlock(D_80367DC4[this->unkF4_8-9].ability);
switch(D_80367DC4[this->unkF4_8-9].ability){
sp2C = moleTable[this->unkF4_8-9].learn_text;
ability_unlock(moleTable[this->unkF4_8-9].ability);
switch(moleTable[this->unkF4_8-9].ability){
case ABILITY_9_FLIGHT:
case ABILITY_D_SHOCK_JUMP:
func_8030E6A4(SFX_113_PAD_APPEARS, 0.9f, 32000);
@ -225,7 +242,7 @@ int func_802D997C(Actor *this){
break;
}
}//L802D9A9C
func_80311480(sp2C, sp28, this->position, this->marker, func_802D9698, func_802D9830);
func_80311480(sp2C, sp28, this->position, this->marker, chmole_healthRefill, chmole_additionalAbilityLearnActions);
return TRUE;
}
@ -243,23 +260,29 @@ void func_802D9ADC(Actor *this){
func_8030DD14(this->unk44_31, 2);
func_8030DBB4(this->unk44_31, 1.4f);
sfxsource_setSampleRate(this->unk44_31, 26000);
func_802D9658(this);
chmole_setStaticCamera(this);
func_8028F94C(2, this->position);
}
void func_802D9BD8(Actor *this){
// func_802D9BD8
void chmole_Refresher(Actor *this){
// Plays the scene where Bottles gives the player a refresher on the ability.
subaddie_set_state(this, 5);
func_802D9658(this);
chmole_setStaticCamera(this);
func_8028F94C(2, this->position);
func_802D997C(this);
chmole_learnAbility(this);
}
void func_802D9C1C(Actor *this){
// func_802D9C1C
void chmole_setFacingDirection(Actor *this){
// Sets the actor to always be facing the player
subaddie_set_state_with_direction(this, 3, 0.0001f, 1);
actor_loopAnimation(this);
}
void func_802D9C54(ActorMarker *marker){
// func_802D9C54
void chmole_spawnMolehill(ActorMarker *marker){
// Spawns a molehill for the actor
Actor *actor = marker_getActor(marker);
Actor *other = spawn_child_actor(ACTOR_12C_MOLEHILL, &actor);
f32 pad[1];
@ -275,9 +298,12 @@ void func_802D9C90(Actor *this){
}
}
void func_802D9CBC(Actor *this){
if(ability_isUnlocked(D_80367DC4[this->unkF4_8 - 9].ability)){
func_802D9BD8(this);
// func_802D9CBC
void chmole_startingDialog(Actor *this){
// If the player knows the ability, use refresher function
// Otherwise, set player's position and spawn mole
if(ability_isUnlocked(moleTable[this->unkF4_8 - 9].ability)){
chmole_Refresher(this);
}
else{
if(func_80329530(this, 150)){
@ -290,7 +316,9 @@ void func_802D9CBC(Actor *this){
}
}
void func_802D9D60(Actor *this){
// func_802D9D60
void chmole_update(Actor *this){
// Sets up the initial functions and state for the actor
s32 sp50[6];
f32 sp4C;
f32 pad44[1];
@ -298,6 +326,8 @@ void func_802D9D60(Actor *this){
NodeProp *node_prop;
f32 sp34[3];
// Checks the actor's selector value is between 0x8 and 0x13
// Anything lower is a Spiral Mountain ability, and should use a different actor id
if(this->unkF4_8 < 8 || this->unkF4_8 >= 0x13)
return;
@ -317,6 +347,8 @@ void func_802D9D60(Actor *this){
}//L802D9E34
if(!this->initialized){
// 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
node_prop = func_80304C38(0x372, this);
if(node_prop == NULL){
this->unk38_0 = FALSE;
@ -325,7 +357,8 @@ void func_802D9D60(Actor *this){
this->unk38_0 = TRUE;
nodeprop_getPosition(node_prop, this->unk1C);
}
__spawnQueue_add_1((GenFunction_1)func_802D9C54, reinterpret_cast(s32, this->marker));
// Spawns molehill
__spawnQueue_add_1((GenFunction_1)chmole_spawnMolehill, reinterpret_cast(s32, this->marker));
this->marker->propPtr->unk8_3 = FALSE;
this->marker->collidable = FALSE;
this->initialized = TRUE;
@ -343,19 +376,19 @@ void func_802D9D60(Actor *this){
}
}
}//L802D9F34
func_8024E55C(0, sp50);//get face buttons press counters
func_8024E55C(0, sp50); // get face buttons press counters
switch(this->state){
case 1://L802D9F70
this->yaw_ideal = func_80329784(this);
func_80328FB0(this, 4.0f);
if(func_8028F20C() && func_8028F0D4() && !func_8028EC04()){
if( this->unkF4_8 == 0x12
&& !ability_isUnlocked(D_80367DC4[this->unkF4_8-9].ability)
&& !ability_isUnlocked(moleTable[this->unkF4_8-9].ability)
&& (func_8028ECAC() == 0 || func_8028ECAC() == BSGROUP_8_TROT)
){
player_getPosition(sp34);
if(ml_distance_vec3f(sp34, this->velocity) < this->unk28){
func_802D9CBC(this);
chmole_startingDialog(this);
}
}
else{//L802DA054
@ -364,7 +397,7 @@ void func_802D9D60(Actor *this){
&& func_8028EFC8()
&& sp50[FACE_BUTTON(BUTTON_B)] == 1
){
func_802D9CBC(this);
chmole_startingDialog(this);
}
}
}
@ -379,7 +412,7 @@ void func_802D9D60(Actor *this){
func_8030E2C4(this->unk44_31);
}//L802DA128
if(actor_animationIsAt(this, 0.9999f)){
func_802D9C1C(this);
chmole_setFacingDirection(this);
func_8030DA44(this->unk44_31);
this->unk44_31 = 0;
}
@ -393,7 +426,7 @@ void func_802D9D60(Actor *this){
FUNC_8030E8B4(SFX_C5_TWINKLY_POP, 1.0f, 32000, this->position, 1250, 2500);
}
else if(actor_animationIsAt(this, 0.35f)){//L802DA1EC
func_802D997C(this);
chmole_learnAbility(this);
}
break;
case 3://L802DA210
@ -440,7 +473,8 @@ void func_802D9D60(Actor *this){
}//L802DA488
}
int learnedAllTutorialAbilities(void){
int chmole_learnedAllSpiralMountainAbilities(void){
// Checks if the player has learned all of the Spiral Mountain abilities.
return ability_isUnlocked(ABILITY_F_DIVE)
&& ability_isUnlocked(ABILITY_4_CLAW_SWIPE)
&& ability_isUnlocked(ABILITY_C_ROLL)

View File

@ -14,11 +14,23 @@ s32 D_80365F30[] = {
3, 4, 5, 6,
7, 7, 8, 8
};
ActorInfo D_80365F60 = { 0x58, 0x4E, 0x7DE, 0, NULL, func_802C5A60, func_80326224, func_80325934, 0, 0, 0.0f, 0};
ActorInfo D_80365F84 = { 0x59, 0x4F, 0x7DE, 0, NULL, func_802C5A60, func_80326224, func_80325934, 0, 0, 0.0f, 0};
ActorInfo D_80365F60 = {
0x58, 0x4E, ASSET_7DE_SPRITE_SHOE_SPARKLES,
0, NULL,
func_802C5A60, func_80326224, func_80325934,
0, 0, 0.0f, 0
};
ActorInfo D_80365F84 = {
0x59, 0x4F, ASSET_7DE_SPRITE_SHOE_SPARKLES,
0, NULL,
func_802C5A60, func_80326224, func_80325934,
0, 0, 0.0f, 0
};
/* .code */
void func_802C5A60(Actor *this){
// Spawns a sparkle sprite when touching turbo trainers or wading boots
ActorLocal_Core2_3EAD0 *local = (ActorLocal_Core2_3EAD0*)&this->local;
if(!this->initialized){
switch(this->marker->unk14_20){

View File

@ -163,7 +163,7 @@ static void __chMumbo_textCallback(ActorMarker *caller, enum asset_e text_id, s3
this->unk138_24 = FALSE;
if(this->unk38_31 != 0){
func_8025A6EC(COMUSIC_2B_DING_B, 28000);
func_803463D4(ITEM_1C_MUMBO_TOKEN, -this->unk38_31);
item_adjustByDiffWithHud(ITEM_1C_MUMBO_TOKEN, -this->unk38_31);
this->unk38_31 = 0;
}
subaddie_set_state_with_direction(this, 5, 0.0f, 1);
@ -176,7 +176,7 @@ static void __chMumbo_textCallback(ActorMarker *caller, enum asset_e text_id, s3
this->unk10_12 = 1;
if(this->unk38_31){
func_8025A6EC(COMUSIC_2B_DING_B, 28000);
func_803463D4(ITEM_1C_MUMBO_TOKEN, -this->unk38_31);
item_adjustByDiffWithHud(ITEM_1C_MUMBO_TOKEN, -this->unk38_31);
}
case ASSET_DAE_DIALOG_MUMBO_TREX_START: //L802D1B48
@ -224,7 +224,7 @@ void chMumbo_update(Actor *this) {
if( !func_803203FC(1)
&& !func_803203FC(UNKFLAGS1_1F_IN_CHARACTER_PARADE)
&& map_get() != MAP_7A_GL_CRYPT) {
func_803463D4(ITEM_1C_MUMBO_TOKEN, 0);
item_adjustByDiffWithHud(ITEM_1C_MUMBO_TOKEN, 0);
}
if(!this->initialized){
this->initialized = TRUE;
@ -351,7 +351,7 @@ void chMumbo_update(Actor *this) {
} else {
if (this->unk38_31) {
func_8025A6EC(SFX_2B_BULL_MOO_1, 28000);
func_803463D4(ITEM_1C_MUMBO_TOKEN, -this->unk38_31);
item_adjustByDiffWithHud(ITEM_1C_MUMBO_TOKEN, -this->unk38_31);
}
subaddie_set_state(this, 5);
}

View File

@ -165,5 +165,5 @@ void func_8028DF48(enum actor_e actor_id){
}
void func_8028DFB8(enum actor_e actor_id){
func_803463D4(carriedobj_actorId2ItemId(actor_id), 0);
item_adjustByDiffWithHud(carriedobj_actorId2ItemId(actor_id), 0);
}

File diff suppressed because it is too large Load Diff

View File

@ -11,59 +11,59 @@ extern void chOverlayPressStart_spawn(s32, s32);
extern void chOverlayPressStart_func_802DCDC0(s32, s32);
extern void func_8031D06C(s32, s32);
extern void func_8031D09C(s32, s32);
extern void func_8031D11C(s32, s32);
extern void func_8031D140(s32, s32);
extern void func_8031D164(s32, s32);
extern void func_8031D188(s32, s32);
extern void func_8031D1AC(s32, s32);
extern void func_8031D1D0(s32, s32);
extern void func_8031D1F4(s32, s32);
extern void func_8031DD10(s32, s32);
extern void func_8031DD44(s32, s32);
extern void func_8031DE2C(s32, s32);
extern void func_8031DE50(s32, s32);
extern void func_8031E818(s32, s32);
extern void func_8031E83C(s32, s32);
extern void func_8031E860(s32, s32);
extern void func_8031E884(s32, s32);
extern void func_8031E8A8(s32, s32);
extern void func_8031E8CC(s32, s32);
extern void func_8031E8F0(s32, s32);
extern void func_8031E914(s32, s32);
extern void func_8031E938(s32, s32);
extern void func_8031EA7C(s32, s32);
extern void func_8031EAA0(s32, s32);
extern void func_8031EAC4(s32, s32);
extern void func_8031EAE8(s32, s32);
extern void func_8031EC98(s32, s32);
extern void func_8031ECBC(s32, s32);
extern void func_8031ECE0(s32, s32);
extern void func_8031ED04(s32, s32);
extern void func_8031ED28(s32, s32);
extern void func_8031ED4C(s32, s32);
extern void func_8031ED70(s32, s32);
extern void func_8031ED94(s32, s32);
extern void func_8031EDB8(s32, s32);
extern void func_8031EDDC(s32, s32);
extern void func_8031EE00(s32, s32);
extern void func_8031EE24(s32, s32);
extern void func_8031EEFC(s32, s32);
extern void warp_mmEnterMumbosHut(s32, s32);
extern void warp_mmExitMumbosHut(s32, s32);
extern void warp_mmEnterTickersTowerLower(s32, s32);
extern void warp_mmExitTickersTowerLower(s32, s32);
extern void warp_mmEnterTickersTowerUpper(s32, s32);
extern void warp_mmExitTickersTowerUpper(s32, s32);
extern void warp_csNintendoLogo(s32, s32);
extern void warp_bgsEnterTanktupConditional(s32, s32);
extern void warp_ttcEnterNippersShell(s32, s32);
extern void warp_gvEnterJinxy(s32, s32);
extern void warp_gvExitJinxy(s32, s32);
extern void warp_bgsExitMumbosHut(s32, s32);
extern void warp_bgsEnterMumbosHut(s32, s32);
extern void warp_ttcEnterLevel(s32, s32);
extern void warp_ccEnterLevel(s32, s32);
extern void warp_bgsEnterLevel(s32, s32);
extern void warp_gvEnterLevel(s32, s32);
extern void warp_mmmEnterLevel(s32, s32);
extern void warp_rbbEnterLevel(s32, s32);
extern void warp_ttcExitNipper(s32, s32);
extern void warp_ccwEnterSpringWhipcrackRoom(s32, s32);
extern void warp_ccwEnterSummerWhipcrackRoom(s32, s32);
extern void warp_ccwEnterAutumnWhipcrackRoom(s32, s32);
extern void warp_ccwEnterWinterWhipcrackRoom(s32, s32);
extern void warp_ccwEnterWinterAcornStorage(s32, s32);
extern void warp_ccwEnterAutumnFloodedAttic(s32, s32);
extern void warp_ccwEnterWinterFloodedAttic(s32, s32);
extern void warp_ccwExitWinterAcornStorage(s32, s32);
extern void warp_ccwExitAutumnFloodedAttic(s32, s32);
extern void warp_ccwExitWinterFloodedAttic(s32, s32);
extern void warp_fpEnterMumbosHut(s32, s32);
extern void warp_fpEnterBoggyIgloo(s32, s32);
extern void warp_fpEnterXmasTree(s32, s32);
extern void warp_fpExitMumbosHut(s32, s32);
extern void warp_fpExitBoggyIgloo(s32, s32);
extern void warp_fpExitXmasTree(s32, s32);
extern void warp_lairEnterMMLobbyFromMMLevel(s32, s32);
extern void func_8031EF20(s32, s32);
extern void func_8031EF44(s32, s32);
extern void func_8031EF68(s32, s32);
extern void func_8031EF8C(s32, s32);
extern void func_8031EFB0(s32, s32);
extern void func_8031EFD4(s32, s32);
extern void func_8031EFF8(s32, s32);
extern void func_8031F01C(s32, s32);
extern void func_8031F040(s32, s32);
extern void func_8031F064(s32, s32);
extern void func_8031F088(s32, s32);
extern void func_8031F0AC(s32, s32);
extern void func_8031F13C(s32, s32);
extern void func_8031F160(s32, s32);
extern void func_8031F57C(s32, s32);
extern void func_8031F5A0(s32, s32);
extern void warp_lairEnterPuzzlesRoomFromMMLobby(s32, s32);
extern void warp_lairEnterPointingStatueRoomFromGVLobbyNoteDoor(s32, s32);
extern void warp_lairEnterPuzzlesRoomFromCCWPuzzleRoom(s32, s32);
extern void warp_lairEnterCCWPuzzleRoomFromPuzzlesRoom(s32, s32);
extern void warp_lairEnterCCWPuzzleRoomFromRedCauldronRoom(s32, s32);
extern void warp_lairEnterRedCauldronRoomFromCCWPuzzleRoom(s32, s32);
extern void warp_lairEnterCCWPuzzleRoomFromTTCLobby(s32, s32);
extern void warp_lairEnterTTCLobbyFromCCWPuzzleRoom(s32, s32);
extern void warp_lairEnterCCWPuzzleRoomFromCCLobby(s32, s32);
extern void warp_lairEnterCCLobbyFromCCWPuzzleRoom(s32, s32);
extern void warp_lairEnterCCLobbyFromCCLevel(s32, s32);
extern void warp_lairEnterCCWPuzzleFromPointingGruntyStatueRoom(s32, s32);
extern void warp_lairEnterPointingGruntyStatueFromCCWPuzzleRoom(s32, s32);
extern void warp_lairEnterRBBLobbyFromRBBPuzzleRoom(s32, s32);
extern void warp_lairEnterRBBLobbyFromMMMPuzzleRoom(s32, s32);
extern void func_80334430(s32, s32);
extern void func_80363388(s32, s32);
extern void func_80386744(s32, s32);
@ -77,110 +77,110 @@ extern void func_8038A150(s32, s32);
extern void func_8038F10C(s32, s32);
extern void func_8038F130(s32, s32);
extern void func_8031EE48(s32, s32);
extern void func_8031EE6C(s32, s32);
extern void func_8031EE90(s32, s32);
extern void func_8031EED8(s32, s32);
extern void func_8031EEB4(s32, s32);
extern void func_8031EB0C(s32, s32);
extern void func_8031EB30(s32, s32);
extern void func_8031EB54(s32, s32);
extern void func_8031EB78(s32, s32);
extern void func_8031D27C(s32, s32);
extern void func_8031D2F4(s32, s32);
extern void func_8031D2B4(s32, s32);
extern void func_8031D218(s32, s32);
extern void func_8031D23C(s32, s32);
extern void func_8031D334(s32, s32);
extern void func_8031D358(s32, s32);
extern void func_8031D37C(s32, s32);
extern void func_8031D3A0(s32, s32);
extern void func_8031D3C4(s32, s32);
extern void func_8031DCC8(s32, s32);
extern void func_8031DCEC(s32, s32);
extern void func_8031D3E8(s32, s32);
extern void func_8031D40C(s32, s32);
extern void func_8031D430(s32, s32);
extern void func_8031D454(s32, s32);
extern void func_8031D478(s32, s32);
extern void func_8031D49C(s32, s32);
extern void func_8031D4C0(s32, s32);
extern void func_8031D4E4(s32, s32);
extern void warp_lairEnterGVLobbyFromPointingStatueRoom(s32, s32);
extern void warp_lairEnterMMLobbyFromPuzzlesRoom(s32, s32);
extern void warp_lairEnterFPLobbyFromGVLobby(s32, s32);
extern void warp_lairEnterGVLobbyFromGVLevel(s32, s32);
extern void warp_lairEnterGVLobbyFromFPLobby(s32, s32);
extern void warp_ccwExitSpringWhipcrackRoom(s32, s32);
extern void warp_ccwExitSummerWhipcrackRoom(s32, s32);
extern void warp_ccwExitAutumnWhipcrackRoom(s32, s32);
extern void warp_ccwExitWinterWhipcrackRoom(s32, s32);
extern void warp_gvEnterMatchingPyramid(s32, s32);
extern void warp_gvEnterMazePyramid(s32, s32);
extern void warp_gvEnterWaterPyramidUpper(s32, s32);
extern void warp_gvEnterWaterPyramidLower(s32, s32);
extern void warp_gvEnterRubeePyramid(s32, s32);
extern void warp_gvExitMatchingPyramid(s32, s32);
extern void warp_gvExitMazePyramid(s32, s32);
extern void warp_gvExitWaterPyramidLower(s32, s32);
extern void warp_gvExitRubeePyramid(s32, s32);
extern void warp_bgsEnterTanktup(s32, s32);
extern void warp_bgsEnterMrVileRightNostril(s32, s32);
extern void warp_bgsEnterMrVileLeftNostril(s32, s32);
extern void warp_bgsExitTanktup(s32, s32);
extern void warp_bgsExitVileRightNostril(s32, s32);
extern void warp_bgsExitVileLeftNostril(s32, s32);
extern void warp_ttcEnterSandcastle(s32, s32);
extern void warp_ttcStairAlcoveDown(s32, s32);
extern void warp_ttcStairAlcoveUp(s32, s32);
extern void warp_ttcEnterBlubbersShipUpper(s32, s32);
extern void warp_ttcEnterBlubbersShipSide(s32, s32);
extern void func_8031D628(s32, s32);
extern void func_8031D508(s32, s32);
extern void func_8031D52C(s32, s32);
extern void func_8031F0D0(s32, s32);
extern void warp_ttcExitLighthouseTop(s32, s32);
extern void warp_ttcExitSandcastle(s32, s32);
extern void warp_fpEnterLevel(s32, s32);
extern void func_8031FAB4(s32, s32);
extern void func_8031D598(s32, s32);
extern void func_8031D5BC(s32, s32);
extern void func_8031FA6C(s32, s32);
extern void warp_ttcExitBlubbersShipUpper(s32, s32);
extern void warp_ttcExitBlubbersShipSide(s32, s32);
extern void warp_lairEnterDingpotRoomFromFurnaceFun(s32, s32);
extern void func_8031FA90(s32, s32);
extern void func_8031D670(s32, s32);
extern void func_8031D694(s32, s32);
extern void func_8031D6B8(s32, s32);
extern void func_8031D6DC(s32, s32);
extern void warp_mmmEnterDiningRoomDoor(s32, s32);
extern void warp_mmmEnterDiningRoomChimney(s32, s32);
extern void warp_mmmEnterWellTop(s32, s32);
extern void warp_mmmEnterTumblarShed(s32, s32);
extern void func_8031DAE0(s32, s32);
extern void func_8031DA84(s32, s32);
extern void warp_mmmEnterChurchSecretRoom(s32, s32);
extern void func_8031DC10(s32, s32);
extern void func_8031DC68(s32, s32);
extern void func_8031D700(s32, s32);
extern void func_8031D724(s32, s32);
extern void func_8031D748(s32, s32);
extern void func_8031D76C(s32, s32);
extern void func_8031D790(s32, s32);
extern void func_8031D7B4(s32, s32);
extern void func_8031D7D8(s32, s32);
extern void func_8031D7FC(s32, s32);
extern void warp_mmmEnterRainBarrelBottom(s32, s32);
extern void warp_mmmEnterCellar(s32, s32);
extern void warp_mmmEnterRedFeatherRoom(s32, s32);
extern void warp_mmmEnterBlueEggRoom(s32, s32);
extern void warp_mmmEnterNoteRoom(s32, s32);
extern void warp_mmmEnterBrokenFloorboardRoom(s32, s32);
extern void warp_mmmEnterBedroom(s32, s32);
extern void warp_mmmEnterBathroomWindow(s32, s32);
extern void warp_mmmExitDiningRoomDoor(s32, s32);
extern void func_8031D820(s32, s32);
extern void func_8031D844(s32, s32);
extern void func_8031D868(s32, s32);
extern void func_8031D88C(s32, s32);
extern void func_8031D8B0(s32, s32);
extern void warp_mmmExitWellTop(s32, s32);
extern void warp_mmmExitTumblarShed(s32, s32);
extern void warp_mmmExitChurchFrontDoor(s32, s32);
extern void warp_mmmExitChurchSecretRoom(s32, s32);
extern void func_8031D8D4(s32, s32);
extern void func_8031D8F8(s32, s32);
extern void func_8031D91C(s32, s32);
extern void func_8031D940(s32, s32);
extern void func_8031D964(s32, s32);
extern void func_8031D988(s32, s32);
extern void func_8031D9AC(s32, s32);
extern void func_8031D9D0(s32, s32);
extern void func_8031D9F4(s32, s32);
extern void func_8031DA18(s32, s32);
extern void func_8031DA3C(s32, s32);
extern void func_8031DA60(s32, s32);
extern void func_8031DB88(s32, s32);
extern void func_8031DD78(s32, s32);
extern void func_8031DD9C(s32, s32);
extern void func_8031DDC0(s32, s32);
extern void func_8031DDE4(s32, s32);
extern void func_8031DE08(s32, s32);
extern void func_8031DE74(s32, s32);
extern void func_8031DE98(s32, s32);
extern void func_8031DEBC(s32, s32);
extern void func_8031DF04(s32, s32);
extern void func_8031DF28(s32, s32);
extern void func_8031DF4C(s32, s32);
extern void func_8031DEE0(s32, s32);
extern void func_8031DF70(s32, s32);
extern void func_8031DF94(s32, s32);
extern void func_8031DFB8(s32, s32);
extern void func_8031DFDC(s32, s32);
extern void func_8031E000(s32, s32);
extern void func_8031E024(s32, s32);
extern void func_8031E048(s32, s32);
extern void func_8031E06C(s32, s32);
extern void func_8031E090(s32, s32);
extern void func_8031E0B4(s32, s32);
extern void func_8031E0D8(s32, s32);
extern void func_8031E0FC(s32, s32);
extern void func_8031E120(s32, s32);
extern void func_8031E144(s32, s32);
extern void func_8031E168(s32, s32);
extern void func_8031E18C(s32, s32);
extern void func_8031E1B0(s32, s32);
extern void func_8031E1D4(s32, s32);
extern void func_8031E2B8(s32, s32);
extern void func_8031E2E0(s32, s32);
extern void warp_mmmExitRainBarrelBottom(s32, s32);
extern void warp_mmmExitCellar(s32, s32);
extern void warp_mmmExitRedFeatherRoom(s32, s32);
extern void warp_mmmExitBlueEggRoom(s32, s32);
extern void warp_mmmExitBathroomWindow(s32, s32);
extern void warp_mmmExitBrokenFloorboardRoom(s32, s32);
extern void warp_mmmExitBedroom(s32, s32);
extern void warp_mmmExitNoteRoom(s32, s32);
extern void warp_mmmChurchTowerUp(s32, s32);
extern void warp_mmmChurchTowerDown(s32, s32);
extern void warp_mmmExitMumbosHut(s32, s32);
extern void warp_mmmEnterMumbosHut(s32, s32);
extern void warp_ccExitWonderwingRoom(s32, s32);
extern void warp_ccEnterClankerBelly(s32, s32);
extern void warp_ccEnterClankerMouth(s32, s32);
extern void warp_ccEnterWonderwingRoom(s32, s32);
extern void warp_mmEnterLevel(s32, s32);
extern void warp_rbbEnterCaptainsRoomWindow(s32, s32);
extern void warp_rbbEnterCabinRoomWindow(s32, s32);
extern void warp_rbbEnterEngineRoomPipe(s32, s32);
extern void warp_rbbEnterKitchenPipe(s32, s32);
extern void warp_rbbEnterNavigationRoomWindow(s32, s32);
extern void warp_rbbEnterBoomBoxPipe(s32, s32);
extern void warp_rbbEnterEngineRoomDoor(s32, s32);
extern void warp_rbbEnterChumpWarehouseWindow(s32, s32);
extern void warp_rbbEnterBoatRoom(s32, s32);
extern void warp_rbbEnterChompaContainer(s32, s32);
extern void warp_rbbEnterSeamanGrublinContainer(s32, s32);
extern void warp_rbbEnterBoomBoxContainer(s32, s32);
extern void warp_rbbExitCaptainsRoomWindow(s32, s32);
extern void warp_rbbExitCabinRoomWindow(s32, s32);
extern void warp_rbbExitEngineRoomPipe(s32, s32);
extern void warp_rbbExitKitchenPipe(s32, s32);
extern void warp_rbbExitNavigationRoomWindow(s32, s32);
extern void warp_rbbExitBoomBoxPipe(s32, s32);
extern void warp_rbbExitEngineRoomDoor(s32, s32);
extern void warp_rbbExitBoatRoom(s32, s32);
extern void warp_rbbExitChompaContainer(s32, s32);
extern void warp_rbbExitSeamanGrublinContainer(s32, s32);
extern void warp_rbbExitBoomBoxContainer(s32, s32);
extern void warp_rbbExitBossBoomBoxRoom(s32, s32);
extern void warp_rbbEnterBossBoomBoxRoom(s32, s32);
extern void warp_rbbEnterChumpWarehouseDoor(s32, s32);
extern void warp_rbbExitChumpWarehouseDoor(s32, s32);
extern void func_8031E308(s32, s32);
extern void func_8031E32C(s32, s32);
extern void func_8031E350(s32, s32);
@ -208,86 +208,86 @@ extern void func_8031E644(s32, s32);
extern void func_8031E668(s32, s32);
extern void func_8031E68C(s32, s32);
extern void func_8031E6B0(s32, s32);
extern void func_8031E6D4(s32, s32);
extern void func_8031E6F8(s32, s32);
extern void func_8031E71C(s32, s32);
extern void func_8031E740(s32, s32);
extern void func_8031E764(s32, s32);
extern void func_8031E788(s32, s32);
extern void func_8031E7AC(s32, s32);
extern void func_8031E7D0(s32, s32);
extern void func_8031E7F4(s32, s32);
extern void func_8031E9EC(s32, s32);
extern void func_8031EA10(s32, s32);
extern void func_8031EA34(s32, s32);
extern void func_8031EA58(s32, s32);
extern void func_8031E95C(s32, s32);
extern void func_8031E980(s32, s32);
extern void func_8031E9A4(s32, s32);
extern void func_8031E9C8(s32, s32);
extern void func_8031EB9C(s32, s32);
extern void func_8031EBC0(s32, s32);
extern void func_8031EBE4(s32, s32);
extern void func_8031EC08(s32, s32);
extern void func_8031EC2C(s32, s32);
extern void func_8031EC50(s32, s32);
extern void func_8031EC74(s32, s32);
extern void warp_ccwExitWinterToHub(s32, s32);
extern void warp_ccwExitSpringToHub(s32, s32);
extern void warp_ccwExitSummerToHub(s32, s32);
extern void warp_ccwExitAutumnToHub(s32, s32);
extern void warp_ccwEnterWinter(s32, s32);
extern void warp_ccwEnterSpring(s32, s32);
extern void warp_ccwEnterSummer(s32, s32);
extern void warp_ccwEnterAutumn(s32, s32);
extern void warp_gvExitSandybuttMazeBack(s32, s32);
extern void warp_ttcExitSpringMumbosHut(s32, s32);
extern void warp_ttcExitSummerMumbosHut(s32, s32);
extern void warp_ttcExitAutumnMumbosHut(s32, s32);
extern void warp_ttcExitWinterMumbosHut(s32, s32);
extern void warp_ttcEnterSpringMumbosHut(s32, s32);
extern void warp_ttcEnterSummerMumbosHut(s32, s32);
extern void warp_ttcEnterAutumnMumbosHut(s32, s32);
extern void warp_ttcEnterWinterMumbosHut(s32, s32);
extern void warp_ccwEnterSpringNabnutDoor(s32, s32);
extern void warp_ccwEnterSummerNabnutDoor(s32, s32);
extern void warp_ccwEnterAutumnNabnutDoor(s32, s32);
extern void warp_ccwExitSpringNabnutDoor(s32, s32);
extern void warp_ccwExitSummerNabnutDoor(s32, s32);
extern void warp_ccwExitAutumnNabnutDoor(s32, s32);
extern void warp_ccwExitWinterNabnutDoor(s32, s32);
extern void func_8031F0F4(s32, s32);
extern void func_8031F118(s32, s32);
extern void func_8031F184(s32, s32);
extern void func_8031FA00(s32, s32);
extern void func_8031F558(s32, s32);
extern void func_8031F314(s32, s32);
extern void func_8031F2CC(s32, s32);
extern void func_8031F2F0(s32, s32);
extern void func_8031F25C(s32, s32);
extern void func_8031F294(s32, s32);
extern void func_8031F214(s32, s32);
extern void func_8031F238(s32, s32);
extern void func_8031F1A8(s32, s32);
extern void func_8031F1CC(s32, s32);
extern void func_8031F1F0(s32, s32);
extern void func_8031F338(s32, s32);
extern void func_8031F35C(s32, s32);
extern void func_8031F380(s32, s32);
extern void func_8031F3A4(s32, s32);
extern void func_8031F3C8(s32, s32);
extern void func_8031F3EC(s32, s32);
extern void func_8031F410(s32, s32);
extern void func_8031F520(s32, s32);
extern void func_8031F4E8(s32, s32);
extern void func_8031F434(s32, s32);
extern void func_8031F458(s32, s32);
extern void func_8031F47C(s32, s32);
extern void func_8031F4A0(s32, s32);
extern void func_8031F4C4(s32, s32);
extern void func_8031F5C4(s32, s32);
extern void func_8031F5E8(s32, s32);
extern void warp_lairEnterGVPuzzleRoomFromMMMLobby(s32, s32);
extern void warp_ttcExitSharkfoodIsland(s32, s32);
extern void warp_lairEnterRBBLobbyFromRBBLevel(s32, s32);
extern void warp_lairEnterBGSLobbyFromBGSLevel(s32, s32);
extern void warp_fpExitWozzasCave(s32, s32);
extern void warp_fpEnterWozzasCave(s32, s32);
extern void warp_lairEnterCryptFromMMMLobby(s32, s32);
extern void warp_lairEnterMMMLobbyFromCrypt(s32, s32);
extern void warp_lairEnterPointingGruntyStatueFromBGSLobby(s32, s32);
extern void warp_lairEnterBGSLobbyFromPointingGruntyStatueRoom(s32, s32);
extern void warp_lairEnterMMMLobbyFromGVPuzzleRoom(s32, s32);
extern void warp_lairEnterGVPuzzleRoomFromFPLobby(s32, s32);
extern void warp_lairFPLobbyFromGVPuzzleRoom(s32, s32);
extern void warp_lairEnter640NoteDoorRoomFromFPLobby(s32, s32);
extern void warp_lairEnter640NoteDoorRoomFromCCWLobbyTokenEntrance(s32, s32);
extern void warp_lairEnter640NoteDoorRoomFromCCWLobbyDoorEntrance(s32, s32);
extern void warp_lairEnter640NoteDoorRoomFromRBBLobby(s32, s32);
extern void warp_lairRBBLobbyFrom640NoteDoorRoom(s32, s32);
extern void warp_lairCCWLobbyFrom640NoteDoorRoomDoorEntrance(s32, s32);
extern void warp_lairCCWLobbyFrom640NoteDoorRoomTokenEntrance(s32, s32);
extern void warp_lairEnterFPLobbyFrom640NoteDoorRoom(s32, s32);
extern void warp_ccwEnterSpringZubbaHive(s32, s32);
extern void warp_ccwEnterSummerZubbaHive(s32, s32);
extern void warp_ccwEnterAutumnZubbaHive(s32, s32);
extern void warp_ccwExitSpringZubbaHive(s32, s32);
extern void warp_ccwExitSummerZubbaHive(s32, s32);
extern void warp_ccwExitAutumnZubbaHive(s32, s32);
extern void warp_lairEnterMMMPuzzleFromRBBLobby(s32, s32);
extern void warp_lairEnterRBBPuzzleFromRBBLobby(s32, s32);
extern void func_8031FB6C(s32, s32);
extern void func_8031F60C(s32, s32);
extern void func_8031F630(s32, s32);
extern void func_8031F654(s32, s32);
extern void func_8031F678(s32, s32);
extern void func_8031F69C(s32, s32);
extern void func_8031F6C0(s32, s32);
extern void func_8031F6E4(s32, s32);
extern void func_8031F708(s32, s32);
extern void func_8031F72C(s32, s32);
extern void func_8031F764(s32, s32);
extern void func_8031F79C(s32, s32);
extern void func_8031F7D4(s32, s32);
extern void func_8031F878(s32, s32);
extern void func_8031F8C0(s32, s32);
extern void func_8031F8E4(s32, s32);
extern void func_8031F908(s32, s32);
extern void func_8031F92C(s32, s32);
extern void func_8031F950(s32, s32);
extern void func_8031F974(s32, s32);
extern void func_8031F998(s32, s32);
extern void func_8031F9BC(s32, s32);
extern void func_8031FA24(s32, s32);
extern void func_8031FA48(s32, s32);
extern void func_8031FB14(s32, s32);
extern void warp_lairEnterCCWLobbyFromFurnaceFunPath(s32, s32);
extern void warp_lairEnterFurnaceFunPathFromCCWLobby(s32, s32);
extern void warp_smEnterBanjosHouse(s32, s32);
extern void warp_smExitBanjosHouse(s32, s32);
extern void warp_lairEnterMMLobbyFromSMLevel(s32, s32);
extern void warp_smExitLair(s32, s32);
extern void warp_rbbExitAnchorRoom(s32, s32);
extern void warp_rbbEnterAnchorRoom(s32, s32);
extern void warp_mmmEnterWellBottom(s32, s32);
extern void warp_mmmExitWellBottom(s32, s32);
extern void warp_mmmEnterBathroomFromLoggo(s32, s32);
extern void warp_mmmEnterLoggo(s32, s32);
extern void warp_ccwEnterLevel(s32, s32);
extern void warp_ccwEnterSpringNabnutWindow(s32, s32);
extern void warp_ccwEnterSummerNabnutWindow(s32, s32);
extern void warp_ccwEnterAutumnNabnutWindow(s32, s32);
extern void warp_ccwEnterWinterNabnutWindow(s32, s32);
extern void warp_ccwExitSpringNabnutWindow(s32, s32);
extern void warp_ccwExitSummerNabnutWindow(s32, s32);
extern void warp_ccwExitAutumnNabnutWindow(s32, s32);
extern void warp_ccwExitWinterNabnutWindow(s32, s32);
extern void warp_gvEnterSNSChamper(s32, s32);
extern void warp_gvExitSNSChamper(s32, s32);
extern void warp_lairEnterLairFromSMLevel(s32, s32);
extern void func_802C1674(s32, s32);
extern void func_802C169C(s32, s32);
@ -315,81 +315,81 @@ typedef void (*Method_core2_AD110)(s32, s32);
/* .data */
Method_core2_AD110 D_8036F980[] = {
func_80388BEC, func_80334430, func_80386744, func_80386744,
func_80386744, func_8031DE2C, func_8031DE50, func_8038F10C,
func_8038F130, func_8031E83C, func_8031E818, func_8031E938,
func_8031E860, func_8031E884, func_8031E8A8, func_8031E8CC,
func_8031E8F0, func_8031E914, func_8031EA7C, func_8031EAA0,
func_8031EAC4, func_8031EAE8, func_8031D11C, func_8031D140,
func_8031D164, func_8031D188, func_8031D1AC, func_8031D1D0,
func_8031D1F4, func_8031D09C, func_8031D06C, func_80334430,
func_80334430, func_80334430, func_8031F13C, func_8031F160,
func_8031F0AC, func_8031F088, func_8031F064, func_8031F01C,
func_8031F040, func_8031EC98, func_8031ECBC, func_8031ECE0,
func_8031ED04, func_8031ED28, func_8031ED4C, func_80388C00,
func_80386744, warp_gvEnterJinxy, warp_gvExitJinxy, func_8038F10C,
func_8038F130, warp_bgsEnterMumbosHut, warp_bgsExitMumbosHut, warp_ttcExitNipper,
warp_ttcEnterLevel, warp_ccEnterLevel, warp_bgsEnterLevel, warp_gvEnterLevel,
warp_mmmEnterLevel, warp_rbbEnterLevel, warp_ccwEnterSpringWhipcrackRoom, warp_ccwEnterSummerWhipcrackRoom,
warp_ccwEnterAutumnWhipcrackRoom, warp_ccwEnterWinterWhipcrackRoom, warp_mmEnterMumbosHut, warp_mmExitMumbosHut,
warp_mmEnterTickersTowerLower, warp_mmExitTickersTowerLower, warp_mmEnterTickersTowerUpper, warp_mmExitTickersTowerUpper,
warp_csNintendoLogo, func_8031D09C, func_8031D06C, func_80334430,
func_80334430, func_80334430, warp_lairEnterCCWPuzzleFromPointingGruntyStatueRoom, warp_lairEnterPointingGruntyStatueFromCCWPuzzleRoom,
warp_lairEnterCCLobbyFromCCLevel, warp_lairEnterCCLobbyFromCCWPuzzleRoom, warp_lairEnterCCWPuzzleRoomFromCCLobby, warp_lairEnterCCWPuzzleRoomFromTTCLobby,
warp_lairEnterTTCLobbyFromCCWPuzzleRoom, warp_ccwEnterWinterAcornStorage, warp_ccwEnterAutumnFloodedAttic, warp_ccwEnterWinterFloodedAttic,
warp_ccwExitWinterAcornStorage, warp_ccwExitAutumnFloodedAttic, warp_ccwExitWinterFloodedAttic, func_80388C00,
func_80388C28, func_80388C50, CC_func_80388C78, func_80334430,
func_80334430, func_80334430, func_802DC748, func_802DC780,
func_8031F57C, func_8031F5A0, func_8031EFD4, func_8031EFF8,
func_8031EF8C, func_8031EFB0, func_8031EF68, func_8031EF44,
func_8031ED70, func_8031ED94, func_8031EDB8, func_8031EDDC,
func_8031EE00, func_8031EE24, func_8031DD10, func_8031DD44,
warp_lairEnterRBBLobbyFromRBBPuzzleRoom, warp_lairEnterRBBLobbyFromMMMPuzzleRoom, warp_lairEnterCCWPuzzleRoomFromRedCauldronRoom, warp_lairEnterRedCauldronRoomFromCCWPuzzleRoom,
warp_lairEnterPuzzlesRoomFromCCWPuzzleRoom, warp_lairEnterCCWPuzzleRoomFromPuzzlesRoom, warp_lairEnterPointingStatueRoomFromGVLobbyNoteDoor, warp_lairEnterPuzzlesRoomFromMMLobby,
warp_fpEnterMumbosHut, warp_fpEnterBoggyIgloo, warp_fpEnterXmasTree, warp_fpExitMumbosHut,
warp_fpExitBoggyIgloo, warp_fpExitXmasTree, warp_bgsEnterTanktupConditional, warp_ttcEnterNippersShell,
func_80363388, func_8038A0E4, func_8038A150, func_80334430,
chOverlayPressStart_spawn, chOverlayPressStart_func_802DCDC0, func_802DC528, func_802DC560,
func_8031EF20, func_8031EEFC, func_80334430, func_8031EED8,
func_8031EEB4, func_8031EE90, func_8031EE6C, func_8031EE48,
func_8031EB0C, func_8031EB30, func_8031EB54, func_8031EB78,
func_8031D27C, func_8031D2F4, func_8031D2B4, func_8031D218,
func_8031D23C, func_8031D334, func_8031D358, func_8031D37C,
func_8031D3A0, func_8031D3C4, func_8031DCC8, func_8031DCEC,
func_8031D3E8, func_8031D40C, func_8031D430, func_8031D454,
func_8031D478, func_8031D49C, func_8031D4C0, func_8031D4E4,
func_8031D628, func_8031D508, func_8031D52C, func_8031F0D0,
func_8031FAB4, func_8031D598, func_8031D5BC, func_8031FA6C,
func_8031FA90, func_8031D670, func_8031D694, func_8031D6B8,
func_8031D6DC, func_8031DAE0, func_8031DA84, func_8031DC10,
func_8031DC68, func_8031D700, func_8031D724, func_8031D748,
func_8031D76C, func_8031D790, func_8031D7B4, func_8031D7D8,
func_8031D7FC, func_8031D820, func_8031D844, func_8031D868,
func_8031D88C, func_8031D8B0, func_8031D8D4, func_8031D8F8,
func_8031D91C, func_8031D940, func_8031D964, func_8031D988,
func_8031D9AC, func_8031D9D0, func_8031D9F4, func_8031DA18,
func_8031DA3C, func_8031DA60, func_8031DB88, func_8031DD78,
func_8031DD9C, func_8031DDC0, func_8031DDE4, func_8031DE08,
func_8031DE74, func_8031DE98, func_8031DEBC, func_8031DF04,
func_8031DF28, func_8031DF4C, func_8031DEE0, func_8031DF70,
func_8031DF94, func_8031DFB8, func_8031DFDC, func_8031E000,
func_8031E024, func_8031E048, func_8031E06C, func_8031E090,
func_8031E0B4, func_8031E0D8, func_8031E0FC, func_8031E120,
func_8031E144, func_8031E168, func_8031E18C, func_8031E1B0,
func_8031E1D4, func_8031E2B8, func_8031E2E0, func_8031E308,
func_8031EF20, warp_lairEnterMMLobbyFromMMLevel, func_80334430, warp_lairEnterGVLobbyFromGVLevel,
warp_lairEnterGVLobbyFromFPLobby, warp_lairEnterFPLobbyFromGVLobby, warp_lairEnterMMLobbyFromPuzzlesRoom, warp_lairEnterGVLobbyFromPointingStatueRoom,
warp_ccwExitSpringWhipcrackRoom, warp_ccwExitSummerWhipcrackRoom, warp_ccwExitAutumnWhipcrackRoom, warp_ccwExitWinterWhipcrackRoom,
warp_gvEnterMatchingPyramid, warp_gvEnterMazePyramid, warp_gvEnterWaterPyramidUpper, warp_gvEnterWaterPyramidLower,
warp_gvEnterRubeePyramid, warp_gvExitMatchingPyramid, warp_gvExitMazePyramid, warp_gvExitWaterPyramidLower,
warp_gvExitRubeePyramid, warp_bgsEnterTanktup, warp_bgsEnterMrVileRightNostril, warp_bgsEnterMrVileLeftNostril,
warp_bgsExitTanktup, warp_bgsExitVileRightNostril, warp_bgsExitVileLeftNostril, warp_ttcEnterSandcastle,
warp_ttcStairAlcoveDown, warp_ttcStairAlcoveUp, warp_ttcEnterBlubbersShipUpper, warp_ttcEnterBlubbersShipSide,
func_8031D628, warp_ttcExitLighthouseTop, warp_ttcExitSandcastle, warp_fpEnterLevel,
func_8031FAB4, warp_ttcExitBlubbersShipUpper, warp_ttcExitBlubbersShipSide, warp_lairEnterDingpotRoomFromFurnaceFun,
func_8031FA90, warp_mmmEnterDiningRoomDoor, warp_mmmEnterDiningRoomChimney, warp_mmmEnterWellTop,
warp_mmmEnterTumblarShed, func_8031DAE0, warp_mmmEnterChurchSecretRoom, func_8031DC10,
warp_mmmEnterRainBarrelBottom, warp_mmmEnterCellar, warp_mmmEnterRedFeatherRoom, warp_mmmEnterBlueEggRoom,
warp_mmmEnterNoteRoom, warp_mmmEnterBrokenFloorboardRoom, warp_mmmEnterBedroom, warp_mmmEnterBathroomWindow,
warp_mmmExitDiningRoomDoor, func_8031D820, warp_mmmExitWellTop, warp_mmmExitTumblarShed,
warp_mmmExitChurchFrontDoor, warp_mmmExitChurchSecretRoom, func_8031D8D4, warp_mmmExitRainBarrelBottom,
warp_mmmExitCellar, warp_mmmExitRedFeatherRoom, warp_mmmExitBlueEggRoom, warp_mmmExitBathroomWindow,
warp_mmmExitBrokenFloorboardRoom, warp_mmmExitBedroom, warp_mmmExitNoteRoom, warp_mmmChurchTowerUp,
warp_mmmChurchTowerDown, warp_mmmExitMumbosHut, warp_mmmEnterMumbosHut, warp_ccExitWonderwingRoom,
warp_ccEnterClankerBelly, warp_ccEnterClankerMouth, warp_ccEnterWonderwingRoom, warp_mmEnterLevel,
warp_rbbEnterCaptainsRoomWindow, warp_rbbEnterCabinRoomWindow, warp_rbbEnterEngineRoomPipe, warp_rbbEnterKitchenPipe,
warp_rbbEnterNavigationRoomWindow, warp_rbbEnterBoomBoxPipe, warp_rbbEnterEngineRoomDoor, warp_rbbEnterChumpWarehouseWindow,
warp_rbbEnterBoatRoom, warp_rbbEnterChompaContainer, warp_rbbEnterSeamanGrublinContainer, warp_rbbEnterBoomBoxContainer,
warp_rbbExitCaptainsRoomWindow, warp_rbbExitCabinRoomWindow, warp_rbbExitEngineRoomPipe, warp_rbbExitKitchenPipe,
warp_rbbExitNavigationRoomWindow, warp_rbbExitBoomBoxPipe, warp_rbbExitEngineRoomDoor, warp_rbbExitBoatRoom,
warp_rbbExitChompaContainer, warp_rbbExitSeamanGrublinContainer, warp_rbbExitBoomBoxContainer, warp_rbbExitBossBoomBoxRoom,
warp_rbbEnterBossBoomBoxRoom, warp_rbbEnterChumpWarehouseDoor, warp_rbbExitChumpWarehouseDoor, func_8031E308,
func_8031E32C, func_8031E350, func_8031E374, func_8031E398,
func_8031E3BC, func_8031E3E0, func_8031E404, func_8031E428,
func_8031E44C, func_8031E470, func_8031E494, func_8031E4B8,
func_8031E4DC, func_8031E500, func_8031E524, func_8031E548,
func_8031E56C, func_8031E590, func_8031E5B4, func_8031E5D8,
func_8031E5FC, func_8031E620, func_8031E644, func_8031E668,
func_8031E68C, func_8031E6B0, func_8031E6D4, func_8031E6F8,
func_8031E71C, func_8031E740, func_8031E764, func_8031E788,
func_8031E7AC, func_8031E7D0, func_8031E7F4, func_8031E9EC,
func_8031EA10, func_8031EA34, func_8031EA58, func_8031E95C,
func_8031E980, func_8031E9A4, func_8031E9C8, func_8031EB9C,
func_8031EBC0, func_8031EBE4, func_80334430, func_8031EC08,
func_8031EC2C, func_8031EC50, func_8031EC74, func_8031F0F4,
func_8031F118, func_8031F184, func_80334430, func_80334430,
func_8031E68C, func_8031E6B0, warp_ccwExitWinterToHub, warp_ccwExitSpringToHub,
warp_ccwExitSummerToHub, warp_ccwExitAutumnToHub, warp_ccwEnterWinter, warp_ccwEnterSpring,
warp_ccwEnterSummer, warp_ccwEnterAutumn, warp_gvExitSandybuttMazeBack, warp_ttcExitSpringMumbosHut,
warp_ttcExitSummerMumbosHut, warp_ttcExitAutumnMumbosHut, warp_ttcExitWinterMumbosHut, warp_ttcEnterSpringMumbosHut,
warp_ttcEnterSummerMumbosHut, warp_ttcEnterAutumnMumbosHut, warp_ttcEnterWinterMumbosHut, warp_ccwEnterSpringNabnutDoor,
warp_ccwEnterSummerNabnutDoor, warp_ccwEnterAutumnNabnutDoor, func_80334430, warp_ccwExitSpringNabnutDoor,
warp_ccwExitSummerNabnutDoor, warp_ccwExitAutumnNabnutDoor, warp_ccwExitWinterNabnutDoor, func_8031F0F4,
func_8031F118, warp_lairEnterGVPuzzleRoomFromMMMLobby, func_80334430, func_80334430,
func_80334430, func_80334430, func_80334430, func_80334430,
func_80334430, func_8031FA00, func_8031F558, func_8031F314,
func_8031F2CC, func_8031F2F0, func_8031F25C, func_8031F294,
func_8031F214, func_8031F238, func_8031F1A8, func_8031F1CC,
func_8031F1F0, func_8031F338, func_8031F35C, func_8031F380,
func_8031F3A4, func_8031F3C8, func_8031F3EC, func_8031F410,
func_8031F520, func_8031F4E8, func_8031F434, func_8031F458,
func_8031F47C, func_8031F4A0, func_8031F4C4, func_8031F5C4,
func_8031F5E8, func_8031FB6C, func_8031F60C, func_8031F630,
func_8031F654, func_8031F678, func_8031F69C, func_8031F6C0,
func_8031F6E4, func_8031F708, func_8031F72C, func_8031F764,
func_8031F79C, func_8031F7D4, func_8031F878, func_8031F8C0,
func_8031F8E4, func_8031F908, func_8031F92C, func_8031F950,
func_8031F974, func_8031F998, func_8031F9BC, func_8031FA24,
func_8031FA48, func_8031FB14, func_80334430, func_80334430,
func_80334430, warp_ttcExitSharkfoodIsland, warp_lairEnterRBBLobbyFromRBBLevel, warp_lairEnterBGSLobbyFromBGSLevel,
warp_fpExitWozzasCave, warp_fpEnterWozzasCave, warp_lairEnterCryptFromMMMLobby, warp_lairEnterMMMLobbyFromCrypt,
warp_lairEnterPointingGruntyStatueFromBGSLobby, warp_lairEnterBGSLobbyFromPointingGruntyStatueRoom, warp_lairEnterMMMLobbyFromGVPuzzleRoom, warp_lairEnterGVPuzzleRoomFromFPLobby,
warp_lairFPLobbyFromGVPuzzleRoom, warp_lairEnter640NoteDoorRoomFromFPLobby, warp_lairEnter640NoteDoorRoomFromCCWLobbyTokenEntrance, warp_lairEnter640NoteDoorRoomFromCCWLobbyDoorEntrance,
warp_lairEnter640NoteDoorRoomFromRBBLobby, warp_lairRBBLobbyFrom640NoteDoorRoom, warp_lairCCWLobbyFrom640NoteDoorRoomDoorEntrance, warp_lairCCWLobbyFrom640NoteDoorRoomTokenEntrance,
warp_lairEnterFPLobbyFrom640NoteDoorRoom, warp_ccwEnterSpringZubbaHive, warp_ccwEnterSummerZubbaHive, warp_ccwEnterAutumnZubbaHive,
warp_ccwExitSpringZubbaHive, warp_ccwExitSummerZubbaHive, warp_ccwExitAutumnZubbaHive, warp_lairEnterMMMPuzzleFromRBBLobby,
warp_lairEnterRBBPuzzleFromRBBLobby, func_8031FB6C, warp_lairEnterCCWLobbyFromFurnaceFunPath, warp_lairEnterFurnaceFunPathFromCCWLobby,
warp_smEnterBanjosHouse, warp_smExitBanjosHouse, warp_lairEnterMMLobbyFromSMLevel, warp_smExitLair,
warp_rbbExitAnchorRoom, warp_rbbEnterAnchorRoom, warp_mmmEnterWellBottom, warp_mmmExitWellBottom,
warp_mmmEnterBathroomFromLoggo, warp_mmmEnterLoggo, warp_ccwEnterLevel, warp_ccwEnterSpringNabnutWindow,
warp_ccwEnterSummerNabnutWindow, warp_ccwEnterAutumnNabnutWindow, warp_ccwEnterWinterNabnutWindow, warp_ccwExitSpringNabnutWindow,
warp_ccwExitSummerNabnutWindow, warp_ccwExitAutumnNabnutWindow, warp_ccwExitWinterNabnutWindow, warp_gvEnterSNSChamper,
warp_gvExitSNSChamper, warp_lairEnterLairFromSMLevel, func_80334430, func_80334430,
func_80334430, func_80334430, func_80334430, func_80334430,
func_80334430, func_80334430, func_80334430,
};

View File

@ -6,7 +6,7 @@
f32 time_getDelta(void);
void func_80346DB4(s32);
s32 func_803463D4(enum item_e item, s32 diff);
s32 item_adjustByDiffWithHud(enum item_e item, s32 diff);
void itemscore_noteScores_clear(void);
s32 itemscore_noteScores_get(enum level_e lvl_id);
void itemscore_timeScores_clear(void);
@ -24,19 +24,19 @@ s32 D_80386038;
/* .code */
void func_80345EB0(enum item_e item){
if(func_802FAFE8(item)){
func_803463D4(item, (s32)(-time_getDelta()*60.0f * 1.1));
item_adjustByDiffWithHud(item, (s32)(-time_getDelta()*60.0f * 1.1));
}else{
func_802FACA4(item);
}
}
void item_inc(enum item_e item){
func_803463D4(item, 1);
item_adjustByDiffWithHud(item, 1);
}
void item_dec(enum item_e item){
if(!func_802E4A08())
func_803463D4(item, -1);
item_adjustByDiffWithHud(item, -1);
}
s32 item_empty(enum item_e item){
@ -47,7 +47,10 @@ s32 item_getCount(enum item_e item){
return D_80385F30[item];
}
s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
// func_80345FB4
s32 item_adjustByDiff(enum item_e item, s32 diff, s32 no_hud){
// Modifies the count of an item by the diff
// no_hud determines whether the HUD pops up during the adjustment
s32 oldVal;
s32 sp40;
s32 sp3C;
@ -103,8 +106,8 @@ s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
if(sp38){
D_80385F30[item] = MIN(sp38, D_80385F30[item]);
}
if(!arg2){
func_802FACA4(item); //displays item on HUD
if(!no_hud){
func_802FACA4(item); // displays item on HUD
if(item == ITEM_14_HEALTH || item == ITEM_17_AIR)
func_802FACA4(ITEM_16_LIFE);
}
@ -149,23 +152,34 @@ s32 func_80345FB4(enum item_e item, s32 diff, s32 arg2){
return D_80385F30[item];
}
s32 func_803463D4(enum item_e item, s32 diff){
func_80345FB4(item, diff, 0);
// func_803463D4
s32 item_adjustByDiffWithHud(enum item_e item, s32 diff){
// Modifies the count of an item by the diff
// Displays the HUD during the adjustment
item_adjustByDiff(item, diff, 0);
}
void func_803463F4(enum item_e item, s32 diff){
func_80345FB4(item, diff, 1);
// func_803463F4
void item_adjustByDiffWithoutHud(enum item_e item, s32 diff){
// Modifies the count of an item by the diff
// Does not display the HUD during the adjustment
item_adjustByDiff(item, diff, 1);
}
void item_set(s32 item, s32 val){
func_803463D4(item, val - item_getCount(item));
item_adjustByDiffWithHud(item, val - item_getCount(item));
}
void func_80346448(s32 item){
func_803463D4(item, 9999999);
// func_80346448
void item_setMaxCount(s32 item){
// Sets the count of an item to the max
// Used for TTC cheats and Lair refill pillows
item_adjustByDiffWithHud(item, 9999999);
}
void func_8034646C(void){
// func_8034646C
void item_setItemsStartCounts(void){
// Sets the player initial inventory count
int i;
for(i = 0; i < 0x2C; i++){
D_80385F30[i] = 0;
@ -210,9 +224,11 @@ void itemscore_levelReset(enum level_e level){
}
void func_803465BC(void){
// Calls a function that does nothing?
func_802FBDFC();
}
// A function that does nothing?
void func_803465DC(void){}
void func_803465E4(void){
@ -226,7 +242,7 @@ void func_803465E4(void){
if(func_80334904() != 2) return;
if(D_80385FE8){
if( ncCamera_getType() != 3 //CAMERA_TYPE_3_STATIC
if( ncCamera_getType() != 3 // CAMERA_TYPE_3_STATIC
&& func_8028F070()
&& map_get() != MAP_33_UNUSED
&& map_get() != MAP_91_FILE_SELECT
@ -257,11 +273,11 @@ void func_803465E4(void){
}//L80346710
if(sp50){
func_803463D4(ITEM_14_HEALTH, 0);
item_adjustByDiffWithHud(ITEM_14_HEALTH, 0);
}
if(sp54 == BS_24_FLY || sp54 == BS_23_FLY_ENTER){
func_803463D4(ITEM_F_RED_FEATHER, 0);
item_adjustByDiffWithHud(ITEM_F_RED_FEATHER, 0);
}
if(!func_8028EC04() && func_8028F070()){
@ -276,15 +292,15 @@ void func_803465E4(void){
D_80385FEC = MAX(0.0, D_80385FEC - time_getDelta());
}//L80346870
if( (!is_in_polluted_or_winter_water && is_underwater) || (is_in_polluted_or_winter_water && is_on_water_surface) ){//L80346894
func_803463D4(ITEM_17_AIR, (s32)((f64)((-time_getDelta())*60.0f)*1.1));
item_adjustByDiffWithHud(ITEM_17_AIR, (s32)((f64)((-time_getDelta())*60.0f)*1.1));
}
else{
if(is_in_polluted_or_winter_water && is_underwater){//L803468D8
func_803463D4(ITEM_17_AIR, (s32)(f64)((-time_getDelta()*60.0f)*2.1));
item_adjustByDiffWithHud(ITEM_17_AIR, (s32)(f64)((-time_getDelta()*60.0f)*2.1));
}//L80346930
if(!is_in_polluted_or_winter_water || D_80385FEC == 0.0f){
if(!D_80385FE4 && D_80385F30[ITEM_17_AIR] < 3600){
func_803463D4(ITEM_17_AIR, (s32)(((time_getDelta()*60.0f)*100.0)*1.1));
item_adjustByDiffWithHud(ITEM_17_AIR, (s32)(((time_getDelta()*60.0f)*100.0)*1.1));
D_80385F30[ITEM_17_AIR] = MIN(D_80385F30[ITEM_17_AIR], 3600);
}
}
@ -321,7 +337,7 @@ void func_803465E4(void){
void func_80346C10(enum bs_e *retVal, enum bs_e fail_state, enum bs_e success_state, enum item_e item_id, int use_item){
if(item_empty(item_id)){
func_803463D4(item_id, 0);
item_adjustByDiffWithHud(item_id, 0);
func_8025A6EC(COMUSIC_2C_BUZZER, 22000);
if(fail_state != -1){
*retVal = fail_state;

View File

@ -16,17 +16,17 @@ ActorInfo D_803731B0 = {
int func_803616F0(Actor *this){
switch(this->unkF4_8){
case 1:// L80361728
return fileProgressFlag_get(FILEPROG_31_MM_OPEN) && !func_802D9220(LEVEL_1_MUMBOS_MOUNTAIN);
return fileProgressFlag_get(FILEPROG_31_MM_OPEN) && !chmole_learnedAllLevelAbilities(LEVEL_1_MUMBOS_MOUNTAIN);
case 2:// L80361750
return fileProgressFlag_get(FILEPROG_32_TTC_OPEN) && !func_802D9220(LEVEL_2_TREASURE_TROVE_COVE);
return fileProgressFlag_get(FILEPROG_32_TTC_OPEN) && !chmole_learnedAllLevelAbilities(LEVEL_2_TREASURE_TROVE_COVE);
case 3:// L80361778
return fileProgressFlag_get(FILEPROG_33_CC_OPEN) && !func_802D9220(LEVEL_3_CLANKERS_CAVERN);
return fileProgressFlag_get(FILEPROG_33_CC_OPEN) && !chmole_learnedAllLevelAbilities(LEVEL_3_CLANKERS_CAVERN);
case 4:// L803617A0
return fileProgressFlag_get(FILEPROG_34_BGS_OPEN) && !func_802D9220(LEVEL_4_BUBBLEGLOOP_SWAMP);
return fileProgressFlag_get(FILEPROG_34_BGS_OPEN) && !chmole_learnedAllLevelAbilities(LEVEL_4_BUBBLEGLOOP_SWAMP);
case 5:// L803617C8
return fileProgressFlag_get(FILEPROG_35_FP_OPEN) && !func_802D9220(LEVEL_5_FREEZEEZY_PEAK);
return fileProgressFlag_get(FILEPROG_35_FP_OPEN) && !chmole_learnedAllLevelAbilities(LEVEL_5_FREEZEEZY_PEAK);
case 6:// L803617F0
return fileProgressFlag_get(FILEPROG_36_GV_OPEN) && !func_802D9220(LEVEL_7_GOBIS_VALLEY);
return fileProgressFlag_get(FILEPROG_36_GV_OPEN) && !chmole_learnedAllLevelAbilities(LEVEL_7_GOBIS_VALLEY);
default:
return FALSE;
}

View File

@ -30,7 +30,7 @@ void func_803634BC(void){
void func_80363500(Actor *this){
if(!this->unk16C_4){
if(!learnedAllTutorialAbilities()){
if(!chmole_learnedAllSpiralMountainAbilities()){
func_803634BC();
}
else{
@ -40,7 +40,7 @@ void func_80363500(Actor *this){
this->unk16C_4 = 1;
}//L8036355C
if(learnedAllTutorialAbilities()){
if(chmole_learnedAllSpiralMountainAbilities()){
func_80363470();
marker_despawn(this->marker);
}

View File

@ -137,7 +137,7 @@ bool func_803012B8(f32 arg0, s32 arg1, s32 arg2){
void func_803012F8(void) {
D_80381EF0 = 1;
D_80381F28 = 0.0f;
func_803463D4(ITEM_14_HEALTH, 0);
item_adjustByDiffWithHud(ITEM_14_HEALTH, 0);
D_80381F04 = (f32) item_getCount(ITEM_14_HEALTH);
}
@ -170,7 +170,7 @@ void fxhealthscore_update(enum item_e item_id, struct8s *arg1) {
if (D_80381F28 > 2.5) {
D_80381EF0 = 2;
}
func_803463D4(ITEM_14_HEALTH, 0);
item_adjustByDiffWithHud(ITEM_14_HEALTH, 0);
break;
case 2:

View File

@ -227,9 +227,9 @@ void fxhoneycarrierscore_update(s32 arg0, struct8s *arg1){
D_803815C4 = func_8023DB5C();
D_803815E4 = 0;
D_803815E0 = 0.9999f;
func_803463D4(ITEM_13_EMPTY_HONEYCOMB, -6);
item_adjustByDiffWithHud(ITEM_13_EMPTY_HONEYCOMB, -6);
timedFunc_set_2(0.25f, (GenFunction_2)func_8025A6EC, COMUSIC_2B_DING_B, 28000);
func_803463D4(ITEM_14_HEALTH, 0);
item_adjustByDiffWithHud(ITEM_14_HEALTH, 0);
timedFunc_set_1(1.25f, (GenFunction_1)item_inc, ITEM_15_HEALTH_TOTAL);
timedFunc_set_1(1.25f, (GenFunction_1)func_8030E484, SFX_3EA_UNKNOWN);
timedFunc_set_2(1.25f, (GenFunction_2)item_set, ITEM_14_HEALTH, item_getCount(ITEM_15_HEALTH_TOTAL)+1);
@ -247,7 +247,7 @@ void fxhoneycarrierscore_update(s32 arg0, struct8s *arg1){
break;
}
if(D_803815C0 == 1)
func_803463D4(ITEM_13_EMPTY_HONEYCOMB, 0);
item_adjustByDiffWithHud(ITEM_13_EMPTY_HONEYCOMB, 0);
break;
}
}

View File

@ -96,7 +96,7 @@ extern ActorInfo D_80367CB4; //spent_goldfeather
extern ActorInfo D_80367D00; //egg
extern ActorInfo D_80367D24; //redfeather
extern ActorInfo D_80367D48; //goldfeather
extern ActorInfo D_80367DA0; //bottles
extern ActorInfo gChMole; //bottles
extern ActorInfo D_80367E20; //chmolehill
extern ActorInfo D_80367E70;
extern ActorInfo D_80367F30;
@ -257,7 +257,7 @@ void spawnQueue_reset(void){
spawnableActorList_add(&D_80367D48, actor_new, 0x0200000); //goldfeather
spawnableActorList_add(&D_80367C90, actor_new, 0x0000004); //spent_redfeather
spawnableActorList_add(&D_80367CB4, actor_new, 0x0000004); //spent_goldfeather
spawnableActorList_add(&D_80367DA0, actor_new, 0x0000180); //bottles
spawnableActorList_add(&gChMole, actor_new, 0x0000180); //bottles
spawnableActorList_add(&D_80367E20, actor_new, 0x44); //chmolehill
spawnableActorList_add(&D_80373DC0, actor_new, 0x80000);
spawnableActorList_add(&D_80367E70, actor_new, 0x0);

View File

@ -66,7 +66,7 @@ extern void ability_setAllLearned(s32); // set unlocked moves bitfield
extern s32 ability_getAllLearned(void); // get unlocked moves bitfield
extern s32 item_getCount(s32); // item count get
extern void func_803463F4(s32, s32); // item count set
extern void item_adjustByDiffWithoutHud(s32, s32); // item count set
extern void func_80250530(s32, u16, f32);
@ -602,7 +602,7 @@ void func_8038CE28(void)
D_8037DCB8->unk3C[i] = 0;
// set joker card count to 0
func_803463F4(ITEM_27_JOKER_CARD, item_getCount(0x27) * -1);
item_adjustByDiffWithoutHud(ITEM_27_JOKER_CARD, item_getCount(0x27) * -1);
D_8037DCB8->unk8 = 0;
D_8037DCB8->unk4 = NULL;
@ -636,7 +636,7 @@ void lair_func_8038CF18(void)
D_8037DCB8->unk3C[i] = 0;
// set joker card count to 0
func_803463F4(ITEM_27_JOKER_CARD, item_getCount(ITEM_27_JOKER_CARD) * -1);
item_adjustByDiffWithoutHud(ITEM_27_JOKER_CARD, item_getCount(ITEM_27_JOKER_CARD) * -1);
}
lair_func_8038C6BC();
@ -958,7 +958,7 @@ void func_8038D670(enum FF_Action next_state) {
func_8038C2D4(D_8037DCB8->ffQuestionType);
}
if (((s32) D_8037DCB8->unk4->unk8 >= 7) && (quizQuestionAskedBitfield_get(func_8038D60C(D_8037DCB8->unk8)) == 0)) {
func_803463D4(ITEM_27_JOKER_CARD, D_8037DCB8->unk4->unk8 - 6);
item_adjustByDiffWithHud(ITEM_27_JOKER_CARD, D_8037DCB8->unk4->unk8 - 6);
quizQuestionAskedBitfield_set(func_8038D60C(D_8037DCB8->unk8), TRUE);
func_80356540(0xA8);
}

View File

@ -74,7 +74,7 @@ void func_8038EB94(void){
func_802FAFC0(ITEM_14_HEALTH, COMUSIC_2B_DING_B);
fileProgressFlag_set(FILEPROG_B9_DOUBLE_HEALTH, TRUE);
func_80347958();
func_803463D4(ITEM_14_HEALTH, 0);
item_adjustByDiffWithHud(ITEM_14_HEALTH, 0);
gcpausemenu_80314AC8(1);
}
@ -318,7 +318,7 @@ void func_8038F350(Actor *this, s32 next_state){
local->unk4--;
local->unk0 &= ~(1 << temp_s1);
fileProgressFlag_setN(D_803947F8[this->unkF4_8 - 1].progress_flag, local->unk4, D_803947F8[this->unkF4_8 - 1].size_bits);
func_803463F4(ITEM_26_JIGGY_TOTAL, 1);
item_adjustByDiffWithoutHud(ITEM_26_JIGGY_TOTAL, 1);
}
break;
@ -331,7 +331,7 @@ void func_8038F350(Actor *this, s32 next_state){
func_8038F1EC(this, temp_s1, 1);
local->unk0 |= (1 << temp_s1);
fileProgressFlag_setN(D_803947F8[this->unkF4_8 - 1].progress_flag, local->unk4, D_803947F8[this->unkF4_8 - 1].size_bits);
func_803463F4(ITEM_26_JIGGY_TOTAL, -1);
item_adjustByDiffWithoutHud(ITEM_26_JIGGY_TOTAL, -1);
func_8038F250(this);
}
break;
@ -351,7 +351,7 @@ void func_8038F350(Actor *this, s32 next_state){
temp_s1 = func_8038F0EC(this);
func_8038F1EC(this, temp_s1, 1);
local->unk0 |= (1 << temp_s1);
func_803463F4(ITEM_26_JIGGY_TOTAL, -1);
item_adjustByDiffWithoutHud(ITEM_26_JIGGY_TOTAL, -1);
}
fileProgressFlag_setN(D_803947F8[this->unkF4_8 - 1].progress_flag, local->unk4, D_803947F8[this->unkF4_8 - 1].size_bits);
func_8038F250(this);

View File

@ -34,17 +34,17 @@ Actor *func_80390560(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
void func_803905CC(ActorMarker *marker, ActorMarker *other_marker){
switch (marker->unk14_20) {
case 0x170:
func_80346448(ITEM_D_EGGS);
item_setMaxCount(ITEM_D_EGGS);
fxSparkle_giantBlueEgg(&marker->propPtr->x);
func_8025A6EC(SFX_EGG_REFILL, -1);
break;
case 0x171:
func_80346448(ITEM_F_RED_FEATHER);
item_setMaxCount(ITEM_F_RED_FEATHER);
fxSparkle_giantRedFeather(&marker->propPtr->x);
func_8025A6EC(SFX_RED_FEATHER_REFILL, -1);
break;
case 0x172:
func_80346448(ITEM_10_GOLD_FEATHER);
item_setMaxCount(ITEM_10_GOLD_FEATHER);
fxSparkle_giantGoldFeather(&marker->propPtr->x);
func_8025A6EC(SFX_GOLD_FEATHER_REFILL, -1);
break;