Lakitu Effects

This commit is contained in:
Jed Grabman 2025-07-06 03:23:55 -04:00
parent 101067be99
commit b4b4b45c10
11 changed files with 110 additions and 95 deletions

View File

@ -329,6 +329,21 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
#define MAX_TIME 0x927C0
#define DEGREES_CONVERSION_FACTOR 182
#define UNK_0CA_LAKITU_RETRIEVAL 0x1 // While lakitu is grabbing you, but before the scene transition of being placed on the track
#define UNK_0CA_HELD_BY_LAKITU 0x2
#define UNK_0CA_LAKITU_FIZZLE 0x4 // Disintegration and reintegration effect when transitioning from retrieval to placement
#define UNK_0CA_LAKITU_SCENE 0x8 // the whole segment from when lakitu is called to when you regain control
#define UNK_0CA_FRIGID_EFFECT 0x10 // Cold colors on Sherbet Land after in frigid water
#define UNK_0CA_THAWING_EFFECT 0x20 // Regaining usual colors post frigid effect
#define UNK_0CA_FROZEN_EFFECT 0x80 // In the ice cube
#define UNK_0CA_WENT_OVER_OOB 0x100 // Player went over (or is on) an OOB area. Cancelled if touch back in bounds
#define UNK_0CA_LAKITU_LAVA 0x1000 // smoky effect when retrieved from lava
#define UNK_0CA_LAKITU_WATER 0x2000 // dripping effect when retreived from water
#define UNK_044_BACK_UP 0x1
#define UNK_044_RIGHT_TURN 0x2 // non-drifting (more than 5 degrees)
#define UNK_044_LEFT_TURN 0x4 // non-drifting (more than 5 degrees)

View File

