mirror of https://github.com/n64decomp/mk64.git
Lakitu Effects
This commit is contained in:
parent
101067be99
commit
b4b4b45c10
|
|
@ -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)
|
||||
|
|
|
|||
10
src/camera.c
10
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue