From b4b4b45c10944d2c528e700c64b7e46153276441 Mon Sep 17 00:00:00 2001 From: Jed Grabman Date: Sun, 6 Jul 2025 03:23:55 -0400 Subject: [PATCH] Lakitu Effects --- include/defines.h | 15 ++++++ src/camera.c | 10 ++-- src/code_8003DC40.c | 2 +- src/code_80057C60.c | 22 ++++---- src/cpu_vehicles_camera_path.c | 4 +- src/cpu_vehicles_camera_path/path_utils.inc.c | 4 +- src/effects.c | 47 ++++++++--------- src/player_controller.c | 51 +++++++++---------- src/render_player.c | 18 +++---- src/replays.c | 2 +- src/update_objects.c | 30 +++++------ 11 files changed, 110 insertions(+), 95 deletions(-) diff --git a/include/defines.h b/include/defines.h index 9bab33fe7..767c0dd7e 100644 --- a/include/defines.h +++ b/include/defines.h @@ -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) diff --git a/src/camera.c b/src/camera.c index 220e9daf1..8cd6247f9 100644 --- a/src/camera.c +++ b/src/camera.c @@ -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; } diff --git a/src/code_8003DC40.c b/src/code_8003DC40.c index 611f97315..5bc3c9b9f 100644 --- a/src/code_8003DC40.c +++ b/src/code_8003DC40.c @@ -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; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index ee138f9ec..c27c345c7 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -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; } } } diff --git a/src/cpu_vehicles_camera_path.c b/src/cpu_vehicles_camera_path.c index 3378b7e7f..c93fa4127 100644 --- a/src/cpu_vehicles_camera_path.c +++ b/src/cpu_vehicles_camera_path.c @@ -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; } } diff --git a/src/cpu_vehicles_camera_path/path_utils.inc.c b/src/cpu_vehicles_camera_path/path_utils.inc.c index 62d3b294e..e4ec431a9 100644 --- a/src/cpu_vehicles_camera_path/path_utils.inc.c +++ b/src/cpu_vehicles_camera_path/path_utils.inc.c @@ -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)) { diff --git a/src/effects.c b/src/effects.c index 07d2a4d7b..8b2986a9b 100644 --- a/src/effects.c +++ b/src/effects.c @@ -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)) { diff --git a/src/player_controller.c b/src/player_controller.c index 0b8b0ea53..3a3f1751f 100644 --- a/src/player_controller.c +++ b/src/player_controller.c @@ -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 { diff --git a/src/render_player.c b/src/render_player.c index 0f47e277c..4b5d49a45 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -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); } diff --git a/src/replays.c b/src/replays.c index 5071c8bc6..1ebae13b0 100644 --- a/src/replays.c +++ b/src/replays.c @@ -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; } diff --git a/src/update_objects.c b/src/update_objects.c index c142fd6ca..ee622ec86 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -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;