@ -330,7 +330,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
D_80164A78[index] = D_800DDB30[gActiveScreenMode];
}
}
if ((player->unk_0CA & 0x100) == 0x100) {
if ((player->unk_0CA & UNK_0CA_WENT_OVER_OOB) == UNK_0CA_WENT_OVER_OOB) {
switch (gActiveScreenMode) {
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
@ -445,7 +445,7 @@ void func_8001D53C(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
stackPadding0 = player->pos[0] + sp68[0];
stackPadding2 = player->pos[2] + sp68[2];
stackPadding1 = sp68[1] + (player->unk_074 + 1.5);
if ((player->unk_0CA & 1) == 1) {
if ((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) == UNK_0CA_LAKITU_RETRIEVAL) {
stackPadding1 = sp68[1] + (thing + 10.0f);
}
*arg3 = stackPadding0;
@ -564,7 +564,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
D_80164A78[index] = D_800DDB30[gActiveScreenMode];
}
}
if ((player->unk_0CA & 0x100) == 0x100) {
if ((player->unk_0CA & UNK_0CA_WENT_OVER_OOB) == UNK_0CA_WENT_OVER_OOB) {
move_f32_towards(&D_80164A90[index], 15, 0.02f);
move_f32_towards(&D_80164AA0[index], 20, 0.02f);
@ -988,7 +988,7 @@ void func_8001EE98(Player* player, Camera* camera, s8 index) {
func_8001A588(&D_80152300[cameraIndex], camera, player, index, cameraIndex);
break;
case 1:
if (((player->unk_0CA & 1) == 1) || ((player->unk_0CA & 2) == 2)) {
if (((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) == UNK_0CA_LAKITU_RETRIEVAL) || ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU)) {
func_8001E8E8(camera, player, index);
break;
}
@ -999,7 +999,7 @@ void func_8001EE98(Player* player, Camera* camera, s8 index) {
func_8001F87C(cameraIndex);
break;
case 9:
if (((player->unk_0CA & 1) == 1) || ((player->unk_0CA & 2) == 2)) {
if (((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) == UNK_0CA_LAKITU_RETRIEVAL) || ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU)) {
func_8001E8E8(camera, player, index);
break;
}

View File

@ -230,7 +230,7 @@ void func_8003F46C(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4
arg1[0] = -player->collision.orientationVector[0];
arg1[1] = -player->collision.orientationVector[1];
arg1[2] = -player->collision.orientationVector[2];
if ((player->collision.orientationVector[1] < 0.0f) && ((player->unk_0CA & 2) == 0)) {
if ((player->collision.orientationVector[1] < 0.0f) && ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == 0)) {
*arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1;
*arg6 += arg1[1] * player->collision.surfaceDistance[2] * 1;
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;

View File

@ -4282,7 +4282,7 @@ void func_80062F98(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3) {
temp_f0 = player->particles[10 + arg1].unk_018 / 10.0f;
++player->particles[10 + arg1].timer;
player->particles[10 + arg1].pos[1] += temp_f0;
if ((player->unk_0CA & 1) == 1) {
if ((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) == UNK_0CA_LAKITU_RETRIEVAL) {
player->particles[10 + arg1].pos[1] += (temp_f0 + 0.3);
if ((player->particles[10 + arg1].timer == 0x10) ||
((D_801652A0[arg2] - player->particles[10 + arg1].pos[1]) < 3.0f)) {
@ -6340,7 +6340,7 @@ void func_8006C9B8(Player* player, s16 arg1, s8 playerIndex, s8 arg3) {
player->unk_044 &= ~UNK_044_POST_TUMBLE_GAS;
return;
}
if (((((player->unk_0CA & 0x1000) == 0x1000) ||
if (((((player->unk_0CA & UNK_0CA_LAKITU_LAVA) == UNK_0CA_LAKITU_LAVA) ||
((player->unk_0E0 < 2) && (player->effects & EXPLOSION_CRASH_EFFECT))) ||
((player->unk_0E0 < 2) && (player->effects & HIT_BY_STAR_EFFECT))) ||
(player->effects & HIT_BY_GREEN_SHELL_EFFECT)) {
@ -6349,7 +6349,7 @@ void func_8006C9B8(Player* player, s16 arg1, s8 playerIndex, s8 arg3) {
player->unk_044 &= ~UNK_044_POST_TUMBLE_GAS;
return;
}
if ((player->unk_0CA & 0x2000) == 0x2000) {
if ((player->unk_0CA & UNK_0CA_LAKITU_WATER) == UNK_0CA_LAKITU_WATER) {
func_80061A34(player, arg1, sp28, playerIndex, arg3);
player->unk_046 &= ~0x0008;
player->unk_044 &= ~UNK_044_POST_TUMBLE_GAS;
@ -6437,7 +6437,7 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 arg2, s8 arg3) {
if (((arg0->effects & SQUISH_EFFECT) != SQUISH_EFFECT) &&
((arg0->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) &&
((arg0->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT)) {
if (((arg0->unk_0CA & 2) != 2) && ((arg0->unk_0CA & 0x10) != 0x10) && !(arg0->unk_0CA & 0x100)) {
if (((arg0->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU) && ((arg0->unk_0CA & UNK_0CA_FRIGID_EFFECT) != UNK_0CA_FRIGID_EFFECT) && !(arg0->unk_0CA & UNK_0CA_WENT_OVER_OOB)) {
func_80060504(arg0, arg1, sp20, arg2, arg3);
}
}
@ -6447,14 +6447,14 @@ void func_8006CEC0(Player* arg0, s16 arg1, s8 arg2, s8 arg3) {
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
case SCREEN_MODE_3P_4P_SPLITSCREEN:
if (((arg0->type & 0x4000) != 0) && ((arg0->effects & SQUISH_EFFECT) != SQUISH_EFFECT) &&
((arg0->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) &&
((arg0->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT)) {
if (((arg0->unk_0CA & 2) != 2) && ((arg0->unk_0CA & 0x10) != 0x10) && !(arg0->unk_0CA & 0x100)) {
func_80060504(arg0, arg1, sp20, arg2, arg3);
}
if (((arg0->type & 0x4000) != 0) && ((arg0->effects & SQUISH_EFFECT) != SQUISH_EFFECT) &&
((arg0->effects & HIT_BY_GREEN_SHELL_EFFECT) != HIT_BY_GREEN_SHELL_EFFECT) &&
((arg0->effects & EXPLOSION_CRASH_EFFECT) != EXPLOSION_CRASH_EFFECT)) {
if (((arg0->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU) && ((arg0->unk_0CA & UNK_0CA_FRIGID_EFFECT) != UNK_0CA_FRIGID_EFFECT) && !(arg0->unk_0CA & UNK_0CA_WENT_OVER_OOB)) {
func_80060504(arg0, arg1, sp20, arg2, arg3);
}
break;
}
break;
}
}
}

View File

@ -1435,7 +1435,7 @@ void update_player(s32 playerId) {
if (gCourseMaxZ < player->pos[2]) { D_801633E0[playerId] = 4; }
// clang-format on
if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8)) {
if (!(player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) && !(player->unk_0CA & UNK_0CA_LAKITU_SCENE)) {
gPlayerPathIndex = gPathIndexByPlayerId[playerId];
set_current_path(gPlayerPathIndex);
switch (gCurrentCourseId) { /* irregular */
@ -3794,7 +3794,7 @@ void func_8001A588(UNUSED u16* localD_80152300, Camera* camera, Player* player,
if (playerId >= 8) {
playerId = 1;
}
if ((!(gPlayers[playerId].unk_0CA & 2) && !(gPlayers[playerId].unk_0CA & 8))) {
if ((!(gPlayers[playerId].unk_0CA & UNK_0CA_HELD_BY_LAKITU) && !(gPlayers[playerId].unk_0CA & UNK_0CA_LAKITU_SCENE))) {
break;
}
}

View File

@ -458,12 +458,12 @@ s16 update_player_path(f32 posX, f32 posY, f32 posZ, s16 pathPointIndex, Player*
}
} else { // AI or special case player handling
if (D_801631E0[playerId] == true) {
if (player->unk_0CA & 1) {
if (player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) {
temp_v1 = &gTrackPaths[pathIndex][pathPointIndex];
player->pos[0] = (f32) temp_v1->posX;
player->pos[1] = (f32) temp_v1->posY;
player->pos[2] = (f32) temp_v1->posZ;
player->unk_0CA &= ~0x0001;
player->unk_0CA &= ~UNK_0CA_LAKITU_RETRIEVAL;
return pathPointIndex;
}
if (playerId == ((s32) D_80163488 % 8)) {

View File

@ -313,7 +313,7 @@ void func_8008C8C4(Player* player, s8 playerId) {
player->currentSpeed = (f32) (player->currentSpeed + 100.0f);
}
if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) &&
((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER);
}
}
@ -1346,7 +1346,7 @@ void func_8008F494(Player* player, s8 playerIndex) {
player->unk_042 = 0;
if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) &&
((player->unk_0CA & 2) == 0) && ((player->unk_0DE & 1) == 0) && ((player->unk_0DE & 2) == 0)) {
((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == 0) && ((player->unk_0DE & 1) == 0) && ((player->unk_0DE & 2) == 0)) {
func_800C90F4(playerIndex, (player->characterId * 0x10) + 0x29008004);
}
}
@ -1773,7 +1773,7 @@ void func_80090778(Player* player) {
player->unk_078 = 0;
player->unk_07C = 0;
player->unk_0C0 = 0;
player->unk_0CA |= 8;
player->unk_0CA |= UNK_0CA_LAKITU_SCENE;
player->effects &= ~DRIFTING_EFFECT;
player->unk_222 = 0;
player->unk_08C = 0.0f;
@ -1806,24 +1806,25 @@ void func_80090868(Player* player) {
player->unk_08C = 0.0f;
playerIndex = get_player_index_for_player(player);
if ((player->unk_0CA & 2) != 2) {
if ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU) {
player->unk_D98 = 1;
player->unk_D9C = 0.0f;
player->unk_DA0 = 0.5f;
course_update_path_point(player, playerIndex);
player->unk_222 = 0;
player->unk_0CA |= 2;
player->unk_0CA |= UNK_0CA_HELD_BY_LAKITU;
player->unk_0C8 = 0;
if ((player->unk_0DE & 1) == 1) {
if ((gCurrentCourseId == COURSE_BOWSER_CASTLE) || (gCurrentCourseId == COURSE_BIG_DONUT)) {
player->unk_0CA |= 0x1000;
player->unk_0CA |= UNK_0CA_LAKITU_LAVA;
} else {
player->unk_0CA |= 0x2000;
player->unk_0CA |= UNK_0CA_LAKITU_WATER;
}
// removing the water effect for Sherbet Land makes sense. Perhaps rainbow road and skyscraper
// had lave instead of an abyss initially?
if ((gCurrentCourseId == COURSE_SHERBET_LAND) || (gCurrentCourseId == COURSE_SKYSCRAPER) ||
(gCurrentCourseId == COURSE_RAINBOW_ROAD)) {
player->unk_0CA &= ~0x3000;
player->unk_0CA &= ~(UNK_0CA_LAKITU_LAVA | UNK_0CA_LAKITU_WATER);
}
}
}
@ -1846,8 +1847,8 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
clean_effect(player, playerId);
switch (player->unk_222) {
case 0:
if ((player->unk_0CA & 1) == 1) {
if ((player->unk_0C8 < 0x3C) || ((player->unk_0CA & 2) != 2)) {
if ((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) == UNK_0CA_LAKITU_RETRIEVAL) {
if ((player->unk_0C8 < 0x3C) || ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU)) {
player->unk_0C8++;
if (player->unk_0C8 >= 0x3C) {
player->unk_0C8 = 0x003C;
@ -1857,16 +1858,16 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
if ((D_801652A0[playerId] + 40.0f) <= player->pos[1]) {
player->unk_222 = 1;
player->unk_0CA |= 4;
player->unk_0CA |= UNK_0CA_LAKITU_FIZZLE;
player->alpha = 0x00FF;
}
}
} else if ((player->unk_0CA & 2) == 2) {
} else if ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) {
move_f32_towards(&player->pos[1], player->unk_074 + 100.0f, 0.025f);
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
if ((player->unk_074 + 40.0f) <= player->pos[1]) {
player->unk_222 = 1;
player->unk_0CA |= 4;
player->unk_0CA |= UNK_0CA_LAKITU_FIZZLE;
player->alpha = 0x00FF;
}
}
@ -1878,13 +1879,13 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
if (((player->type & PLAYER_HUMAN) == 0x4000) && ((player->type & PLAYER_CPU) == 0)) {
func_8009E088(playerId, 0xA);
}
if ((player->unk_0CA & 1) == 1) {
if ((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) == UNK_0CA_LAKITU_RETRIEVAL) {
move_f32_towards(&player->pos[1], D_801652A0[playerId] + 40.0f, 0.02f);
player->alpha -= 8;
if (player->alpha < 9) {
player->alpha = 0;
player->unk_222 = 2;
player->unk_0CA &= ~0x0001;
player->unk_0CA &= ~UNK_0CA_LAKITU_RETRIEVAL;
}
} else {
move_f32_towards(&player->pos[1], player->oldPos[1] + 40.0f, 0.02f);
@ -1894,7 +1895,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
player->unk_222 = 2;
}
}
player->unk_0CA &= ~0x2000;
player->unk_0CA &= ~UNK_0CA_LAKITU_WATER;
break;
case 2:
func_80090178(player, playerId, sp44, sp38);
@ -1920,7 +1921,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
if (player->alpha >= 0xF0) {
player->alpha = 0x00FF;
player->unk_222 = 4;
player->unk_0CA &= ~0x0004;
player->unk_0CA &= ~UNK_0CA_LAKITU_FIZZLE;
player->unk_0C8 = 0;
}
break;
@ -1938,7 +1939,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
move_f32_towards(&player->pos[1], (player->unk_074 + player->boundingBoxSize) - 2.0f, 0.04f);
player->unk_0C8++;
if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) || (player->effects & ENEMY_BONK_EFFECT)) {
player->unk_0CA &= ~0x1000;
player->unk_0CA &= ~UNK_0CA_LAKITU_LAVA;
if (player->unk_0C8 >= 0x5B) {
if (player->type & PLAYER_HUMAN) {
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
@ -1946,10 +1947,10 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
if (gModeSelection == BATTLE) {
pop_player_balloon(player, playerId);
}
player->unk_0CA &= ~0x0002;
player->unk_0CA &= ~UNK_0CA_HELD_BY_LAKITU;
player->unk_0DE &= ~0x0004;
if ((player->unk_0CA & 0x80) != 0x80) {
player->unk_0CA &= ~0x0008;
if ((player->unk_0CA & UNK_0CA_FROZEN_EFFECT) != UNK_0CA_FROZEN_EFFECT) {
player->unk_0CA &= ~UNK_0CA_LAKITU_SCENE;
if ((player->topSpeed * 0.9) <= player->currentSpeed) {
func_8008F104(player, playerId);
}
@ -1986,7 +1987,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
bool prevent_item_use(Player* player) {
s32 phi_v0 = 0;
if ((((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) ||
if ((((((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) == UNK_0CA_LAKITU_SCENE)) ||
((player->type & PLAYER_UNKNOWN_0x40) != 0)) ||
((player->type & PLAYER_CINEMATIC_MODE) != 0)) ||
((player->type & PLAYER_EXISTS) == 0)) {

View File

@ -532,7 +532,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
break;
}
if ((isVisible == 1) || ((player->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) ||
(gModeSelection == BATTLE) || ((player->unk_0CA & 2) != 0) || (player->unk_0CA & 8) ||
(gModeSelection == BATTLE) || ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != 0) || (player->unk_0CA & UNK_0CA_LAKITU_SCENE) ||
//! @todo make a proper match
((*(D_801633F8 + (playerId))) == ((s16) 1U))) {
player->effects &= ~LOST_RACE_EFFECT;
@ -589,11 +589,10 @@ void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) {
void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) {
if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (D_800DC510 != 5)) || (player->unk_0CA & 2) != 0 ||
(player->unk_0CA & 8) != 0 ||
(player->unk_0CA & UNK_0CA_LAKITU_SCENE) != 0 ||
(player->effects & (LIGHTNING_EFFECT | EXPLOSION_CRASH_EFFECT | HIT_BY_STAR_EFFECT | SQUISH_EFFECT |
POST_SQUISH_EFFECT | TERRAIN_TUMBLE_EFFECT | 0xC00 | 0xC0)) != 0) {
player->effects &= ~LOST_RACE_EFFECT;
if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) ||
((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT) ||
((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) ||
@ -791,7 +790,7 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || (player->unk_044 & UNK_044_UNUSED_0x800)) {
player->unk_050[screenId] = 0;
}
if (((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) && ((player->unk_0CA & 2) == 2)) {
if (((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) && ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU)) {
player->unk_050[screenId] = 0;
}
var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0);
@ -947,7 +946,7 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
temp_f2_3 = ((gCharacterSize[player->characterId] * 18.0f) + 1.0f) * player->size;
temp_f0_2 = player->unk_23C - player->unk_230;
player->unk_206 = -atan1s(temp_f0_2 / temp_f2_3);
if (((player->unk_0CA & 2) == 2) || (player->effects & MIDAIR_EFFECT)) {
if (((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || (player->effects & MIDAIR_EFFECT)) {
player->unk_206 = 0;
}
if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) {
@ -963,7 +962,7 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
}
move_s16_towards(&player->slopeAccel, temp_v0, 0.5f);
}
if (((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) && ((player->unk_0CA & 2) == 2)) {
if (((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT) && ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU)) {
player->slopeAccel = (s16) ((s32) player->unk_D9C);
}
player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF;
@ -1425,7 +1424,7 @@ void apply_triggers(Player* player, s8 playerId, UNUSED s8 screenId) {
}
void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) {
if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) {
if (((player->unk_0CA & UNK_0CA_LAKITU_SCENE) != 0) || ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != 0)) {
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
}
// Green shell
@ -1789,7 +1788,7 @@ void func_8002C17C(Player* player, s8 playerId) {
} else if (D_80165330[playerId] == 0) {
gCopyNearestPathPointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId];
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
} else if (!((player->effects & MIDAIR_EFFECT) || (player->unk_0CA & 1))) {
} else if (!((player->effects & MIDAIR_EFFECT) || (player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL))) {
D_80165330[playerId] = 0;
}
break;
@ -1833,15 +1832,15 @@ void func_8002C4F8(Player* player, s8 playerIndex) {
}
if ((player->boundingBoxSize < (D_801652A0[playerIndex] - player->pos[1])) &&
(player->collision.surfaceDistance[2] >= 600.0f)) {
player->unk_0CA |= 1;
player->unk_0CA |= UNK_0CA_LAKITU_RETRIEVAL;
}
if (player->collision.surfaceDistance[2] >= 600.0f) {
player->unk_0CA |= 0x0100;
player->unk_0CA |= UNK_0CA_WENT_OVER_OOB;
} else if ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) {
player->unk_0CA &= ~0x0100;
player->unk_0CA &= ~UNK_0CA_WENT_OVER_OOB;
}
if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->unk_0CA & 1))) {
if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8) && !(player->effects & LOST_RACE_EFFECT)) {
if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL))) {
if (!(player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) && !(player->unk_0CA & UNK_0CA_LAKITU_SCENE) && !(player->effects & LOST_RACE_EFFECT)) {
func_80090778(player);
func_80090868(player);
}
@ -1906,7 +1905,7 @@ void func_8002C954(Player* player, s8 playerId, Vec3f velocity) {
((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & TERRAIN_TUMBLE_EFFECT) == 0)) &&
(player->effects & MIDAIR_EFFECT)) ||
((player->collision.unk34 == 0) && ((player->effects & TERRAIN_TUMBLE_EFFECT) == 0))) &&
(((player->unk_0CA & 2) == 0) || (!(player->unk_0CA & 8)))) {
(((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == 0) || (!(player->unk_0CA & UNK_0CA_LAKITU_SCENE)))) {
func_8008F494(player, playerId);
}
if ((player->unk_046 & 0x20) != 0x20) {
@ -1954,7 +1953,7 @@ void func_8002C954(Player* player, s8 playerId, Vec3f velocity) {
}
void apply_effect(Player* player, s8 playerIndex, s8 arg2) {
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
if (((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) == UNK_0CA_LAKITU_SCENE)) {
func_80090970(player, playerIndex, arg2);
}
if ((player->effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT) {
@ -2218,9 +2217,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
(((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) /
6000.0) /
((f64) player->unk_DAC));
if (((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) ||
if (((((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) == UNK_0CA_LAKITU_SCENE)) ||
((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT)) ||
(player->unk_0CA & 1)) {
(player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL)) {
newVelocity[0] = 0.0f;
newVelocity[1] = 0.0f;
newVelocity[2] = 0.0f;
@ -2240,9 +2239,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
nextY = posY + player->velocity[1];
nextZ = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2];
if (((((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) &&
if (((((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU) && ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) != UNK_0CA_LAKITU_SCENE)) &&
((player->effects & SQUISH_EFFECT) != SQUISH_EFFECT)) &&
(!(player->unk_0CA & 1))) {
(!(player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL))) {
func_8002AAC0(player);
nextY += player->kartHopVelocity;
nextY -= 0.02;
@ -2340,7 +2339,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
}
if (((!(player->effects & MIDAIR_EFFECT)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) &&
((player->effects & TERRAIN_TUMBLE_EFFECT) != TERRAIN_TUMBLE_EFFECT)) {
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) {
if ((!(player->unk_0CA & UNK_0CA_HELD_BY_LAKITU)) || (!(player->unk_0CA & UNK_0CA_LAKITU_SCENE))) {
func_8008F494(player, playerId);
}
} else if (((!(player->effects & MIDAIR_EFFECT)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
@ -2505,7 +2504,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
}
newVelocity[1] += (((((spEC[1] + gravityY) + spD4[1])) - (newVelocity[1] * (0.12 * player->kartFriction))) / 6000) / player->unk_DAC;
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
if (((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) == UNK_0CA_LAKITU_SCENE)) {
newVelocity[0] = 0.0f;
newVelocity[1] = 0.0f;
newVelocity[2] = 0.0f;
@ -2627,7 +2626,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
if (((func_802ABDB8(player->collision.meshIndexZX) != 0) &&
((player->effects & TERRAIN_TUMBLE_EFFECT) != TERRAIN_TUMBLE_EFFECT)) &&
(((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) {
if ((!(player->unk_0CA & UNK_0CA_HELD_BY_LAKITU)) || (!(player->unk_0CA & UNK_0CA_LAKITU_SCENE))) {
func_8008F494(player, playerId);
}
} else if (((!(player->effects & MIDAIR_EFFECT)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
@ -2981,7 +2980,7 @@ f32 func_80030150(Player* player, s8 playerIndex) {
var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType];
}
}
if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && ((player->unk_0CA & 2) != 2)) {
if (((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT) && ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU)) {
temp_lo = player->slopeAccel / 182;
if (var_f2 >= 20.0f) {
if ((temp_lo > 0x11) || (temp_lo < -0x11)) {
@ -3072,7 +3071,7 @@ f32 func_80030150(Player* player, s8 playerIndex) {
if (var_f2 < 0.0f) {
var_f2 = 0.0f;
}
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8) ||
if (((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) == UNK_0CA_LAKITU_SCENE) ||
((player->type & PLAYER_START_SEQUENCE) == PLAYER_START_SEQUENCE)) {
return (1.0f - player->unk_104) * var_f2;
}
@ -3096,7 +3095,7 @@ void func_80030A34(Player* player) {
f32 var_f0;
f32 var_f2;
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) {
if (((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != UNK_0CA_HELD_BY_LAKITU) && ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) != UNK_0CA_LAKITU_SCENE)) {
if ((((player->speed / 18.0f) * 216.0f) >= 8.0f) && (player->unk_DB4.unkC < 1.0f)) {
switch (player->surfaceType) { /* irregular */
case ASPHALT:
@ -4663,7 +4662,7 @@ void handle_a_press_for_player_during_race(Player* player, struct Controller* co
((player->type & PLAYER_CPU) != PLAYER_CPU)) {
// If not start sequence
if ((player->type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE) {
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
if (((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->unk_0CA & UNK_0CA_LAKITU_SCENE) == UNK_0CA_LAKITU_SCENE)) {
if (controller->button & A_BUTTON) {
player_accelerate(player);
} else {

View File

@ -1184,22 +1184,22 @@ void func_800235AC(Player* player, s8 playerIndex) {
return;
}
if (((player->unk_0CA & 0x10) == 0x10) && ((player->unk_0CA & 4) == 4)) {
if (((player->unk_0CA & UNK_0CA_FRIGID_EFFECT) == UNK_0CA_FRIGID_EFFECT) && ((player->unk_0CA & UNK_0CA_LAKITU_FIZZLE) == UNK_0CA_LAKITU_FIZZLE)) {
change_player_color_effect_rgb(player, playerIndex, 0x646464, 0.5f);
change_player_color_effect_cmy(player, playerIndex, 0xFF0000, 0.1f);
return;
}
if ((player->unk_0CA & 4) == 4) {
if ((player->unk_0CA & UNK_0CA_LAKITU_FIZZLE) == UNK_0CA_LAKITU_FIZZLE) {
change_player_color_effect_rgb(player, playerIndex, COLOR_BLACK, 1.0f);
change_player_color_effect_cmy(player, playerIndex, 0, 1.0f);
return;
}
if ((player->unk_0CA & 0x10) == 0x10) {
if ((player->unk_0CA & UNK_0CA_FRIGID_EFFECT) == UNK_0CA_FRIGID_EFFECT) {
change_player_color_effect_rgb(player, playerIndex, 0x646464, 0.5f);
change_player_color_effect_cmy(player, playerIndex, 0xFF0000, 0.1f);
return;
}
if ((player->unk_0CA & 0x20) == 0x20) {
if ((player->unk_0CA & UNK_0CA_THAWING_EFFECT) == UNK_0CA_THAWING_EFFECT) {
change_player_color_effect_rgb(player, playerIndex, COLOR_BLACK, 0.1f);
change_player_color_effect_cmy(player, playerIndex, 0, 0.1f);
return;
@ -1263,7 +1263,7 @@ void func_800235AC(Player* player, s8 playerIndex) {
return;
}
render_light_environment_on_player(player, playerIndex);
if ((player->unk_0CA & 0x1000) == 0x1000) {
if ((player->unk_0CA & UNK_0CA_LAKITU_LAVA) == UNK_0CA_LAKITU_LAVA) {
change_player_color_effect_rgb(player, playerIndex, COLOR_BLACK, 0.3f);
change_player_color_effect_cmy(player, playerIndex, 0xF0F0F0, 0.3f);
}
@ -1276,7 +1276,7 @@ void func_80023BF0(Player* player, s8 playerId, s8 screenId, s8 arg3) {
} else {
func_80022E84(player, playerId, screenId, arg3);
}
if ((player->unk_0CA & 2) == 2) {
if ((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) {
func_80022D60(player, playerId, screenId, arg3);
}
}
@ -1303,7 +1303,7 @@ void render_player_shadow(Player* player, s8 playerId, s8 screenId) {
if (((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) ||
((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) || ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) ||
((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) || ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) ||
((player->unk_0CA & 2) == 2) || ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) ||
((player->unk_0CA & UNK_0CA_HELD_BY_LAKITU) == UNK_0CA_HELD_BY_LAKITU) || ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) ||
((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT) || ((player->effects & MIDAIR_EFFECT) == MIDAIR_EFFECT)) {
var_f2 = (f32) (1.0 - ((f64) player->collision.surfaceDistance[2] * 0.02));
@ -1502,7 +1502,7 @@ void render_kart(Player* player, s8 playerId, s8 arg2, s8 flipOffset) {
AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL |
GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
}
} else if (((player->unk_0CA & 4) == 4) || (player->triggers & BECOME_BOMB_EFFECT) ||
} else if (((player->unk_0CA & UNK_0CA_LAKITU_FIZZLE) == UNK_0CA_LAKITU_FIZZLE) || (player->triggers & BECOME_BOMB_EFFECT) ||
(player->triggers & LOSE_BATTLE_EFFECT)) {
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
@ -1735,7 +1735,7 @@ void render_player(Player* player, s8 playerId, s8 screenId) {
render_ghost(player, playerId, screenId, flipOffset);
}
osRecvMesg(&gDmaMesgQueue, (OSMesg*) &sp34, OS_MESG_BLOCK);
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & 1) != 1) &&
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->surfaceType == ICE) && ((player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) != UNK_0CA_LAKITU_RETRIEVAL) &&
(player->collision.surfaceDistance[2] <= 30.0f)) {
render_player_ice_reflection(player, playerId, screenId, flipOffset);
}

View File

@ -454,7 +454,7 @@ void save_player_replay(void) {
u32 prevInputs;
/* Input file is too long or picked up by lakitu or Out of bounds
Not sure if there is any way to be considered out of bounds without lakitu getting called */
if (((sPlayerInputIdx >= 0x1000) || ((gPlayerOne->unk_0CA & 2) != 0)) || ((gPlayerOne->unk_0CA & 8) != 0)) {
if (((sPlayerInputIdx >= 0x1000) || ((gPlayerOne->unk_0CA & UNK_0CA_HELD_BY_LAKITU) != 0)) || ((gPlayerOne->unk_0CA & UNK_0CA_LAKITU_SCENE) != 0)) {
gPostTimeTrialReplayCannotSave = 1;
return;
}

View File

@ -126,7 +126,7 @@ s32 find_unused_obj_index(s32* arg0) {
}
} while ((gObjectList[temp_v1].unk_0CA != 0) && (temp_v0 != OBJECT_LIST_SIZE));
gObjectList[temp_v1].unk_0CA = 1;
gObjectList[temp_v1].unk_0CA = UNK_0CA_LAKITU_RETRIEVAL;
*arg0 = temp_v1;
objectListSize = temp_v1;
@ -2978,14 +2978,14 @@ void func_800791F0(s32 objectIndex, s32 playerId) {
if ((gObjectList[objectIndex].unk_0D8 != 3) && (gObjectList[objectIndex].unk_0D8 != 7)) {
func_800722CC(objectIndex, 1);
if (gCurrentCourseId == COURSE_SHERBET_LAND) {
player->unk_0CA &= 0xFFEF;
player->unk_0CA &= ~UNK_0CA_FRIGID_EFFECT;
}
} else {
// ?????
}
if (gCurrentCourseId == COURSE_SHERBET_LAND) {
func_800722CC(objectIndex, 0x00000010);
player->unk_0CA &= 0xFFDF;
player->unk_0CA &= ~UNK_0CA_THAWING_EFFECT;
}
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
}
@ -3127,9 +3127,9 @@ void func_800797AC(s32 playerId) {
objectIndex = gIndexLakituList[playerId];
player = &gPlayerOne[playerId];
if ((gCurrentCourseId == COURSE_SHERBET_LAND) && (player->unk_0CA & 1)) {
if ((gCurrentCourseId == COURSE_SHERBET_LAND) && (player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL)) {
init_object(objectIndex, 7);
player->unk_0CA |= 0x10;
player->unk_0CA |= UNK_0CA_FRIGID_EFFECT;
} else {
init_object(objectIndex, 3);
}
@ -3144,14 +3144,14 @@ void func_80079860(s32 playerId) {
player = &gPlayerOne[playerId];
if ((func_80072354(objectIndex, 1) != 0) &&
(((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) ||
(player->unk_0CA & 1) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & MIDAIR_EFFECT)))) {
(player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & MIDAIR_EFFECT)))) {
func_80090778(player);
func_800797AC(playerId);
}
}
void func_8007993C(s32 objectIndex, Player* player) {
if (player->unk_0CA & 4) {
if (player->unk_0CA & UNK_0CA_LAKITU_FIZZLE) {
func_800722A4(objectIndex, 2);
gObjectList[objectIndex].primAlpha = player->alpha;
return;
@ -3228,7 +3228,7 @@ void update_object_lakitu_fishing(s32 objectIndex, s32 playerId) {
func_80073654(objectIndex);
break;
case 3:
if (!(player->unk_0CA & 2)) {
if (!(player->unk_0CA & UNK_0CA_HELD_BY_LAKITU)) {
func_80086EAC(objectIndex, 0, 3);
func_80073654(objectIndex);
}
@ -3263,7 +3263,7 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
case 2: /* switch 1 */
set_object_flag_status_true(objectIndex, 0x00000010);
func_800736E0(objectIndex);
player->unk_0CA |= 0x80;
player->unk_0CA |= UNK_0CA_FROZEN_EFFECT;
object_next_state(objectIndex);
break;
case 3: /* switch 1 */
@ -3283,11 +3283,11 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
func_80073654(objectIndex);
break;
case 3:
if ((player->surfaceType == ICE) && !(player->unk_0CA & 1) &&
if ((player->surfaceType == ICE) && !(player->unk_0CA & UNK_0CA_LAKITU_RETRIEVAL) &&
((f64) player->collision.surfaceDistance[2] <= 30.0)) {
func_800722A4(objectIndex, 8);
}
if (!(player->unk_0CA & 2)) {
if (!(player->unk_0CA & UNK_0CA_HELD_BY_LAKITU)) {
func_80086EAC(objectIndex, 0, 3);
func_80073654(objectIndex);
}
@ -3296,7 +3296,7 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
func_8007375C(objectIndex, 0x0000001E);
break;
case 5:
player->unk_0CA &= 0xFF7F;
player->unk_0CA &= ~UNK_0CA_FROZEN_EFFECT;
func_800722A4(objectIndex, 0x00000010);
func_800722A4(objectIndex, 0x00000020);
func_800722CC(objectIndex, 4);
@ -3307,8 +3307,8 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
case 6:
if (func_8007375C(objectIndex, 0x000000A0) != 0) {
func_800722CC(objectIndex, 0x00000010);
player->unk_0CA &= 0xFFEF;
player->unk_0CA |= 0x20;
player->unk_0CA &= ~UNK_0CA_FRIGID_EFFECT;
player->unk_0CA |= UNK_0CA_THAWING_EFFECT;
}
break;
case 7:
@ -3317,7 +3317,7 @@ void update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
case 8:
func_80073720(objectIndex);
func_80072428(objectIndex);
player->unk_0CA &= 0xFFDF;
player->unk_0CA &= ~UNK_0CA_THAWING_EFFECT;
func_800722CC(objectIndex, 1);
func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
break;