Player bitflag attributes (pr 750 from the decomp) (#592)
* Player bitflag attributes (pr 750 from the decomp) Co-Authored-By: Jed Grabman <JedGrabman@users.noreply.github.com> * remove WATER_NO_INTERACTION --------- Co-authored-by: Jed Grabman <JedGrabman@users.noreply.github.com> Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
This commit is contained in:
parent
6b8be33a5b
commit
1a5c79b641
|
|
@ -385,6 +385,7 @@ target_link_libraries(${PROJECT_NAME} PRIVATE tomlplusplus::tomlplusplus)
|
||||||
|
|
||||||
# Removes MPQ/OTR support
|
# Removes MPQ/OTR support
|
||||||
set(EXCLUDE_MPQ_SUPPORT TRUE CACHE BOOL "")
|
set(EXCLUDE_MPQ_SUPPORT TRUE CACHE BOOL "")
|
||||||
|
set(ENABLE_EXP_AUTO_CONFIGURE_CONTROLLERS ON CACHE BOOL "")
|
||||||
add_compile_definitions(EXCLUDE_MPQ_SUPPORT)
|
add_compile_definitions(EXCLUDE_MPQ_SUPPORT)
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
|
if(CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
|
||||||
|
|
|
||||||
|
|
@ -278,7 +278,7 @@ typedef struct {
|
||||||
/* 0x0034 */ Vec3f velocity;
|
/* 0x0034 */ Vec3f velocity;
|
||||||
/* 0x0040 */ s16 unk_040;
|
/* 0x0040 */ s16 unk_040;
|
||||||
/* 0x0042 */ s16 unk_042;
|
/* 0x0042 */ s16 unk_042;
|
||||||
/* 0x0044 */ s16 unk_044;
|
/* 0x0044 */ s16 kartProps;
|
||||||
/* 0x0046 */ u16 unk_046;
|
/* 0x0046 */ u16 unk_046;
|
||||||
/* 0x0048 */ Vec4s unk_048;
|
/* 0x0048 */ Vec4s unk_048;
|
||||||
/* 0x0050 */ Vec4s unk_050;
|
/* 0x0050 */ Vec4s unk_050;
|
||||||
|
|
@ -308,7 +308,7 @@ typedef struct {
|
||||||
/* 0x00B0 */ s16 unk_0B0;
|
/* 0x00B0 */ s16 unk_0B0;
|
||||||
/* 0x00B2 */ s16 unk_0B2;
|
/* 0x00B2 */ s16 unk_0B2;
|
||||||
/* 0x00B4 */ u16 unk_0B4;
|
/* 0x00B4 */ u16 unk_0B4;
|
||||||
/* 0x00B6 */ u16 unk_0B6;
|
/* 0x00B6 */ u16 kartGraphics;
|
||||||
/* 0x00B8 */ f32 unk_0B8;
|
/* 0x00B8 */ f32 unk_0B8;
|
||||||
/* 0x00BC */ u32 effects;
|
/* 0x00BC */ u32 effects;
|
||||||
/* 0x00C0 */ s16 unk_0C0;
|
/* 0x00C0 */ s16 unk_0C0;
|
||||||
|
|
@ -316,11 +316,11 @@ typedef struct {
|
||||||
/* 0x00C4 */ s16 slopeAccel;
|
/* 0x00C4 */ s16 slopeAccel;
|
||||||
/* 0x00C6 */ s16 alpha;
|
/* 0x00C6 */ s16 alpha;
|
||||||
/* 0x00C8 */ s16 unk_0C8;
|
/* 0x00C8 */ s16 unk_0C8;
|
||||||
/* 0x00CA */ s16 unk_0CA;
|
/* 0x00CA */ s16 lakituProps;
|
||||||
/* 0x00CC */ Vec4s unk_0CC;
|
/* 0x00CC */ Vec4s unk_0CC;
|
||||||
/* 0x00D4 */ Vec4s unk_0D4;
|
/* 0x00D4 */ Vec4s unk_0D4;
|
||||||
/* 0x00DC */ s16 boostTimer;
|
/* 0x00DC */ s16 boostTimer;
|
||||||
/* 0x00DE */ u16 waterInteractionFlags;
|
/* 0x00DE */ u16 oobProps;
|
||||||
/* 0x00E0 */ s16 unk_0E0;
|
/* 0x00E0 */ s16 unk_0E0;
|
||||||
/* 0x00E2 */ s16 unk_0E2;
|
/* 0x00E2 */ s16 unk_0E2;
|
||||||
/* 0x00E4 */ f32 unk_0E4;
|
/* 0x00E4 */ f32 unk_0E4;
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,9 @@
|
||||||
* Used in the Player struct's 'type' member: player->type
|
* Used in the Player struct's 'type' member: player->type
|
||||||
*/
|
*/
|
||||||
#define PLAYER_INACTIVE 0 // 0x0000
|
#define PLAYER_INACTIVE 0 // 0x0000
|
||||||
|
#define PLAYER_UNKNOWN_0x10 (1 << 4) // 0x0010 // unused?
|
||||||
#define PLAYER_UNKNOWN_0x40 (1 << 6) // 0x0040
|
#define PLAYER_UNKNOWN_0x40 (1 << 6) // 0x0040
|
||||||
|
#define PLAYER_UNKNOWN_0x80 (1 << 7) // 0x0080 // UNUSED
|
||||||
#define PLAYER_INVISIBLE_OR_BOMB (1 << 8) // 0x0100
|
#define PLAYER_INVISIBLE_OR_BOMB (1 << 8) // 0x0100
|
||||||
#define PLAYER_STAGING (1 << 9) // 0x0200
|
#define PLAYER_STAGING (1 << 9) // 0x0200
|
||||||
#define PLAYER_UNKNOWN (1 << 10) // 0x0400 // unused ?
|
#define PLAYER_UNKNOWN (1 << 10) // 0x0400 // unused ?
|
||||||
|
|
@ -354,6 +356,64 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
|
||||||
* @brief Max representable time, 100 minutes measured in centiseconds
|
* @brief Max representable time, 100 minutes measured in centiseconds
|
||||||
*/
|
*/
|
||||||
#define MAX_TIME 0x927C0
|
#define MAX_TIME 0x927C0
|
||||||
|
#define DEGREES_CONVERSION_FACTOR 182
|
||||||
|
|
||||||
|
// player->oobProps
|
||||||
|
/* Deals with the lower out of bounds (OOB) plane on levels. Represented by fluids (water / lava)
|
||||||
|
or nothing for Rainbow Road and Skyscraper. */
|
||||||
|
#define UNDER_OOB_OR_FLUID_LEVEL 0x1 // Set while mostly under the plane. Does not necessarily trigger Lakitu on Koopa Troopa Beach.
|
||||||
|
#define PASS_OOB_OR_FLUID_LEVEL 0x2 // Set when passing through the lower plane in either direction
|
||||||
|
// The next two are also activated when passing through the lower plane.
|
||||||
|
#define UNDER_FLUID_LEVEL 0x4 // Stays active until Lakitu places back on track
|
||||||
|
#define UNDER_OOB_LEVEL 0x8 // Active while under a non-fluid OOB plane. Is momentarily active when passing through fluids.
|
||||||
|
|
||||||
|
|
||||||
|
/* UNK_002 has something to do with player animations. Each player has a 32-bit
|
||||||
|
flag broken into 8 groups of 4 bits. Those 4 bits affect how each of the 8 players
|
||||||
|
appear to the specified player */
|
||||||
|
#define CHANGING_ANIMATION 0x1 // Seems to be set when the kart animation has to change.
|
||||||
|
#define UNK_002_UNKNOWN_0x2 0x2
|
||||||
|
#define UNK_002_UNKNOWN_0x4 0x4 /* Unclear, but has to do with viewing the side of player. At least tends to change if target
|
||||||
|
player spins. Something with avoding rollover of aniamation frame data? */
|
||||||
|
#define SIDE_OF_KART 0x8 // Seems to be whether you are in a rectangle shooting out from both sides of target player
|
||||||
|
|
||||||
|
#define WHISTLE 0x20 // Whistle spinout save graphic
|
||||||
|
#define CRASH 0x40 // Crash! graphic (vertical tumble)
|
||||||
|
#define WHIRRR 0x80 // Whirrr! graphic (spinning out)
|
||||||
|
#define POOMP 0x100 // Poomp! graphic (landing from a height)
|
||||||
|
#define BOING 0x800 // Boing! graphic (hopping)
|
||||||
|
#define EXPLOSION 0x1000 // Big shock looking graphic when starting tumble
|
||||||
|
|
||||||
|
// player->lakituProps
|
||||||
|
#define LAKITU_RETRIEVAL 0x1 // While lakitu is grabbing you, but before the scene transition of being placed on the track
|
||||||
|
#define HELD_BY_LAKITU 0x2
|
||||||
|
#define LAKITU_FIZZLE 0x4 // Disintegration and reintegration effect when transitioning from retrieval to placement
|
||||||
|
#define LAKITU_SCENE 0x8 // the whole segment from when lakitu is called to when you regain control
|
||||||
|
#define FRIGID_EFFECT 0x10 // Cold colors on Sherbet Land after in frigid water
|
||||||
|
#define THAWING_EFFECT 0x20 // Regaining usual colors post frigid effect
|
||||||
|
#define FROZEN_EFFECT 0x80 // In the ice cube
|
||||||
|
#define WENT_OVER_OOB 0x100 // Player went over (or is on) an OOB area. Cancelled if touch back in bounds
|
||||||
|
#define LAKITU_LAVA 0x1000 // smoky effect when retrieved from lava
|
||||||
|
#define LAKITU_WATER 0x2000 // dripping effect when retreived from water
|
||||||
|
|
||||||
|
// player->kartProps
|
||||||
|
#define BACK_UP 0x1
|
||||||
|
#define RIGHT_TURN 0x2 // non-drifting (more than 5 degrees)
|
||||||
|
#define LEFT_TURN 0x4 // non-drifting (more than 5 degrees)
|
||||||
|
#define MOVE_BACKWARDS 0x8 // includes lakitu
|
||||||
|
#define LOSE_GP_RACE 0x10 // pointless, only unsets itself
|
||||||
|
#define THROTTLE 0x20 // Closely tied to just pressing A. Possible exception for AB-spins
|
||||||
|
#define EARLY_SPINOUT_RIGHT 0x40 // Spinning out while facing right (not actually used for anything)
|
||||||
|
#define EARLY_SPINOUT_LEFT 0x80 // Spinning out while facing left
|
||||||
|
#define POST_TUMBLE_GAS 0x100 // Causes particles after a vertical tumble, I think
|
||||||
|
#define BECOME_INVISIBLE 0x200
|
||||||
|
#define UNUSED_0x400 0x400 // locked behind 0x800 (func_80091440)
|
||||||
|
#define UNUSED_0x800 0x800 // locked behind 0x400 (func_8002B830 -> func_800911B4)
|
||||||
|
#define UNUSED_0x1000 0x1000 // 0x1000 locked behind 0x400 (func_8002B830 -> func_800911B4)
|
||||||
|
#define UNUSED_0x2000 0x2000 // 0x2000 locked behind 0x400 and 0x800 (func_8002B830 -> func_800911B4, apply_effect -> func_80091298,
|
||||||
|
// func_80091440)
|
||||||
|
#define DRIVING_SPINOUT 0x4000
|
||||||
|
#define UNKNOWN_BATTLE_VAR 0x8000 // 0x8000 something battle related, unclear if ever set
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief triggers indicating that an effect should be applied to a kart
|
* @brief triggers indicating that an effect should be applied to a kart
|
||||||
|
|
@ -458,18 +518,6 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
|
||||||
#define COLOR_LAVA GPACK_RGB888(0x34, 0x00, 0x00)
|
#define COLOR_LAVA GPACK_RGB888(0x34, 0x00, 0x00)
|
||||||
#define COLOR_BLACK GPACK_RGB888(0, 0, 0)
|
#define COLOR_BLACK GPACK_RGB888(0, 0, 0)
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief player water interaction flags (player->unk_0DE)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define WATER_NO_INTERACTION 0x0000 // No water interaction
|
|
||||||
#define WATER_IS_FULLY_SUBMERGED 0x0001 // Kart is completely underwater
|
|
||||||
#define WATER_IS_PARTIALLY_SUBMERGED 0x0002 // Kart is partially in the water
|
|
||||||
#define WATER_IN_DEEP_LIQUID_STATE 0x0004 // Persistent flag for being in a deep liquid state?
|
|
||||||
#define WATER_JUST_ENTERED_DEEP_LIQUID 0x0008 // Momentary flag for the instant of entering deep liquid
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Collision mesh flags
|
* Collision mesh flags
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
#include "actors_extended.h"
|
||||||
|
#include "collision.h"
|
||||||
|
#include "defines.h"
|
||||||
|
#include "external.h"
|
||||||
|
#include "sounds.h"
|
||||||
#include <actors.h>
|
#include <actors.h>
|
||||||
#include <main.h>
|
#include <main.h>
|
||||||
|
|
||||||
|
|
@ -40,7 +45,7 @@ void update_actor_fake_item_box(struct FakeItemBox* fake_item_box) {
|
||||||
fake_item_box->pos[1], fake_item_box->pos[2]);
|
fake_item_box->pos[1], fake_item_box->pos[2]);
|
||||||
func_802B4E30((struct Actor*) fake_item_box);
|
func_802B4E30((struct Actor*) fake_item_box);
|
||||||
temp_v1_3 = &gControllers[temp_v1];
|
temp_v1_3 = &gControllers[temp_v1];
|
||||||
if ((temp_v0_4->type & 0x4000) != 0) {
|
if ((temp_v0_4->type & PLAYER_HUMAN) != 0) {
|
||||||
|
|
||||||
if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) {
|
if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) {
|
||||||
temp_v1_3->buttonDepressed &= 0xDFFF;
|
temp_v1_3->buttonDepressed &= 0xDFFF;
|
||||||
|
|
|
||||||
|
|
@ -595,7 +595,7 @@ void func_800C2474(void) {
|
||||||
gPlayers[var_v0].unk_20C = 0.0f;
|
gPlayers[var_v0].unk_20C = 0.0f;
|
||||||
gPlayers[var_v0].unk_0C0 = 0;
|
gPlayers[var_v0].unk_0C0 = 0;
|
||||||
gPlayers[var_v0].unk_098 = 0.0f;
|
gPlayers[var_v0].unk_098 = 0.0f;
|
||||||
gPlayers[var_v0].waterInteractionFlags = WATER_NO_INTERACTION;
|
gPlayers[var_v0].oobProps = 0;
|
||||||
D_8018FC10[var_v0][0] = 0x00FF;
|
D_8018FC10[var_v0][0] = 0x00FF;
|
||||||
D_8018FC10[var_v0][1] = 0;
|
D_8018FC10[var_v0][1] = 0;
|
||||||
D_800EA10C[var_v0] = 0;
|
D_800EA10C[var_v0] = 0;
|
||||||
|
|
@ -1835,7 +1835,7 @@ void func_800C5CB8(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_800C5D04(u8 playerId) {
|
void func_800C5D04(u8 playerId) {
|
||||||
if ((gPlayers[playerId].unk_044 & 0x20) == 0x20) {
|
if ((gPlayers[playerId].kartProps & THROTTLE) == THROTTLE) {
|
||||||
D_800E9E34[playerId] = 0;
|
D_800E9E34[playerId] = 0;
|
||||||
if (D_800E9E24[playerId] < 0x4E20) {
|
if (D_800E9E24[playerId] < 0x4E20) {
|
||||||
if ((u8) D_800EA16C == 0) {
|
if ((u8) D_800EA16C == 0) {
|
||||||
|
|
@ -1864,7 +1864,7 @@ void func_800C5D04(u8 playerId) {
|
||||||
|
|
||||||
void func_800C5E38(u8 playerId) {
|
void func_800C5E38(u8 playerId) {
|
||||||
if (D_800EA108 == 0) {
|
if (D_800EA108 == 0) {
|
||||||
if (((gPlayers[playerId].unk_044 & 0x20) != 0x20) && (gPlayers[playerId].unk_098 > 400.0f)) {
|
if (((gPlayers[playerId].kartProps & THROTTLE) != THROTTLE) && (gPlayers[playerId].unk_098 > 400.0f)) {
|
||||||
D_800E9E14[playerId] = 1;
|
D_800E9E14[playerId] = 1;
|
||||||
if (D_800EA0EC[playerId] == 0) {
|
if (D_800EA0EC[playerId] == 0) {
|
||||||
D_800E9F7C[playerId].unk_10 = 0.6f - D_800E9F54[playerId];
|
D_800E9F7C[playerId].unk_10 = 0.6f - D_800E9F54[playerId];
|
||||||
|
|
@ -1916,7 +1916,7 @@ void func_800C6108(u8 playerId) {
|
||||||
|
|
||||||
player = &gPlayers[playerId];
|
player = &gPlayers[playerId];
|
||||||
D_800E9E64[playerId] = (player->unk_098 / D_800E9DC4[playerId]) + D_800E9DD4[playerId];
|
D_800E9E64[playerId] = (player->unk_098 / D_800E9DC4[playerId]) + D_800E9DD4[playerId];
|
||||||
if ((player->unk_098 < 1800.0f) && ((player->unk_044 & 0x20) != 0x20)) {
|
if ((player->unk_098 < 1800.0f) && ((player->kartProps & THROTTLE) != THROTTLE)) {
|
||||||
D_800E9E64[playerId] = (player->unk_098 / D_800E9F7C[playerId].unk_34) + D_800E9F7C[playerId].unk_28;
|
D_800E9E64[playerId] = (player->unk_098 / D_800E9F7C[playerId].unk_34) + D_800E9F7C[playerId].unk_28;
|
||||||
if (D_800E9EC4) {} // ?
|
if (D_800E9EC4) {} // ?
|
||||||
}
|
}
|
||||||
|
|
@ -2014,7 +2014,7 @@ void func_800C64A0(u8 playerId) {
|
||||||
if (D_800E9EF4[playerId] < 0.0f) {
|
if (D_800E9EF4[playerId] < 0.0f) {
|
||||||
D_800E9EF4[playerId] = 0.0f;
|
D_800E9EF4[playerId] = 0.0f;
|
||||||
}
|
}
|
||||||
if ((gPlayers[playerId].unk_044 & 0x20) == 0x20) {
|
if ((gPlayers[playerId].kartProps & THROTTLE) == THROTTLE) {
|
||||||
D_800E9F04[playerId] = 0.56f - (D_800E9E24[playerId] * 0.06f);
|
D_800E9F04[playerId] = 0.56f - (D_800E9E24[playerId] * 0.06f);
|
||||||
} else {
|
} else {
|
||||||
D_800E9F04[playerId] = (D_800E9E34[playerId] / 50.0f) + 0.25f;
|
D_800E9F04[playerId] = (D_800E9E34[playerId] / 50.0f) + 0.25f;
|
||||||
|
|
@ -2390,12 +2390,12 @@ void func_800C70A8(u8 playerId) {
|
||||||
(D_800E9E74[playerId] != 0x0000001C)) {
|
(D_800E9E74[playerId] != 0x0000001C)) {
|
||||||
D_800E9E74[playerId] = 0;
|
D_800E9E74[playerId] = 0;
|
||||||
}
|
}
|
||||||
if ((((gPlayers[playerId].effects & 0x4000) == 0x4000) && ((gPlayers[playerId].type & 0x2000) != 0x2000)) ||
|
if ((((gPlayers[playerId].effects & 0x4000) == 0x4000) && ((gPlayers[playerId].type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE)) ||
|
||||||
((gPlayers[playerId].effects & 0x800) == 0x800) || ((gPlayers[playerId].effects & 0x80) == 0x80) ||
|
((gPlayers[playerId].effects & 0x800) == 0x800) || ((gPlayers[playerId].effects & 0x80) == 0x80) ||
|
||||||
((gPlayers[playerId].effects & 0x40) == 0x40) || ((gPlayers[playerId].unk_044 & 0x4000) == 0x4000)) {
|
((gPlayers[playerId].effects & 0x40) == 0x40) || ((gPlayers[playerId].kartProps & DRIVING_SPINOUT) == DRIVING_SPINOUT)) {
|
||||||
D_800E9E74[playerId] = 0x00000012;
|
D_800E9E74[playerId] = 0x00000012;
|
||||||
}
|
}
|
||||||
if ((((gPlayers[playerId].effects & 0x20) == 0x20) && ((gPlayers[playerId].type & 0x2000) != 0x2000)) ||
|
if ((((gPlayers[playerId].effects & 0x20) == 0x20) && ((gPlayers[playerId].type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE)) ||
|
||||||
((gPlayers[playerId].effects & 0x800) == 0x800)) {
|
((gPlayers[playerId].effects & 0x800) == 0x800)) {
|
||||||
D_800E9E74[playerId] = 0x00000013;
|
D_800E9E74[playerId] = 0x00000013;
|
||||||
}
|
}
|
||||||
|
|
@ -2686,7 +2686,7 @@ void func_800C76C0(u8 playerId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_800C847C(u8 playerId) {
|
void func_800C847C(u8 playerId) {
|
||||||
if ((gPlayers[playerId].waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) {
|
if ((gPlayers[playerId].oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
|
||||||
if (D_800E9F74[playerId] == 0) {
|
if (D_800E9F74[playerId] == 0) {
|
||||||
if ((s32) D_800EA1C0 < 2) {
|
if ((s32) D_800EA1C0 < 2) {
|
||||||
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xF9, 0x26));
|
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xF9, 0x26));
|
||||||
|
|
|
||||||
16
src/camera.c
16
src/camera.c
|
|
@ -475,7 +475,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
|
||||||
D_80164A78[index] = D_800DDB30[gActiveScreenMode];
|
D_80164A78[index] = D_800DDB30[gActiveScreenMode];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 0x100) == 0x100) {
|
if ((player->lakituProps & WENT_OVER_OOB) == WENT_OVER_OOB) {
|
||||||
switch (gActiveScreenMode) {
|
switch (gActiveScreenMode) {
|
||||||
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
|
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
|
||||||
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
|
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
|
||||||
|
|
@ -545,7 +545,7 @@ void func_8001CCEC(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
|
||||||
*arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15));
|
*arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) != 0) {
|
if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) != 0) {
|
||||||
*arg4 = gPlayerWaterLevel[index];
|
*arg4 = gPlayerWaterLevel[index];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -590,7 +590,7 @@ void func_8001D53C(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
|
||||||
stackPadding0 = player->pos[0] + sp68[0];
|
stackPadding0 = player->pos[0] + sp68[0];
|
||||||
stackPadding2 = player->pos[2] + sp68[2];
|
stackPadding2 = player->pos[2] + sp68[2];
|
||||||
stackPadding1 = sp68[1] + (player->unk_074 + 1.5);
|
stackPadding1 = sp68[1] + (player->unk_074 + 1.5);
|
||||||
if ((player->unk_0CA & 1) == 1) {
|
if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
|
||||||
stackPadding1 = sp68[1] + (thing + 10.0f);
|
stackPadding1 = sp68[1] + (thing + 10.0f);
|
||||||
}
|
}
|
||||||
*arg3 = stackPadding0;
|
*arg3 = stackPadding0;
|
||||||
|
|
@ -709,7 +709,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
|
||||||
D_80164A78[index] = D_800DDB30[gActiveScreenMode];
|
D_80164A78[index] = D_800DDB30[gActiveScreenMode];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 0x100) == 0x100) {
|
if ((player->lakituProps & WENT_OVER_OOB) == WENT_OVER_OOB) {
|
||||||
|
|
||||||
move_f32_towards(&D_80164A90[index], 15, 0.02f);
|
move_f32_towards(&D_80164A90[index], 15, 0.02f);
|
||||||
move_f32_towards(&D_80164AA0[index], 20, 0.02f);
|
move_f32_towards(&D_80164AA0[index], 20, 0.02f);
|
||||||
|
|
@ -765,7 +765,7 @@ void func_8001D944(Player* player, Camera* camera, Vec3f arg2, f32* arg3, f32* a
|
||||||
*arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15));
|
*arg4 = camera->pos[1] + (((y - camera->pos[1]) * 0.15));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) != 0) {
|
if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) != 0) {
|
||||||
*arg4 = gPlayerWaterLevel[index];
|
*arg4 = gPlayerWaterLevel[index];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1109,7 +1109,7 @@ void func_8001EE98(Player* player, Camera* camera, s8 index) {
|
||||||
func_8001A588(&camera->mode, camera, player, index, cameraIndex);
|
func_8001A588(&camera->mode, camera, player, index, cameraIndex);
|
||||||
break;
|
break;
|
||||||
case 1: // player camera
|
case 1: // player camera
|
||||||
if (((player->unk_0CA & 1) == 1) || ((player->unk_0CA & 2) == 2)) {
|
if (((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) || ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
|
||||||
func_8001E8E8(camera, player, index);
|
func_8001E8E8(camera, player, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1120,7 +1120,7 @@ void func_8001EE98(Player* player, Camera* camera, s8 index) {
|
||||||
func_8001F87C(cameraIndex);
|
func_8001F87C(cameraIndex);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
if (((player->unk_0CA & 1) == 1) || ((player->unk_0CA & 2) == 2)) {
|
if (((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) || ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
|
||||||
func_8001E8E8(camera, player, index);
|
func_8001E8E8(camera, player, index);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -1269,7 +1269,7 @@ void func_8001F87C(s32 cameraId) {
|
||||||
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
||||||
if (gModeSelection == GRAND_PRIX) {
|
if (gModeSelection == GRAND_PRIX) {
|
||||||
for (size_t i = 0; i < NUM_PLAYERS; i++) {
|
for (size_t i = 0; i < NUM_PLAYERS; i++) {
|
||||||
if ((gPlayerOne[i].type & 0x200) || (gPlayerOne[i].type & 0x80)) {
|
if ((gPlayerOne[i].type & PLAYER_STAGING) || (gPlayerOne[i].type & PLAYER_UNKNOWN_0x80)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == PLAYER_EIGHT) {
|
if (i == PLAYER_EIGHT) {
|
||||||
|
|
|
||||||
|
|
@ -1226,7 +1226,7 @@ bool func_800088D8(s32 playerId, s16 lapNum, s16 arg2) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
player = &gPlayers[playerId];
|
player = &gPlayers[playerId];
|
||||||
if (player->type & 0x4000) {
|
if (player->type & PLAYER_HUMAN) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1641,7 +1641,7 @@ void update_player(s32 playerId) {
|
||||||
if (gTrackMaxZ < player->pos[2]) { D_801633E0[playerId] = 4; }
|
if (gTrackMaxZ < player->pos[2]) { D_801633E0[playerId] = 4; }
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8)) {
|
if (!(player->lakituProps & HELD_BY_LAKITU) && !(player->lakituProps & LAKITU_SCENE)) {
|
||||||
gPlayerPathIndex = gPathIndexByPlayerId[playerId];
|
gPlayerPathIndex = gPathIndexByPlayerId[playerId];
|
||||||
set_current_path(gPlayerPathIndex);
|
set_current_path(gPlayerPathIndex);
|
||||||
|
|
||||||
|
|
@ -1669,7 +1669,7 @@ void update_player(s32 playerId) {
|
||||||
// }
|
// }
|
||||||
if (player->type & PLAYER_CINEMATIC_MODE) {
|
if (player->type & PLAYER_CINEMATIC_MODE) {
|
||||||
player->effects &= ~REVERSE_EFFECT;
|
player->effects &= ~REVERSE_EFFECT;
|
||||||
player->unk_044 &= ~1;
|
player->kartProps &= ~BACK_UP;
|
||||||
}
|
}
|
||||||
update_player_path_completion(playerId, player);
|
update_player_path_completion(playerId, player);
|
||||||
if ((!IsPodiumCeremony()) && ((D_80163240[playerId] == 1) || (playerId == 0))) {
|
if ((!IsPodiumCeremony()) && ((D_80163240[playerId] == 1) || (playerId == 0))) {
|
||||||
|
|
@ -2570,7 +2570,7 @@ s16 update_player_path(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player*
|
||||||
UNUSED s32 stackPadding2;
|
UNUSED s32 stackPadding2;
|
||||||
TrackPathPoint* temp_v1;
|
TrackPathPoint* temp_v1;
|
||||||
|
|
||||||
if ((player->type & 0x4000) && !(player->type & 0x1000)) {
|
if ((player->type & PLAYER_HUMAN) && !(player->type & PLAYER_CPU)) {
|
||||||
newWaypoint = update_path_index_with_track(posX, posY, posZ, waypointIndex, pathIndex,
|
newWaypoint = update_path_index_with_track(posX, posY, posZ, waypointIndex, pathIndex,
|
||||||
(u16) get_track_section_id(player->collision.meshIndexZX));
|
(u16) get_track_section_id(player->collision.meshIndexZX));
|
||||||
if (newWaypoint == -1) {
|
if (newWaypoint == -1) {
|
||||||
|
|
@ -2578,12 +2578,12 @@ s16 update_player_path(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, Player*
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (D_801631E0[playerId] == 1) {
|
if (D_801631E0[playerId] == 1) {
|
||||||
if (player->unk_0CA & 1) {
|
if (player->lakituProps & LAKITU_RETRIEVAL) {
|
||||||
temp_v1 = &gTrackPaths[pathIndex][waypointIndex];
|
temp_v1 = &gTrackPaths[pathIndex][waypointIndex];
|
||||||
player->pos[0] = (f32) temp_v1->x;
|
player->pos[0] = (f32) temp_v1->x;
|
||||||
player->pos[1] = (f32) temp_v1->y;
|
player->pos[1] = (f32) temp_v1->y;
|
||||||
player->pos[2] = (f32) temp_v1->z;
|
player->pos[2] = (f32) temp_v1->z;
|
||||||
player->unk_0CA &= ~0x0001;
|
player->lakituProps &= ~LAKITU_RETRIEVAL;
|
||||||
return waypointIndex;
|
return waypointIndex;
|
||||||
}
|
}
|
||||||
if (playerId == ((s32) D_80163488 % 8)) {
|
if (playerId == ((s32) D_80163488 % 8)) {
|
||||||
|
|
@ -3115,7 +3115,7 @@ void func_8000DF8C(s32 bombKartId) {
|
||||||
var_s1 = 0;
|
var_s1 = 0;
|
||||||
sp7E = 4;
|
sp7E = 4;
|
||||||
var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||||
var_v0->type &= ~0x2000;
|
var_v0->type &= ~PLAYER_STAGING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -6969,7 +6969,7 @@ void func_8001A588(UNUSED u16* localD_80152300, Camera* camera, Player* player,
|
||||||
if (playerId >= 8) {
|
if (playerId >= 8) {
|
||||||
playerId = 1;
|
playerId = 1;
|
||||||
}
|
}
|
||||||
if ((!(gPlayers[playerId].unk_0CA & 2) && !(gPlayers[playerId].unk_0CA & 8))) {
|
if ((!(gPlayers[playerId].lakituProps & HELD_BY_LAKITU) && !(gPlayers[playerId].lakituProps & LAKITU_SCENE))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -7863,26 +7863,26 @@ void func_8001C14C(void) {
|
||||||
|
|
||||||
player = &gPlayerOne[var_s1];
|
player = &gPlayerOne[var_s1];
|
||||||
update_player(var_s1);
|
update_player(var_s1);
|
||||||
if (!(player->type & 0x2000)) {
|
if (!(player->type & PLAYER_START_SEQUENCE)) {
|
||||||
temp_f0 = D_80163418[var_s1] - player->pos[0];
|
temp_f0 = D_80163418[var_s1] - player->pos[0];
|
||||||
temp_f2 = D_80163438[var_s1] - player->pos[2];
|
temp_f2 = D_80163438[var_s1] - player->pos[2];
|
||||||
if ((f64) ((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 1.0) {
|
if ((f64) ((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 1.0) {
|
||||||
if (var_s1 != 3) {
|
if (var_s1 != 3) {
|
||||||
if (1) {}
|
if (1) {}
|
||||||
// Why oh why is a ternary required here? Who does that?
|
// Why oh why is a ternary required here? Who does that?
|
||||||
(D_8016347C == 0) ? (player->type |= 0x2000) : (player->type &= ~0x2000);
|
(D_8016347C == 0) ? (player->type |= PLAYER_START_SEQUENCE) : (player->type &= ~PLAYER_START_SEQUENCE);
|
||||||
if ((gPlayerOne->type & 0x2000) && (gPlayerTwo->type & 0x2000) && (gPlayerThree->type & 0x2000)) {
|
if ((gPlayerOne->type & PLAYER_START_SEQUENCE) && (gPlayerTwo->type & PLAYER_START_SEQUENCE) && (gPlayerThree->type & PLAYER_START_SEQUENCE)) {
|
||||||
D_8016347C = 1;
|
D_8016347C = 1;
|
||||||
D_80163480 = 0;
|
D_80163480 = 0;
|
||||||
}
|
}
|
||||||
} else if (D_8016347E == 0) {
|
} else if (D_8016347E == 0) {
|
||||||
if (!(player->effects & 0x01000000)) {
|
if (!(player->effects & 0x01000000)) {
|
||||||
player->type |= 0x2000;
|
player->type |= PLAYER_START_SEQUENCE;
|
||||||
}
|
}
|
||||||
D_8016347E = 1;
|
D_8016347E = 1;
|
||||||
D_80163484 = 0;
|
D_80163484 = 0;
|
||||||
} else if (!(player->effects & 0x01000000)) {
|
} else if (!(player->effects & 0x01000000)) {
|
||||||
player->type |= 0x2000;
|
player->type |= PLAYER_START_SEQUENCE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,7 @@ void func_8003F138(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4
|
||||||
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;
|
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;
|
||||||
func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2);
|
func_8002A5F4(arg1, *arg4, arg2, 0.5f, 2);
|
||||||
if (player->surfaceType == GRASS) {
|
if (player->surfaceType == GRASS) {
|
||||||
player->unk_044 &= ~1;
|
player->kartProps &= ~BACK_UP;
|
||||||
}
|
}
|
||||||
if (player->collision.orientationVector[1] <= 0.8357f) {
|
if (player->collision.orientationVector[1] <= 0.8357f) {
|
||||||
arg3[0] = ((player->unk_206 / 182) * 0xC8);
|
arg3[0] = ((player->unk_206 / 182) * 0xC8);
|
||||||
|
|
@ -222,7 +222,7 @@ void func_8003F46C(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4
|
||||||
arg1[0] = -player->collision.orientationVector[0];
|
arg1[0] = -player->collision.orientationVector[0];
|
||||||
arg1[1] = -player->collision.orientationVector[1];
|
arg1[1] = -player->collision.orientationVector[1];
|
||||||
arg1[2] = -player->collision.orientationVector[2];
|
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->lakituProps & HELD_BY_LAKITU) == 0)) {
|
||||||
*arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1;
|
*arg5 += arg1[0] * player->collision.surfaceDistance[2] * 1;
|
||||||
*arg6 += arg1[1] * player->collision.surfaceDistance[2] * 1;
|
*arg6 += arg1[1] * player->collision.surfaceDistance[2] * 1;
|
||||||
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;
|
*arg7 += arg1[2] * player->collision.surfaceDistance[2] * 1;
|
||||||
|
|
|
||||||
|
|
@ -3249,7 +3249,7 @@ void func_80060504(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||||
s32 temp_v0;
|
s32 temp_v0;
|
||||||
UNUSED s32 test;
|
UNUSED s32 test;
|
||||||
|
|
||||||
if ((player->unk_044 & 0x20) == 0x20) {
|
if ((player->kartProps & THROTTLE) == THROTTLE) {
|
||||||
var_v0 = 5;
|
var_v0 = 5;
|
||||||
} else {
|
} else {
|
||||||
var_v0 = 0xE;
|
var_v0 = 0xE;
|
||||||
|
|
@ -3272,7 +3272,7 @@ void func_80060504(Player* player, s16 arg1, s32 arg2, UNUSED s8 arg3, UNUSED s8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player->particlePool0[arg1].unk_024 = 0.0f;
|
player->particlePool0[arg1].unk_024 = 0.0f;
|
||||||
if ((player->unk_044 & 0x20) == 0x20) {
|
if ((player->kartProps & THROTTLE) == THROTTLE) {
|
||||||
player->particlePool0[arg1].unk_040 = 0;
|
player->particlePool0[arg1].unk_040 = 0;
|
||||||
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
|
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
|
||||||
set_particle_colour(&player->particlePool0[arg1], 0x00FFFF00, 0x0080);
|
set_particle_colour(&player->particlePool0[arg1], 0x00FFFF00, 0x0080);
|
||||||
|
|
@ -3317,7 +3317,7 @@ void func_800608E0(Player* player, s16 arg1, UNUSED s32 arg2, s8 arg3, UNUSED s8
|
||||||
var_f0 = 0.0f;
|
var_f0 = 0.0f;
|
||||||
}
|
}
|
||||||
sp4C = (gPlayerWaterLevel[arg3] - player->pos[1]) - 3.0f;
|
sp4C = (gPlayerWaterLevel[arg3] - player->pos[1]) - 3.0f;
|
||||||
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) && (!IsKoopaTroopaBeach())) {
|
if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) && (!IsKoopaTroopaBeach())) {
|
||||||
var_f0 = 2.5f;
|
var_f0 = 2.5f;
|
||||||
sp4C = (f32) ((f64) (gPlayerWaterLevel[arg3] - player->pos[1]) + 0.1);
|
sp4C = (f32) ((f64) (gPlayerWaterLevel[arg3] - player->pos[1]) + 0.1);
|
||||||
}
|
}
|
||||||
|
|
@ -3404,7 +3404,7 @@ void func_80060F50(Player* player, s16 arg1, UNUSED s32 arg2, s8 arg3, UNUSED s8
|
||||||
player->particlePool0[arg1].pos[0] =
|
player->particlePool0[arg1].pos[0] =
|
||||||
player->pos[0] + (sins(player->particlePool0[arg1].unk_020) * -5.8);
|
player->pos[0] + (sins(player->particlePool0[arg1].unk_020) * -5.8);
|
||||||
player->particlePool0[arg1].pos[1] = gPlayerWaterLevel[arg3];
|
player->particlePool0[arg1].pos[1] = gPlayerWaterLevel[arg3];
|
||||||
player->waterInteractionFlags &= ~WATER_JUST_ENTERED_DEEP_LIQUID;
|
player->oobProps &= ~UNDER_OOB_LEVEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80061094(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
|
void func_80061094(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
|
||||||
|
|
@ -3439,7 +3439,7 @@ void func_80061224(Player* player, s16 arg1, s32 arg2, s8 arg3, s8 arg4) {
|
||||||
} else if (player->particlePool0[arg2].unk_01E >= 2) {
|
} else if (player->particlePool0[arg2].unk_01E >= 2) {
|
||||||
func_80061130(player, arg1, arg2, arg3, arg4);
|
func_80061130(player, arg1, arg2, arg3, arg4);
|
||||||
if (arg1 == 9) {
|
if (arg1 == 9) {
|
||||||
player->unk_044 &= ~0x0200;
|
player->kartProps &= ~BECOME_INVISIBLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3479,7 +3479,7 @@ void func_80061430(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
|
||||||
player->particlePool3[var_s2].pos[2] = player->pos[2];
|
player->particlePool3[var_s2].pos[2] = player->pos[2];
|
||||||
player->particlePool3[var_s2].pos[0] = player->pos[0];
|
player->particlePool3[var_s2].pos[0] = player->pos[0];
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x1000;
|
player->kartProps &= ~UNUSED_0x1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_800615AC(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
|
void func_800615AC(Player* player, s16 arg1, UNUSED s32 arg2, UNUSED s8 arg3, UNUSED s8 arg4) {
|
||||||
|
|
@ -3767,42 +3767,42 @@ void func_800624D8(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
|
||||||
}
|
}
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case GRASS:
|
case GRASS:
|
||||||
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case SAND_OFFROAD:
|
case SAND_OFFROAD:
|
||||||
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 2, 1, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case SAND:
|
case SAND:
|
||||||
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 3, 1, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 3, 1, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case WET_SAND:
|
case WET_SAND:
|
||||||
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 4, 1, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 4, 1, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case DIRT_OFFROAD:
|
case DIRT_OFFROAD:
|
||||||
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 5, 1, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 5, 1, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case SNOW:
|
case SNOW:
|
||||||
case SNOW_OFFROAD:
|
case SNOW_OFFROAD:
|
||||||
|
|
@ -3810,7 +3810,7 @@ void func_800624D8(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 6, 1, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 6, 1, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
case ASPHALT:
|
case ASPHALT:
|
||||||
case STONE:
|
case STONE:
|
||||||
|
|
@ -3819,14 +3819,14 @@ void func_800624D8(Player* player, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s8 a
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
for (var_s1 = 0; var_s1 < 10; var_s1++) {
|
||||||
func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8);
|
func_8005DAD8(&player->particlePool3[var_s1], 0, 0, 0x00A8);
|
||||||
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
func_80062484(player, &player->particlePool3[var_s1], var_s1);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3870,7 +3870,7 @@ void func_80062A18(Player* player, s8 arg1, UNUSED s8 arg2, s8 index) {
|
||||||
player->particlePool2[arg1 /* arg1 instead of arg3 */].scale = 0.2f;
|
player->particlePool2[arg1 /* arg1 instead of arg3 */].scale = 0.2f;
|
||||||
player->particlePool2[index].unk_01E = 1;
|
player->particlePool2[index].unk_01E = 1;
|
||||||
player->particlePool2[index].unk_020 = 0;
|
player->particlePool2[index].unk_020 = 0;
|
||||||
player->unk_0B6 &= ~0x0080;
|
player->kartGraphics &= ~WHIRRR;
|
||||||
player->particlePool2[index].pos[2] = player->pos[2];
|
player->particlePool2[index].pos[2] = player->pos[2];
|
||||||
player->particlePool2[index].pos[0] = player->pos[0];
|
player->particlePool2[index].pos[0] = player->pos[0];
|
||||||
player->particlePool2[index].pos[1] = (player->pos[1] + 4.0f);
|
player->particlePool2[index].pos[1] = (player->pos[1] + 4.0f);
|
||||||
|
|
@ -3981,7 +3981,7 @@ void func_80062F98(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3) {
|
||||||
temp_f0 = player->particlePool1[arg1].unk_018 / 10.0f;
|
temp_f0 = player->particlePool1[arg1].unk_018 / 10.0f;
|
||||||
++player->particlePool1[arg1].unk_01E;
|
++player->particlePool1[arg1].unk_01E;
|
||||||
player->particlePool1[arg1].pos[1] += temp_f0;
|
player->particlePool1[arg1].pos[1] += temp_f0;
|
||||||
if ((player->unk_0CA & 1) == 1) {
|
if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
|
||||||
player->particlePool1[arg1].pos[1] += (temp_f0 + 0.3);
|
player->particlePool1[arg1].pos[1] += (temp_f0 + 0.3);
|
||||||
if ((player->particlePool1[arg1].unk_01E == 0x10) ||
|
if ((player->particlePool1[arg1].unk_01E == 0x10) ||
|
||||||
((gPlayerWaterLevel[arg2] - player->particlePool1[arg1].pos[1]) < 3.0f)) {
|
((gPlayerWaterLevel[arg2] - player->particlePool1[arg1].pos[1]) < 3.0f)) {
|
||||||
|
|
@ -4321,7 +4321,7 @@ void func_80064184(Player* player, s16 arg1, s8 arg2, UNUSED s8 arg3) {
|
||||||
f32 sp3C;
|
f32 sp3C;
|
||||||
|
|
||||||
sp40 = gPlayerWaterLevel[arg2] - player->pos[1] - 3.0f;
|
sp40 = gPlayerWaterLevel[arg2] - player->pos[1] - 3.0f;
|
||||||
if (((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) != 0) && (!IsKoopaTroopaBeach())) {
|
if (((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) != 0) && (!IsKoopaTroopaBeach())) {
|
||||||
sp40 = gPlayerWaterLevel[arg2] - player->pos[1] + 0.1;
|
sp40 = gPlayerWaterLevel[arg2] - player->pos[1] + 0.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4570,7 +4570,7 @@ void func_80064DEC(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
|
||||||
++player->particlePool2[index].unk_01E;
|
++player->particlePool2[index].unk_01E;
|
||||||
|
|
||||||
if (player->particlePool2[index].unk_01E == 9) {
|
if (player->particlePool2[index].unk_01E == 9) {
|
||||||
player->unk_0B6 &= ~0x0040;
|
player->kartGraphics &= ~CRASH;
|
||||||
player->particlePool2[index].isAlive = 0;
|
player->particlePool2[index].isAlive = 0;
|
||||||
player->particlePool2[index].unk_01E = 0;
|
player->particlePool2[index].unk_01E = 0;
|
||||||
player->particlePool2[index].type = 0;
|
player->particlePool2[index].type = 0;
|
||||||
|
|
@ -4592,7 +4592,7 @@ void func_80064EA4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
|
||||||
} else {
|
} else {
|
||||||
player->particlePool2[index].scale -= 1.8;
|
player->particlePool2[index].scale -= 1.8;
|
||||||
if (player->particlePool2[index].scale <= 0.0f) {
|
if (player->particlePool2[index].scale <= 0.0f) {
|
||||||
player->unk_0B6 &= ~0x1000;
|
player->kartGraphics &= ~EXPLOSION;
|
||||||
player->particlePool2[index].isAlive = 0;
|
player->particlePool2[index].isAlive = 0;
|
||||||
player->particlePool2[index].unk_01E = 0;
|
player->particlePool2[index].unk_01E = 0;
|
||||||
player->particlePool2[index].type = 0;
|
player->particlePool2[index].type = 0;
|
||||||
|
|
@ -4608,7 +4608,7 @@ void func_80064F88(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
|
||||||
player->particlePool2[index].scale = 1.2f;
|
player->particlePool2[index].scale = 1.2f;
|
||||||
}
|
}
|
||||||
if (player->particlePool2[index].unk_01E >= 12) {
|
if (player->particlePool2[index].unk_01E >= 12) {
|
||||||
player->unk_0B6 &= ~0x0800;
|
player->kartGraphics &= ~BOING;
|
||||||
player->particlePool2[index].isAlive = 0;
|
player->particlePool2[index].isAlive = 0;
|
||||||
player->particlePool2[index].unk_01E = 0;
|
player->particlePool2[index].unk_01E = 0;
|
||||||
player->particlePool2[index].type = 0;
|
player->particlePool2[index].type = 0;
|
||||||
|
|
@ -4625,7 +4625,7 @@ void func_80065030(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->particlePool2[index].unk_01E >= 12) {
|
if (player->particlePool2[index].unk_01E >= 12) {
|
||||||
player->unk_0B6 &= ~0x0100;
|
player->kartGraphics &= ~POOMP;
|
||||||
player->particlePool2[index].isAlive = 0;
|
player->particlePool2[index].isAlive = 0;
|
||||||
player->particlePool2[index].unk_01E = 0;
|
player->particlePool2[index].unk_01E = 0;
|
||||||
player->particlePool2[index].type = 0;
|
player->particlePool2[index].type = 0;
|
||||||
|
|
@ -4664,7 +4664,7 @@ void func_800651F4(Player* player, UNUSED s8 arg1, UNUSED s8 arg2, s8 index) {
|
||||||
} else {
|
} else {
|
||||||
player->particlePool2[index].scale -= 0.4;
|
player->particlePool2[index].scale -= 0.4;
|
||||||
if (player->particlePool2[index].scale <= 0.0f) {
|
if (player->particlePool2[index].scale <= 0.0f) {
|
||||||
player->unk_0B6 &= ~0x0020;
|
player->kartGraphics &= ~WHISTLE;
|
||||||
player->particlePool2[index].isAlive = 0;
|
player->particlePool2[index].isAlive = 0;
|
||||||
player->particlePool2[index].unk_01E = 0;
|
player->particlePool2[index].unk_01E = 0;
|
||||||
player->particlePool2[index].type = 0;
|
player->particlePool2[index].type = 0;
|
||||||
|
|
@ -6048,7 +6048,7 @@ void func_8006C6AC(Player* player, s16 particleIndex, s8 arg2, s8 arg3) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) {
|
if (player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) {
|
||||||
func_80060BCC(player, particleIndex, sp28, arg2_copy, arg3);
|
func_80060BCC(player, particleIndex, sp28, arg2_copy, arg3);
|
||||||
} else if (!(player->effects & 8) && !(player->effects & 2)) {
|
} else if (!(player->effects & 8) && !(player->effects & 2)) {
|
||||||
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) &&
|
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) &&
|
||||||
|
|
@ -6060,7 +6060,7 @@ void func_8006C6AC(Player* player, s16 particleIndex, s8 arg2, s8 arg3) {
|
||||||
} else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) {
|
} else if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40)) {
|
||||||
func_8005F90C(player, particleIndex, sp28, arg2_copy, arg3);
|
func_8005F90C(player, particleIndex, sp28, arg2_copy, arg3);
|
||||||
} else if (((player->effects & 0x4000) && !(player->type & PLAYER_START_SEQUENCE)) ||
|
} else if (((player->effects & 0x4000) && !(player->type & PLAYER_START_SEQUENCE)) ||
|
||||||
(player->effects & 0x800) || (player->effects & 0x20) || (player->unk_044 & 0x4000)) {
|
(player->effects & 0x800) || (player->effects & 0x20) || (player->kartProps & DRIVING_SPINOUT)) {
|
||||||
func_8005ED48(player, particleIndex, sp28, arg2_copy, arg3);
|
func_8005ED48(player, particleIndex, sp28, arg2_copy, arg3);
|
||||||
} else {
|
} else {
|
||||||
setup_tyre_particles(player, particleIndex, sp28, arg2_copy, arg3);
|
setup_tyre_particles(player, particleIndex, sp28, arg2_copy, arg3);
|
||||||
|
|
@ -6118,40 +6118,40 @@ void func_8006C9B8(Player* player, s16 arg1, s8 arg2, s8 arg3) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (player->unk_044 & 0x1000) {
|
if (player->kartProps & UNUSED_0x1000) {
|
||||||
func_80061430(player, arg1, sp28, arg2, arg3);
|
func_80061430(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (((((player->unk_0CA & 0x1000) == 0x1000) || ((player->unk_0E0 < 2) && (player->effects & 0x01000000))) ||
|
if (((((player->lakituProps & LAKITU_LAVA) == LAKITU_LAVA) || ((player->unk_0E0 < 2) && (player->effects & 0x01000000))) ||
|
||||||
((player->unk_0E0 < 2) && (player->effects & HIT_BY_ITEM_EFFECT))) ||
|
((player->unk_0E0 < 2) && (player->effects & HIT_BY_ITEM_EFFECT))) ||
|
||||||
(player->effects & 0x400)) {
|
(player->effects & 0x400)) {
|
||||||
func_8006199C(player, arg1, sp28, arg2, arg3);
|
func_8006199C(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_046 &= ~0x0008;
|
player->unk_046 &= ~0x0008;
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 0x2000) == 0x2000) {
|
if ((player->lakituProps & LAKITU_WATER) == LAKITU_WATER) {
|
||||||
func_80061A34(player, arg1, sp28, arg2, arg3);
|
func_80061A34(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_046 &= ~0x0008;
|
player->unk_046 &= ~0x0008;
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - gPlayerStarEffectStartTime[arg2]) < 9)) {
|
if ((player->effects & STAR_EFFECT) && ((((s32) gCourseTimer) - gPlayerStarEffectStartTime[arg2]) < 9)) {
|
||||||
func_800615AC(player, arg1, sp28, arg2, arg3);
|
func_800615AC(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_046 &= ~0x0008;
|
player->unk_046 &= ~0x0008;
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->unk_046 & 8) == 8) {
|
if ((player->unk_046 & 8) == 8) {
|
||||||
func_800612F8(player, arg1, sp28, arg2, arg3);
|
func_800612F8(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (((player->unk_046 & 0x20) == 0x20) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
if (((player->unk_046 & 0x20) == 0x20) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
||||||
func_80061D4C(player, arg1, sp28, arg2, arg3);
|
func_80061D4C(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_046 &= ~0x0008;
|
player->unk_046 &= ~0x0008;
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) {
|
if ((player->effects & BOOST_EFFECT) && (player->type & PLAYER_HUMAN)) {
|
||||||
|
|
@ -6162,10 +6162,10 @@ void func_8006C9B8(Player* player, s16 arg1, s8 arg2, s8 arg3) {
|
||||||
((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
||||||
func_80061EF4(player, arg1, sp28, arg2, arg3);
|
func_80061EF4(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_046 &= ~0x0008;
|
player->unk_046 &= ~0x0008;
|
||||||
player->unk_044 &= ~0x0100;
|
player->kartProps &= ~POST_TUMBLE_GAS;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 0x100) == 0x100) {
|
if ((player->kartProps & POST_TUMBLE_GAS) == POST_TUMBLE_GAS) {
|
||||||
func_800624D8(player, arg1, sp28, arg2, arg3);
|
func_800624D8(player, arg1, sp28, arg2, arg3);
|
||||||
player->unk_046 &= ~0x0008;
|
player->unk_046 &= ~0x0008;
|
||||||
}
|
}
|
||||||
|
|
@ -6197,17 +6197,17 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((player->unk_044 & 0x200) && (player->type & 0x4000)) {
|
if ((player->kartProps & BECOME_INVISIBLE) && (player->type & PLAYER_HUMAN)) {
|
||||||
func_80061224(player, arg1, sp20, arg2, arg3);
|
func_80061224(player, arg1, sp20, arg2, arg3);
|
||||||
return;
|
return;
|
||||||
} else if (((player->effects & 0x40000000) == 0x40000000) && (player->unk_0B0 < 0x32)) {
|
} else if (((player->effects & LIGHTNING_EFFECT) == LIGHTNING_EFFECT) && (player->unk_0B0 < 0x32)) {
|
||||||
func_80061094(player, arg1, sp20, arg2, arg3);
|
func_80061094(player, arg1, sp20, arg2, arg3);
|
||||||
return;
|
return;
|
||||||
} else if ((player->type & 0x4000) == 0x4000) {
|
} else if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
if ((player->waterInteractionFlags & WATER_JUST_ENTERED_DEEP_LIQUID) == WATER_JUST_ENTERED_DEEP_LIQUID) {
|
if ((player->oobProps & UNDER_OOB_LEVEL) == UNDER_OOB_LEVEL) {
|
||||||
func_80060F50(player, arg1, sp20, arg2, arg3);
|
func_80060F50(player, arg1, sp20, arg2, arg3);
|
||||||
return;
|
return;
|
||||||
} else if ((player->waterInteractionFlags & WATER_IS_PARTIALLY_SUBMERGED) || (player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED)) {
|
} else if ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) || (player->oobProps & UNDER_OOB_OR_FLUID_LEVEL)) {
|
||||||
func_80060B14(player, arg1, sp20, arg2, arg3);
|
func_80060B14(player, arg1, sp20, arg2, arg3);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -6216,7 +6216,7 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
|
||||||
case SCREEN_MODE_1P:
|
case SCREEN_MODE_1P:
|
||||||
if (((player->effects & 0x04000000) != 0x04000000) && ((player->effects & 0x400) != 0x400) &&
|
if (((player->effects & 0x04000000) != 0x04000000) && ((player->effects & 0x400) != 0x400) &&
|
||||||
((player->effects & 0x01000000) != 0x01000000)) {
|
((player->effects & 0x01000000) != 0x01000000)) {
|
||||||
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 0x10) != 0x10) && !(player->unk_0CA & 0x100)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & FRIGID_EFFECT) != FRIGID_EFFECT) && !(player->lakituProps & WENT_OVER_OOB)) {
|
||||||
func_80060504(player, arg1, sp20, arg2, arg3);
|
func_80060504(player, arg1, sp20, arg2, arg3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6226,9 +6226,9 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
|
||||||
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
|
case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL:
|
||||||
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
|
case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL:
|
||||||
case SCREEN_MODE_3P_4P_SPLITSCREEN:
|
case SCREEN_MODE_3P_4P_SPLITSCREEN:
|
||||||
if (((player->type & 0x4000) != 0) && ((player->effects & 0x04000000) != 0x04000000) &&
|
if (((player->type & PLAYER_HUMAN) != 0) && ((player->effects & 0x04000000) != 0x04000000) &&
|
||||||
((player->effects & 0x400) != 0x400) && ((player->effects & 0x01000000) != 0x01000000)) {
|
((player->effects & 0x400) != 0x400) && ((player->effects & 0x01000000) != 0x01000000)) {
|
||||||
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 0x10) != 0x10) && !(player->unk_0CA & 0x100)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & FRIGID_EFFECT) != FRIGID_EFFECT) && !(player->lakituProps & WENT_OVER_OOB)) {
|
||||||
func_80060504(player, arg1, sp20, arg2, arg3);
|
func_80060504(player, arg1, sp20, arg2, arg3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6238,8 +6238,8 @@ void func_8006CEC0(Player* player, s16 arg1, s8 arg2, s8 arg3) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8006D194(Player* player, s8 arg1, s8 arg2) {
|
void func_8006D194(Player* player, s8 arg1, s8 arg2) {
|
||||||
if (player->particlePool0[0x14].isAlive == 1) {
|
if (player->particlePool2[0].isAlive == 1) {
|
||||||
switch (player->particlePool0[0x14].type) {
|
switch (player->particlePool2[0].type) {
|
||||||
case 2:
|
case 2:
|
||||||
func_80064DEC(player, arg1, arg2, 0);
|
func_80064DEC(player, arg1, arg2, 0);
|
||||||
break;
|
break;
|
||||||
|
|
@ -6257,34 +6257,34 @@ void func_8006D194(Player* player, s8 arg1, s8 arg2) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((player->unk_0B6 & 0x40) == 0x40) {
|
if ((player->kartGraphics & CRASH) == CRASH) {
|
||||||
func_800628C0(player, arg1, arg2, 0);
|
func_800628C0(player, arg1, arg2, 0);
|
||||||
}
|
}
|
||||||
if ((player->unk_0B6 & 0x800) == 0x800) {
|
if ((player->kartGraphics & BOING) == BOING) {
|
||||||
func_80062968(player, arg1, arg2, 0);
|
func_80062968(player, arg1, arg2, 0);
|
||||||
}
|
}
|
||||||
if ((player->unk_0B6 & 0x1000) == 0x1000) {
|
if ((player->kartGraphics & EXPLOSION) == EXPLOSION) {
|
||||||
func_80062914(player, arg1, arg2, 0);
|
func_80062914(player, arg1, arg2, 0);
|
||||||
}
|
}
|
||||||
if ((player->unk_0B6 & 0x80) == 0x80) {
|
if ((player->kartGraphics & WHIRRR) == WHIRRR) {
|
||||||
func_80062A18(player, arg1, arg2, 0);
|
func_80062A18(player, arg1, arg2, 0);
|
||||||
}
|
}
|
||||||
if ((player->unk_0B6 & 0x100) == 0x100) {
|
if ((player->kartGraphics & POOMP) == POOMP) {
|
||||||
func_800629BC(player, arg1, arg2, 0);
|
func_800629BC(player, arg1, arg2, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player->particlePool0[0x15].isAlive == 1) {
|
if (player->particlePool2[1].isAlive == 1) {
|
||||||
if (player->particlePool0[0x15].type == 5) {
|
if (player->particlePool2[1].type == 5) {
|
||||||
func_800651F4(player, arg1, arg2, 1);
|
func_800651F4(player, arg1, arg2, 1);
|
||||||
}
|
}
|
||||||
} else if ((player->unk_0B6 & 0x20) == 0x20) {
|
} else if ((player->kartGraphics & WHISTLE) == WHISTLE) {
|
||||||
func_80062AA8(player, arg1, arg2, 1);
|
func_80062AA8(player, arg1, arg2, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8006D474(Player* player, s8 playerId, s8 screenId) {
|
void func_8006D474(Player* player, s8 playerId, s8 screenId) {
|
||||||
s16 var_s2;
|
s16 var_s2;
|
||||||
if ((player->unk_002 & (8 << (screenId * 4))) == (8 << (screenId * 4))) {
|
if ((player->unk_002 & (SIDE_OF_KART << (screenId * 4))) == (SIDE_OF_KART << (screenId * 4))) {
|
||||||
for (var_s2 = 0; var_s2 < 10; var_s2++) {
|
for (var_s2 = 0; var_s2 < 10; var_s2++) {
|
||||||
// @port: Tag the transform.
|
// @port: Tag the transform.
|
||||||
FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2));
|
FrameInterpolation_RecordOpenChild("SmokeDust", TAG_SMOKE_DUST((playerId << 8) + var_s2));
|
||||||
|
|
@ -6418,7 +6418,7 @@ void func_8006D474(Player* player, s8 playerId, s8 screenId) {
|
||||||
FrameInterpolation_RecordCloseChild();
|
FrameInterpolation_RecordCloseChild();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((gModeSelection == BATTLE) && (player->unk_002 & (2 << (screenId * 4)))) {
|
if ((gModeSelection == BATTLE) && (player->unk_002 & (UNK_002_UNKNOWN_0x2 << (screenId * 4)))) {
|
||||||
func_8006BA94(player, playerId, screenId);
|
func_8006BA94(player, playerId, screenId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -6427,7 +6427,7 @@ void func_8006DC54(Player* player, s8 arg1, s8 arg2) {
|
||||||
s16 i;
|
s16 i;
|
||||||
s32 bitwiseMask;
|
s32 bitwiseMask;
|
||||||
|
|
||||||
bitwiseMask = 8 << (arg2 * 4);
|
bitwiseMask = SIDE_OF_KART << (arg2 * 4);
|
||||||
if (bitwiseMask == (player->unk_002 & bitwiseMask)) {
|
if (bitwiseMask == (player->unk_002 & bitwiseMask)) {
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
if (player->particlePool0[i].type == 7) {
|
if (player->particlePool0[i].type == 7) {
|
||||||
|
|
@ -6441,7 +6441,7 @@ void func_8006DD3C(Player* player, s8 playerId, s8 arg2) {
|
||||||
s16 temp_s0;
|
s16 temp_s0;
|
||||||
s32 temp_v0;
|
s32 temp_v0;
|
||||||
|
|
||||||
temp_v0 = 8 << (arg2 * 4);
|
temp_v0 = SIDE_OF_KART << (arg2 * 4);
|
||||||
if (temp_v0 == (player->unk_002 & temp_v0)) {
|
if (temp_v0 == (player->unk_002 & temp_v0)) {
|
||||||
for (temp_s0 = 0; temp_s0 < 10; ++temp_s0) {
|
for (temp_s0 = 0; temp_s0 < 10; ++temp_s0) {
|
||||||
temp_v0 = player->particlePool0[temp_s0].type;
|
temp_v0 = player->particlePool0[temp_s0].type;
|
||||||
|
|
@ -6458,7 +6458,7 @@ void func_8006DD3C(Player* player, s8 playerId, s8 arg2) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((player->type & 0x4000) == 0x4000) && (arg2 == playerId)) {
|
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && (arg2 == playerId)) {
|
||||||
FrameInterpolation_RecordOpenChild("onomatopoeia", TAG_SMOKE_DUST((playerId << 8) + 20));
|
FrameInterpolation_RecordOpenChild("onomatopoeia", TAG_SMOKE_DUST((playerId << 8) + 20));
|
||||||
switch (player->particlePool2[0].type) {
|
switch (player->particlePool2[0].type) {
|
||||||
case 2:
|
case 2:
|
||||||
|
|
@ -6504,11 +6504,11 @@ void func_8006E058(void) {
|
||||||
case TIME_TRIALS:
|
case TIME_TRIALS:
|
||||||
func_8006E420(gPlayerOne, 0, 0);
|
func_8006E420(gPlayerOne, 0, 0);
|
||||||
|
|
||||||
if ((gPlayerTwo->type & 0x100) == 0x100) {
|
if ((gPlayerTwo->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
|
||||||
func_8006E420(gPlayerTwo, 1, 0);
|
func_8006E420(gPlayerTwo, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((gPlayerThree->type & 0x100) == 0x100) {
|
if ((gPlayerThree->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
|
||||||
func_8006E420(gPlayerThree, 2, 0);
|
func_8006E420(gPlayerThree, 2, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
144
src/effects.c
144
src/effects.c
|
|
@ -136,7 +136,7 @@ UNUSED void func_unnamed33(void) {
|
||||||
void func_8008C310(Player* player) {
|
void func_8008C310(Player* player) {
|
||||||
if ((player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || ((player->triggers << 9) < 0) ||
|
if ((player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || ((player->triggers << 9) < 0) ||
|
||||||
(player->triggers & HIT_BY_STAR_TRIGGER)) {
|
(player->triggers & HIT_BY_STAR_TRIGGER)) {
|
||||||
player->unk_0B6 = ((u16) player->unk_0B6 | 0x1000);
|
player->kartGraphics = ((u16) player->kartGraphics | EXPLOSION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -155,7 +155,7 @@ void clean_effect(Player* player, s8 arg1) {
|
||||||
if ((player->effects & 0x800) == 0x800) {
|
if ((player->effects & 0x800) == 0x800) {
|
||||||
func_8008D0E4(player, arg1);
|
func_8008D0E4(player, arg1);
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 0x4000) != 0) {
|
if ((player->kartProps & DRIVING_SPINOUT) != 0) {
|
||||||
func_8008D3B0(player, arg1);
|
func_8008D3B0(player, arg1);
|
||||||
}
|
}
|
||||||
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
|
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
|
||||||
|
|
@ -188,7 +188,7 @@ void clean_effect(Player* player, s8 arg1) {
|
||||||
if ((player->effects & 0x10000000) == 0x10000000) {
|
if ((player->effects & 0x10000000) == 0x10000000) {
|
||||||
func_8008FEDC(player, arg1);
|
func_8008FEDC(player, arg1);
|
||||||
}
|
}
|
||||||
player->unk_044 = (s16) (player->unk_044 & 0xFFFE);
|
player->kartProps = (s16) (player->kartProps & ~BACK_UP);
|
||||||
player->effects = (s32) (player->effects & ~0x20);
|
player->effects = (s32) (player->effects & ~0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -266,7 +266,7 @@ void func_8008C73C(Player* player, s8 playerIndex) {
|
||||||
player->effects |= 0x80;
|
player->effects |= 0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
player->unk_0B6 |= 0x80;
|
player->kartGraphics |= WHIRRR;
|
||||||
// clang-format off
|
// clang-format off
|
||||||
player->unk_0C0 = 0; player->unk_07C = 0; player->unk_078 = 0; player->unk_0AE = player->rotation[1]; player->unk_0B2 = 2;
|
player->unk_0C0 = 0; player->unk_07C = 0; player->unk_078 = 0; player->unk_0AE = player->rotation[1]; player->unk_0B2 = 2;
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
@ -310,7 +310,7 @@ void func_8008C8C4(Player* player, s8 playerId) {
|
||||||
player->currentSpeed = (f32) (player->currentSpeed + 100.0f);
|
player->currentSpeed = (f32) (player->currentSpeed + 100.0f);
|
||||||
}
|
}
|
||||||
if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) &&
|
if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) &&
|
||||||
((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
|
((player->lakituProps & HELD_BY_LAKITU) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
|
||||||
player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER);
|
player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -411,7 +411,7 @@ void func_8008CEB0(Player* player, s8 arg1) {
|
||||||
func_8008C73C(player, arg1);
|
func_8008C73C(player, arg1);
|
||||||
var_v1 = 0;
|
var_v1 = 0;
|
||||||
} else {
|
} else {
|
||||||
player->unk_0B6 |= 0x20;
|
player->kartGraphics |= WHISTLE;
|
||||||
player->effects &= ~0x40000;
|
player->effects &= ~0x40000;
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
|
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
|
||||||
|
|
@ -448,8 +448,8 @@ void func_8008D0FC(Player* player, s8 arg1) {
|
||||||
player->unk_0B4 = 0;
|
player->unk_0B4 = 0;
|
||||||
player->unk_0B8 = 2.0f;
|
player->unk_0B8 = 2.0f;
|
||||||
player->unk_0AC = 1;
|
player->unk_0AC = 1;
|
||||||
player->effects &= ~0x10;
|
player->effects &= ~DRIFTING_EFFECT;
|
||||||
player->unk_044 |= 0x4000;
|
player->kartProps |= DRIVING_SPINOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008D170(Player* player, s8 arg1) {
|
void func_8008D170(Player* player, s8 arg1) {
|
||||||
|
|
@ -467,16 +467,16 @@ void func_8008D170(Player* player, s8 arg1) {
|
||||||
var_v1 = 0;
|
var_v1 = 0;
|
||||||
var_a3 = -var_a3;
|
var_a3 = -var_a3;
|
||||||
var_f0 *= 0.9;
|
var_f0 *= 0.9;
|
||||||
if (((player->effects & 1) == 1) || !(player->unk_044 & 0x20)) {
|
if (((player->effects & 1) == 1) || !(player->kartProps & THROTTLE)) {
|
||||||
player->effects |= 0x40000;
|
player->effects |= 0x40000;
|
||||||
}
|
}
|
||||||
if (var_f0 <= 1.3) {
|
if (var_f0 <= 1.3) {
|
||||||
player->unk_044 &= ~0x4000;
|
player->kartProps &= ~DRIVING_SPINOUT;
|
||||||
if ((player->effects & 0x40000) != 0x40000) {
|
if ((player->effects & 0x40000) != 0x40000) {
|
||||||
func_8008C73C(player, arg1);
|
func_8008C73C(player, arg1);
|
||||||
var_v1 = 0;
|
var_v1 = 0;
|
||||||
} else {
|
} else {
|
||||||
player->unk_0B6 |= 0x20;
|
player->kartGraphics |= WHISTLE;
|
||||||
player->effects &= ~0x40000;
|
player->effects &= ~0x40000;
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
|
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008008);
|
||||||
|
|
@ -498,12 +498,12 @@ void func_8008D170(Player* player, s8 arg1) {
|
||||||
player->unk_0AC = var_a3;
|
player->unk_0AC = var_a3;
|
||||||
if (player->effects & 8) {
|
if (player->effects & 8) {
|
||||||
func_8008C73C(player, arg1);
|
func_8008C73C(player, arg1);
|
||||||
player->unk_044 &= ~0x4000;
|
player->kartProps &= ~DRIVING_SPINOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008D3B0(Player* player, UNUSED s8 arg1) {
|
void func_8008D3B0(Player* player, UNUSED s8 arg1) {
|
||||||
player->unk_044 &= 0xBFFF;
|
player->kartProps &= ~DRIVING_SPINOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
void trigger_shroom(Player* player, s8 arg1) {
|
void trigger_shroom(Player* player, s8 arg1) {
|
||||||
|
|
@ -609,7 +609,7 @@ void func_8008D760(Player* player) {
|
||||||
player->rotation[1] = player->unk_0AE;
|
player->rotation[1] = player->unk_0AE;
|
||||||
player->effects &= 0xFFF7FFFF;
|
player->effects &= 0xFFF7FFFF;
|
||||||
player->kartGravity = gKartGravityTable[player->characterId];
|
player->kartGravity = gKartGravityTable[player->characterId];
|
||||||
player->type &= 0xFF7F;
|
player->type &= ~PLAYER_UNKNOWN_0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008D7B0(Player* player, s8 arg1) {
|
void func_8008D7B0(Player* player, s8 arg1) {
|
||||||
|
|
@ -713,7 +713,7 @@ void trigger_squish(Player* player, s8 arg1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
player->effects |= HIT_EFFECT;
|
player->effects |= HIT_EFFECT;
|
||||||
if (((player->type) & 0x1000) != 0) {
|
if (((player->type) & PLAYER_CPU) != 0) {
|
||||||
play_cpu_sound_effect(arg1, player);
|
play_cpu_sound_effect(arg1, player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -957,7 +957,7 @@ void func_8008E4A4(Player* player, s8 arg1) {
|
||||||
D_80165190[2][arg1] = 1;
|
D_80165190[2][arg1] = 1;
|
||||||
D_80165190[3][arg1] = 1;
|
D_80165190[3][arg1] = 1;
|
||||||
player->unk_042 = 0;
|
player->unk_042 = 0;
|
||||||
player->type &= ~0x80;
|
player->type &= ~PLAYER_UNKNOWN_0x80;
|
||||||
|
|
||||||
if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
if ((gIsPlayerTripleAButtonCombo[arg1] == true) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
||||||
player->currentSpeed += 100.0f;
|
player->currentSpeed += 100.0f;
|
||||||
|
|
@ -986,7 +986,7 @@ void func_8008E4A4(Player* player, s8 arg1) {
|
||||||
player->currentSpeed += 100.0f;
|
player->currentSpeed += 100.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
player->type &= ~0x80;
|
player->type &= ~PLAYER_UNKNOWN_0x80;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1026,7 +1026,7 @@ void trigger_vertical_tumble(Player* player, s8 arg1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
player->triggers &= ~(VERTICAL_TUMBLE_TRIGGER | HIT_PADDLE_BOAT_TRIGGER);
|
player->triggers &= ~(VERTICAL_TUMBLE_TRIGGER | HIT_PADDLE_BOAT_TRIGGER);
|
||||||
player->unk_0B6 |= 0x40;
|
player->kartGraphics |= CRASH;
|
||||||
gTimerBoostTripleACombo[arg1] = 0;
|
gTimerBoostTripleACombo[arg1] = 0;
|
||||||
gIsPlayerTripleAButtonCombo[arg1] = false;
|
gIsPlayerTripleAButtonCombo[arg1] = false;
|
||||||
gCountASwitch[arg1] = 0;
|
gCountASwitch[arg1] = 0;
|
||||||
|
|
@ -1125,7 +1125,7 @@ void trigger_high_tumble(Player* player, s8 arg1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
player->effects |= HIT_BY_ITEM_EFFECT;
|
player->effects |= HIT_BY_ITEM_EFFECT;
|
||||||
player->unk_0B6 |= 0x40;
|
player->kartGraphics |= CRASH;
|
||||||
player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER);
|
player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER);
|
||||||
|
|
||||||
gTimerBoostTripleACombo[arg1] = 0;
|
gTimerBoostTripleACombo[arg1] = 0;
|
||||||
|
|
@ -1161,7 +1161,7 @@ void trigger_asphalt_ramp_boost(Player* player, s8 playerId) {
|
||||||
func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
|
func_800C90F4(playerId, (player->characterId * 0x10) + 0x29008001);
|
||||||
func_800C9060(playerId, 0x1900A40B);
|
func_800C9060(playerId, 0x1900A40B);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x1;
|
player->kartProps &= ~BACK_UP;
|
||||||
player->effects &= ~0x20;
|
player->effects &= ~0x20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1209,7 +1209,7 @@ void trigger_wood_ramp_boost(Player* player, s8 playerId) {
|
||||||
func_800C9060(playerId, 0x1900A40B);
|
func_800C9060(playerId, 0x1900A40B);
|
||||||
}
|
}
|
||||||
|
|
||||||
player->unk_044 &= ~0x1;
|
player->kartProps &= ~BACK_UP;
|
||||||
player->effects &= ~0x20;
|
player->effects &= ~0x20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1257,14 +1257,14 @@ void func_8008F1B8(Player* player, s8 arg1) {
|
||||||
|
|
||||||
player->kartPropulsionStrength = (player->unk_210 * 0.05);
|
player->kartPropulsionStrength = (player->unk_210 * 0.05);
|
||||||
if (player->unk_0B2 < 0) {
|
if (player->unk_0B2 < 0) {
|
||||||
if ((player->unk_044 & 0x80) == 0x80) {
|
if ((player->kartProps & EARLY_SPINOUT_LEFT) == EARLY_SPINOUT_LEFT) {
|
||||||
player->rotation[1] += 182;
|
player->rotation[1] += 182;
|
||||||
D_8018D920[arg1] += 182;
|
D_8018D920[arg1] += 182;
|
||||||
|
|
||||||
temp = ((u16) D_8018D920[arg1] / 182);
|
temp = ((u16) D_8018D920[arg1] / 182);
|
||||||
if (temp == 180) {
|
if (temp == 180) {
|
||||||
player->effects &= ~0x4000;
|
player->effects &= ~0x4000;
|
||||||
player->type &= ~0x80;
|
player->type &= ~PLAYER_UNKNOWN_0x80;
|
||||||
player->currentSpeed /= 3.0f;
|
player->currentSpeed /= 3.0f;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1274,7 +1274,7 @@ void func_8008F1B8(Player* player, s8 arg1) {
|
||||||
temp = ((u16) D_8018D920[arg1] / 182);
|
temp = ((u16) D_8018D920[arg1] / 182);
|
||||||
if (temp == 180) {
|
if (temp == 180) {
|
||||||
player->effects &= ~0x4000;
|
player->effects &= ~0x4000;
|
||||||
player->type &= ~0x80;
|
player->type &= ~PLAYER_UNKNOWN_0x80;
|
||||||
player->currentSpeed /= 3.0f;
|
player->currentSpeed /= 3.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1286,8 +1286,8 @@ void func_8008F1B8(Player* player, s8 arg1) {
|
||||||
if (temp < 71) {
|
if (temp < 71) {
|
||||||
--player->unk_0B2;
|
--player->unk_0B2;
|
||||||
}
|
}
|
||||||
player->unk_044 |= 0x80;
|
player->kartProps |= EARLY_SPINOUT_LEFT;
|
||||||
player->unk_044 &= ~0x40;
|
player->kartProps &= ~EARLY_SPINOUT_RIGHT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
player->rotation[1] += 364;
|
player->rotation[1] += 364;
|
||||||
|
|
@ -1296,8 +1296,8 @@ void func_8008F1B8(Player* player, s8 arg1) {
|
||||||
if (temp >= 110) {
|
if (temp >= 110) {
|
||||||
--player->unk_0B2;
|
--player->unk_0B2;
|
||||||
}
|
}
|
||||||
player->unk_044 |= 0x40;
|
player->kartProps |= EARLY_SPINOUT_RIGHT;
|
||||||
player->unk_044 &= ~0x80;
|
player->kartProps &= ~EARLY_SPINOUT_LEFT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1326,7 +1326,7 @@ void func_8008F494(Player* player, s8 arg1) {
|
||||||
if ((((player->effects & 0x80) != 0) || ((player->effects & 0x40) != 0) || ((player->effects & 0x01000000)) ||
|
if ((((player->effects & 0x80) != 0) || ((player->effects & 0x40) != 0) || ((player->effects & 0x01000000)) ||
|
||||||
((player->effects & HIT_BY_ITEM_EFFECT)) || ((player->effects & 0x400) != 0)) &&
|
((player->effects & HIT_BY_ITEM_EFFECT)) || ((player->effects & 0x400) != 0)) &&
|
||||||
(gModeSelection == BATTLE)) {
|
(gModeSelection == BATTLE)) {
|
||||||
player->unk_044 |= 0x8000;
|
player->kartProps |= UNKNOWN_BATTLE_VAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_effect(player, arg1);
|
clean_effect(player, arg1);
|
||||||
|
|
@ -1339,16 +1339,16 @@ void func_8008F494(Player* player, s8 arg1) {
|
||||||
player->unk_042 = 0;
|
player->unk_042 = 0;
|
||||||
|
|
||||||
if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) &&
|
if (((player->type & PLAYER_HUMAN) != 0) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0) &&
|
||||||
((player->unk_0CA & 2) == 0) && ((player->waterInteractionFlags & 1) == 0) && ((player->waterInteractionFlags & 2) == 0)) {
|
((player->lakituProps & HELD_BY_LAKITU) == 0) && ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == 0) && ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) == 0)) {
|
||||||
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008004);
|
func_800C90F4(arg1, (player->characterId * 0x10) + 0x29008004);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008F5A4(Player* player, s8 arg1) {
|
void func_8008F5A4(Player* player, s8 arg1) {
|
||||||
|
|
||||||
if ((player->unk_044 & 0x8000) != 0) {
|
if ((player->kartProps & UNKNOWN_BATTLE_VAR) != 0) {
|
||||||
pop_player_balloon(player, arg1);
|
pop_player_balloon(player, arg1);
|
||||||
player->unk_044 &= ~0x8000;
|
player->kartProps &= ~UNKNOWN_BATTLE_VAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
player->unk_206 = 0;
|
player->unk_206 = 0;
|
||||||
|
|
@ -1450,7 +1450,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
||||||
player->effects &= ~0x80000000;
|
player->effects &= ~0x80000000;
|
||||||
if ((player->type & 0x4000) != 0) {
|
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||||
func_800CB064(playerIndex);
|
func_800CB064(playerIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1460,7 +1460,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
|
||||||
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
player->effects &= ~0x80000000;
|
player->effects &= ~0x80000000;
|
||||||
if ((player->type & 0x4000) != 0) {
|
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||||
func_800CB064(playerIndex);
|
func_800CB064(playerIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1469,9 +1469,9 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
|
||||||
|
|
||||||
void trigger_boo(Player* player, s8 playerIndex) {
|
void trigger_boo(Player* player, s8 playerIndex) {
|
||||||
s16 temp_v1;
|
s16 temp_v1;
|
||||||
|
// become boo
|
||||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||||
player->unk_044 |= 0x200;
|
player->kartProps |= BECOME_INVISIBLE;
|
||||||
|
|
||||||
for (temp_v1 = 0; temp_v1 < 10; ++temp_v1) {
|
for (temp_v1 = 0; temp_v1 < 10; ++temp_v1) {
|
||||||
player->particlePool0[temp_v1].isAlive = 0;
|
player->particlePool0[temp_v1].isAlive = 0;
|
||||||
|
|
@ -1499,7 +1499,7 @@ void func_8008FB30(Player* player, s8 playerIndex) {
|
||||||
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
||||||
|
|
||||||
player->effects &= ~0x80000000;
|
player->effects &= ~0x80000000;
|
||||||
if ((player->type & 0x4000) != 0) {
|
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||||
func_800CB064(playerIndex);
|
func_800CB064(playerIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1509,7 +1509,7 @@ void func_8008FB30(Player* player, s8 playerIndex) {
|
||||||
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
player->effects &= ~0x80000000;
|
player->effects &= ~0x80000000;
|
||||||
if ((player->type & 0x4000) != 0) {
|
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||||
func_800CB064(playerIndex);
|
func_800CB064(playerIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1550,7 +1550,7 @@ void func_8008FD4C(Player* player, UNUSED s8 arg1) {
|
||||||
s16 temp_v0;
|
s16 temp_v0;
|
||||||
|
|
||||||
player->triggers |= LOSE_BATTLE_EFFECT;
|
player->triggers |= LOSE_BATTLE_EFFECT;
|
||||||
player->unk_044 |= 0x200;
|
player->kartProps |= BECOME_INVISIBLE;
|
||||||
|
|
||||||
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
|
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
|
||||||
player->particlePool0[temp_v0].isAlive = 0;
|
player->particlePool0[temp_v0].isAlive = 0;
|
||||||
|
|
@ -1561,7 +1561,7 @@ void func_8008FD4C(Player* player, UNUSED s8 arg1) {
|
||||||
|
|
||||||
void func_8008FDA8(Player* player, UNUSED s8 arg1) {
|
void func_8008FDA8(Player* player, UNUSED s8 arg1) {
|
||||||
s16 temp_v0;
|
s16 temp_v0;
|
||||||
player->unk_044 |= 0x200;
|
player->kartProps |= BECOME_INVISIBLE;
|
||||||
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
|
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
|
||||||
player->particlePool0[temp_v0].isAlive = 0;
|
player->particlePool0[temp_v0].isAlive = 0;
|
||||||
player->particlePool0[temp_v0].unk_01E = 0;
|
player->particlePool0[temp_v0].unk_01E = 0;
|
||||||
|
|
@ -1683,7 +1683,7 @@ void func_80090778(Player* player) {
|
||||||
player->unk_078 = 0;
|
player->unk_078 = 0;
|
||||||
player->unk_07C = 0;
|
player->unk_07C = 0;
|
||||||
player->unk_0C0 = 0;
|
player->unk_0C0 = 0;
|
||||||
player->unk_0CA |= 8;
|
player->lakituProps |= LAKITU_SCENE;
|
||||||
player->effects &= ~0x10;
|
player->effects &= ~0x10;
|
||||||
player->unk_222 = 0;
|
player->unk_222 = 0;
|
||||||
player->kartPropulsionStrength = 0.0f;
|
player->kartPropulsionStrength = 0.0f;
|
||||||
|
|
@ -1716,24 +1716,24 @@ void func_80090868(Player* player) {
|
||||||
player->kartPropulsionStrength = 0.0f;
|
player->kartPropulsionStrength = 0.0f;
|
||||||
playerIndex = get_player_index_for_player(player);
|
playerIndex = get_player_index_for_player(player);
|
||||||
|
|
||||||
if ((player->unk_0CA & 2) != 2) {
|
if ((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) {
|
||||||
player->unk_D98 = 1;
|
player->unk_D98 = 1;
|
||||||
player->unk_D9C = 0.0f;
|
player->unk_D9C = 0.0f;
|
||||||
player->unk_DA0 = 0.5f;
|
player->unk_DA0 = 0.5f;
|
||||||
func_8008FF08(player, playerIndex);
|
func_8008FF08(player, playerIndex);
|
||||||
player->unk_222 = 0;
|
player->unk_222 = 0;
|
||||||
player->unk_0CA |= 2;
|
player->lakituProps |= HELD_BY_LAKITU;
|
||||||
player->unk_0C8 = 0;
|
player->unk_0C8 = 0;
|
||||||
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) {
|
if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
|
||||||
if ((IsBowsersCastle()) || (IsBigDonut())) {
|
if ((IsBowsersCastle()) || (IsBigDonut())) {
|
||||||
player->unk_0CA |= 0x1000;
|
player->lakituProps |= LAKITU_LAVA;
|
||||||
} else {
|
} else {
|
||||||
player->unk_0CA |= 0x2000;
|
player->lakituProps |= LAKITU_WATER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((IsSherbetLand()) || (IsSkyscraper()) ||
|
if ((IsSherbetLand()) || (IsSkyscraper()) ||
|
||||||
(IsRainbowRoad())) {
|
(IsRainbowRoad())) {
|
||||||
player->unk_0CA &= ~0x3000;
|
player->lakituProps &= ~(LAKITU_LAVA | LAKITU_WATER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1756,8 +1756,8 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
clean_effect(player, playerId);
|
clean_effect(player, playerId);
|
||||||
switch (player->unk_222) {
|
switch (player->unk_222) {
|
||||||
case 0:
|
case 0:
|
||||||
if ((player->unk_0CA & 1) == 1) {
|
if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
|
||||||
if ((player->unk_0C8 < 0x3C) || ((player->unk_0CA & 2) != 2)) {
|
if ((player->unk_0C8 < 0x3C) || ((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU)) {
|
||||||
player->unk_0C8++;
|
player->unk_0C8++;
|
||||||
if (player->unk_0C8 >= 0x3C) {
|
if (player->unk_0C8 >= 0x3C) {
|
||||||
player->unk_0C8 = 0x003C;
|
player->unk_0C8 = 0x003C;
|
||||||
|
|
@ -1767,16 +1767,16 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
|
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
|
||||||
if ((gPlayerWaterLevel[playerId] + 40.0f) <= player->pos[1]) {
|
if ((gPlayerWaterLevel[playerId] + 40.0f) <= player->pos[1]) {
|
||||||
player->unk_222 = 1;
|
player->unk_222 = 1;
|
||||||
player->unk_0CA |= 4;
|
player->lakituProps |= LAKITU_FIZZLE;
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((player->unk_0CA & 2) == 2) {
|
} else if ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) {
|
||||||
move_f32_towards(&player->pos[1], player->unk_074 + 100.0f, 0.025f);
|
move_f32_towards(&player->pos[1], player->unk_074 + 100.0f, 0.025f);
|
||||||
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
|
move_s16_towards(&player->unk_0CC[arg2], 0, 0.2f);
|
||||||
if ((player->unk_074 + 40.0f) <= player->pos[1]) {
|
if ((player->unk_074 + 40.0f) <= player->pos[1]) {
|
||||||
player->unk_222 = 1;
|
player->unk_222 = 1;
|
||||||
player->unk_0CA |= 4;
|
player->lakituProps |= LAKITU_FIZZLE;
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1785,16 +1785,16 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (((player->type & PLAYER_HUMAN) == 0x4000) && ((player->type & PLAYER_CPU) == 0)) {
|
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_CPU) == 0)) {
|
||||||
func_8009E088(playerId, 0xA);
|
func_8009E088(playerId, 0xA);
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 1) == 1) {
|
if ((player->lakituProps & LAKITU_RETRIEVAL) == LAKITU_RETRIEVAL) {
|
||||||
move_f32_towards(&player->pos[1], gPlayerWaterLevel[playerId] + 40.0f, 0.02f);
|
move_f32_towards(&player->pos[1], gPlayerWaterLevel[playerId] + 40.0f, 0.02f);
|
||||||
player->alpha -= ALPHA_CHANGE_LARGE;
|
player->alpha -= ALPHA_CHANGE_LARGE;
|
||||||
if (player->alpha <= ALPHA_CHANGE_LARGE) {
|
if (player->alpha <= ALPHA_CHANGE_LARGE) {
|
||||||
player->alpha = ALPHA_MIN;
|
player->alpha = ALPHA_MIN;
|
||||||
player->unk_222 = 2;
|
player->unk_222 = 2;
|
||||||
player->unk_0CA &= ~0x0001;
|
player->lakituProps &= ~LAKITU_RETRIEVAL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
move_f32_towards(&player->pos[1], player->oldPos[1] + 40.0f, 0.02f);
|
move_f32_towards(&player->pos[1], player->oldPos[1] + 40.0f, 0.02f);
|
||||||
|
|
@ -1804,7 +1804,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
player->unk_222 = 2;
|
player->unk_222 = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player->unk_0CA &= ~0x2000;
|
player->lakituProps &= ~LAKITU_WATER;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
func_80090178(player, playerId, sp44, sp38);
|
func_80090178(player, playerId, sp44, sp38);
|
||||||
|
|
@ -1830,7 +1830,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
if (player->alpha > ALPHA_MAX - (ALPHA_CHANGE_LARGE * 2)) {
|
if (player->alpha > ALPHA_MAX - (ALPHA_CHANGE_LARGE * 2)) {
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
player->unk_222 = 4;
|
player->unk_222 = 4;
|
||||||
player->unk_0CA &= ~0x0004;
|
player->lakituProps &= ~LAKITU_FIZZLE;
|
||||||
player->unk_0C8 = 0;
|
player->unk_0C8 = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1848,7 +1848,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);
|
move_f32_towards(&player->pos[1], (player->unk_074 + player->boundingBoxSize) - 2.0f, 0.04f);
|
||||||
player->unk_0C8++;
|
player->unk_0C8++;
|
||||||
if (((player->effects & 8) != 8) || (player->effects & 0x8000)) {
|
if (((player->effects & 8) != 8) || (player->effects & 0x8000)) {
|
||||||
player->unk_0CA &= ~0x1000;
|
player->lakituProps &= ~LAKITU_LAVA;
|
||||||
if (player->unk_0C8 >= 0x5B) {
|
if (player->unk_0C8 >= 0x5B) {
|
||||||
if (player->type & PLAYER_HUMAN) {
|
if (player->type & PLAYER_HUMAN) {
|
||||||
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
|
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
|
||||||
|
|
@ -1856,10 +1856,10 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
if (gModeSelection == BATTLE) {
|
if (gModeSelection == BATTLE) {
|
||||||
pop_player_balloon(player, playerId);
|
pop_player_balloon(player, playerId);
|
||||||
}
|
}
|
||||||
player->unk_0CA &= ~0x0002;
|
player->lakituProps &= ~HELD_BY_LAKITU;
|
||||||
player->waterInteractionFlags &= ~WATER_IN_DEEP_LIQUID_STATE;
|
player->oobProps &= ~UNDER_FLUID_LEVEL;
|
||||||
if ((player->unk_0CA & 0x80) != 0x80) {
|
if ((player->lakituProps & FROZEN_EFFECT) != FROZEN_EFFECT) {
|
||||||
player->unk_0CA &= ~0x0008;
|
player->lakituProps &= ~LAKITU_SCENE;
|
||||||
if ((player->topSpeed * 0.9) <= player->currentSpeed) {
|
if ((player->topSpeed * 0.9) <= player->currentSpeed) {
|
||||||
func_8008F104(player, playerId);
|
func_8008F104(player, playerId);
|
||||||
}
|
}
|
||||||
|
|
@ -1895,7 +1895,7 @@ void func_80090970(Player* player, s8 playerId, s8 arg2) {
|
||||||
|
|
||||||
bool prevent_item_use(Player* player) {
|
bool prevent_item_use(Player* player) {
|
||||||
s32 phi_v0 = 0;
|
s32 phi_v0 = 0;
|
||||||
if ((((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) ||
|
if ((((((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) ||
|
||||||
((player->type & PLAYER_UNKNOWN_0x40) != 0)) ||
|
((player->type & PLAYER_UNKNOWN_0x40) != 0)) ||
|
||||||
((player->type & PLAYER_CINEMATIC_MODE) != 0)) ||
|
((player->type & PLAYER_CINEMATIC_MODE) != 0)) ||
|
||||||
((player->type & PLAYER_EXISTS) == 0)) {
|
((player->type & PLAYER_EXISTS) == 0)) {
|
||||||
|
|
@ -1925,13 +1925,14 @@ bool prevent_item_use(Player* player) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//UNUSED
|
||||||
void func_800911B4(Player* player, s8 arg1) {
|
void func_800911B4(Player* player, s8 arg1) {
|
||||||
s32 temp_v0;
|
s32 temp_v0;
|
||||||
|
|
||||||
player->unk_0AE = player->rotation[1];
|
player->unk_0AE = player->rotation[1];
|
||||||
player->unk_044 |= 0x1800;
|
player->kartProps |= (UNUSED_0x1000 | UNUSED_0x800);
|
||||||
player->unk_044 &= ~0x0400;
|
player->kartProps &= ~UNUSED_0x400;
|
||||||
player->unk_044 |= 0x2000;
|
player->kartProps |= UNUSED_0x2000;
|
||||||
player->kartHopJerk = 0.002f;
|
player->kartHopJerk = 0.002f;
|
||||||
player->kartHopAcceleration = 0.0f;
|
player->kartHopAcceleration = 0.0f;
|
||||||
player->kartHopVelocity = 2.6f;
|
player->kartHopVelocity = 2.6f;
|
||||||
|
|
@ -1968,12 +1969,13 @@ void func_800911B4(Player* player, s8 arg1) {
|
||||||
} while (temp_v0 < 10);
|
} while (temp_v0 < 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unused
|
||||||
void func_80091298(Player* player, s8 arg1) {
|
void func_80091298(Player* player, s8 arg1) {
|
||||||
s16 var_v1;
|
s16 var_v1;
|
||||||
UNUSED s32 stackPadding1;
|
UNUSED s32 stackPadding1;
|
||||||
Vec3f spC = { 27.167f, 25.167f, 23.167f };
|
Vec3f spC = { 27.167f, 25.167f, 23.167f };
|
||||||
|
|
||||||
player->unk_044 |= 0x2000;
|
player->kartProps |= UNUSED_0x2000;
|
||||||
if (player->unk_0B2 == 0) {
|
if (player->unk_0B2 == 0) {
|
||||||
var_v1 = 0;
|
var_v1 = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1995,7 +1997,7 @@ void func_80091298(Player* player, s8 arg1) {
|
||||||
player->unk_07C = 0;
|
player->unk_07C = 0;
|
||||||
player->unk_0C0 = 0;
|
player->unk_0C0 = 0;
|
||||||
player->unk_DB4.unkC = 3.0f;
|
player->unk_DB4.unkC = 3.0f;
|
||||||
player->unk_044 &= ~0x800;
|
player->kartProps &= ~UNUSED_0x800;
|
||||||
player->kartGravity = gKartGravityTable[player->characterId];
|
player->kartGravity = gKartGravityTable[player->characterId];
|
||||||
player->unk_0D4[0] = 0;
|
player->unk_0D4[0] = 0;
|
||||||
player->type |= PLAYER_START_SEQUENCE;
|
player->type |= PLAYER_START_SEQUENCE;
|
||||||
|
|
@ -2011,8 +2013,8 @@ void func_80091298(Player* player, s8 arg1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80091440(s8 arg0) {
|
void func_80091440(s8 arg0) {
|
||||||
if ((gPlayers[arg0].unk_044 & 0x800) == 0) {
|
if ((gPlayers[arg0].kartProps & UNUSED_0x800) == 0) {
|
||||||
gPlayers[arg0].unk_044 |= 0x2400;
|
gPlayers[arg0].kartProps |= (UNUSED_0x2000 | UNUSED_0x400);
|
||||||
gPlayers[arg0].type &= ~0x2000;
|
gPlayers[arg0].type &= ~PLAYER_START_SEQUENCE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -149,7 +149,7 @@ void OBombKart::Tick() {
|
||||||
state = States::EXPLODE;
|
state = States::EXPLODE;
|
||||||
Behaviour = States::EXPLODE;
|
Behaviour = States::EXPLODE;
|
||||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||||
player->type &= ~0x2000;
|
player->type &= ~PLAYER_START_SEQUENCE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -197,13 +197,13 @@ void OLakitu::func_800791F0(s32 objectIndex, s32 playerId) {
|
||||||
if ((gObjectList[objectIndex].unk_0D8 != 3) && (gObjectList[objectIndex].unk_0D8 != 7)) {
|
if ((gObjectList[objectIndex].unk_0D8 != 3) && (gObjectList[objectIndex].unk_0D8 != 7)) {
|
||||||
func_800722CC(objectIndex, 1);
|
func_800722CC(objectIndex, 1);
|
||||||
if (CM_GetProps()->LakituTowType == LakituTowType::ICE) {
|
if (CM_GetProps()->LakituTowType == LakituTowType::ICE) {
|
||||||
player->unk_0CA &= 0xFFEF;
|
player->lakituProps &= ~FRIGID_EFFECT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CM_GetProps()->LakituTowType == LakituTowType::ICE) {
|
if (CM_GetProps()->LakituTowType == LakituTowType::ICE) {
|
||||||
func_800722CC(objectIndex, 0x00000010);
|
func_800722CC(objectIndex, 0x00000010);
|
||||||
player->unk_0CA &= 0xFFDF;
|
player->lakituProps &= ~THAWING_EFFECT;
|
||||||
}
|
}
|
||||||
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
|
func_800C9018(playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
|
||||||
}
|
}
|
||||||
|
|
@ -429,10 +429,10 @@ void OLakitu::func_800797AC(s32 playerId) {
|
||||||
|
|
||||||
objectIndex = gIndexLakituList[playerId];
|
objectIndex = gIndexLakituList[playerId];
|
||||||
player = &gPlayerOne[playerId];
|
player = &gPlayerOne[playerId];
|
||||||
// if ((IsSherbetLand()) && (player->unk_0CA & 1)) {
|
// if ((IsSherbetLand()) && (player->lakituProps & 1)) {
|
||||||
if ((CM_GetProps()->LakituTowType == LakituTowType::ICE) && (player->unk_0CA & 1)) {
|
if ((CM_GetProps()->LakituTowType == LakituTowType::ICE) && (player->lakituProps & LAKITU_RETRIEVAL)) {
|
||||||
init_object(objectIndex, 7);
|
init_object(objectIndex, 7);
|
||||||
player->unk_0CA |= 0x10;
|
player->lakituProps |= FRIGID_EFFECT;
|
||||||
} else {
|
} else {
|
||||||
init_object(objectIndex, 3);
|
init_object(objectIndex, 3);
|
||||||
}
|
}
|
||||||
|
|
@ -447,14 +447,14 @@ void OLakitu::func_80079860(s32 playerId) {
|
||||||
player = &gPlayerOne[playerId];
|
player = &gPlayerOne[playerId];
|
||||||
if ((func_80072354(objectIndex, 1) != 0) &&
|
if ((func_80072354(objectIndex, 1) != 0) &&
|
||||||
(((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) ||
|
(((func_802ABDF4(player->collision.meshIndexZX) != 0) && (player->collision.surfaceDistance[2] <= 3.0f)) ||
|
||||||
(player->unk_0CA & 1) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)))) {
|
(player->lakituProps & LAKITU_RETRIEVAL) || ((player->surfaceType == OUT_OF_BOUNDS) && !(player->effects & 8)))) {
|
||||||
func_80090778(player);
|
func_80090778(player);
|
||||||
OLakitu::func_800797AC(playerId);
|
OLakitu::func_800797AC(playerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OLakitu::func_8007993C(s32 objectIndex, Player* player) {
|
void OLakitu::func_8007993C(s32 objectIndex, Player* player) {
|
||||||
if (player->unk_0CA & 4) {
|
if (player->lakituProps & LAKITU_FIZZLE) {
|
||||||
func_800722A4(objectIndex, 2);
|
func_800722A4(objectIndex, 2);
|
||||||
gObjectList[objectIndex].primAlpha = player->alpha;
|
gObjectList[objectIndex].primAlpha = player->alpha;
|
||||||
return;
|
return;
|
||||||
|
|
@ -544,7 +544,7 @@ void OLakitu::update_object_lakitu_fishing(s32 objectIndex, s32 playerId) {
|
||||||
func_80073654(objectIndex);
|
func_80073654(objectIndex);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (!(player->unk_0CA & 2)) {
|
if (!(player->lakituProps & HELD_BY_LAKITU)) {
|
||||||
func_80086EAC(objectIndex, 0, 3);
|
func_80086EAC(objectIndex, 0, 3);
|
||||||
func_80073654(objectIndex);
|
func_80073654(objectIndex);
|
||||||
}
|
}
|
||||||
|
|
@ -579,7 +579,7 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
|
||||||
case 2: /* switch 1 */
|
case 2: /* switch 1 */
|
||||||
set_object_flag(objectIndex, 0x00000010);
|
set_object_flag(objectIndex, 0x00000010);
|
||||||
func_800736E0(objectIndex);
|
func_800736E0(objectIndex);
|
||||||
player->unk_0CA |= 0x80;
|
player->lakituProps |= FROZEN_EFFECT;
|
||||||
object_next_state(objectIndex);
|
object_next_state(objectIndex);
|
||||||
break;
|
break;
|
||||||
case 3: /* switch 1 */
|
case 3: /* switch 1 */
|
||||||
|
|
@ -599,11 +599,11 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
|
||||||
func_80073654(objectIndex);
|
func_80073654(objectIndex);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if ((player->surfaceType == ICE) && !(player->unk_0CA & 1) &&
|
if ((player->surfaceType == ICE) && !(player->lakituProps & LAKITU_RETRIEVAL) &&
|
||||||
((f64) player->collision.surfaceDistance[2] <= 30.0)) {
|
((f64) player->collision.surfaceDistance[2] <= 30.0)) {
|
||||||
func_800722A4(objectIndex, 8);
|
func_800722A4(objectIndex, 8);
|
||||||
}
|
}
|
||||||
if (!(player->unk_0CA & 2)) {
|
if (!(player->lakituProps & HELD_BY_LAKITU)) {
|
||||||
func_80086EAC(objectIndex, 0, 3);
|
func_80086EAC(objectIndex, 0, 3);
|
||||||
func_80073654(objectIndex);
|
func_80073654(objectIndex);
|
||||||
}
|
}
|
||||||
|
|
@ -612,7 +612,7 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
|
||||||
func_8007375C(objectIndex, 0x0000001E);
|
func_8007375C(objectIndex, 0x0000001E);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
player->unk_0CA &= 0xFF7F;
|
player->lakituProps &= ~FROZEN_EFFECT;
|
||||||
func_800722A4(objectIndex, 0x00000010);
|
func_800722A4(objectIndex, 0x00000010);
|
||||||
func_800722A4(objectIndex, 0x00000020);
|
func_800722A4(objectIndex, 0x00000020);
|
||||||
func_800722CC(objectIndex, 4);
|
func_800722CC(objectIndex, 4);
|
||||||
|
|
@ -623,8 +623,8 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
|
||||||
case 6:
|
case 6:
|
||||||
if (func_8007375C(objectIndex, 0x000000A0) != 0) {
|
if (func_8007375C(objectIndex, 0x000000A0) != 0) {
|
||||||
func_800722CC(objectIndex, 0x00000010);
|
func_800722CC(objectIndex, 0x00000010);
|
||||||
player->unk_0CA &= 0xFFEF;
|
player->lakituProps &= ~FRIGID_EFFECT;
|
||||||
player->unk_0CA |= 0x20;
|
player->lakituProps |= THAWING_EFFECT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
|
|
@ -633,7 +633,7 @@ void OLakitu::update_object_lakitu_fishing2(s32 objectIndex, s32 playerId) {
|
||||||
case 8:
|
case 8:
|
||||||
func_80073720(objectIndex);
|
func_80073720(objectIndex);
|
||||||
func_80072428(objectIndex);
|
func_80072428(objectIndex);
|
||||||
player->unk_0CA &= 0xFFDF;
|
player->lakituProps &= ~THAWING_EFFECT;
|
||||||
func_800722CC(objectIndex, 1);
|
func_800722CC(objectIndex, 1);
|
||||||
func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
|
func_800C9018((u8) playerId, SOUND_ARG_LOAD(0x01, 0x00, 0xFA, 0x28));
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -208,13 +208,13 @@ void OMole::func_80081D34(s32 objectIndex) {
|
||||||
for (size_t i = 0; i < D_8018D158; i++, player++, camera++) {
|
for (size_t i = 0; i < D_8018D158; i++, player++, camera++) {
|
||||||
if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & 0x80000000) &&
|
if ((is_obj_flag_status_active(objectIndex, 0x00000200) != 0) && !(player->effects & 0x80000000) &&
|
||||||
(has_collided_with_player(objectIndex, player) != 0)) {
|
(has_collided_with_player(objectIndex, player) != 0)) {
|
||||||
if ((player->type & 0x8000) && !(player->type & 0x100)) {
|
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
|
||||||
var_s5 = 1;
|
var_s5 = 1;
|
||||||
object = &gObjectList[objectIndex];
|
object = &gObjectList[objectIndex];
|
||||||
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
||||||
func_80072180();
|
func_80072180();
|
||||||
}
|
}
|
||||||
if (player->effects & 0x200) {
|
if (player->effects & STAR_EFFECT) {
|
||||||
func_800C9060(i, 0x1900A046U);
|
func_800C9060(i, 0x1900A046U);
|
||||||
} else {
|
} else {
|
||||||
player->triggers |= HIGH_TUMBLE_TRIGGER;
|
player->triggers |= HIGH_TUMBLE_TRIGGER;
|
||||||
|
|
|
||||||
|
|
@ -648,11 +648,11 @@ void OThwomp::func_80080B28(s32 objectIndex, s32 playerId) {
|
||||||
temp_f0 = func_80088F54(objectIndex, player);
|
temp_f0 = func_80088F54(objectIndex, player);
|
||||||
if ((temp_f0 <= 9.0) && !(player->effects & 0x04000000) &&
|
if ((temp_f0 <= 9.0) && !(player->effects & 0x04000000) &&
|
||||||
(has_collided_horizontally_with_player(objectIndex, player) != 0)) {
|
(has_collided_horizontally_with_player(objectIndex, player) != 0)) {
|
||||||
if ((player->type & 0x8000) && !(player->type & 0x100)) {
|
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
|
||||||
if (!(player->effects & 0x200)) {
|
if (!(player->effects & STAR_EFFECT)) {
|
||||||
func_80089474(objectIndex, playerId, 1.4f, 1.1f, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x4C));
|
func_80089474(objectIndex, playerId, 1.4f, 1.1f, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x4C));
|
||||||
} else if (func_80072354(objectIndex, 0x00000040) != 0) {
|
} else if (func_80072354(objectIndex, 0x00000040) != 0) {
|
||||||
if (player->type & 0x1000) {
|
if (player->type & PLAYER_CPU) {
|
||||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A));
|
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A));
|
||||||
} else {
|
} else {
|
||||||
func_800C9060((u8) playerId, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A));
|
func_800C9060((u8) playerId, SOUND_ARG_LOAD(0x19, 0x01, 0xA2, 0x4A));
|
||||||
|
|
@ -668,7 +668,7 @@ void OThwomp::func_80080B28(s32 objectIndex, s32 playerId) {
|
||||||
} else if ((temp_f0 <= 17.5) && (func_80072320(objectIndex, 1) != 0) &&
|
} else if ((temp_f0 <= 17.5) && (func_80072320(objectIndex, 1) != 0) &&
|
||||||
(is_within_horizontal_distance_of_player(objectIndex, player,
|
(is_within_horizontal_distance_of_player(objectIndex, player,
|
||||||
(player->speed * 0.5) + BoundingBoxSize) != 0)) {
|
(player->speed * 0.5) + BoundingBoxSize) != 0)) {
|
||||||
if ((player->type & 0x8000) && !(player->type & 0x100)) {
|
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB)) {
|
||||||
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
||||||
func_80072180();
|
func_80072180();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -604,7 +604,7 @@ void load_kart_texture(Player* player, s8 playerId, s8 screenId, s8 screenId2, s
|
||||||
s32 temp = player->effects;
|
s32 temp = player->effects;
|
||||||
s16 tyreSpeed = player->tyreSpeed;
|
s16 tyreSpeed = player->tyreSpeed;
|
||||||
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
|
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
|
||||||
((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) {
|
((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
|
||||||
if (player->animFrameSelector[screenId] != 0) {
|
if (player->animFrameSelector[screenId] != 0) {
|
||||||
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]);
|
osInvalDCache(&gEncodedKartTexture[index][screenId2][playerId], D_800DDEB0[player->characterId]);
|
||||||
gEncodedKartTexture[index][screenId2][playerId].unk_00 =
|
gEncodedKartTexture[index][screenId2][playerId].unk_00 =
|
||||||
|
|
@ -635,7 +635,7 @@ void load_kart_texture_non_blocking(Player* player, s8 arg1, s8 arg2, s8 arg3, s
|
||||||
s16 tyreSpeed = player->tyreSpeed;
|
s16 tyreSpeed = player->tyreSpeed;
|
||||||
|
|
||||||
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
|
if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
|
||||||
((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) {
|
((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
|
||||||
if (player->animFrameSelector[arg2] != 0) {
|
if (player->animFrameSelector[arg2] != 0) {
|
||||||
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
|
osInvalDCache(&gEncodedKartTexture[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -219,22 +219,22 @@ s32 get_player_index_for_player(Player* player) {
|
||||||
|
|
||||||
void func_80027DA8(Player* player, s8 playerId) {
|
void func_80027DA8(Player* player, s8 playerId) {
|
||||||
if (D_8015F890 != 1) {
|
if (D_8015F890 != 1) {
|
||||||
if ((player->type & 0x10) != 0x10) {
|
if ((player->type & PLAYER_UNKNOWN_0x10) != PLAYER_UNKNOWN_0x10) {
|
||||||
if (((D_8018D168 == 1) && ((player->type & 0x4000) == 0x4000)) && ((player->type & 0x100) != 0x100)) {
|
if (((D_8018D168 == 1) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
||||||
func_800C94A4(playerId);
|
func_800C94A4(playerId);
|
||||||
player->type |= 0x10;
|
player->type |= PLAYER_UNKNOWN_0x10;
|
||||||
} else if ((player->type & 0x2000) == 0) {
|
} else if ((player->type & PLAYER_START_SEQUENCE) == 0) {
|
||||||
func_800C9A88(playerId);
|
func_800C9A88(playerId);
|
||||||
player->type |= 0x10;
|
player->type |= PLAYER_UNKNOWN_0x10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if ((player->type & 0x10) != 0x10) {
|
} else if ((player->type & PLAYER_UNKNOWN_0x10) != PLAYER_UNKNOWN_0x10) {
|
||||||
if ((D_8018D168 == 1) && (player == gPlayerOne)) {
|
if ((D_8018D168 == 1) && (player == gPlayerOne)) {
|
||||||
func_800C94A4(playerId);
|
func_800C94A4(playerId);
|
||||||
player->type |= 0x10;
|
player->type |= PLAYER_UNKNOWN_0x10;
|
||||||
} else if ((player->type & 0x2000) == 0) {
|
} else if ((player->type & PLAYER_START_SEQUENCE) == 0) {
|
||||||
func_800C9A88(playerId);
|
func_800C9A88(playerId);
|
||||||
player->type |= 0x10;
|
player->type |= PLAYER_UNKNOWN_0x10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -335,7 +335,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((sp1E == 1) || ((player->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) ||
|
if ((sp1E == 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->lakituProps & HELD_BY_LAKITU) != 0) || (player->lakituProps & LAKITU_SCENE) ||
|
||||||
//! @todo make a proper match
|
//! @todo make a proper match
|
||||||
((*(D_801633F8 + (playerId))) == ((s16) 1U))) {
|
((*(D_801633F8 + (playerId))) == ((s16) 1U))) {
|
||||||
player->effects &= ~0x1000;
|
player->effects &= ~0x1000;
|
||||||
|
|
@ -344,7 +344,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
|
||||||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
((player->effects & 0x01000000) == 0x01000000) ||
|
((player->effects & 0x01000000) == 0x01000000) ||
|
||||||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
||||||
((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) {
|
((player->effects & 0x20000) == 0x20000) || (player->kartProps & UNUSED_0x800)) {
|
||||||
func_8002E594(player, camera, screenId, playerId);
|
func_8002E594(player, camera, screenId, playerId);
|
||||||
} else {
|
} else {
|
||||||
func_8002D268(player, camera, screenId, playerId);
|
func_8002D268(player, camera, screenId, playerId);
|
||||||
|
|
@ -355,7 +355,7 @@ void func_80028864(Player* player, Camera* camera, s8 playerId, s8 screenId) {
|
||||||
} else if ((player->type & PLAYER_STAGING) == PLAYER_STAGING) {
|
} else if ((player->type & PLAYER_STAGING) == PLAYER_STAGING) {
|
||||||
func_8002D028(player, playerId);
|
func_8002D028(player, playerId);
|
||||||
func_8002F730(player, camera, screenId, playerId);
|
func_8002F730(player, camera, screenId, playerId);
|
||||||
} else if (player->type & 0x80) {
|
} else if (player->type & PLAYER_UNKNOWN_0x80) {
|
||||||
func_8002D268(player, camera, screenId, playerId);
|
func_8002D268(player, camera, screenId, playerId);
|
||||||
} else {
|
} else {
|
||||||
if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) != PLAYER_HUMAN) {
|
||||||
|
|
@ -373,7 +373,7 @@ void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) {
|
||||||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
((player->effects & 0x1000000) == 0x1000000) ||
|
((player->effects & 0x1000000) == 0x1000000) ||
|
||||||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
||||||
((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) {
|
((player->effects & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
|
||||||
func_8002E594(player, camera, screenId, playerId);
|
func_8002E594(player, camera, screenId, playerId);
|
||||||
} else {
|
} else {
|
||||||
func_8002D268(player, camera, screenId, playerId);
|
func_8002D268(player, camera, screenId, playerId);
|
||||||
|
|
@ -385,7 +385,7 @@ void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) {
|
||||||
|
|
||||||
void func_80028D3C(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) && (gRaceState != RACE_FINISHED)) ||
|
if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (gRaceState != RACE_FINISHED)) ||
|
||||||
(player->unk_0CA & 2) != 0 || (player->unk_0CA & 8) != 0 || (player->effects & 0x4F010CC0) != 0) {
|
(player->lakituProps & HELD_BY_LAKITU) != 0 || (player->lakituProps & LAKITU_SCENE) != 0 || (player->effects & 0x4F010CC0) != 0) {
|
||||||
player->effects &= ~0x1000;
|
player->effects &= ~0x1000;
|
||||||
|
|
||||||
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) ||
|
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) ||
|
||||||
|
|
@ -393,7 +393,7 @@ void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) {
|
||||||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
((player->effects & 0x1000000) == 0x1000000) ||
|
((player->effects & 0x1000000) == 0x1000000) ||
|
||||||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) ||
|
||||||
((player->effects & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) {
|
((player->effects & 0x20000) == 0x20000) || ((player->kartProps & UNUSED_0x800) != 0)) {
|
||||||
func_8002E594(player, camera, screenId, playerId);
|
func_8002E594(player, camera, screenId, playerId);
|
||||||
} else {
|
} else {
|
||||||
func_8002D268(player, camera, screenId, playerId);
|
func_8002D268(player, camera, screenId, playerId);
|
||||||
|
|
@ -527,14 +527,14 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
|
||||||
temp_a0 = (s16) player->unk_0D4[screenId] * sins((u16) temp_a0) + player->unk_0CC[screenId] * coss((u16) temp_a0);
|
temp_a0 = (s16) player->unk_0D4[screenId] * sins((u16) temp_a0) + player->unk_0CC[screenId] * coss((u16) temp_a0);
|
||||||
move_s16_towards(&player->unk_050[screenId], temp_a0, 0.5f);
|
move_s16_towards(&player->unk_050[screenId], temp_a0, 0.5f);
|
||||||
var_a0 = player->animFrameSelector[screenId];
|
var_a0 = player->animFrameSelector[screenId];
|
||||||
player->unk_002 = player->unk_002 & (~(4 << (screenId * 4)));
|
player->unk_002 = player->unk_002 & (~(UNK_002_UNKNOWN_0x4 << (screenId * 4)));
|
||||||
if (var_a0 >= 0x101) {
|
if (var_a0 >= 0x101) {
|
||||||
var_a0 = 0x201 - var_a0;
|
var_a0 = 0x201 - var_a0;
|
||||||
player->unk_002 |= (4 << (screenId * 4));
|
player->unk_002 |= (UNK_002_UNKNOWN_0x4 << (screenId * 4));
|
||||||
}
|
}
|
||||||
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
|
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
|
||||||
((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) &&
|
((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) &&
|
||||||
((player->effects & 0x20000) != 0x20000) && (!(player->unk_044 & 0x800))) {
|
((player->effects & 0x20000) != 0x20000) && (!(player->kartProps & UNUSED_0x800))) {
|
||||||
if (var_a0 < 0x51) {
|
if (var_a0 < 0x51) {
|
||||||
var_a1 = 0x208;
|
var_a1 = 0x208;
|
||||||
var_t0 = 0;
|
var_t0 = 0;
|
||||||
|
|
@ -547,16 +547,16 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
|
||||||
var_t0 = 0;
|
var_t0 = 0;
|
||||||
}
|
}
|
||||||
if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
(player->unk_044 & 0x800)) {
|
(player->kartProps & UNUSED_0x800)) {
|
||||||
player->unk_050[screenId] = 0;
|
player->unk_050[screenId] = 0;
|
||||||
}
|
}
|
||||||
if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) {
|
if (((player->effects & 8) == 8) && ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
|
||||||
player->unk_050[screenId] = 0;
|
player->unk_050[screenId] = 0;
|
||||||
}
|
}
|
||||||
var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0);
|
var_a0 = (player->unk_048[screenId] + player->rotation[1] + player->unk_0C0);
|
||||||
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) ||
|
if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) ||
|
||||||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
((player->effects & 0x20000) == 0x20000) || (player->unk_044 & 0x800)) {
|
((player->effects & 0x20000) == 0x20000) || (player->kartProps & UNUSED_0x800)) {
|
||||||
if (var_a0 >= 0x7FF9) {
|
if (var_a0 >= 0x7FF9) {
|
||||||
var_a0 = -var_a0;
|
var_a0 = -var_a0;
|
||||||
var_a0 /= var_a1;
|
var_a0 /= var_a1;
|
||||||
|
|
@ -577,7 +577,7 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
|
||||||
player->animFrameSelector[screenId] = 0x22;
|
player->animFrameSelector[screenId] = 0x22;
|
||||||
}
|
}
|
||||||
if ((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x80000) ||
|
if ((player->effects & 0x80) || (player->effects & 0x40) || (player->effects & 0x80000) ||
|
||||||
(player->effects & 0x800000) || (player->effects & 0x20000) || (player->unk_044 & 0x800)) {
|
(player->effects & 0x800000) || (player->effects & 0x20000) || (player->kartProps & UNUSED_0x800)) {
|
||||||
|
|
||||||
if ((player->animFrameSelector[screenId]) >= 0x14) {
|
if ((player->animFrameSelector[screenId]) >= 0x14) {
|
||||||
player->animFrameSelector[screenId] = 0;
|
player->animFrameSelector[screenId] = 0;
|
||||||
|
|
@ -587,7 +587,7 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
|
||||||
player->animGroupSelector[screenId] = 4;
|
player->animGroupSelector[screenId] = 4;
|
||||||
}
|
}
|
||||||
if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
if (((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
(player->unk_044 & 0x800)) {
|
(player->kartProps & UNUSED_0x800)) {
|
||||||
|
|
||||||
player->animGroupSelector[screenId] = 4;
|
player->animGroupSelector[screenId] = 4;
|
||||||
}
|
}
|
||||||
|
|
@ -595,29 +595,29 @@ void func_8002934C(Player* player, Camera* camera, s8 screenId, s8 playerId) {
|
||||||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || (player->effects & 0x10000) ||
|
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || (player->effects & 0x10000) ||
|
||||||
(player->effects & 0x80) || (player->effects & 0x40)) {
|
(player->effects & 0x80) || (player->effects & 0x40)) {
|
||||||
|
|
||||||
player->unk_002 |= 1 << (screenId * 4);
|
player->unk_002 |= CHANGING_ANIMATION << (screenId * 4);
|
||||||
D_80165190[screenId][playerId] = 1;
|
D_80165190[screenId][playerId] = 1;
|
||||||
|
|
||||||
if ((player->effects & 0x80) || (player->effects & 0x40)) {
|
if ((player->effects & 0x80) || (player->effects & 0x40)) {
|
||||||
if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) &&
|
if ((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) &&
|
||||||
(player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) {
|
(player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) {
|
||||||
player->unk_002 &= ~(1 << (screenId * 4));
|
player->unk_002 &= ~(CHANGING_ANIMATION << (screenId * 4));
|
||||||
D_80165190[screenId][playerId] = 1;
|
D_80165190[screenId][playerId] = 1;
|
||||||
}
|
}
|
||||||
} else if (((player->unk_0A8) >> 8) == D_80165150[screenId][playerId] >> 8) {
|
} else if (((player->unk_0A8) >> 8) == D_80165150[screenId][playerId] >> 8) {
|
||||||
player->unk_002 &= ~(1 << (screenId * 4));
|
player->unk_002 &= ~(CHANGING_ANIMATION << (screenId * 4));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
player->unk_002 |= 1 << (screenId * 4);
|
player->unk_002 |= CHANGING_ANIMATION << (screenId * 4);
|
||||||
if (((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) &&
|
if (((player->animFrameSelector[screenId] == gLastAnimFrameSelector[screenId][playerId]) &&
|
||||||
(player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) &&
|
(player->animGroupSelector[screenId] == gLastAnimGroupSelector[screenId][playerId])) &&
|
||||||
((D_80165190[screenId][playerId]) == 0)) {
|
((D_80165190[screenId][playerId]) == 0)) {
|
||||||
player->unk_002 &= ~(1 << (screenId * 4));
|
player->unk_002 &= ~(CHANGING_ANIMATION << (screenId * 4));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
temp_a0_2 = gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId];
|
temp_a0_2 = gLastAnimFrameSelector[screenId][playerId] - player->animFrameSelector[screenId];
|
||||||
if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) {
|
if ((temp_a0_2 >= 0x14) || (temp_a0_2 < (-0x13))) {
|
||||||
player->unk_002 |= 1 << (screenId * 4);
|
player->unk_002 |= CHANGING_ANIMATION << (screenId * 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -702,7 +702,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_f2_3 = ((gCharacterSize[player->characterId] * 18.0f) + 1.0f) * player->size;
|
||||||
temp_f0_2 = player->unk_23C - player->unk_230;
|
temp_f0_2 = player->unk_23C - player->unk_230;
|
||||||
player->unk_206 = -func_802B7C40(temp_f0_2 / temp_f2_3);
|
player->unk_206 = -func_802B7C40(temp_f0_2 / temp_f2_3);
|
||||||
if (((player->unk_0CA & 2) == 2) || (player->effects & 8)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || (player->effects & 8)) {
|
||||||
player->unk_206 = 0;
|
player->unk_206 = 0;
|
||||||
}
|
}
|
||||||
if ((player->effects & 8) != 8) {
|
if ((player->effects & 8) != 8) {
|
||||||
|
|
@ -718,7 +718,7 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
|
||||||
}
|
}
|
||||||
move_s16_towards(&player->slopeAccel, temp_v0, 0.5f);
|
move_s16_towards(&player->slopeAccel, temp_v0, 0.5f);
|
||||||
}
|
}
|
||||||
if (((player->effects & 8) == 8) && ((player->unk_0CA & 2) == 2)) {
|
if (((player->effects & 8) == 8) && ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU)) {
|
||||||
player->slopeAccel = (s16) ((s32) player->unk_D9C);
|
player->slopeAccel = (s16) ((s32) player->unk_D9C);
|
||||||
}
|
}
|
||||||
player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF;
|
player->surfaceType = get_surface_type(player->collision.meshIndexZX) & 0xFF;
|
||||||
|
|
@ -1019,7 +1019,7 @@ void func_8002AB70(Player* player) {
|
||||||
if (player->effects & 0x80000) {
|
if (player->effects & 0x80000) {
|
||||||
player->kartGravity = 1500.0f;
|
player->kartGravity = 1500.0f;
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 0x800) != 0) {
|
if ((player->kartProps & UNUSED_0x800) != 0) {
|
||||||
player->kartGravity = 1900.0f;
|
player->kartGravity = 1900.0f;
|
||||||
}
|
}
|
||||||
if ((player->effects & 0x800000) == 0x800000) {
|
if ((player->effects & 0x800000) == 0x800000) {
|
||||||
|
|
@ -1053,7 +1053,7 @@ void func_8002AE38(Player* player, s8 arg1, f32 arg2, f32 arg3, f32 arg4, f32 ar
|
||||||
sp28 = (sins(-player->rotation[1]) * player->speed) + arg2;
|
sp28 = (sins(-player->rotation[1]) * player->speed) + arg2;
|
||||||
temp_f16 = (coss(-player->rotation[1]) * player->speed) + arg3;
|
temp_f16 = (coss(-player->rotation[1]) * player->speed) + arg3;
|
||||||
if (((player->effects & 0x800) != 0x800) && ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) &&
|
if (((player->effects & 0x800) != 0x800) && ((player->effects & DRIFTING_EFFECT) != DRIFTING_EFFECT) &&
|
||||||
!(player->unk_044 & 0x4000) &&
|
!(player->kartProps & DRIVING_SPINOUT) &&
|
||||||
((((player->speed / 18.0f) * 216.0f) <= 8.0f) ||
|
((((player->speed / 18.0f) * 216.0f) <= 8.0f) ||
|
||||||
(((player->unk_07C >> 0x10) < 5) && ((player->unk_07C >> 0x10) > -5)))) {
|
(((player->unk_07C >> 0x10) < 5) && ((player->unk_07C >> 0x10) > -5)))) {
|
||||||
if ((player->effects & 0x20) == 0x20) {
|
if ((player->effects & 0x20) == 0x20) {
|
||||||
|
|
@ -1179,7 +1179,7 @@ void apply_triggers(Player* player, s8 playerId, UNUSED s8 screenId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8002B5C0(Player* player, UNUSED 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->lakituProps & LAKITU_SCENE) != 0) || ((player->lakituProps & HELD_BY_LAKITU) != 0)) {
|
||||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||||
}
|
}
|
||||||
// Green shell
|
// Green shell
|
||||||
|
|
@ -1194,7 +1194,7 @@ void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) {
|
||||||
if ((player->effects & 0x800) == 0x800) {
|
if ((player->effects & 0x800) == 0x800) {
|
||||||
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 0x4000) != 0) {
|
if ((player->kartProps & DRIVING_SPINOUT) != 0) {
|
||||||
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||||
}
|
}
|
||||||
//unclear
|
//unclear
|
||||||
|
|
@ -1254,7 +1254,7 @@ void func_8002B830(Player* player, s8 playerId, s8 screenId) {
|
||||||
if (player->triggers != 0) {
|
if (player->triggers != 0) {
|
||||||
apply_triggers(player, playerId, screenId);
|
apply_triggers(player, playerId, screenId);
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 0x400) != 0) {
|
if ((player->kartProps & UNUSED_0x400) != 0) { // can never be true
|
||||||
func_800911B4(player, playerId);
|
func_800911B4(player, playerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1456,7 +1456,7 @@ void func_8002BF4C(Player* player, s8 arg1) {
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < NUM_PLAYERS; i++) {
|
for (i = 0; i < NUM_PLAYERS; i++) {
|
||||||
playerBorrow = &players[i];
|
playerBorrow = &players[i];
|
||||||
if (((player != playerBorrow) && ((playerBorrow->type & 0x100) == 0) && (playerBorrow->type & 0x8000)) &&
|
if (((player != playerBorrow) && ((playerBorrow->type & PLAYER_INVISIBLE_OR_BOMB) == 0) && (playerBorrow->type & 0x8000)) &&
|
||||||
((var_a2 = func_8001FD78(player, playerBorrow->pos[0], playerBorrow->pos[1], playerBorrow->pos[2]),
|
((var_a2 = func_8001FD78(player, playerBorrow->pos[0], playerBorrow->pos[1], playerBorrow->pos[2]),
|
||||||
var_a2 == 1))) {
|
var_a2 == 1))) {
|
||||||
player->unk_0E2 += 1;
|
player->unk_0E2 += 1;
|
||||||
|
|
@ -1537,7 +1537,7 @@ void func_8002C17C(Player* player, s8 playerId) {
|
||||||
} else if (D_80165330[playerId] == 0) {
|
} else if (D_80165330[playerId] == 0) {
|
||||||
gCopyNearestWaypointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId];
|
gCopyNearestWaypointByPlayerId[playerId] = gNearestPathPointByPlayerId[playerId];
|
||||||
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
|
gCopyPathIndexByPlayerId[playerId] = gPathIndexByPlayerId[playerId];
|
||||||
} else if (!((player->effects & 8) || (player->unk_0CA & 1))) {
|
} else if (!((player->effects & 8) || (player->lakituProps & LAKITU_RETRIEVAL))) {
|
||||||
D_80165330[playerId] = 0;
|
D_80165330[playerId] = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1549,25 +1549,25 @@ void func_8002C17C(Player* player, s8 playerId) {
|
||||||
void update_player_environment_and_hazard_state(Player* player, s8 playerIndex) {
|
void update_player_environment_and_hazard_state(Player* player, s8 playerIndex) {
|
||||||
gPlayerWaterLevel[playerIndex] = get_water_level(player);
|
gPlayerWaterLevel[playerIndex] = get_water_level(player);
|
||||||
if (player->pos[1] <= gPlayerWaterLevel[playerIndex]) { // Player is in water, at least partially
|
if (player->pos[1] <= gPlayerWaterLevel[playerIndex]) { // Player is in water, at least partially
|
||||||
player->waterInteractionFlags |= WATER_IS_PARTIALLY_SUBMERGED;
|
player->oobProps |= PASS_OOB_OR_FLUID_LEVEL;
|
||||||
} else {
|
} else {
|
||||||
player->waterInteractionFlags &= ~WATER_IS_PARTIALLY_SUBMERGED;
|
player->oobProps &= ~PASS_OOB_OR_FLUID_LEVEL;
|
||||||
}
|
}
|
||||||
if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) {
|
if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) {
|
||||||
// Player is fully submerged in water
|
// Player is fully submerged in water
|
||||||
player->waterInteractionFlags |= WATER_IS_FULLY_SUBMERGED;
|
player->oobProps |= UNDER_OOB_OR_FLUID_LEVEL;
|
||||||
player->waterInteractionFlags &= ~WATER_IS_PARTIALLY_SUBMERGED;
|
player->oobProps &= ~PASS_OOB_OR_FLUID_LEVEL;
|
||||||
} else {
|
} else {
|
||||||
// Player is not fully submerged in water, clear the flag
|
// Player is not fully submerged in water, clear the flag
|
||||||
player->waterInteractionFlags &= ~WATER_IS_FULLY_SUBMERGED;
|
player->oobProps &= ~UNDER_OOB_OR_FLUID_LEVEL;
|
||||||
}
|
}
|
||||||
if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) {
|
if (player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) {
|
||||||
// We confirm again that the player if fully submerged
|
// We confirm again that the player if fully submerged
|
||||||
if ((player->waterInteractionFlags & WATER_IN_DEEP_LIQUID_STATE) != WATER_IN_DEEP_LIQUID_STATE) {
|
if ((player->oobProps & UNDER_FLUID_LEVEL) != UNDER_FLUID_LEVEL) {
|
||||||
// Set flag - it will be cleared shortly after
|
// Set flag - it will be cleared shortly after
|
||||||
player->waterInteractionFlags |= WATER_JUST_ENTERED_DEEP_LIQUID;
|
player->oobProps |= UNDER_OOB_LEVEL;
|
||||||
// This flag persists longer
|
// This flag persists longer
|
||||||
player->waterInteractionFlags |= WATER_IN_DEEP_LIQUID_STATE;
|
player->oobProps |= UNDER_FLUID_LEVEL;
|
||||||
if ((!IsKoopaTroopaBeach()) && (!IsSkyscraper()) &&
|
if ((!IsKoopaTroopaBeach()) && (!IsSkyscraper()) &&
|
||||||
(!IsRainbowRoad()) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
(!IsRainbowRoad()) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN)) {
|
||||||
if ((IsBowsersCastle()) || (IsBigDonut())) {
|
if ((IsBowsersCastle()) || (IsBigDonut())) {
|
||||||
|
|
@ -1581,20 +1581,20 @@ void update_player_environment_and_hazard_state(Player* player, s8 playerIndex)
|
||||||
if ((IsKoopaTroopaBeach()) || (IsSkyscraper()) ||
|
if ((IsKoopaTroopaBeach()) || (IsSkyscraper()) ||
|
||||||
(IsRainbowRoad())) {
|
(IsRainbowRoad())) {
|
||||||
// Different handling for these tracks, we just use the first two (0x0001 and 0x0002)
|
// Different handling for these tracks, we just use the first two (0x0001 and 0x0002)
|
||||||
player->waterInteractionFlags &= ~(WATER_IN_DEEP_LIQUID_STATE | WATER_JUST_ENTERED_DEEP_LIQUID);
|
player->oobProps &= ~(UNDER_FLUID_LEVEL | UNDER_OOB_LEVEL);
|
||||||
}
|
}
|
||||||
if ((player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) &&
|
if ((player->boundingBoxSize < (gPlayerWaterLevel[playerIndex] - player->pos[1])) &&
|
||||||
(player->collision.surfaceDistance[2] >= 600.0f)) {
|
(player->collision.surfaceDistance[2] >= 600.0f)) {
|
||||||
// We are fully submerged in water and far away from the surface (out of bounds?)
|
// We are fully submerged in water and far away from the surface (out of bounds?)
|
||||||
player->unk_0CA |= 1;
|
player->lakituProps |= LAKITU_RETRIEVAL;
|
||||||
}
|
}
|
||||||
if (player->collision.surfaceDistance[2] >= 600.0f) {
|
if (player->collision.surfaceDistance[2] >= 600.0f) {
|
||||||
player->unk_0CA |= 0x0100;
|
player->lakituProps |= WENT_OVER_OOB;
|
||||||
} else if ((player->effects & 8) != 8) {
|
} else if ((player->effects & 8) != 8) {
|
||||||
player->unk_0CA &= ~0x0100;
|
player->lakituProps &= ~WENT_OVER_OOB;
|
||||||
}
|
}
|
||||||
if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->unk_0CA & 1))) {
|
if ((player->type & PLAYER_CPU) && ((func_802ABDF4(player->collision.meshIndexZX) != 0) || (player->lakituProps & LAKITU_RETRIEVAL))) {
|
||||||
if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8) && !(player->effects & 0x1000)) {
|
if (!(player->lakituProps & HELD_BY_LAKITU) && !(player->lakituProps & LAKITU_SCENE) && !(player->effects & 0x1000)) {
|
||||||
func_80090778(player);
|
func_80090778(player);
|
||||||
func_80090868(player);
|
func_80090868(player);
|
||||||
}
|
}
|
||||||
|
|
@ -1612,7 +1612,7 @@ void func_8002C7E4(Player* player, s8 arg1, s8 arg2) {
|
||||||
if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) {
|
if ((player->effects & BOOST_EFFECT) != BOOST_EFFECT) {
|
||||||
func_8002B9CC(player, arg1, arg2);
|
func_8002B9CC(player, arg1, arg2);
|
||||||
}
|
}
|
||||||
player->unk_044 &= ~0x0001;
|
player->kartProps &= ~BACK_UP;
|
||||||
player->unk_046 |= 1;
|
player->unk_046 |= 1;
|
||||||
player->unk_046 |= 8;
|
player->unk_046 |= 8;
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
|
|
@ -1632,7 +1632,7 @@ void func_8002C7E4(Player* player, s8 arg1, s8 arg2) {
|
||||||
if ((player->effects & 0x8000) == 0x8000) {
|
if ((player->effects & 0x8000) == 0x8000) {
|
||||||
player->effects &= ~0x8000;
|
player->effects &= ~0x8000;
|
||||||
player->unk_10C = 1;
|
player->unk_10C = 1;
|
||||||
player->unk_044 &= ~0x0001;
|
player->kartProps &= ~BACK_UP;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
player->unk_046 &= ~0x0001;
|
player->unk_046 &= ~0x0001;
|
||||||
|
|
@ -1659,7 +1659,7 @@ void func_8002C954(Player* player, s8 playerId, Vec3f arg2) {
|
||||||
((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & 0x10000) == 0)) &&
|
((((temp_f0 >= 20.0f) || (temp_f0 < (-1.0f))) && ((player->effects & 0x10000) == 0)) &&
|
||||||
(player->effects & 8)) ||
|
(player->effects & 8)) ||
|
||||||
((player->collision.unk34 == 0) && ((player->effects & 0x10000) == 0))) &&
|
((player->collision.unk34 == 0) && ((player->effects & 0x10000) == 0))) &&
|
||||||
(((player->unk_0CA & 2) == 0) || (!(player->unk_0CA & 8)))) {
|
(((player->lakituProps & HELD_BY_LAKITU) == 0) || (!(player->lakituProps & LAKITU_SCENE)))) {
|
||||||
func_8008F494(player, playerId);
|
func_8008F494(player, playerId);
|
||||||
}
|
}
|
||||||
if ((player->unk_046 & 0x20) != 0x20) {
|
if ((player->unk_046 & 0x20) != 0x20) {
|
||||||
|
|
@ -1707,13 +1707,13 @@ void func_8002C954(Player* player, s8 playerId, Vec3f arg2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply_effect(Player* player, s8 arg1, s8 arg2) {
|
void apply_effect(Player* player, s8 arg1, s8 arg2) {
|
||||||
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) {
|
||||||
func_80090970(player, arg1, arg2);
|
func_80090970(player, arg1, arg2);
|
||||||
}
|
}
|
||||||
if ((player->effects & 0x800) == 0x800) {
|
if ((player->effects & 0x800) == 0x800) {
|
||||||
func_8008CEB0(player, arg1);
|
func_8008CEB0(player, arg1);
|
||||||
}
|
}
|
||||||
if (player->unk_044 & 0x4000) {
|
if (player->kartProps & DRIVING_SPINOUT) {
|
||||||
func_8008D170(player, arg1);
|
func_8008D170(player, arg1);
|
||||||
}
|
}
|
||||||
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
|
if ((player->effects & BOOST_EFFECT) == BOOST_EFFECT) {
|
||||||
|
|
@ -1773,7 +1773,7 @@ void apply_effect(Player* player, s8 arg1, s8 arg2) {
|
||||||
func_8008FCDC(player, arg1);
|
func_8008FCDC(player, arg1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player->unk_044 & 0x800) {
|
if (player->kartProps & UNUSED_0x800) {
|
||||||
func_80091298(player, arg1);
|
func_80091298(player, arg1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1813,7 +1813,7 @@ void func_8002D028(Player* player, s8 arg1) {
|
||||||
if (temp_f18 <= 8.0f) {
|
if (temp_f18 <= 8.0f) {
|
||||||
adjust_angle(&player->rotation[1], -0x8000, 0x016C);
|
adjust_angle(&player->rotation[1], -0x8000, 0x016C);
|
||||||
if ((player->rotation[1] < (-0x7F41)) || (player->rotation[1] > 0x7F41)) {
|
if ((player->rotation[1] < (-0x7F41)) || (player->rotation[1] > 0x7F41)) {
|
||||||
player->type &= ~0x0200;
|
player->type &= ~SHROOM_TRIGGER;
|
||||||
}
|
}
|
||||||
player->kartPropulsionStrength = 0;
|
player->kartPropulsionStrength = 0;
|
||||||
player->speed = 0;
|
player->speed = 0;
|
||||||
|
|
@ -1877,7 +1877,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
func_80037BB4(player, sp160);
|
func_80037BB4(player, sp160);
|
||||||
func_8002AB70(player);
|
func_8002AB70(player);
|
||||||
func_8002FCA8(player, playerId);
|
func_8002FCA8(player, playerId);
|
||||||
if (player->unk_044 & 1) {
|
if (player->kartProps & 1) {
|
||||||
player->unk_064[0] *= -1.0f;
|
player->unk_064[0] *= -1.0f;
|
||||||
player->unk_064[2] *= -1.0f;
|
player->unk_064[2] *= -1.0f;
|
||||||
}
|
}
|
||||||
|
|
@ -1911,9 +1911,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
temp_f2_2 = ((player->oldPos[2] - player->pos[2]) * coss(player->rotation[1] + player->unk_0C0)) +
|
temp_f2_2 = ((player->oldPos[2] - player->pos[2]) * coss(player->rotation[1] + player->unk_0C0)) +
|
||||||
(-(player->oldPos[0] - player->pos[0]) * sins(player->rotation[1] + player->unk_0C0));
|
(-(player->oldPos[0] - player->pos[0]) * sins(player->rotation[1] + player->unk_0C0));
|
||||||
if (temp_f2_2 > 0.1) {
|
if (temp_f2_2 > 0.1) {
|
||||||
player->unk_044 |= 8;
|
player->kartProps |= MOVE_BACKWARDS;
|
||||||
} else {
|
} else {
|
||||||
player->unk_044 &= 0xFFF7;
|
player->kartProps &= ~MOVE_BACKWARDS;
|
||||||
}
|
}
|
||||||
if (((player->kartPropulsionStrength <= 0.0f) && ((temp_v0_3 = player->effects, (temp_v0_3 & 1) == 1))) &&
|
if (((player->kartPropulsionStrength <= 0.0f) && ((temp_v0_3 = player->effects, (temp_v0_3 & 1) == 1))) &&
|
||||||
((temp_v0_3 & 0x20) != 0x20)) {
|
((temp_v0_3 & 0x20) != 0x20)) {
|
||||||
|
|
@ -1961,15 +1961,15 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
newVelocity[1] +=
|
newVelocity[1] +=
|
||||||
(((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) /
|
(((((f64) ((sp184[1] + gravityY) + sp160[1])) - (newVelocity[1] * (0.12 * ((f64) player->kartFriction)))) / 6000.0) /
|
||||||
((f64) player->unk_DAC));
|
((f64) player->unk_DAC));
|
||||||
if (((((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) ||
|
if (((((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) ||
|
||||||
((player->effects & HIT_EFFECT) == HIT_EFFECT)) ||
|
((player->effects & HIT_EFFECT) == HIT_EFFECT)) ||
|
||||||
(player->unk_0CA & 1)) {
|
(player->lakituProps & LAKITU_RETRIEVAL)) {
|
||||||
newVelocity[0] = 0.0f;
|
newVelocity[0] = 0.0f;
|
||||||
newVelocity[1] = 0.0f;
|
newVelocity[1] = 0.0f;
|
||||||
newVelocity[2] = 0.0f;
|
newVelocity[2] = 0.0f;
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 0x10) == 0x10) {
|
if ((player->kartProps & LOSE_GP_RACE) == LOSE_GP_RACE) {
|
||||||
player->unk_044 &= 0xFFEF;
|
player->kartProps &= ~LOSE_GP_RACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
posX = player->pos[0];
|
posX = player->pos[0];
|
||||||
|
|
@ -1983,9 +1983,9 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
nextY = posY + player->velocity[1];
|
nextY = posY + player->velocity[1];
|
||||||
nextZ = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2];
|
nextZ = posZ + player->velocity[2] + D_8018CE10[playerId].unk_04[2];
|
||||||
|
|
||||||
if (((((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) &&
|
if (((((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & LAKITU_SCENE) != LAKITU_SCENE)) &&
|
||||||
((player->effects & HIT_EFFECT) != HIT_EFFECT)) &&
|
((player->effects & HIT_EFFECT) != HIT_EFFECT)) &&
|
||||||
(!(player->unk_0CA & 1))) {
|
(!(player->lakituProps & LAKITU_RETRIEVAL))) {
|
||||||
func_8002AAC0(player);
|
func_8002AAC0(player);
|
||||||
nextY += player->kartHopVelocity;
|
nextY += player->kartHopVelocity;
|
||||||
nextY -= 0.02;
|
nextY -= 0.02;
|
||||||
|
|
@ -1995,7 +1995,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
player->unk_058 = 0.0f;
|
player->unk_058 = 0.0f;
|
||||||
player->unk_060 = 0.0f;
|
player->unk_060 = 0.0f;
|
||||||
player->unk_05C = 1.0f;
|
player->unk_05C = 1.0f;
|
||||||
if ((player->unk_044 & 1) != 1) {
|
if ((player->kartProps & 1) != 1) {
|
||||||
calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060,
|
calculate_orientation_matrix(player->orientationMatrix, player->unk_058, player->unk_05C, player->unk_060,
|
||||||
player->rotation[1]);
|
player->rotation[1]);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2014,7 +2014,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
}
|
}
|
||||||
player->unk_DB4.unkC = 3.0f;
|
player->unk_DB4.unkC = 3.0f;
|
||||||
player->unk_DB4.unk18 = 0;
|
player->unk_DB4.unk18 = 0;
|
||||||
player->unk_0B6 |= 0x100;
|
player->kartGraphics |= POOMP;
|
||||||
if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
if ((((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
||||||
((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) &&
|
((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT)) &&
|
||||||
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
||||||
|
|
@ -2025,7 +2025,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f);
|
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f);
|
||||||
}
|
}
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
player->unk_044 |= 0x100;
|
player->kartProps |= POST_TUMBLE_GAS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((player->unk_0C2 < 0x23) && (player->unk_0C2 >= 0x1C)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
if (((player->unk_0C2 < 0x23) && (player->unk_0C2 >= 0x1C)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
||||||
|
|
@ -2036,7 +2036,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f);
|
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 35.0f);
|
||||||
}
|
}
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
player->unk_044 |= 0x100;
|
player->kartProps |= POST_TUMBLE_GAS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 4)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 4)) && (((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
||||||
|
|
@ -2083,7 +2083,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
}
|
}
|
||||||
if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) &&
|
if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) != 0)) &&
|
||||||
((player->effects & 0x10000) != 0x10000)) {
|
((player->effects & 0x10000) != 0x10000)) {
|
||||||
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) {
|
if ((!(player->lakituProps & HELD_BY_LAKITU)) || (!(player->lakituProps & LAKITU_SCENE))) {
|
||||||
func_8008F494(player, playerId);
|
func_8008F494(player, playerId);
|
||||||
}
|
}
|
||||||
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
|
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
|
||||||
|
|
@ -2136,7 +2136,7 @@ void func_8002D268(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
player->speed = gKartTopSpeedTable[player->characterId];
|
player->speed = gKartTopSpeedTable[player->characterId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 1) == 1) {
|
if ((player->kartProps & 1) == 1) {
|
||||||
if (player->speed > 1) {
|
if (player->speed > 1) {
|
||||||
temp = 1 / player->speed;
|
temp = 1 / player->speed;
|
||||||
player->velocity[0] *= temp;
|
player->velocity[0] *= temp;
|
||||||
|
|
@ -2195,7 +2195,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
((player->effects & 0x80000) == 0x80000)) ||
|
((player->effects & 0x80000) == 0x80000)) ||
|
||||||
((player->effects & 0x800000) == 0x800000)) ||
|
((player->effects & 0x800000) == 0x800000)) ||
|
||||||
((player->effects & 0x20000) == 0x20000)) ||
|
((player->effects & 0x20000) == 0x20000)) ||
|
||||||
(player->unk_044 & 0x800)) {
|
(player->kartProps & UNUSED_0x800)) {
|
||||||
sp46 = 1;
|
sp46 = 1;
|
||||||
} else {
|
} else {
|
||||||
sp46 = 0;
|
sp46 = 0;
|
||||||
|
|
@ -2247,7 +2247,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
}
|
}
|
||||||
sp54[1] += (((((spEC[1] + sp7C) + spD4[1])) - (sp54[1] * (0.12 * player->kartFriction))) / 6000) / player->unk_DAC;
|
sp54[1] += (((((spEC[1] + sp7C) + spD4[1])) - (sp54[1] * (0.12 * player->kartFriction))) / 6000) / player->unk_DAC;
|
||||||
|
|
||||||
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) {
|
||||||
sp54[0] = 0.0f;
|
sp54[0] = 0.0f;
|
||||||
sp54[1] = 0.0f;
|
sp54[1] = 0.0f;
|
||||||
sp54[2] = 0.0f;
|
sp54[2] = 0.0f;
|
||||||
|
|
@ -2283,14 +2283,14 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
player->unk_0C2 = 0x0032;
|
player->unk_0C2 = 0x0032;
|
||||||
}
|
}
|
||||||
player->unk_DB4.unk18 = 0;
|
player->unk_DB4.unk18 = 0;
|
||||||
player->unk_0B6 |= 0x100;
|
player->kartGraphics |= POOMP;
|
||||||
player->unk_DB4.unkC = 3.0f;
|
player->unk_DB4.unkC = 3.0f;
|
||||||
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
||||||
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
||||||
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
|
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
|
||||||
}
|
}
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
player->unk_044 |= 0x100;
|
player->kartProps |= POST_TUMBLE_GAS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 0xA)) &&
|
if (((player->unk_0C2 < 0x1C) && (player->unk_0C2 >= 0xA)) &&
|
||||||
|
|
@ -2302,7 +2302,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
|
func_800CADD0((u8) playerId, ((f32) player->unk_0C2) / 50.0f);
|
||||||
}
|
}
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
player->unk_044 |= 0x100;
|
player->kartProps |= POST_TUMBLE_GAS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player->unk_0C2 = 0;
|
player->unk_0C2 = 0;
|
||||||
|
|
@ -2327,7 +2327,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
player->kartHopJerk = 0.06f;
|
player->kartHopJerk = 0.06f;
|
||||||
player->kartHopAcceleration = 0.0f;
|
player->kartHopAcceleration = 0.0f;
|
||||||
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
if ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) {
|
||||||
player->unk_044 |= 0x100;
|
player->kartProps |= POST_TUMBLE_GAS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2367,7 +2367,7 @@ void func_8002E594(Player* player, UNUSED Camera* camera, s8 screenId, s8 player
|
||||||
}
|
}
|
||||||
if (((func_802ABDB8(player->collision.meshIndexZX) != 0) && ((player->effects & 0x10000) != 0x10000)) &&
|
if (((func_802ABDB8(player->collision.meshIndexZX) != 0) && ((player->effects & 0x10000) != 0x10000)) &&
|
||||||
(((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
(((player->speed / 18.0f) * 216.0f) >= 20.0f)) {
|
||||||
if ((!(player->unk_0CA & 2)) || (!(player->unk_0CA & 8))) {
|
if ((!(player->lakituProps & HELD_BY_LAKITU)) || (!(player->lakituProps & LAKITU_SCENE))) {
|
||||||
func_8008F494(player, playerId);
|
func_8008F494(player, playerId);
|
||||||
}
|
}
|
||||||
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
|
} else if (((!(player->effects & 8)) && (func_802ABDB8(player->collision.meshIndexZX) == 0)) &&
|
||||||
|
|
@ -2432,7 +2432,7 @@ void control_cpu_movement(Player* player, UNUSED Camera* camera, s8 screenId, s8
|
||||||
f32 topSpeedMultiplier;
|
f32 topSpeedMultiplier;
|
||||||
f32 nextY;
|
f32 nextY;
|
||||||
player->effects |= 0x1000;
|
player->effects |= 0x1000;
|
||||||
player->unk_044 |= 0x10;
|
player->kartProps |= LOSE_GP_RACE;
|
||||||
nextY = gPlayerPathY[playerId];
|
nextY = gPlayerPathY[playerId];
|
||||||
player->driftDuration = 0;
|
player->driftDuration = 0;
|
||||||
player->effects &= ~DRIFTING_EFFECT;
|
player->effects &= ~DRIFTING_EFFECT;
|
||||||
|
|
@ -2717,7 +2717,7 @@ f32 func_80030150(Player* player, s8 arg1) {
|
||||||
var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType];
|
var_f0 += D_800E2E90[player->characterId][player->tyres[FRONT_LEFT].surfaceType];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (((player->effects & 8) != 8) && ((player->unk_0CA & 2) != 2)) {
|
if (((player->effects & 8) != 8) && ((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU)) {
|
||||||
temp_lo = player->slopeAccel / 182;
|
temp_lo = player->slopeAccel / 182;
|
||||||
if (var_f2 >= 20.0f) {
|
if (var_f2 >= 20.0f) {
|
||||||
if ((temp_lo > 0x11) || (temp_lo < -0x11)) {
|
if ((temp_lo > 0x11) || (temp_lo < -0x11)) {
|
||||||
|
|
@ -2757,10 +2757,10 @@ f32 func_80030150(Player* player, s8 arg1) {
|
||||||
var_f0 += -0.25;
|
var_f0 += -0.25;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) {
|
if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
|
||||||
var_f0 += 0.3;
|
var_f0 += 0.3;
|
||||||
} else {
|
} else {
|
||||||
if ((player->waterInteractionFlags & WATER_IS_PARTIALLY_SUBMERGED) == WATER_IS_PARTIALLY_SUBMERGED) {
|
if ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) == PASS_OOB_OR_FLUID_LEVEL) {
|
||||||
var_f0 += 0.15;
|
var_f0 += 0.15;
|
||||||
}
|
}
|
||||||
if (((gPlayerWaterLevel[arg1] - player->tyres[BACK_LEFT].baseHeight) >= 3.5) ||
|
if (((gPlayerWaterLevel[arg1] - player->tyres[BACK_LEFT].baseHeight) >= 3.5) ||
|
||||||
|
|
@ -2807,7 +2807,7 @@ f32 func_80030150(Player* player, s8 arg1) {
|
||||||
if (var_f2 < 0.0f) {
|
if (var_f2 < 0.0f) {
|
||||||
var_f2 = 0.0f;
|
var_f2 = 0.0f;
|
||||||
}
|
}
|
||||||
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8) ||
|
if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE) ||
|
||||||
((player->type & PLAYER_START_SEQUENCE) == PLAYER_START_SEQUENCE)) {
|
((player->type & PLAYER_START_SEQUENCE) == PLAYER_START_SEQUENCE)) {
|
||||||
return (1.0f - player->unk_104) * var_f2;
|
return (1.0f - player->unk_104) * var_f2;
|
||||||
}
|
}
|
||||||
|
|
@ -2831,7 +2831,7 @@ void update_player_kart_hop(Player* player) {
|
||||||
f32 hopInitialUpwardVelocity;
|
f32 hopInitialUpwardVelocity;
|
||||||
f32 hopDownwardAcceleration;
|
f32 hopDownwardAcceleration;
|
||||||
|
|
||||||
if (((player->unk_0CA & 2) != 2) && ((player->unk_0CA & 8) != 8)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) != HELD_BY_LAKITU) && ((player->lakituProps & LAKITU_SCENE) != LAKITU_SCENE)) {
|
||||||
if ((((player->speed / 18.0f) * 216.0f) >= 8.0f) && (player->unk_DB4.unkC < 1.0f)) {
|
if ((((player->speed / 18.0f) * 216.0f) >= 8.0f) && (player->unk_DB4.unkC < 1.0f)) {
|
||||||
switch (player->surfaceType) { /* irregular */
|
switch (player->surfaceType) { /* irregular */
|
||||||
case ASPHALT:
|
case ASPHALT:
|
||||||
|
|
@ -3107,7 +3107,7 @@ void player_accelerate_alternative(Player* player) {
|
||||||
if (!((player->effects & 8)) || ((player->effects & LIGHTNING_EFFECT))) {
|
if (!((player->effects & 8)) || ((player->effects & LIGHTNING_EFFECT))) {
|
||||||
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||||
}
|
}
|
||||||
player->unk_044 |= 0x20;
|
player->kartProps |= THROTTLE;
|
||||||
// Hacky way to check for START_SPINOUT_TRIGGER
|
// Hacky way to check for START_SPINOUT_TRIGGER
|
||||||
if ((player->triggers * 8) < 0) {
|
if ((player->triggers * 8) < 0) {
|
||||||
func_8008F104(player, player_index);
|
func_8008F104(player, player_index);
|
||||||
|
|
@ -3132,7 +3132,7 @@ void player_decelerate_alternative(Player* player, f32 speed) {
|
||||||
if ((player->effects & 8) != 8) {
|
if ((player->effects & 8) != 8) {
|
||||||
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||||
}
|
}
|
||||||
player->unk_044 &= 0xFFDF;
|
player->kartProps &= ~THROTTLE;
|
||||||
// Hacky way to check for START_SPINOUT_TRIGGER
|
// Hacky way to check for START_SPINOUT_TRIGGER
|
||||||
if ((player->triggers * 8) < 0) {
|
if ((player->triggers * 8) < 0) {
|
||||||
func_8008F104(player, player_index);
|
func_8008F104(player, player_index);
|
||||||
|
|
@ -3375,7 +3375,7 @@ void player_accelerate_during_start_sequence(Player* player) {
|
||||||
} else {
|
} else {
|
||||||
var_v0 = 8;
|
var_v0 = 8;
|
||||||
}
|
}
|
||||||
if ((test < var_v0) && ((player->unk_044 & 0x20) != 0x20)) {
|
if ((test < var_v0) && ((player->kartProps & THROTTLE) != THROTTLE)) {
|
||||||
player->triggers |= START_BOOST_TRIGGER;
|
player->triggers |= START_BOOST_TRIGGER;
|
||||||
} else if ((player->topSpeed * 0.9f) <= player->currentSpeed) {
|
} else if ((player->topSpeed * 0.9f) <= player->currentSpeed) {
|
||||||
if ((player->triggers & START_BOOST_TRIGGER) != START_BOOST_TRIGGER) {
|
if ((player->triggers & START_BOOST_TRIGGER) != START_BOOST_TRIGGER) {
|
||||||
|
|
@ -3384,7 +3384,7 @@ void player_accelerate_during_start_sequence(Player* player) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player->unk_044 |= 0x20;
|
player->kartProps |= THROTTLE;
|
||||||
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3403,7 +3403,7 @@ void player_decelerate_during_start_sequence(Player* player, f32 speedReduction)
|
||||||
player->triggers &= ~START_SPINOUT_TRIGGER;
|
player->triggers &= ~START_SPINOUT_TRIGGER;
|
||||||
}
|
}
|
||||||
player->triggers &= ~START_BOOST_TRIGGER;
|
player->triggers &= ~START_BOOST_TRIGGER;
|
||||||
player->unk_044 &= ~0x0020;
|
player->kartProps &= ~THROTTLE;
|
||||||
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3489,7 +3489,7 @@ void player_accelerate_global(Player* player, s32 playerIndex) {
|
||||||
if (((player->topSpeed * 0.9) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] <= (player->topSpeed * 1.0))) {
|
if (((player->topSpeed * 0.9) <= gPlayerCurrentSpeed[playerIndex]) && (gPlayerCurrentSpeed[playerIndex] <= (player->topSpeed * 1.0))) {
|
||||||
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][9] * 2.8;
|
gPlayerCurrentSpeed[playerIndex] += gKartAccelerationTables[player->characterId][9] * 2.8;
|
||||||
}
|
}
|
||||||
player->unk_044 |= 0x20;
|
player->kartProps |= THROTTLE;
|
||||||
if (gPlayerCurrentSpeed[playerIndex] < 0.0f) {
|
if (gPlayerCurrentSpeed[playerIndex] < 0.0f) {
|
||||||
gPlayerCurrentSpeed[playerIndex] = 0.0f;
|
gPlayerCurrentSpeed[playerIndex] = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
@ -3497,7 +3497,7 @@ void player_accelerate_global(Player* player, s32 playerIndex) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void player_decelerate_global(Player* player, f32 speedReduction, s32 playerIndex) {
|
void player_decelerate_global(Player* player, f32 speedReduction, s32 playerIndex) {
|
||||||
player->unk_044 &= ~0x20;
|
player->kartProps &= ~THROTTLE;
|
||||||
gPlayerCurrentSpeed[playerIndex] -= speedReduction;
|
gPlayerCurrentSpeed[playerIndex] -= speedReduction;
|
||||||
if (gPlayerCurrentSpeed[playerIndex] <= 0.0f) {
|
if (gPlayerCurrentSpeed[playerIndex] <= 0.0f) {
|
||||||
gPlayerCurrentSpeed[playerIndex] = 0.0f;
|
gPlayerCurrentSpeed[playerIndex] = 0.0f;
|
||||||
|
|
@ -3621,31 +3621,31 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
|
||||||
((player->effects & 0x8000) == 0x8000)) {
|
((player->effects & 0x8000) == 0x8000)) {
|
||||||
func_80036CB4(player);
|
func_80036CB4(player);
|
||||||
}
|
}
|
||||||
if ((player->unk_0C0 / 182) < (-5)) {
|
if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) < (-5)) {
|
||||||
player->unk_044 |= 4;
|
player->kartProps |= LEFT_TURN;
|
||||||
player->unk_044 &= 0xFFFD;
|
player->kartProps &= ~RIGHT_TURN;
|
||||||
D_801652C0[arg2]++;
|
D_801652C0[arg2]++;
|
||||||
} else if ((player->unk_0C0 / 182) >= 6) {
|
} else if ((player->unk_0C0 / DEGREES_CONVERSION_FACTOR) >= 6) {
|
||||||
player->unk_044 |= 2;
|
player->kartProps |= RIGHT_TURN;
|
||||||
player->unk_044 &= 0xFFFB;
|
player->kartProps &= ~LEFT_TURN;
|
||||||
D_801652C0[arg2]++;
|
D_801652C0[arg2]++;
|
||||||
} else {
|
} else {
|
||||||
player->unk_044 &= 0xFFF9;
|
player->kartProps &= ~(LEFT_TURN | RIGHT_TURN);
|
||||||
D_801652C0[arg2] = 0;
|
D_801652C0[arg2] = 0;
|
||||||
}
|
}
|
||||||
if (((player->effects & 2) == 2) || ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT)) {
|
if (((player->effects & 2) == 2) || ((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT)) {
|
||||||
player->unk_044 &= 0xFFF9;
|
player->kartProps &= ~(LEFT_TURN | RIGHT_TURN);
|
||||||
}
|
}
|
||||||
sp2E4 = player->unk_07C;
|
sp2E4 = player->unk_07C;
|
||||||
temp_v0_3 = func_80038534(controller);
|
temp_v0_3 = func_80038534(controller);
|
||||||
if (((player->unk_044 & 1) == 1) || ((player->unk_044 & 8) == 8)) {
|
if (((player->kartProps & BACK_UP) == BACK_UP) || ((player->kartProps & MOVE_BACKWARDS) == MOVE_BACKWARDS)) {
|
||||||
temp_v0_3 = -temp_v0_3;
|
temp_v0_3 = -temp_v0_3;
|
||||||
}
|
}
|
||||||
player->unk_07C = (temp_v0_3 << 16) & 0xFFFF0000;
|
player->unk_07C = (temp_v0_3 << 16) & 0xFFFF0000;
|
||||||
sp2D0 = sp2E4 - player->unk_07C;
|
sp2D0 = sp2E4 - player->unk_07C;
|
||||||
sp2D0 = sp2D0 >> 16;
|
sp2D0 = sp2D0 >> 16;
|
||||||
player->unk_0FA = (s16) sp2D0;
|
player->unk_0FA = (s16) sp2D0;
|
||||||
if (((sp2D0 >= 0x5A) || (sp2D0 < (-0x59))) && (!(player->unk_044 & 0x4000))) {
|
if (((sp2D0 >= 0x5A) || (sp2D0 < (-0x59))) && (!(player->kartProps & DRIVING_SPINOUT))) {
|
||||||
if ((((((!(player->effects & DRIFTING_EFFECT)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) &&
|
if ((((((!(player->effects & DRIFTING_EFFECT)) && (gCCSelection == CC_150)) && (gModeSelection != BATTLE)) &&
|
||||||
(!(player->effects & 8))) &&
|
(!(player->effects & 8))) &&
|
||||||
(((player->speed / 18.0f) * 216.0f) >= 40.0f)) &&
|
(((player->speed / 18.0f) * 216.0f) >= 40.0f)) &&
|
||||||
|
|
@ -3669,7 +3669,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
|
||||||
var_a0 = 0;
|
var_a0 = 0;
|
||||||
}
|
}
|
||||||
if (((player->speed / 18.0f) * 216.0f) >= 15.0f) {
|
if (((player->speed / 18.0f) * 216.0f) >= 15.0f) {
|
||||||
if ((player->unk_044 & 2) == 2) {
|
if ((player->kartProps & RIGHT_TURN) == RIGHT_TURN) {
|
||||||
if ((sp2D0 < 36) && (sp2D0 >= 0)) {
|
if ((sp2D0 < 36) && (sp2D0 >= 0)) {
|
||||||
sp2C8 =
|
sp2C8 =
|
||||||
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2));
|
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2));
|
||||||
|
|
@ -3679,7 +3679,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
|
||||||
sp2C8 = (s32) (((f32) (var_a0 + 5)) * (1.0f + var_f2));
|
sp2C8 = (s32) (((f32) (var_a0 + 5)) * (1.0f + var_f2));
|
||||||
sp2CC = (s32) (((f32) (var_a0 + 9)) * (1.0f + var_f2));
|
sp2CC = (s32) (((f32) (var_a0 + 9)) * (1.0f + var_f2));
|
||||||
}
|
}
|
||||||
} else if ((player->unk_044 & 4) == 4) {
|
} else if ((player->kartProps & LEFT_TURN) == LEFT_TURN) {
|
||||||
if ((sp2D0 >= (-0x23)) && (sp2D0 <= 0)) {
|
if ((sp2D0 >= (-0x23)) && (sp2D0 <= 0)) {
|
||||||
sp2C8 =
|
sp2C8 =
|
||||||
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2));
|
(gKartTable800E3650[player->characterId] + 1.0f) * (((f32) (var_a0 + 0xF)) * (1.0f + var_f2));
|
||||||
|
|
@ -3698,11 +3698,11 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
|
||||||
sp2CC = 8;
|
sp2CC = 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->waterInteractionFlags & WATER_IS_FULLY_SUBMERGED) == WATER_IS_FULLY_SUBMERGED) {
|
if ((player->oobProps & UNDER_OOB_OR_FLUID_LEVEL) == UNDER_OOB_OR_FLUID_LEVEL) {
|
||||||
sp2C8 *= 1.5;
|
sp2C8 *= 1.5;
|
||||||
sp2CC *= 1.5;
|
sp2CC *= 1.5;
|
||||||
} else {
|
} else {
|
||||||
if ((player->waterInteractionFlags & WATER_IS_PARTIALLY_SUBMERGED) == WATER_IS_PARTIALLY_SUBMERGED) {
|
if ((player->oobProps & PASS_OOB_OR_FLUID_LEVEL) == PASS_OOB_OR_FLUID_LEVEL) {
|
||||||
sp2C8 *= 1.2;
|
sp2C8 *= 1.2;
|
||||||
sp2CC *= 1.2;
|
sp2CC *= 1.2;
|
||||||
}
|
}
|
||||||
|
|
@ -3989,7 +3989,7 @@ void func_80036C5C(Player* player) {
|
||||||
if (((player->speed / 18.0f) * 216.0f) > 20.0f) {
|
if (((player->speed / 18.0f) * 216.0f) > 20.0f) {
|
||||||
player->driftDuration = 0;
|
player->driftDuration = 0;
|
||||||
player->effects |= DRIFTING_EFFECT;
|
player->effects |= DRIFTING_EFFECT;
|
||||||
player->unk_0B6 |= 0x800;
|
player->kartGraphics |= BOING;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4028,7 +4028,7 @@ void func_80036DB4(Player* player, Vec3f arg1, Vec3f arg2) {
|
||||||
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) {
|
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) {
|
||||||
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f);
|
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 10.0f);
|
||||||
sp20 = player->unk_084 * 3.0f;
|
sp20 = player->unk_084 * 3.0f;
|
||||||
} else if (!(player->effects & 0x800) && !(player->unk_044 & 0x4000)) {
|
} else if (!(player->effects & 0x800) && !(player->kartProps & DRIVING_SPINOUT)) {
|
||||||
thing = player->unk_0FA;
|
thing = player->unk_0FA;
|
||||||
if (thing > 0) {
|
if (thing > 0) {
|
||||||
thing *= -1;
|
thing *= -1;
|
||||||
|
|
@ -4086,7 +4086,7 @@ void func_800371F4(Player* player, Vec3f arg1, Vec3f arg2) {
|
||||||
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) {
|
if (((player->effects & DRIFTING_EFFECT) == DRIFTING_EFFECT) && ((player->effects & 2) != 2)) {
|
||||||
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f);
|
var_f18 = player->unk_208 + ((-(player->speed / 18.0f) * 216.0f) * 3.0f) + (-player->unk_20C * 50.0f);
|
||||||
sp20 = player->unk_084 * 3.0f;
|
sp20 = player->unk_084 * 3.0f;
|
||||||
} else if (!(player->effects & 0x800) && !(player->unk_044 & 0x4000)) {
|
} else if (!(player->effects & 0x800) && !(player->kartProps & DRIVING_SPINOUT)) {
|
||||||
var_v0 = player->unk_0FA;
|
var_v0 = player->unk_0FA;
|
||||||
if (var_v0 > 0) {
|
if (var_v0 > 0) {
|
||||||
var_v0 *= -1;
|
var_v0 *= -1;
|
||||||
|
|
@ -4321,7 +4321,7 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 arg2) {
|
||||||
player->effects &= ~0x20;
|
player->effects &= ~0x20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 1) != 1) {
|
if ((player->kartProps & BACK_UP) != BACK_UP) {
|
||||||
if (controller->button & A_BUTTON) {
|
if (controller->button & A_BUTTON) {
|
||||||
player_accelerate_alternative(player);
|
player_accelerate_alternative(player);
|
||||||
detect_triple_a_combo_a_pressed(player);
|
detect_triple_a_combo_a_pressed(player);
|
||||||
|
|
@ -4345,13 +4345,13 @@ void func_80037CFC(Player* player, struct Controller* controller, s8 arg2) {
|
||||||
if (((func_800388B0(controller) < (-0x31)) && (((player->speed / 18.0f) * 216.0f) <= 5.0f)) &&
|
if (((func_800388B0(controller) < (-0x31)) && (((player->speed / 18.0f) * 216.0f) <= 5.0f)) &&
|
||||||
(controller->button & B_BUTTON)) {
|
(controller->button & B_BUTTON)) {
|
||||||
player->currentSpeed = 140.0f;
|
player->currentSpeed = 140.0f;
|
||||||
player->unk_044 |= 1;
|
player->kartProps |= BACK_UP;
|
||||||
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||||
player->unk_20C = 0.0f;
|
player->unk_20C = 0.0f;
|
||||||
}
|
}
|
||||||
if ((func_800388B0(controller) >= -0x1D) || (!(controller->button & B_BUTTON))) {
|
if ((func_800388B0(controller) >= -0x1D) || (!(controller->button & B_BUTTON))) {
|
||||||
if ((player->unk_044 & 1) == 1) {
|
if ((player->kartProps & BACK_UP) == BACK_UP) {
|
||||||
player->unk_044 &= 0xFFFE;
|
player->kartProps &= ~BACK_UP;
|
||||||
player->currentSpeed = 0.0f;
|
player->currentSpeed = 0.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -4382,7 +4382,7 @@ void handle_a_press_for_player_during_race(Player* player, struct Controller* co
|
||||||
if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
if (((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) && ((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
||||||
((player->type & PLAYER_CPU) != PLAYER_CPU)) {
|
((player->type & PLAYER_CPU) != PLAYER_CPU)) {
|
||||||
if ((player->type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE) {
|
if ((player->type & PLAYER_START_SEQUENCE) != PLAYER_START_SEQUENCE) {
|
||||||
if (((player->unk_0CA & 2) == 2) || ((player->unk_0CA & 8) == 8)) {
|
if (((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) || ((player->lakituProps & LAKITU_SCENE) == LAKITU_SCENE)) {
|
||||||
if (controller->button & A_BUTTON) {
|
if (controller->button & A_BUTTON) {
|
||||||
player_accelerate(player);
|
player_accelerate(player);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -4423,24 +4423,24 @@ void handle_a_press_for_all_players_during_race(void) {
|
||||||
if (D_8015F890 != 1) {
|
if (D_8015F890 != 1) {
|
||||||
handle_a_press_for_player_during_race(gPlayerOne, gControllerOne, 0);
|
handle_a_press_for_player_during_race(gPlayerOne, gControllerOne, 0);
|
||||||
temp_v0_3 = gPlayerTwo->type;
|
temp_v0_3 = gPlayerTwo->type;
|
||||||
if (((temp_v0_3 & 0x100) == 0x100) && ((temp_v0_3 & 0x800) != 0x800)) {
|
if (((temp_v0_3 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_3 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
|
||||||
handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1);
|
handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1);
|
||||||
}
|
}
|
||||||
temp_v0_4 = gPlayerThree->type;
|
temp_v0_4 = gPlayerThree->type;
|
||||||
if (((temp_v0_4 & 0x100) == 0x100) && ((temp_v0_4 & 0x800) != 0x800)) {
|
if (((temp_v0_4 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_4 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
|
||||||
handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2);
|
handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((gPlayerOne->type & 0x800) != 0x800) {
|
if ((gPlayerOne->type & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE) {
|
||||||
handle_a_press_for_player_during_race(gPlayerOne, gControllerEight, 0);
|
handle_a_press_for_player_during_race(gPlayerOne, gControllerEight, 0);
|
||||||
}
|
}
|
||||||
temp_v0_5 = gPlayerTwo->type;
|
temp_v0_5 = gPlayerTwo->type;
|
||||||
if (((temp_v0_5 & 0x100) == 0x100) && ((temp_v0_5 & 0x800) != 0x800)) {
|
if (((temp_v0_5 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_5 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
|
||||||
handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1);
|
handle_a_press_for_player_during_race(gPlayerTwo, gControllerSix, 1);
|
||||||
}
|
}
|
||||||
temp_v0_6 = gPlayerThree->type;
|
temp_v0_6 = gPlayerThree->type;
|
||||||
if (((temp_v0_6 & 0x100) == 0x100) && ((temp_v0_6 & 0x800) != 0x800)) {
|
if (((temp_v0_6 & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) && ((temp_v0_6 & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE)) {
|
||||||
handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2);
|
handle_a_press_for_player_during_race(gPlayerThree, gControllerSeven, 2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -4581,7 +4581,7 @@ void func_80038BE4(Player* player, s16 arg1) {
|
||||||
if (player->currentSpeed >= 250.0f) {
|
if (player->currentSpeed >= 250.0f) {
|
||||||
player->currentSpeed = 250.0f;
|
player->currentSpeed = 250.0f;
|
||||||
}
|
}
|
||||||
player->unk_044 |= 0x20;
|
player->kartProps |= THROTTLE;
|
||||||
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
player->kartPropulsionStrength = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -4638,8 +4638,8 @@ void func_80038C6C(Player* player, UNUSED Camera* camera, s8 arg2, s8 playerId)
|
||||||
sp88[0] += ((((((sp114[0] + spA4) + spF0[0])) - (sp88[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
sp88[0] += ((((((sp114[0] + spA4) + spF0[0])) - (sp88[0] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||||
sp88[2] += ((((((sp114[2] + sp9C) + spF0[2])) - (sp88[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
sp88[2] += ((((((sp114[2] + sp9C) + spF0[2])) - (sp88[2] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||||
sp88[1] += ((((((sp114[1] + spA0) + spF0[1])) - (sp88[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
sp88[1] += ((((((sp114[1] + spA0) + spF0[1])) - (sp88[1] * (0.12 * (player->kartFriction)))) / 6000.0) / 1);
|
||||||
if ((player->unk_044 & 0x10) == 0x10) {
|
if ((player->kartProps & LOSE_GP_RACE) == LOSE_GP_RACE) {
|
||||||
player->unk_044 &= 0xFFEF;
|
player->kartProps &= ~LOSE_GP_RACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
posX = player->pos[0];
|
posX = player->pos[0];
|
||||||
|
|
@ -4723,7 +4723,7 @@ void func_80038C6C(Player* player, UNUSED Camera* camera, s8 arg2, s8 playerId)
|
||||||
player->speed = gKartTopSpeedTable[player->characterId];
|
player->speed = gKartTopSpeedTable[player->characterId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((player->unk_044 & 1) == 1) {
|
if ((player->kartProps & BACK_UP) == BACK_UP) {
|
||||||
if (player->speed > 1.0f) {
|
if (player->speed > 1.0f) {
|
||||||
player->velocity[0] *= 1.0f / player->speed;
|
player->velocity[0] *= 1.0f / player->speed;
|
||||||
player->velocity[1] *= 1.0f / player->speed;
|
player->velocity[1] *= 1.0f / player->speed;
|
||||||
|
|
|
||||||
|
|
@ -1133,10 +1133,10 @@ void init_kiwano_fruit(void) {
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
phi_s1 = &gPlayers[i];
|
phi_s1 = &gPlayers[i];
|
||||||
// temp_v0 = *phi_s1;
|
// temp_v0 = *phi_s1;
|
||||||
if ((phi_s1->type & 0x4000) == 0) {
|
if ((phi_s1->type & PLAYER_HUMAN) == 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((phi_s1->type & 0x100) != 0) {
|
if ((phi_s1->type & PLAYER_INVISIBLE_OR_BOMB) != 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1987,7 +1987,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
||||||
}
|
}
|
||||||
player->triggers |= HIT_BANANA_TRIGGER;
|
player->triggers |= HIT_BANANA_TRIGGER;
|
||||||
owner = &gPlayers[temp_v1];
|
owner = &gPlayers[temp_v1];
|
||||||
if (owner->type & 0x4000) {
|
if (owner->type & PLAYER_HUMAN) {
|
||||||
if (actor->flags & 0xF) {
|
if (actor->flags & 0xF) {
|
||||||
if (temp_lo != temp_v1) {
|
if (temp_lo != temp_v1) {
|
||||||
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
||||||
|
|
@ -2017,7 +2017,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
||||||
player->triggers |= LOW_TUMBLE_TRIGGER;
|
player->triggers |= LOW_TUMBLE_TRIGGER;
|
||||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||||
owner = &gPlayers[temp_v1];
|
owner = &gPlayers[temp_v1];
|
||||||
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) {
|
if ((owner->type & PLAYER_HUMAN) && (temp_lo != temp_v1)) {
|
||||||
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
||||||
}
|
}
|
||||||
destroy_destructable_actor(actor);
|
destroy_destructable_actor(actor);
|
||||||
|
|
@ -2036,7 +2036,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
||||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||||
}
|
}
|
||||||
owner = &gPlayers[temp_v1];
|
owner = &gPlayers[temp_v1];
|
||||||
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) {
|
if ((owner->type & PLAYER_HUMAN) && (temp_lo != temp_v1)) {
|
||||||
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
||||||
}
|
}
|
||||||
if (temp_lo == actor->unk_04) {
|
if (temp_lo == actor->unk_04) {
|
||||||
|
|
@ -2061,7 +2061,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
||||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||||
}
|
}
|
||||||
owner = &gPlayers[temp_v1];
|
owner = &gPlayers[temp_v1];
|
||||||
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) {
|
if ((owner->type & PLAYER_HUMAN) && (temp_lo != temp_v1)) {
|
||||||
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
||||||
}
|
}
|
||||||
destroy_destructable_actor(actor);
|
destroy_destructable_actor(actor);
|
||||||
|
|
@ -2119,7 +2119,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
||||||
}
|
}
|
||||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||||
owner = &gPlayers[temp_v1];
|
owner = &gPlayers[temp_v1];
|
||||||
if (owner->type & 0x4000) {
|
if (owner->type & PLAYER_HUMAN) {
|
||||||
if (actor->flags & 0xF) {
|
if (actor->flags & 0xF) {
|
||||||
if (temp_lo != temp_v1) {
|
if (temp_lo != temp_v1) {
|
||||||
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
func_800C90F4(temp_v1, (owner->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x06));
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ void destroy_banana_in_banana_bunch(struct BananaActor* banana) {
|
||||||
|
|
||||||
func_802B0464(banana->youngerIndex);
|
func_802B0464(banana->youngerIndex);
|
||||||
func_802B04E8(banana, banana->elderIndex);
|
func_802B04E8(banana, banana->elderIndex);
|
||||||
if ((gPlayers[banana->playerId].type & 0x4000) != 0) {
|
if ((gPlayers[banana->playerId].type & PLAYER_HUMAN) != 0) {
|
||||||
func_800C9060(banana->playerId, SOUND_ARG_LOAD(0x19, 0x01, 0x90, 0x53));
|
func_800C9060(banana->playerId, SOUND_ARG_LOAD(0x19, 0x01, 0x90, 0x53));
|
||||||
}
|
}
|
||||||
banana->flags = -0x8000;
|
banana->flags = -0x8000;
|
||||||
|
|
@ -295,7 +295,7 @@ void update_actor_banana_bunch(struct BananaBunchParent* banana_bunch) {
|
||||||
if (someCount == 0) {
|
if (someCount == 0) {
|
||||||
destroy_actor((struct Actor*) banana_bunch);
|
destroy_actor((struct Actor*) banana_bunch);
|
||||||
owner->triggers &= ~DRAG_ITEM_EFFECT;
|
owner->triggers &= ~DRAG_ITEM_EFFECT;
|
||||||
} else if ((owner->type & 0x4000) != 0) {
|
} else if ((owner->type & PLAYER_HUMAN) != 0) {
|
||||||
controller = &gControllers[banana_bunch->playerId];
|
controller = &gControllers[banana_bunch->playerId];
|
||||||
if ((controller->buttonPressed & Z_TRIG) != 0) {
|
if ((controller->buttonPressed & Z_TRIG) != 0) {
|
||||||
controller->buttonPressed &= ~Z_TRIG;
|
controller->buttonPressed &= ~Z_TRIG;
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,4 @@ extern Vec3f D_802B91C8;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DEGREES_CONVERSION_FACTOR 182
|
|
||||||
|
|
||||||
#endif // MATH_UTIL_H
|
#endif // MATH_UTIL_H
|
||||||
|
|
|
||||||
|
|
@ -575,7 +575,7 @@ void func_8028EF28(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (gPlayers[i].lapCount == 2) {
|
} else if (gPlayers[i].lapCount == 2) {
|
||||||
if ((gPlayers[i].type & 0x100) != 0) {
|
if ((gPlayers[i].type & PLAYER_INVISIBLE_OR_BOMB) != 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((D_802BA032 & 0x4000) == 0) {
|
if ((D_802BA032 & 0x4000) == 0) {
|
||||||
|
|
|
||||||
|
|
@ -88,14 +88,14 @@ void func_8001F9E4(Player* player, Camera* camera, s8 screenId) {
|
||||||
get_player_index_for_player(player);
|
get_player_index_for_player(player);
|
||||||
func_8001F980(&sp30, &sp2C);
|
func_8001F980(&sp30, &sp2C);
|
||||||
|
|
||||||
player->unk_002 &= ~(2 << (screenId * 4));
|
player->unk_002 &= ~(UNK_002_UNKNOWN_0x2 << (screenId * 4));
|
||||||
player->unk_002 &= ~(8 << (screenId * 4));
|
player->unk_002 &= ~(SIDE_OF_KART << (screenId * 4));
|
||||||
|
|
||||||
if (check_player_camera_collision(player, camera, (f32) (D_80165578 + sp30), (f32) (D_8016557A + sp2C)) == 1) {
|
if (check_player_camera_collision(player, camera, (f32) (D_80165578 + sp30), (f32) (D_8016557A + sp2C)) == 1) {
|
||||||
player->unk_002 |= 2 << (screenId * 4);
|
player->unk_002 |= UNK_002_UNKNOWN_0x2 << (screenId * 4);
|
||||||
}
|
}
|
||||||
if (check_player_camera_collision(player, camera, (f32) D_80165580, (f32) D_80165582) == 1) {
|
if (check_player_camera_collision(player, camera, (f32) D_80165580, (f32) D_80165582) == 1) {
|
||||||
player->unk_002 |= 8 << (screenId * 4);
|
player->unk_002 |= SIDE_OF_KART << (screenId * 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,7 +194,7 @@ void init_render_player(Player* player, Camera* camera, s8 playerId, s8 screenId
|
||||||
|
|
||||||
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
|
if ((player->type & PLAYER_EXISTS) == PLAYER_EXISTS) {
|
||||||
func_8001F9E4(player, camera, screenId);
|
func_8001F9E4(player, camera, screenId);
|
||||||
temp_v0 = 2 << (screenId << 2);
|
temp_v0 = UNK_002_UNKNOWN_0x2 << (screenId << 2);
|
||||||
if (temp_v0 == (player->unk_002 & temp_v0)) {
|
if (temp_v0 == (player->unk_002 & temp_v0)) {
|
||||||
if (!(player->type & PLAYER_START_SEQUENCE)) {
|
if (!(player->type & PLAYER_START_SEQUENCE)) {
|
||||||
func_8002934C(player, camera, screenId, playerId);
|
func_8002934C(player, camera, screenId, playerId);
|
||||||
|
|
@ -206,7 +206,7 @@ void init_render_player(Player* player, Camera* camera, s8 playerId, s8 screenId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func_8001F980(&sp4C, &sp48);
|
func_8001F980(&sp4C, &sp48);
|
||||||
temp_v0_2 = 1 << (screenId << 2);
|
temp_v0_2 = CHANGING_ANIMATION << (screenId << 2);
|
||||||
if ((temp_v0 == (player->unk_002 & temp_v0)) && (temp_v0_2 == (player->unk_002 & temp_v0_2))) {
|
if ((temp_v0 == (player->unk_002 & temp_v0)) && (temp_v0_2 == (player->unk_002 & temp_v0_2))) {
|
||||||
if ((check_player_camera_collision(player, camera, D_80165570 + sp4C, D_80165572 + sp48) == 1) & 0xFFFF) {
|
if ((check_player_camera_collision(player, camera, D_80165570 + sp4C, D_80165572 + sp48) == 1) & 0xFFFF) {
|
||||||
gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId;
|
gPlayersToRenderPlayerId[gPlayersToRenderCount] = (s16) playerId;
|
||||||
|
|
@ -552,16 +552,16 @@ void func_80021B0C(void) {
|
||||||
func_8006E7CC(gPlayerEight, 7, 0);
|
func_8006E7CC(gPlayerEight, 7, 0);
|
||||||
}
|
}
|
||||||
if (gGamestate == ENDING) {
|
if (gGamestate == ENDING) {
|
||||||
if (gPlayerOne->unk_044 & 0x2000) {
|
if (gPlayerOne->kartProps & UNUSED_0x2000) {
|
||||||
render_player_shadow_credits(gPlayerOne, 0, 0);
|
render_player_shadow_credits(gPlayerOne, 0, 0);
|
||||||
}
|
}
|
||||||
if (gPlayerTwo->unk_044 & 0x2000) {
|
if (gPlayerTwo->kartProps & UNUSED_0x2000) {
|
||||||
render_player_shadow_credits(gPlayerTwo, 1, 0);
|
render_player_shadow_credits(gPlayerTwo, 1, 0);
|
||||||
}
|
}
|
||||||
if (gPlayerThree->unk_044 & 0x2000) {
|
if (gPlayerThree->kartProps & UNUSED_0x2000) {
|
||||||
render_player_shadow_credits(gPlayerThree, 2, 0);
|
render_player_shadow_credits(gPlayerThree, 2, 0);
|
||||||
}
|
}
|
||||||
if (gPlayerFour->unk_044 & 0x2000) {
|
if (gPlayerFour->kartProps & UNUSED_0x2000) {
|
||||||
render_player_shadow_credits(gPlayerFour, 3, 0);
|
render_player_shadow_credits(gPlayerFour, 3, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -785,10 +785,10 @@ void func_8002276C(void) {
|
||||||
break;
|
break;
|
||||||
case TIME_TRIALS: /* switch 1 */
|
case TIME_TRIALS: /* switch 1 */
|
||||||
func_80022A98(gPlayerOne, 0);
|
func_80022A98(gPlayerOne, 0);
|
||||||
if ((gPlayerTwo->type & 0x100) == 0x100) {
|
if ((gPlayerTwo->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
|
||||||
func_80022A98(gPlayerTwo, 1);
|
func_80022A98(gPlayerTwo, 1);
|
||||||
}
|
}
|
||||||
if ((gPlayerThree->type & 0x100) == 0x100) {
|
if ((gPlayerThree->type & PLAYER_INVISIBLE_OR_BOMB) == PLAYER_INVISIBLE_OR_BOMB) {
|
||||||
func_80022A98(gPlayerThree, 2);
|
func_80022A98(gPlayerThree, 2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1065,22 +1065,22 @@ void func_800235AC(Player* player, s8 arg1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((player->unk_0CA & 0x10) == 0x10) && ((player->unk_0CA & 4) == 4)) {
|
if (((player->lakituProps & FRIGID_EFFECT) == FRIGID_EFFECT) && ((player->lakituProps & LAKITU_FIZZLE) == LAKITU_FIZZLE)) {
|
||||||
change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f);
|
change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f);
|
||||||
change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f);
|
change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 4) == 4) {
|
if ((player->lakituProps & LAKITU_FIZZLE) == LAKITU_FIZZLE) {
|
||||||
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 1.0f);
|
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 1.0f);
|
||||||
change_player_color_effect_cmy(player, arg1, 0, 1.0f);
|
change_player_color_effect_cmy(player, arg1, 0, 1.0f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 0x10) == 0x10) {
|
if ((player->lakituProps & FRIGID_EFFECT) == FRIGID_EFFECT) {
|
||||||
change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f);
|
change_player_color_effect_rgb(player, arg1, 0x646464, 0.5f);
|
||||||
change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f);
|
change_player_color_effect_cmy(player, arg1, 0xFF0000, 0.1f);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 0x20) == 0x20) {
|
if ((player->lakituProps & THAWING_EFFECT) == THAWING_EFFECT) {
|
||||||
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.1f);
|
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.1f);
|
||||||
change_player_color_effect_cmy(player, arg1, 0, 0.1f);
|
change_player_color_effect_cmy(player, arg1, 0, 0.1f);
|
||||||
return;
|
return;
|
||||||
|
|
@ -1144,7 +1144,7 @@ void func_800235AC(Player* player, s8 arg1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
render_light_environment_on_player(player, arg1);
|
render_light_environment_on_player(player, arg1);
|
||||||
if ((player->unk_0CA & 0x1000) == 0x1000) {
|
if ((player->lakituProps & LAKITU_LAVA) == LAKITU_LAVA) {
|
||||||
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.3f);
|
change_player_color_effect_rgb(player, arg1, COLOR_BLACK, 0.3f);
|
||||||
change_player_color_effect_cmy(player, arg1, 0xF0F0F0, 0.3f);
|
change_player_color_effect_cmy(player, arg1, 0xF0F0F0, 0.3f);
|
||||||
}
|
}
|
||||||
|
|
@ -1157,7 +1157,7 @@ void func_80023BF0(Player* player, s8 playerId, s8 screenId, s8 arg3) {
|
||||||
} else {
|
} else {
|
||||||
func_80022E84(player, playerId, screenId, arg3);
|
func_80022E84(player, playerId, screenId, arg3);
|
||||||
}
|
}
|
||||||
if ((player->unk_0CA & 2) == 2) {
|
if ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) {
|
||||||
func_80022D60(player, playerId, screenId, arg3);
|
func_80022D60(player, playerId, screenId, arg3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1192,7 +1192,7 @@ void render_player_shadow(Player* player, s8 playerId, s8 screenId) {
|
||||||
|
|
||||||
if (((player->effects & 0x01000000) == 0x01000000) || ((player->effects & 0x400) == 0x400) ||
|
if (((player->effects & 0x01000000) == 0x01000000) || ((player->effects & 0x400) == 0x400) ||
|
||||||
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
((player->effects & 0x80000) == 0x80000) || ((player->effects & 0x800000) == 0x800000) ||
|
||||||
((player->effects & 0x400) == 0x400) || ((player->unk_0CA & 2) == 2) ||
|
((player->effects & 0x400) == 0x400) || ((player->lakituProps & HELD_BY_LAKITU) == HELD_BY_LAKITU) ||
|
||||||
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & 0x10000) == 0x10000) ||
|
((player->effects & HIT_BY_ITEM_EFFECT) == HIT_BY_ITEM_EFFECT) || ((player->effects & 0x10000) == 0x10000) ||
|
||||||
((player->effects & 8) == 8)) {
|
((player->effects & 8) == 8)) {
|
||||||
|
|
||||||
|
|
@ -1310,7 +1310,7 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 flipOffset) {
|
||||||
s16 thing;
|
s16 thing;
|
||||||
|
|
||||||
FrameInterpolation_RecordOpenChild("player_kart", playerId | screenId << 8);
|
FrameInterpolation_RecordOpenChild("player_kart", playerId | screenId << 8);
|
||||||
if (player->unk_044 & 0x2000) {
|
if (player->kartProps & UNUSED_0x2000) {
|
||||||
sp14C[0] = 0;
|
sp14C[0] = 0;
|
||||||
sp14C[1] = player->unk_048[screenId];
|
sp14C[1] = player->unk_048[screenId];
|
||||||
sp14C[2] = 0;
|
sp14C[2] = 0;
|
||||||
|
|
@ -1392,7 +1392,7 @@ void render_kart(Player* player, s8 playerId, s8 screenId, s8 flipOffset) {
|
||||||
AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL |
|
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));
|
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->lakituProps & LAKITU_FIZZLE) == LAKITU_FIZZLE) || (player->triggers & BECOME_BOMB_EFFECT) ||
|
||||||
(player->triggers & LOSE_BATTLE_EFFECT)) {
|
(player->triggers & LOSE_BATTLE_EFFECT)) {
|
||||||
gSPMatrix(gDisplayListHead++, GetKartMatrix(playerId + (screenId * 8)),
|
gSPMatrix(gDisplayListHead++, GetKartMatrix(playerId + (screenId * 8)),
|
||||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||||
|
|
@ -1550,7 +1550,7 @@ void render_player_ice_reflection(Player* player, s8 playerId, s8 screenId, s8 f
|
||||||
sp9C[0] = player->pos[0];
|
sp9C[0] = player->pos[0];
|
||||||
sp9C[1] = player->unk_074 + (4.0f * player->size);
|
sp9C[1] = player->unk_074 + (4.0f * player->size);
|
||||||
sp9C[2] = player->pos[2];
|
sp9C[2] = player->pos[2];
|
||||||
if (!(player->unk_002 & (4 << (screenId * 4)))) {
|
if (!(player->unk_002 & (UNK_002_UNKNOWN_0x4 << (screenId * 4)))) {
|
||||||
flipOffset = 8;
|
flipOffset = 8;
|
||||||
} else {
|
} else {
|
||||||
flipOffset = 0;
|
flipOffset = 0;
|
||||||
|
|
@ -1592,13 +1592,13 @@ void render_player(Player* player, s8 playerId, s8 screenId) {
|
||||||
OSMesg* sp34;
|
OSMesg* sp34;
|
||||||
|
|
||||||
update_wheel_palette(player, playerId, screenId, D_801651D0[screenId][playerId]);
|
update_wheel_palette(player, playerId, screenId, D_801651D0[screenId][playerId]);
|
||||||
if (!(player->unk_002 & (4 << (screenId * 4)))) {
|
if (!(player->unk_002 & (UNK_002_UNKNOWN_0x4 << (screenId * 4)))) {
|
||||||
var_v1 = 0;
|
var_v1 = 0;
|
||||||
} else {
|
} else {
|
||||||
var_v1 = 8;
|
var_v1 = 8;
|
||||||
}
|
}
|
||||||
func_80023BF0(player, playerId, screenId, var_v1);
|
func_80023BF0(player, playerId, screenId, var_v1);
|
||||||
temp_t1 = 8 << (screenId * 4);
|
temp_t1 = SIDE_OF_KART << (screenId * 4);
|
||||||
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->collision.surfaceDistance[2] <= 50.0f) &&
|
if ((temp_t1 == (player->unk_002 & temp_t1)) && (player->collision.surfaceDistance[2] <= 50.0f) &&
|
||||||
(player->surfaceType != ICE)) {
|
(player->surfaceType != ICE)) {
|
||||||
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
|
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
|
||||||
|
|
@ -1615,7 +1615,7 @@ void render_player(Player* player, s8 playerId, s8 screenId) {
|
||||||
render_ghost(player, playerId, screenId, var_v1);
|
render_ghost(player, playerId, screenId, var_v1);
|
||||||
}
|
}
|
||||||
osRecvMesg(&gDmaMesgQueue, (OSMesg*) &sp34, OS_MESG_BLOCK);
|
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->kartProps & LAKITU_RETRIEVAL) != LAKITU_RETRIEVAL) &&
|
||||||
(player->collision.surfaceDistance[2] <= 30.0f)) {
|
(player->collision.surfaceDistance[2] <= 30.0f)) {
|
||||||
render_player_ice_reflection(player, playerId, screenId, var_v1);
|
render_player_ice_reflection(player, playerId, screenId, var_v1);
|
||||||
}
|
}
|
||||||
|
|
@ -1680,7 +1680,7 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) {
|
||||||
if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) {
|
if (((player->effects & 0x4000) == 0x4000) && ((player->type & PLAYER_START_SEQUENCE) == 0)) {
|
||||||
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
|
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
|
||||||
((player->effects & 0x20000) != 0x20000) && ((player->effects & 0x80000) != 0x80000) &&
|
((player->effects & 0x20000) != 0x20000) && ((player->effects & 0x80000) != 0x80000) &&
|
||||||
((player->effects & 0x800000) != 0x800000) && ((player->unk_044 & 0x800) == 0)) {
|
((player->effects & 0x800000) != 0x800000) && ((player->kartProps & UNUSED_0x800) == 0)) {
|
||||||
|
|
||||||
if (frameId <= 20) {
|
if (frameId <= 20) {
|
||||||
int32_t offset = (frameId << 2) + (tyreSpeed >> 8);
|
int32_t offset = (frameId << 2) + (tyreSpeed >> 8);
|
||||||
|
|
@ -1705,7 +1705,7 @@ void update_wheel_palette(Player* player, s8 playerId, s8 screenId, s8 arg3) {
|
||||||
} else {
|
} else {
|
||||||
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
|
if (((player->effects & 0x80) != 0x80) && ((player->effects & 0x40) != 0x40) &&
|
||||||
((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) &&
|
((player->effects & 0x80000) != 0x80000) && ((player->effects & 0x800000) != 0x800000) &&
|
||||||
((player->effects & 0x20000) != 0x20000) && ((player->unk_044 & 0x800) == 0)) {
|
((player->effects & 0x20000) != 0x20000) && ((player->kartProps & UNUSED_0x800) == 0)) {
|
||||||
|
|
||||||
if (frameId <= 20) {
|
if (frameId <= 20) {
|
||||||
int32_t offset = (frameId << 2) + (tyreSpeed >> 8);
|
int32_t offset = (frameId << 2) + (tyreSpeed >> 8);
|
||||||
|
|
|
||||||
|
|
@ -417,7 +417,7 @@ void save_player_replay(void) {
|
||||||
/* Input file is too long or picked up by lakitu or Out of bounds
|
/* 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 */
|
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->lakituProps & HELD_BY_LAKITU) != 0)) || ((gPlayerOne->lakituProps & LAKITU_SCENE) != 0)) {
|
||||||
gPostTimeTrialReplayCannotSave = 1;
|
gPostTimeTrialReplayCannotSave = 1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -519,7 +519,7 @@ void func_80005B18(void) {
|
||||||
sReplayGhostBufferSize = D_80162D86;
|
sReplayGhostBufferSize = D_80162D86;
|
||||||
D_80162DDC = 1;
|
D_80162DDC = 1;
|
||||||
}
|
}
|
||||||
if ((gPlayerOne->type & 0x800) == 0x800) {
|
if ((gPlayerOne->type & PLAYER_CINEMATIC_MODE) == PLAYER_CINEMATIC_MODE) {
|
||||||
func_80005AE8(gPlayerTwo);
|
func_80005AE8(gPlayerTwo);
|
||||||
func_80005AE8(gPlayerThree);
|
func_80005AE8(gPlayerThree);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
|
||||||
player->type = PLAYER_INACTIVE;
|
player->type = PLAYER_INACTIVE;
|
||||||
player->kartPropulsionStrength = 0;
|
player->kartPropulsionStrength = 0;
|
||||||
player->characterId = characterId;
|
player->characterId = characterId;
|
||||||
player->unk_0B6 = 0;
|
player->kartGraphics = 0;
|
||||||
player->kartFriction = gKartFrictionTable[player->characterId];
|
player->kartFriction = gKartFrictionTable[player->characterId];
|
||||||
player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId];
|
player->boundingBoxSize = gKartBoundingBoxSizeTable[player->characterId];
|
||||||
player->kartGravity = gKartGravityTable[player->characterId];
|
player->kartGravity = gKartGravityTable[player->characterId];
|
||||||
|
|
@ -165,8 +165,8 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
|
||||||
player->speed = 0.0f;
|
player->speed = 0.0f;
|
||||||
player->unk_074 = 0.0f;
|
player->unk_074 = 0.0f;
|
||||||
player->type = playerType;
|
player->type = playerType;
|
||||||
player->unk_0CA = 0;
|
player->lakituProps = 0;
|
||||||
player->waterInteractionFlags = WATER_NO_INTERACTION;
|
player->oobProps = 0;
|
||||||
player->unk_10C = 0;
|
player->unk_10C = 0;
|
||||||
player->unk_0E2 = 0;
|
player->unk_0E2 = 0;
|
||||||
player->unk_0E8 = 0.0f;
|
player->unk_0E8 = 0.0f;
|
||||||
|
|
@ -175,7 +175,7 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
|
||||||
player->currentSpeed = 0.0f;
|
player->currentSpeed = 0.0f;
|
||||||
player->unk_20C = 0.0f;
|
player->unk_20C = 0.0f;
|
||||||
player->unk_DAC = 0.0f;
|
player->unk_DAC = 0.0f;
|
||||||
player->unk_044 = 0;
|
player->kartProps = 0;
|
||||||
player->unk_046 = 0;
|
player->unk_046 = 0;
|
||||||
player->triggers = 0;
|
player->triggers = 0;
|
||||||
player->alpha = ALPHA_MAX;
|
player->alpha = ALPHA_MAX;
|
||||||
|
|
@ -206,9 +206,9 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
|
||||||
player->unk_0C0 = 0;
|
player->unk_0C0 = 0;
|
||||||
player->unk_0C2 = 0;
|
player->unk_0C2 = 0;
|
||||||
player->unk_0C8 = 0;
|
player->unk_0C8 = 0;
|
||||||
player->unk_0CA = 0;
|
player->lakituProps = 0;
|
||||||
player->boostTimer = 0;
|
player->boostTimer = 0;
|
||||||
player->waterInteractionFlags = WATER_NO_INTERACTION;
|
player->oobProps = 0;
|
||||||
player->unk_0E0 = 0;
|
player->unk_0E0 = 0;
|
||||||
player->unk_0E2 = 0;
|
player->unk_0E2 = 0;
|
||||||
player->unk_10C = 0;
|
player->unk_10C = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue