mirror of https://github.com/n64decomp/mk64.git
Document Sound Effects (#742)
* Naming sound effects * Update sound effect names and categorize * Add bomb effect and fix bug * HIT_FAKE_ITEM -> EXPLOSION_CRASH * Rename sound_effects to triggers * Merge branch 'master' into sound_effects --------- Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
This commit is contained in:
parent
f5caebc5de
commit
4f63d1759c
|
@ -253,7 +253,7 @@ typedef struct {
|
|||
/* 0x0006 */ u16 unk_006;
|
||||
/* 0x0008 */ s16 lapCount;
|
||||
/* 0x000A */ char unk_00A[0x2];
|
||||
/* 0x000C */ s32 soundEffects; // Bitflag.
|
||||
/* 0x000C */ s32 triggers; // Bitflag.
|
||||
/* 0x0010 */ s16 currentItemCopy; // Has no effect on what item the players has, It is just a synced copy
|
||||
/* 0x0012 */ s16 unk_012;
|
||||
/* 0x0014 */ Vec3f pos;
|
||||
|
|
|
@ -328,20 +328,40 @@ enum PLACE { FIRST_PLACE, SECOND_PLACE, THIRD_PLACE, FOURTH_PLACE };
|
|||
*/
|
||||
#define MAX_TIME 0x927C0
|
||||
|
||||
/**
|
||||
* @brief sound effect of player's
|
||||
* for soundEffect
|
||||
/*
|
||||
* @brief triggers indicating that an effect should be applied to a kart
|
||||
*/
|
||||
#define HIT_SOUND_EFFECT 0x100 // hitting an object
|
||||
#define BOOST_SOUND_EFFECT 0x200 // being boosted by trigger a mushroom
|
||||
#define BOO_SOUND_EFFECT 0x800 // being a boo
|
||||
#define STAR_SOUND_EFFECT 0x2000 // being a star
|
||||
#define HIT_ROTATING_SOUND_EFFECT 0x4000 // hitting a rotating object
|
||||
#define BOOST_RAMP_WOOD_SOUND_EFFECT 0x8000 // being boosted by a ramp
|
||||
#define HOLD_BANANA_SOUND_EFFECT 0x40000 // holding a banana
|
||||
#define REVERSE_SOUND_EFFECT 0x400000 // being in the wrong direction
|
||||
#define BOOST_RAMP_ASPHALT_SOUND_EFFECT 0x800000 // being boosted by a boost pad
|
||||
#define HIT_BY_STAR_SOUND_EFFECT 0x1000000 // being hit by an item
|
||||
#define HIT_BANANA_TRIGGER 0x1 // hits a banana
|
||||
#define HIGH_TUMBLE_TRIGGER 0x2 // hit by a red shell, blue shell, or hit a mole
|
||||
#define LOW_TUMBLE_TRIGGER 0x4 // hit by a green shell
|
||||
#define DRIVING_SPINOUT_TRIGGER 0x80 // spinning out from erratic driving
|
||||
#define THWOMP_SQUISH_TRIGGER 0x100 // stomped by thwomp
|
||||
#define SHROOM_TRIGGER 0x200 // being boosted by trigger a mushroom
|
||||
#define BOO_TRIGGER 0x800 // being a boo
|
||||
#define UNUSED_TRIGGER_0x1000 0x1000 // Unused
|
||||
#define STAR_TRIGGER 0x2000 // Starting a star
|
||||
#define LIGHTNING_STRIKE_TRIGGER 0x4000 // Struck by lightning
|
||||
#define BOOST_RAMP_WOOD_TRIGGER 0x8000 // being boosted by a ramp
|
||||
#define UNUSED_TRIGGER_0x20000 0x20000 // Unused
|
||||
#define DRAG_ITEM_EFFECT 0x40000 // holding a non-shell item behind you
|
||||
#define HIT_PADDLE_BOAT_TRIGGER 0x80000 // hit paddle boat
|
||||
#define UNUSED_TRIGGER_0x10000 0x100000 // Unused
|
||||
#define SPINOUT_TRIGGER 0x200000 // hit crab or spiny spinout or losing versus race
|
||||
#define VERTICAL_TUMBLE_TRIGGER 0x400000 // hitting a fake item / bomb / snowman / car / train
|
||||
#define BOOST_RAMP_ASPHALT_TRIGGER 0x800000 // being boosted by a boost pad
|
||||
#define HIT_BY_STAR_TRIGGER 0x1000000 // being hit by a star
|
||||
#define START_BOOST_TRIGGER 0x2000000 // Start boost
|
||||
#define LOSE_BATTLE_EFFECT 0x4000000 // When losing battle mode
|
||||
#define BECOME_BOMB_EFFECT 0x8000000 // When becoming a bomb in battle mode
|
||||
#define START_SPINOUT_TRIGGER 0x10000000 // Spinning out by holding gas at start of race
|
||||
|
||||
#define ALL_TRIGGERS (0xFFFFFFFF)
|
||||
#define RACING_SPINOUT_TRIGGERS (SPINOUT_TRIGGER | DRIVING_SPINOUT_TRIGGER | HIT_BANANA_TRIGGER) // 0x200081
|
||||
#define RAMP_BOOST_TRIGGERS (BOOST_RAMP_ASPHALT_TRIGGER | BOOST_RAMP_WOOD_TRIGGER) // 0x00808000
|
||||
#define ANY_BOOST_TRIGGERS (RAMP_BOOST_TRIGGERS | SHROOM_TRIGGER) // 0x00808200
|
||||
#define STATE_TRANSITION_TRIGGERS (STAR_TRIGGER | BOO_TRIGGER | UNUSED_TRIGGER_0x1000 | UNUSED_TRIGGER_0x20000)// 0x00023800
|
||||
#define HIT_TRIGGERS (HIT_BY_STAR_TRIGGER | VERTICAL_TUMBLE_TRIGGER | \
|
||||
LIGHTNING_STRIKE_TRIGGER | LOW_TUMBLE_TRIGGER | HIGH_TUMBLE_TRIGGER | THWOMP_SQUISH_TRIGGER) // 0x01404106
|
||||
|
||||
/**
|
||||
* @brief effect of player's
|
||||
|
|
|
@ -60,7 +60,7 @@ void update_actor_banana(struct BananaActor* banana) {
|
|||
controller->buttonDepressed &= ~Z_TRIG;
|
||||
banana->state = DROPPED_BANANA;
|
||||
banana->unk_04 = 0x00B4;
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12));
|
||||
pad3 = controller->rawStickY;
|
||||
if ((pad3 > 30.0f) && (controller->rawStickX < 10) && (controller->rawStickX >= -9)) {
|
||||
|
|
|
@ -45,7 +45,7 @@ void update_actor_fake_item_box(struct FakeItemBox* fake_item_box) {
|
|||
if ((temp_v1_3->buttonDepressed & Z_TRIG) != 0) {
|
||||
temp_v1_3->buttonDepressed &= 0xDFFF;
|
||||
func_802A1064(fake_item_box);
|
||||
temp_v0_4->soundEffects &= 0xFFFBFFFF;
|
||||
temp_v0_4->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
func_800C9060((u8) (temp_v0_4 - gPlayerOne), SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1030,7 +1030,7 @@ void func_8001F394(Player* player, f32* arg1) {
|
|||
}
|
||||
|
||||
if (D_80164A08[playerIndex] == 0) {
|
||||
if (player->soundEffects & HOLD_BANANA_SOUND_EFFECT) {
|
||||
if (player->triggers & DRAG_ITEM_EFFECT) {
|
||||
D_80164A08[playerIndex] = 1;
|
||||
}
|
||||
if ((player->effects & MUSHROOM_EFFECT) == MUSHROOM_EFFECT) {
|
||||
|
@ -1039,7 +1039,7 @@ void func_8001F394(Player* player, f32* arg1) {
|
|||
if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
|
||||
D_80164A08[playerIndex] = 3;
|
||||
}
|
||||
if ((player->soundEffects & 0x100) == 0x100) {
|
||||
if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) {
|
||||
D_80164A08[playerIndex] = 4;
|
||||
}
|
||||
if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) ||
|
||||
|
@ -1050,7 +1050,7 @@ void func_8001F394(Player* player, f32* arg1) {
|
|||
}
|
||||
switch (D_80164A08[playerIndex]) {
|
||||
case 1:
|
||||
if (player->soundEffects & HOLD_BANANA_SOUND_EFFECT) {
|
||||
if (player->triggers & DRAG_ITEM_EFFECT) {
|
||||
move_f32_towards(&D_80164498[playerIndex], 20.0f, 0.2f);
|
||||
} else {
|
||||
if (D_80164498[playerIndex] > 1.0f) {
|
||||
|
@ -1089,7 +1089,7 @@ void func_8001F394(Player* player, f32* arg1) {
|
|||
}
|
||||
break;
|
||||
case 4:
|
||||
if ((player->soundEffects & 0x100) == 0x100) {
|
||||
if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) {
|
||||
move_f32_towards(&D_80164498[playerIndex], 25.0f, 1.0f);
|
||||
} else {
|
||||
if (D_80164498[playerIndex] > 1.0f) {
|
||||
|
|
|
@ -1185,7 +1185,7 @@ s32 func_80089B50(s32 objectIndex) {
|
|||
(player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) &&
|
||||
(has_collided_horizontally_with_player(objectIndex, player) != 0)) {
|
||||
if (!(player->effects & STAR_EFFECT)) {
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
||||
func_80072180();
|
||||
}
|
||||
|
@ -1212,7 +1212,7 @@ s32 func_80089CBC(s32 objectIndex, f32 arg1) {
|
|||
if ((player->type & PLAYER_EXISTS) && !(player->type & PLAYER_INVISIBLE_OR_BOMB) &&
|
||||
(has_collided_with_player_and_within_height(objectIndex, player, arg1) != 0)) {
|
||||
if (!(player->effects & STAR_EFFECT)) {
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
||||
func_80072180();
|
||||
}
|
||||
|
@ -1240,7 +1240,7 @@ s32 func_80089E18(s32 objectIndex) {
|
|||
if (player->effects & STAR_EFFECT) {
|
||||
var_s6 = 1;
|
||||
} else {
|
||||
player->soundEffects |= 1;
|
||||
player->triggers |= HIT_BANANA_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1265,7 +1265,7 @@ s32 func_80089F24(s32 objectIndex) {
|
|||
if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) {
|
||||
func_80072180();
|
||||
}
|
||||
player->soundEffects |= 0x200000;
|
||||
player->triggers |= SPINOUT_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1360,8 +1360,8 @@ void play_cpu_sound_effect(s32 arg0, Player* player) {
|
|||
}
|
||||
}
|
||||
if (D_801633B0[arg0] >= 0xB) {
|
||||
if ((player->soundEffects & 0x400000) || (player->soundEffects & 0x01000000) || (player->soundEffects & 2) ||
|
||||
(player->soundEffects & 4) || (player->effects & SQUISH_EFFECT)) {
|
||||
if ((player->triggers & VERTICAL_TUMBLE_TRIGGER) || (player->triggers & HIT_BY_STAR_TRIGGER) ||
|
||||
(player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || (player->effects & SQUISH_EFFECT)) {
|
||||
func_800C92CC(arg0, SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0B));
|
||||
D_801633B0[arg0] = 0;
|
||||
}
|
||||
|
@ -2217,7 +2217,7 @@ void init_players(void) {
|
|||
|
||||
for (i = 0; i < NUM_PLAYERS; i++) {
|
||||
if (D_80163330[i] == 1) {
|
||||
gPlayers[i].soundEffects |= 0x02000000;
|
||||
gPlayers[i].triggers |= START_BOOST_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3944,7 +3944,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
} else if (cpuStrategy->branch == CPU_STRATEGY_ITEM_BANANA) {
|
||||
cpuStrategy->actorIndex = use_banana_item(player);
|
||||
if ((cpuStrategy->actorIndex >= 0) && (cpuStrategy->actorIndex < 100)) {
|
||||
player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers |= DRAG_ITEM_EFFECT;
|
||||
cpuStrategy->branch = CPU_STRATEGY_HOLD_BANANA;
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->numItemUse += 1;
|
||||
|
@ -3969,7 +3969,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM;
|
||||
cpuStrategy->timer = 0;
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
} else if (cpuStrategy->timeBeforeThrow < cpuStrategy->timer) {
|
||||
cpuStrategy->branch = CPU_STRATEGY_DROP_BANANA;
|
||||
}
|
||||
|
@ -3998,7 +3998,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
(BANANA_ACTOR(actor)->boundingBoxSize + 1.0f);
|
||||
}
|
||||
}
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM;
|
||||
break;
|
||||
|
@ -4008,7 +4008,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
if ((cpuStrategy->actorIndex >= 0) && (cpuStrategy->actorIndex < 100)) {
|
||||
actor = &gActorList[cpuStrategy->actorIndex];
|
||||
BANANA_ACTOR(actor)->state = BANANA_ON_GROUND;
|
||||
player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers |= DRAG_ITEM_EFFECT;
|
||||
cpuStrategy->branch = CPU_STRATEGY_HOLD_THROW_BANANA;
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->numItemUse += 1;
|
||||
|
@ -4041,7 +4041,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM;
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
} else {
|
||||
BANANA_ACTOR(actor)->velocity[1] -= 0.4;
|
||||
BANANA_ACTOR(actor)->pos[0] += BANANA_ACTOR(actor)->velocity[0];
|
||||
|
@ -4074,7 +4074,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
get_surface_height(BANANA_ACTOR(actor)->pos[0], BANANA_ACTOR(actor)->pos[1] + 30.0, BANANA_ACTOR(actor)->pos[2]) +
|
||||
(BANANA_ACTOR(actor)->boundingBoxSize + 1.0f);
|
||||
}
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM;
|
||||
cpuStrategy->timer = 0;
|
||||
break;
|
||||
|
@ -4368,7 +4368,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
break;
|
||||
|
||||
case CPU_STRATEGY_ITEM_STAR:
|
||||
player->soundEffects |= STAR_SOUND_EFFECT;
|
||||
player->triggers |= STAR_TRIGGER;
|
||||
cpuStrategy->branch = CPU_STRATEGY_END_ITEM_STAR;
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->numItemUse += 1;
|
||||
|
@ -4382,7 +4382,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
break;
|
||||
|
||||
case CPU_STRATEGY_ITEM_BOO:
|
||||
player->soundEffects |= BOO_SOUND_EFFECT;
|
||||
player->triggers |= BOO_TRIGGER;
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_END_BOO;
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->numItemUse += 1;
|
||||
|
@ -4396,7 +4396,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
break;
|
||||
|
||||
case CPU_STRATEGY_ITEM_MUSHROOM:
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM;
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->numItemUse += 1;
|
||||
|
@ -4404,7 +4404,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
|
||||
case CPU_STRATEGY_ITEM_DOUBLE_MUSHROOM:
|
||||
if (cpuStrategy->timer >= 0x3D) {
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
cpuStrategy->branch = CPU_STRATEGY_ITEM_MUSHROOM;
|
||||
cpuStrategy->timer = 0;
|
||||
}
|
||||
|
@ -4412,7 +4412,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
|
||||
case CPU_STRATEGY_ITEM_TRIPLE_MUSHROOM:
|
||||
if (cpuStrategy->timer >= 0x3D) {
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
cpuStrategy->branch = CPU_STRATEGY_ITEM_DOUBLE_MUSHROOM;
|
||||
cpuStrategy->timer = 0;
|
||||
}
|
||||
|
@ -4426,7 +4426,7 @@ void cpu_use_item_strategy(s32 playerId) {
|
|||
|
||||
case CPU_STRATEGY_USE_SUPER_MUSHROOM:
|
||||
if ((((s16) cpuStrategy->timer) % 60) == 0) {
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
if (cpuStrategy->timeBeforeThrow < cpuStrategy->timer) {
|
||||
cpuStrategy->timer = 0;
|
||||
cpuStrategy->branch = CPU_STRATEGY_WAIT_NEXT_ITEM;
|
||||
|
|
|
@ -139,7 +139,7 @@ void func_8000DF8C(s32 bombKartId) {
|
|||
if ((((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f12 * temp_f12)) < 25.0f) {
|
||||
var_s1 = 0;
|
||||
sp7E = 4;
|
||||
var_v0->soundEffects |= 0x400000;
|
||||
var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
var_v0->type &= ~0x2000;
|
||||
}
|
||||
}
|
||||
|
@ -155,9 +155,9 @@ void func_8000DF8C(s32 bombKartId) {
|
|||
sp7E = 4;
|
||||
var_s1 = 0;
|
||||
if (gCurrentCourseId == COURSE_FRAPPE_SNOWLAND) {
|
||||
var_v0->soundEffects |= 0x01000000;
|
||||
var_v0->triggers |= HIT_BY_STAR_TRIGGER;
|
||||
} else {
|
||||
var_v0->soundEffects |= 0x400000;
|
||||
var_v0->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -133,9 +133,9 @@ void regulate_cpu_speed(s32 playerId, f32 targetSpeed, Player* player) {
|
|||
s32 var_a1;
|
||||
|
||||
speed = player->speed;
|
||||
if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT) &&
|
||||
!(player->effects & LIGHTNING_STRIKE_EFFECT) && !(player->soundEffects & 0x400000) &&
|
||||
!(player->soundEffects & 0x01000000) && !(player->soundEffects & 2) && !(player->soundEffects & 4)) {
|
||||
if (!(player->effects & BANANA_SPINOUT_EFFECT) && !(player->effects & DRIVING_SPINOUT_EFFECT) && !(player->effects & LIGHTNING_STRIKE_EFFECT) &&
|
||||
!(player->triggers & VERTICAL_TUMBLE_TRIGGER) && !(player->triggers & HIT_BY_STAR_TRIGGER) && !(player->triggers & HIGH_TUMBLE_TRIGGER) &&
|
||||
!(player->triggers & LOW_TUMBLE_TRIGGER)) {
|
||||
if (gCurrentCourseId == COURSE_AWARD_CEREMONY) {
|
||||
func_80007FA4(playerId, player, speed);
|
||||
} else if ((bStopAICrossing[playerId] == true) && !(player->effects & (STAR_EFFECT | BOO_EFFECT))) {
|
||||
|
|
|
@ -372,14 +372,14 @@ void handle_trains_interactions(s32 playerId, Player* player) {
|
|||
if ((z_dist > -100.0) && (z_dist < 100.0)) {
|
||||
if (is_collide_with_vehicle(trainCar->position[0], trainCar->position[2], trainCar->velocity[0],
|
||||
trainCar->velocity[2], 60.0f, 20.0f, playerPosX, playerPosZ) == 1) {
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
}
|
||||
trainCar = &gTrainList[trainIndex].tender;
|
||||
if (trainCar->isActive == 1) {
|
||||
if (is_collide_with_vehicle(trainCar->position[0], trainCar->position[2],
|
||||
trainCar->velocity[0], trainCar->velocity[2], 30.0f, 20.0f,
|
||||
playerPosX, playerPosZ) == 1) {
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -395,7 +395,7 @@ void handle_trains_interactions(s32 playerId, Player* player) {
|
|||
if (is_collide_with_vehicle(trainCar->position[0], trainCar->position[2],
|
||||
trainCar->velocity[0], trainCar->velocity[2], 30.0f, 20.0f,
|
||||
playerPosX, playerPosZ) == 1) {
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -621,7 +621,7 @@ void handle_paddle_boats_interactions(Player* player) {
|
|||
tempPaddleWheelBoat->velocity[0], tempPaddleWheelBoat->velocity[2],
|
||||
200.0f, 60.0f, playerX, playerZ) == 1) &&
|
||||
(y_diff < 60.0)) {
|
||||
player->soundEffects |= 0x80000;
|
||||
player->triggers |= HIT_PADDLE_BOAT_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -805,7 +805,7 @@ void handle_vehicle_interactions(s32 playerId, Player* player, VehicleStuff* veh
|
|||
if (is_collide_with_vehicle(vehicle->position[0], vehicle->position[2], vehicle->velocity[0],
|
||||
vehicle->velocity[2], distanceX, distanceY, playerX,
|
||||
playerZ) == (s32) 1) {
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,8 +134,9 @@ UNUSED void func_unnamed33(void) {
|
|||
}
|
||||
|
||||
void func_8008C310(Player* player) {
|
||||
if ((player->soundEffects & 2) || (player->soundEffects & 4) || ((player->soundEffects << 9) < 0) ||
|
||||
(player->soundEffects & HIT_BY_STAR_SOUND_EFFECT)) {
|
||||
// The << 9 is a hacky way to check for VERTICAL_TUMBLE_TRIGGER
|
||||
if ((player->triggers & HIGH_TUMBLE_TRIGGER) || (player->triggers & LOW_TUMBLE_TRIGGER) || ((player->triggers << 9) < 0) ||
|
||||
(player->triggers & HIT_BY_STAR_TRIGGER)) {
|
||||
player->unk_0B6 = ((u16) player->unk_0B6 | 0x1000);
|
||||
}
|
||||
}
|
||||
|
@ -217,7 +218,7 @@ void func_8008C528(Player* player, s8 playerIndex) {
|
|||
} else {
|
||||
play_cpu_sound_effect(playerIndex, player);
|
||||
}
|
||||
player->soundEffects = (s32) (player->soundEffects & ~4);
|
||||
player->triggers = (s32) (player->triggers & ~LOW_TUMBLE_TRIGGER);
|
||||
}
|
||||
|
||||
void func_8008C62C(Player* player, s8 playerIndex) {
|
||||
|
@ -313,7 +314,7 @@ void func_8008C8C4(Player* player, s8 playerId) {
|
|||
}
|
||||
if ((gModeSelection == VERSUS) && ((player->type & PLAYER_CPU) == PLAYER_CPU) && (!gDemoMode) &&
|
||||
((player->unk_0CA & 2) == 0) && (gGPCurrentRaceRankByPlayerId[playerId] != 0)) {
|
||||
player->soundEffects = (s32) (player->soundEffects | REVERSE_SOUND_EFFECT);
|
||||
player->triggers = (s32) (player->triggers | VERTICAL_TUMBLE_TRIGGER);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -374,7 +375,7 @@ void func_8008C9EC(Player* player, s8 playerIndex) {
|
|||
void func_8008CDC0(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
|
||||
player->soundEffects &= ~1;
|
||||
player->triggers &= ~HIT_BANANA_TRIGGER;
|
||||
player->unk_0B4 = 0;
|
||||
player->unk_0B8 = 3.0f;
|
||||
player->unk_0AC = 1;
|
||||
|
@ -446,7 +447,7 @@ void func_8008D0E4(Player* player, UNUSED s8 playerIndex) {
|
|||
void func_8008D0FC(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
|
||||
player->soundEffects &= ~0x80;
|
||||
player->triggers &= ~DRIVING_SPINOUT_TRIGGER;
|
||||
player->unk_0B4 = 0;
|
||||
player->unk_0B8 = 2.0f;
|
||||
player->unk_0AC = 1;
|
||||
|
@ -508,12 +509,12 @@ void func_8008D3B0(Player* player, UNUSED s8 playerIndex) {
|
|||
player->unk_044 &= 0xBFFF;
|
||||
}
|
||||
|
||||
void apply_boost_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_shroom(Player* player, s8 playerIndex) {
|
||||
|
||||
clean_effect(player, playerIndex);
|
||||
|
||||
player->effects |= MUSHROOM_EFFECT;
|
||||
player->soundEffects &= ~BOOST_SOUND_EFFECT;
|
||||
player->triggers &= ~SHROOM_TRIGGER;
|
||||
player->unk_DB4.unk0 = 0;
|
||||
player->unk_DB4.unk8 = 8.0f;
|
||||
|
||||
|
@ -561,7 +562,7 @@ void func_8008D570(Player* player, s8 playerIndex) {
|
|||
player->unk_0AE = player->rotation[1];
|
||||
player->effects |= UNKNOWN_EFFECT_0x80000;
|
||||
player->effects &= ~DRIFTING_EFFECT;
|
||||
player->soundEffects &= ~0x1000;
|
||||
player->triggers &= ~UNUSED_TRIGGER_0x1000;
|
||||
player->kartHopJerk = D_800E3730[player->characterId];
|
||||
player->kartHopAcceleration = 0.0f;
|
||||
player->kartHopVelocity = (f32) D_800E3710[player->characterId];
|
||||
|
@ -620,7 +621,7 @@ void func_8008D7B0(Player* player, s8 playerIndex) {
|
|||
player->unk_0AE = player->rotation[1];
|
||||
player->effects |= UNKNOWN_EFFECT_0x800000;
|
||||
player->effects &= ~DRIFTING_EFFECT;
|
||||
player->soundEffects &= ~0x20000;
|
||||
player->triggers &= ~UNUSED_TRIGGER_0x20000;
|
||||
player->kartHopJerk = D_800E3770[player->characterId];
|
||||
player->kartHopAcceleration = 0.0f;
|
||||
player->kartHopVelocity = D_800E3750[player->characterId];
|
||||
|
@ -689,7 +690,7 @@ void func_8008D9C0(Player* player) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_hit_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_squish(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
|
||||
if ((player->effects & SQUISH_EFFECT) == 0) {
|
||||
|
@ -706,7 +707,7 @@ void apply_hit_sound_effect(Player* player, s8 playerIndex) {
|
|||
player->unk_D9C = 0.0f;
|
||||
player->unk_DA0 = 65.0f;
|
||||
|
||||
if ((player->soundEffects & 0x100) != 0) {
|
||||
if ((player->triggers & THWOMP_SQUISH_TRIGGER) != 0) {
|
||||
player->unk_046 |= 0x80;
|
||||
}
|
||||
|
||||
|
@ -740,7 +741,7 @@ void apply_hit_effect(Player* player, s8 playerIndex) {
|
|||
}
|
||||
|
||||
if ((player->unk_046 & 0x80) != 0) {
|
||||
if ((player->soundEffects & 0x100) == 0) {
|
||||
if ((player->triggers & THWOMP_SQUISH_TRIGGER) == 0) {
|
||||
D_8018D990[playerIndex] = 1;
|
||||
player->unk_238 = 0;
|
||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||
|
@ -829,10 +830,10 @@ void apply_hit_effect(Player* player, s8 playerIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_hit_rotating_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_lightning_strike(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
|
||||
player->soundEffects &= ~HIT_ROTATING_SOUND_EFFECT;
|
||||
player->triggers &= ~LIGHTNING_STRIKE_TRIGGER;
|
||||
player->effects |= (LIGHTNING_EFFECT | LIGHTNING_STRIKE_EFFECT);
|
||||
player->effects &= ~DRIFTING_EFFECT;
|
||||
player->unk_08C *= 0.6;
|
||||
|
@ -877,7 +878,7 @@ void apply_lightning_effect(Player* player, s8 playerIndex) {
|
|||
D_80165190[1][playerIndex] = 1;
|
||||
D_80165190[2][playerIndex] = 1;
|
||||
D_80165190[3][playerIndex] = 1;
|
||||
apply_hit_sound_effect(player, playerIndex);
|
||||
trigger_squish(player, playerIndex);
|
||||
} else if ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) {
|
||||
player->rotation[1] -= 0x5B0;
|
||||
D_8018D920[playerIndex] -= 0x5B0;
|
||||
|
@ -996,7 +997,7 @@ void func_8008E4A4(Player* player, s8 playerIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_reverse_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_vertical_tumble(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
func_8008C310(player);
|
||||
|
||||
|
@ -1029,7 +1030,7 @@ void apply_reverse_sound_effect(Player* player, s8 playerIndex) {
|
|||
play_cpu_sound_effect(playerIndex, player);
|
||||
}
|
||||
|
||||
player->soundEffects &= ~(REVERSE_SOUND_EFFECT | 0x80000);
|
||||
player->triggers &= ~(VERTICAL_TUMBLE_TRIGGER | HIT_PADDLE_BOAT_TRIGGER);
|
||||
player->unk_0B6 |= 0x40;
|
||||
gTimerBoostTripleACombo[playerIndex] = 0;
|
||||
gIsPlayerTripleAButtonCombo[playerIndex] = false;
|
||||
|
@ -1106,7 +1107,7 @@ void apply_hit_by_star_effect(Player* player, s8 playerIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_hit_by_star_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_high_tumble(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
func_8008C310(player);
|
||||
|
||||
|
@ -1131,7 +1132,7 @@ void apply_hit_by_star_sound_effect(Player* player, s8 playerIndex) {
|
|||
|
||||
player->effects |= HIT_BY_STAR_EFFECT;
|
||||
player->unk_0B6 |= 0x40;
|
||||
player->soundEffects &= ~0x01000002;
|
||||
player->triggers &= ~(HIT_BY_STAR_TRIGGER | HIGH_TUMBLE_TRIGGER);
|
||||
|
||||
gTimerBoostTripleACombo[playerIndex] = 0;
|
||||
gIsPlayerTripleAButtonCombo[playerIndex] = false;
|
||||
|
@ -1150,11 +1151,11 @@ void remove_hit_by_star_effect(Player* player, s8 playerIndex) {
|
|||
player->unk_042 = 0;
|
||||
}
|
||||
|
||||
void apply_boost_ramp_asphalt_sound_effect(Player* player, s8 playerId) {
|
||||
void trigger_asphalt_ramp_boost(Player* player, s8 playerId) {
|
||||
clean_effect(player, playerId);
|
||||
|
||||
player->effects |= BOOST_RAMP_ASPHALT_EFFECT;
|
||||
player->soundEffects &= ~BOOST_RAMP_ASPHALT_SOUND_EFFECT;
|
||||
player->triggers &= ~BOOST_RAMP_ASPHALT_TRIGGER;
|
||||
player->unk_DB4.unk0 = 0;
|
||||
player->unk_DB4.unk8 = 8.0f;
|
||||
if (D_8015F890 != 1) {
|
||||
|
@ -1198,11 +1199,11 @@ void remove_boost_ramp_asphalt_effect(Player* player) {
|
|||
player->boostPower = 0.0f;
|
||||
}
|
||||
|
||||
void apply_boost_ramp_wood_sound_effect(Player* player, s8 playerId) {
|
||||
void trigger_wood_ramp_boost(Player* player, s8 playerId) {
|
||||
clean_effect(player, playerId);
|
||||
|
||||
player->effects |= BOOST_RAMP_WOOD_EFFECT;
|
||||
player->soundEffects &= ~BOOST_RAMP_WOOD_SOUND_EFFECT;
|
||||
player->triggers &= ~BOOST_RAMP_WOOD_TRIGGER;
|
||||
|
||||
if (D_8015F890 != 1) {
|
||||
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) && ((player->type & PLAYER_INVISIBLE_OR_BOMB) == 0)) {
|
||||
|
@ -1396,11 +1397,11 @@ void apply_star_effect(Player* player, s8 playerIndex) {
|
|||
}
|
||||
|
||||
// Star item
|
||||
void apply_star_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_star(Player* player, s8 playerIndex) {
|
||||
clean_effect(player, playerIndex);
|
||||
|
||||
player->effects |= STAR_EFFECT;
|
||||
player->soundEffects &= ~STAR_SOUND_EFFECT;
|
||||
player->triggers &= ~STAR_TRIGGER;
|
||||
gPlayerStarEffectStartTime[playerIndex] = gCourseTimer;
|
||||
D_8018D900[playerIndex] = 1;
|
||||
|
||||
|
@ -1465,7 +1466,7 @@ void apply_boo_effect(Player* player, s8 playerIndex) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_boo_sound_effect(Player* player, s8 playerIndex) {
|
||||
void trigger_boo(Player* player, s8 playerIndex) {
|
||||
s16 temp_v1;
|
||||
|
||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||
|
@ -1481,7 +1482,7 @@ void apply_boo_sound_effect(Player* player, s8 playerIndex) {
|
|||
clean_effect(player, playerIndex);
|
||||
|
||||
player->effects |= BOO_EFFECT;
|
||||
player->soundEffects &= ~BOO_SOUND_EFFECT;
|
||||
player->triggers &= ~BOO_TRIGGER;
|
||||
gPlayerBooEffectStartTime[playerIndex] = gCourseTimer;
|
||||
gPlayerOtherScreensAlpha[playerIndex] = ALPHA_MAX;
|
||||
|
||||
|
@ -1527,8 +1528,8 @@ void func_8008FC64(Player* player, s8 arg1) {
|
|||
player->alpha -= 4;
|
||||
if (player->alpha < 5) {
|
||||
player->alpha = ALPHA_MIN;
|
||||
player->soundEffects &= 0xFBFFFFFF;
|
||||
player->soundEffects |= 0x08000000;
|
||||
player->triggers &= ~LOSE_BATTLE_EFFECT;
|
||||
player->triggers |= BECOME_BOMB_EFFECT;
|
||||
player->type |= PLAYER_UNKNOWN_0x40;
|
||||
|
||||
func_8008FDA8(player, arg1);
|
||||
|
@ -1540,7 +1541,7 @@ void func_8008FCDC(Player* player, s8 playerIndex) {
|
|||
player->alpha += 2;
|
||||
if (player->alpha >= 0xF0) {
|
||||
player->alpha = ALPHA_MAX;
|
||||
player->soundEffects &= ~0x08000000;
|
||||
player->triggers &= ~BECOME_BOMB_EFFECT;
|
||||
}
|
||||
|
||||
func_80056A40(playerIndex, (u32) player->alpha);
|
||||
|
@ -1549,7 +1550,7 @@ void func_8008FCDC(Player* player, s8 playerIndex) {
|
|||
void func_8008FD4C(Player* player, UNUSED s8 arg1) {
|
||||
s16 temp_v0;
|
||||
|
||||
player->soundEffects |= 0x04000000;
|
||||
player->triggers |= LOSE_BATTLE_EFFECT;
|
||||
player->unk_044 |= 0x200;
|
||||
|
||||
for (temp_v0 = 0; temp_v0 < 10; ++temp_v0) {
|
||||
|
@ -1576,7 +1577,7 @@ void func_8008FDF4(Player* player, s8 playerIndex) {
|
|||
player->kartHopJerk = D_800E37F0[player->characterId];
|
||||
player->kartHopAcceleration = 0.0f;
|
||||
player->kartHopVelocity = D_800E37D0[player->characterId];
|
||||
player->soundEffects &= ~0x00100000;
|
||||
player->triggers &= ~UNUSED_TRIGGER_0x10000;
|
||||
player->effects |= UNKNOWN_EFFECT_0x10000000;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ void func_8008D0E4(Player*, s8);
|
|||
void func_8008D0FC(Player*, s8);
|
||||
void func_8008D170(Player*, s8);
|
||||
void func_8008D3B0(Player*, s8);
|
||||
void apply_boost_sound_effect(Player*, s8);
|
||||
void trigger_shroom(Player*, s8);
|
||||
void apply_mushroom_effect(Player*);
|
||||
void remove_mushroom_effect(Player*);
|
||||
void func_8008D570(Player*, s8);
|
||||
|
@ -69,21 +69,21 @@ void func_8008D7B0(Player*, s8);
|
|||
void func_8008D8B4(Player*, s8);
|
||||
void func_8008D97C(Player*);
|
||||
void func_8008D9C0(Player*);
|
||||
void apply_hit_sound_effect(Player*, s8);
|
||||
void trigger_squish(Player*, s8);
|
||||
void apply_hit_effect(Player*, s8);
|
||||
void apply_hit_rotating_sound_effect(Player*, s8);
|
||||
void trigger_lightning_strike(Player*, s8);
|
||||
void apply_lightning_effect(Player*, s8);
|
||||
void remove_lightning_effect(Player*, s8);
|
||||
void func_8008E4A4(Player*, s8);
|
||||
void apply_reverse_sound_effect(Player*, s8);
|
||||
void trigger_vertical_tumble(Player*, s8);
|
||||
void func_8008E884(Player*, s8);
|
||||
void apply_hit_by_star_effect(Player*, s8);
|
||||
void apply_hit_by_star_sound_effect(Player*, s8);
|
||||
void trigger_high_tumble(Player*, s8);
|
||||
void remove_hit_by_star_effect(Player*, s8);
|
||||
void apply_boost_ramp_asphalt_sound_effect(Player*, s8);
|
||||
void trigger_asphalt_ramp_boost(Player*, s8);
|
||||
void apply_boost_ramp_asphalt_effect(Player*);
|
||||
void remove_boost_ramp_asphalt_effect(Player*);
|
||||
void apply_boost_ramp_wood_sound_effect(Player*, s8);
|
||||
void trigger_wood_ramp_boost(Player*, s8);
|
||||
void apply_boost_ramp_wood_effect(Player*);
|
||||
void remove_boost_ramp_wood_effect(Player*);
|
||||
void func_8008F104(Player*, s8);
|
||||
|
@ -93,10 +93,10 @@ void func_8008F3F4(Player*, s8);
|
|||
void func_8008F494(Player*, s8);
|
||||
void func_8008F5A4(Player*, s8);
|
||||
void apply_star_effect(Player*, s8);
|
||||
void apply_star_sound_effect(Player*, s8);
|
||||
void trigger_star(Player*, s8);
|
||||
void func_8008F86C(Player*, s8);
|
||||
void apply_boo_effect(Player*, s8);
|
||||
void apply_boo_sound_effect(Player*, s8);
|
||||
void trigger_boo(Player*, s8);
|
||||
void func_8008FB30(Player*, s8);
|
||||
void func_8008FC1C(Player*);
|
||||
void func_8008FC64(Player*, s8);
|
||||
|
|
|
@ -970,13 +970,12 @@ void func_80029B4C(Player* player, UNUSED f32 arg1, f32 arg2, UNUSED f32 arg3) {
|
|||
if (player->surfaceType == BOOST_RAMP_ASPHALT) {
|
||||
if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) &&
|
||||
((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) {
|
||||
player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT;
|
||||
player->triggers |= BOOST_RAMP_ASPHALT_TRIGGER;
|
||||
}
|
||||
}
|
||||
if (player->surfaceType == BOOST_RAMP_WOOD) {
|
||||
if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) &&
|
||||
((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) {
|
||||
player->soundEffects |= BOOST_RAMP_WOOD_SOUND_EFFECT;
|
||||
if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) && ((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) {
|
||||
player->triggers |= BOOST_RAMP_WOOD_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1056,13 +1055,13 @@ void func_8002A194(Player* player, f32 x, f32 y, f32 z) {
|
|||
if (player->surfaceType == BOOST_RAMP_ASPHALT) {
|
||||
if (((player->effects & BOOST_RAMP_ASPHALT_EFFECT) != BOOST_RAMP_ASPHALT_EFFECT) &&
|
||||
((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) {
|
||||
player->soundEffects |= BOOST_RAMP_ASPHALT_SOUND_EFFECT;
|
||||
player->triggers |= BOOST_RAMP_ASPHALT_TRIGGER;
|
||||
}
|
||||
}
|
||||
if (player->surfaceType == BOOST_RAMP_WOOD) {
|
||||
if (((player->effects & BOOST_RAMP_WOOD_EFFECT) != BOOST_RAMP_WOOD_EFFECT) &&
|
||||
((player->effects & MIDAIR_EFFECT) != MIDAIR_EFFECT)) {
|
||||
player->soundEffects |= BOOST_RAMP_WOOD_SOUND_EFFECT;
|
||||
player->triggers |= BOOST_RAMP_WOOD_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1103,7 +1102,7 @@ void func_8002A5F4(Vec3f arg0, f32 arg1, Vec3f arg2, f32 arg3, f32 arg4) {
|
|||
|
||||
void func_8002A704(Player* player, s8 playerIndex) {
|
||||
player->effects |= MUSHROOM_EFFECT;
|
||||
player->soundEffects &= ~0x02000000;
|
||||
player->triggers &= ~START_BOOST_TRIGGER;
|
||||
if (((player->type & PLAYER_HUMAN) == PLAYER_HUMAN) &&
|
||||
((player->type & PLAYER_INVISIBLE_OR_BOMB) != PLAYER_INVISIBLE_OR_BOMB)) {
|
||||
func_800C90F4(0U, (player->characterId * 0x10) + 0x29008001);
|
||||
|
@ -1368,124 +1367,139 @@ void func_8002B218(Player* player) {
|
|||
}
|
||||
}
|
||||
|
||||
void apply_sound_effect(Player* player, s8 playerId, UNUSED s8 screenId) {
|
||||
if ((player->soundEffects & 2) == 2) {
|
||||
apply_hit_by_star_sound_effect(player, playerId);
|
||||
void apply_triggers(Player* player, s8 playerId, UNUSED s8 screenId) {
|
||||
if ((player->triggers & HIGH_TUMBLE_TRIGGER) == HIGH_TUMBLE_TRIGGER) {
|
||||
trigger_high_tumble(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & 4) == 4) {
|
||||
if ((player->triggers & LOW_TUMBLE_TRIGGER) == LOW_TUMBLE_TRIGGER) {
|
||||
func_8008C528(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & 1) == 1) {
|
||||
if ((player->triggers & HIT_BANANA_TRIGGER) == HIT_BANANA_TRIGGER) {
|
||||
func_8008CDC0(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & BOOST_SOUND_EFFECT) == BOOST_SOUND_EFFECT) {
|
||||
apply_boost_sound_effect(player, playerId);
|
||||
if ((player->triggers & SHROOM_TRIGGER) == SHROOM_TRIGGER) {
|
||||
trigger_shroom(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & 0x02000000) == 0x02000000) {
|
||||
if ((player->triggers & START_BOOST_TRIGGER) == START_BOOST_TRIGGER) {
|
||||
func_8002A704(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & 0x1000) == 0x1000) {
|
||||
if ((player->triggers & UNUSED_TRIGGER_0x1000) == UNUSED_TRIGGER_0x1000) {
|
||||
func_8008D570(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & 0x20000) == 0x20000) {
|
||||
if ((player->triggers & UNUSED_TRIGGER_0x20000) == UNUSED_TRIGGER_0x20000) {
|
||||
func_8008D7B0(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & HIT_SOUND_EFFECT) == HIT_SOUND_EFFECT) {
|
||||
apply_hit_sound_effect(player, playerId);
|
||||
if ((player->triggers & THWOMP_SQUISH_TRIGGER) == THWOMP_SQUISH_TRIGGER) {
|
||||
trigger_squish(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & HIT_ROTATING_SOUND_EFFECT) == HIT_ROTATING_SOUND_EFFECT) {
|
||||
apply_hit_rotating_sound_effect(player, playerId);
|
||||
if ((player->triggers & LIGHTNING_STRIKE_TRIGGER) == LIGHTNING_STRIKE_TRIGGER) {
|
||||
trigger_lightning_strike(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & 0x200000) == 0x200000) {
|
||||
if ((player->triggers & SPINOUT_TRIGGER) == SPINOUT_TRIGGER) {
|
||||
func_8008C73C(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & REVERSE_SOUND_EFFECT) == REVERSE_SOUND_EFFECT) {
|
||||
apply_reverse_sound_effect(player, playerId);
|
||||
if ((player->triggers & VERTICAL_TUMBLE_TRIGGER) == VERTICAL_TUMBLE_TRIGGER) {
|
||||
trigger_vertical_tumble(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & HIT_BY_STAR_SOUND_EFFECT) == HIT_BY_STAR_SOUND_EFFECT) {
|
||||
apply_hit_by_star_sound_effect(player, playerId);
|
||||
if ((player->triggers & HIT_BY_STAR_TRIGGER) == HIT_BY_STAR_TRIGGER) {
|
||||
trigger_high_tumble(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & BOOST_RAMP_ASPHALT_SOUND_EFFECT) == BOOST_RAMP_ASPHALT_SOUND_EFFECT) {
|
||||
apply_boost_ramp_asphalt_sound_effect(player, playerId);
|
||||
if ((player->triggers & BOOST_RAMP_ASPHALT_TRIGGER) == BOOST_RAMP_ASPHALT_TRIGGER) {
|
||||
trigger_asphalt_ramp_boost(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & BOOST_RAMP_WOOD_SOUND_EFFECT) == BOOST_RAMP_WOOD_SOUND_EFFECT) {
|
||||
apply_boost_ramp_wood_sound_effect(player, playerId);
|
||||
if ((player->triggers & BOOST_RAMP_WOOD_TRIGGER) == BOOST_RAMP_WOOD_TRIGGER) {
|
||||
trigger_wood_ramp_boost(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & STAR_SOUND_EFFECT) == STAR_SOUND_EFFECT) {
|
||||
apply_star_sound_effect(player, playerId);
|
||||
if ((player->triggers & STAR_TRIGGER) == STAR_TRIGGER) {
|
||||
trigger_star(player, playerId);
|
||||
}
|
||||
if ((player->soundEffects & BOO_SOUND_EFFECT) == BOO_SOUND_EFFECT) {
|
||||
apply_boo_sound_effect(player, playerId);
|
||||
if ((player->triggers & BOO_TRIGGER) == BOO_TRIGGER) {
|
||||
trigger_boo(player, playerId);
|
||||
}
|
||||
if (player->soundEffects & 0x80) {
|
||||
if (player->triggers & DRIVING_SPINOUT_TRIGGER) {
|
||||
func_8008D0FC(player, playerId);
|
||||
}
|
||||
if (player->soundEffects & 0x80000) {
|
||||
apply_reverse_sound_effect(player, playerId);
|
||||
if (player->triggers & HIT_PADDLE_BOAT_TRIGGER) {
|
||||
trigger_vertical_tumble(player, playerId);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8002B5C0(Player* player, UNUSED s8 playerId, UNUSED s8 screenId) {
|
||||
if (((player->unk_0CA & 8) != 0) || ((player->unk_0CA & 2) != 0)) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// Green shell
|
||||
if ((player->effects & HIT_BY_GREEN_SHELL_EFFECT) == HIT_BY_GREEN_SHELL_EFFECT) {
|
||||
player->soundEffects &= 0xFF5D457E;
|
||||
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// Spinout (banana or driving)
|
||||
if (((player->effects & BANANA_SPINOUT_EFFECT) == BANANA_SPINOUT_EFFECT) ||
|
||||
((player->effects & DRIVING_SPINOUT_EFFECT) == DRIVING_SPINOUT_EFFECT)) {
|
||||
player->soundEffects &= 0xFF5F457E;
|
||||
player->triggers &= (ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS)) | UNUSED_TRIGGER_0x20000;
|
||||
}
|
||||
// Near spinout (banana)
|
||||
if ((player->effects & BANANA_NEAR_SPINOUT_EFFECT) == BANANA_NEAR_SPINOUT_EFFECT) {
|
||||
player->soundEffects &= 0xFF5D457E;
|
||||
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
if ((player->unk_044 & 0x4000) != 0) {
|
||||
player->soundEffects &= 0xFF5D457E;
|
||||
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
//unclear
|
||||
if ((player->effects & UNKNOWN_EFFECT_0x80000) == UNKNOWN_EFFECT_0x80000) {
|
||||
player->soundEffects &= 0xFE1D4478;
|
||||
player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
//unclear
|
||||
if ((player->effects & UNKNOWN_EFFECT_0x800000) == UNKNOWN_EFFECT_0x800000) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
//squished
|
||||
if ((player->effects & SQUISH_EFFECT) == SQUISH_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D0578;
|
||||
player->triggers &= (ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS)) | THWOMP_SQUISH_TRIGGER;
|
||||
}
|
||||
//explosion crash
|
||||
if ((player->effects & EXPLOSION_CRASH_EFFECT) == EXPLOSION_CRASH_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D4478;
|
||||
player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// hit by star or red shell
|
||||
if ((player->effects & HIT_BY_STAR_EFFECT) == HIT_BY_STAR_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D4478;
|
||||
player->triggers &= ALL_TRIGGERS & ~((HIT_TRIGGERS ^ LIGHTNING_STRIKE_TRIGGER) | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// boost asphalt
|
||||
if ((player->effects & BOOST_RAMP_ASPHALT_EFFECT) == BOOST_RAMP_ASPHALT_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// boost ramp
|
||||
if ((player->effects & BOOST_RAMP_WOOD_EFFECT) == BOOST_RAMP_WOOD_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// Terrain tumble
|
||||
if ((player->effects & TERRAIN_TUMBLE_EFFECT) == TERRAIN_TUMBLE_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// star
|
||||
if ((player->effects & STAR_EFFECT) == STAR_EFFECT) {
|
||||
player->soundEffects &= 0xFE9D8478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | SHROOM_TRIGGER | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// boo
|
||||
if ((player->effects & BOO_EFFECT) == BOO_EFFECT) {
|
||||
player->soundEffects &= 0xFE9D8678;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// early start spinout
|
||||
if ((player->effects & EARLY_START_SPINOUT_EFFECT) == EARLY_START_SPINOUT_EFFECT) {
|
||||
player->soundEffects &= 0xFF5D45FF;
|
||||
player->triggers &= ALL_TRIGGERS & ~(ANY_BOOST_TRIGGERS | SPINOUT_TRIGGER | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
// CPU_FAST_EFFECTS
|
||||
if ((player->effects & LIGHTNING_STRIKE_EFFECT) == LIGHTNING_STRIKE_EFFECT) {
|
||||
player->soundEffects &= 0xFE1D0478;
|
||||
player->triggers &= ALL_TRIGGERS & ~(HIT_TRIGGERS | ANY_BOOST_TRIGGERS | RACING_SPINOUT_TRIGGERS | STATE_TRANSITION_TRIGGERS);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8002B830(Player* player, s8 playerId, s8 screenId) {
|
||||
if (player->soundEffects != 0) {
|
||||
if (player->triggers != 0) {
|
||||
func_8002B5C0(player, playerId, screenId);
|
||||
}
|
||||
if (player->soundEffects != 0) {
|
||||
apply_sound_effect(player, playerId, screenId);
|
||||
if (player->triggers != 0) {
|
||||
apply_triggers(player, playerId, screenId);
|
||||
}
|
||||
if ((player->unk_044 & 0x400) != 0) {
|
||||
func_800911B4(player, playerId);
|
||||
|
@ -2000,10 +2014,10 @@ void apply_effect(Player* player, s8 playerIndex, s8 arg2) {
|
|||
player_decelerate_alternative(player, 10.0f);
|
||||
}
|
||||
if (D_800DC510 != 5) {
|
||||
if (player->soundEffects & 0x04000000) {
|
||||
if (player->triggers & LOSE_BATTLE_EFFECT) {
|
||||
func_8008FC64(player, playerIndex);
|
||||
}
|
||||
if (player->soundEffects & 0x08000000) {
|
||||
if (player->triggers & BECOME_BOMB_EFFECT) {
|
||||
func_8008FCDC(player, playerIndex);
|
||||
}
|
||||
}
|
||||
|
@ -3354,9 +3368,10 @@ void player_accelerate_alternative(Player* player) {
|
|||
player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||
}
|
||||
player->unk_044 |= 0x20;
|
||||
if ((player->soundEffects * 8) < 0) {
|
||||
// Hacky way to check for START_SPINOUT_TRIGGER
|
||||
if ((player->triggers * 8) < 0) {
|
||||
func_8008F104(player, player_index);
|
||||
player->soundEffects &= 0xEFFFFFFF;
|
||||
player->triggers &= ~START_SPINOUT_TRIGGER;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3378,9 +3393,10 @@ void player_decelerate_alternative(Player* player, f32 speed) {
|
|||
player->unk_08C = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||
}
|
||||
player->unk_044 &= 0xFFDF;
|
||||
if ((player->soundEffects * 8) < 0) {
|
||||
// Hacky way to check for START_SPINOUT_TRIGGER
|
||||
if ((player->triggers * 8) < 0) {
|
||||
func_8008F104(player, player_index);
|
||||
player->soundEffects &= 0xEFFFFFFF;
|
||||
player->triggers &= ~START_SPINOUT_TRIGGER;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3620,11 +3636,11 @@ void player_accelerate_during_start_sequence(Player* player) {
|
|||
var_v0 = 8;
|
||||
}
|
||||
if ((time_delta < var_v0) && ((player->unk_044 & 0x20) != 0x20)) {
|
||||
player->soundEffects |= 0x02000000;
|
||||
player->triggers |= START_BOOST_TRIGGER;
|
||||
} else if ((player->topSpeed * 0.9f) <= player->currentSpeed) {
|
||||
if ((player->soundEffects & 0x02000000) != 0x02000000) {
|
||||
player->soundEffects |= 0x10000000;
|
||||
player->soundEffects &= ~0x02000000;
|
||||
if ((player->triggers & START_BOOST_TRIGGER) != START_BOOST_TRIGGER) {
|
||||
player->triggers |= START_SPINOUT_TRIGGER;
|
||||
player->triggers &= ~START_BOOST_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3644,9 +3660,9 @@ void player_decelerate_during_start_sequence(Player* player, f32 speedReduction)
|
|||
player->currentSpeed = player->topSpeed;
|
||||
}
|
||||
if ((f64) player->currentSpeed <= (player->topSpeed * 0.7)) {
|
||||
player->soundEffects &= ~0x10000000;
|
||||
player->triggers &= ~START_SPINOUT_TRIGGER;
|
||||
}
|
||||
player->soundEffects &= ~0x02000000;
|
||||
player->triggers &= ~START_BOOST_TRIGGER;
|
||||
player->unk_044 &= ~0x0020;
|
||||
player->unk_098 = (player->currentSpeed * player->currentSpeed) / 25.0f;
|
||||
}
|
||||
|
@ -3898,7 +3914,7 @@ void func_80033AE0(Player* player, struct Controller* controller, s8 arg2) {
|
|||
(!(player->effects & MIDAIR_EFFECT))) &&
|
||||
(((player->speed / 18.0f) * 216.0f) >= 40.0f)) &&
|
||||
(player->unk_204 == 0)) {
|
||||
player->soundEffects |= 0x80;
|
||||
player->triggers |= DRIVING_SPINOUT_TRIGGER;
|
||||
}
|
||||
}
|
||||
if (((s32) player->tyres[BACK_RIGHT].surfaceType) < 0xF) {
|
||||
|
|
|
@ -45,7 +45,7 @@ void func_8002AE30(void);
|
|||
void func_8002AE38(Player*, s8, f32, f32, f32, f32);
|
||||
|
||||
void func_8002B218(Player*);
|
||||
void apply_sound_effect(Player*, s8, s8);
|
||||
void apply_triggers(Player*, s8, s8);
|
||||
void func_8002B5C0(Player*, s8, s8);
|
||||
void func_8002B830(Player*, s8, s8);
|
||||
void func_8002B8A4(Player*, Player*);
|
||||
|
|
|
@ -1658,13 +1658,13 @@ bool collision_yoshi_egg(Player* player, struct YoshiValleyEgg* egg) {
|
|||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||
func_800C90F4(player - gPlayerOne, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x0D));
|
||||
} else {
|
||||
apply_hit_sound_effect(player, player - gPlayerOne);
|
||||
trigger_squish(player, player - gPlayerOne);
|
||||
if ((gModeSelection == TIME_TRIALS) && ((player->type & PLAYER_CPU) == 0)) {
|
||||
gPostTTReplayCannotSave = 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
apply_hit_sound_effect(player, player - gPlayerOne);
|
||||
trigger_squish(player, player - gPlayerOne);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -1862,7 +1862,7 @@ void destroy_destructable_actor(struct Actor* actor) {
|
|||
break;
|
||||
case HELD_BANANA:
|
||||
player = &gPlayers[banana->playerId];
|
||||
player->soundEffects &= ~0x00040000;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
/* fallthrough */
|
||||
case BANANA_ON_GROUND:
|
||||
banana->flags = -0x8000;
|
||||
|
@ -1957,7 +1957,7 @@ void destroy_destructable_actor(struct Actor* actor) {
|
|||
fakeItemBox = (struct FakeItemBox*) actor;
|
||||
player = &gPlayers[(s16) fakeItemBox->playerId];
|
||||
if (fakeItemBox->state == HELD_FAKE_ITEM_BOX) {
|
||||
player->soundEffects &= ~0x00040000;
|
||||
player->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
}
|
||||
fakeItemBox->state = DESTROYED_FAKE_ITEM_BOX;
|
||||
fakeItemBox->flags = -0x8000;
|
||||
|
@ -2081,7 +2081,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
(BOO_EFFECT | BANANA_NEAR_SPINOUT_EFFECT | BANANA_SPINOUT_EFFECT | DRIVING_SPINOUT_EFFECT)) {
|
||||
break;
|
||||
}
|
||||
if (player->soundEffects & 1) {
|
||||
if (player->triggers & HIT_BANANA_TRIGGER) {
|
||||
break;
|
||||
}
|
||||
temp_v1 = actor->rot[0];
|
||||
|
@ -2089,7 +2089,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
(query_collision_player_vs_actor_item(player, actor) != COLLISION)) {
|
||||
break;
|
||||
}
|
||||
player->soundEffects |= 1;
|
||||
player->triggers |= HIT_BANANA_TRIGGER;
|
||||
owner = &gPlayers[temp_v1];
|
||||
if (owner->type & 0x4000) {
|
||||
if (actor->flags & 0xF) {
|
||||
|
@ -2110,7 +2110,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
if (player->effects & (BOO_EFFECT | HIT_BY_GREEN_SHELL_EFFECT)) {
|
||||
break;
|
||||
}
|
||||
if (player->soundEffects & 4) {
|
||||
if (player->triggers & LOW_TUMBLE_TRIGGER) {
|
||||
break;
|
||||
}
|
||||
temp_v1 = actor->rot[2];
|
||||
|
@ -2118,7 +2118,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
(query_collision_player_vs_actor_item(player, actor) != COLLISION)) {
|
||||
break;
|
||||
}
|
||||
player->soundEffects |= 4;
|
||||
player->triggers |= LOW_TUMBLE_TRIGGER;
|
||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||
owner = &gPlayers[temp_v1];
|
||||
if ((owner->type & 0x4000) && (temp_lo != temp_v1)) {
|
||||
|
@ -2127,7 +2127,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
destroy_destructable_actor(actor);
|
||||
break;
|
||||
case ACTOR_BLUE_SPINY_SHELL:
|
||||
if (player->soundEffects & 2) {
|
||||
if (player->triggers & HIGH_TUMBLE_TRIGGER) {
|
||||
break;
|
||||
}
|
||||
temp_v1 = actor->rot[2];
|
||||
|
@ -2136,7 +2136,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
break;
|
||||
}
|
||||
if (!(player->effects & BOO_EFFECT)) {
|
||||
player->soundEffects |= 2;
|
||||
player->triggers |= HIGH_TUMBLE_TRIGGER;
|
||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||
}
|
||||
owner = &gPlayers[temp_v1];
|
||||
|
@ -2152,7 +2152,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
if (player->effects & EXPLOSION_CRASH_EFFECT) {
|
||||
break;
|
||||
}
|
||||
if (player->soundEffects & 2) {
|
||||
if (player->triggers & HIGH_TUMBLE_TRIGGER) {
|
||||
break;
|
||||
}
|
||||
temp_v1 = actor->rot[2];
|
||||
|
@ -2161,7 +2161,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
break;
|
||||
}
|
||||
if (!(player->effects & BOO_EFFECT)) {
|
||||
player->soundEffects |= 2;
|
||||
player->triggers |= HIGH_TUMBLE_TRIGGER;
|
||||
func_800C98B8(player->pos, player->velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x10));
|
||||
}
|
||||
owner = &gPlayers[temp_v1];
|
||||
|
@ -2206,7 +2206,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
if (player->effects & STAR_EFFECT) {
|
||||
actor->velocity[1] = 10.0f;
|
||||
} else {
|
||||
apply_hit_sound_effect(player, player - gPlayerOne);
|
||||
trigger_squish(player, player - gPlayerOne);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2221,7 +2221,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
(query_collision_player_vs_actor_item(player, actor) != COLLISION)) {
|
||||
break;
|
||||
}
|
||||
player->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
player->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
owner = &gPlayers[temp_v1];
|
||||
if (owner->type & 0x4000) {
|
||||
if (actor->flags & 0xF) {
|
||||
|
@ -2236,7 +2236,7 @@ void evaluate_collision_between_player_actor(Player* player, struct Actor* actor
|
|||
}
|
||||
}
|
||||
if (actor->state == 0) {
|
||||
owner->soundEffects &= ~0x00040000;
|
||||
owner->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
}
|
||||
}
|
||||
actor->state = 2;
|
||||
|
|
|
@ -293,7 +293,7 @@ void update_actor_banana_bunch(struct BananaBunchParent* banana_bunch) {
|
|||
}
|
||||
if (someCount == 0) {
|
||||
destroy_actor((struct Actor*) banana_bunch);
|
||||
owner->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
owner->triggers &= ~DRAG_ITEM_EFFECT;
|
||||
} else if ((owner->type & 0x4000) != 0) {
|
||||
controller = &gControllers[banana_bunch->playerId];
|
||||
if ((controller->buttonPressed & Z_TRIG) != 0) {
|
||||
|
@ -525,7 +525,7 @@ s32 use_banana_bunch_item(Player* player) {
|
|||
bananaBunch = (struct BananaBunchParent*) &gActorList[actorIndex];
|
||||
bananaBunch->state = 0;
|
||||
bananaBunch->playerId = player - gPlayerOne;
|
||||
player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers |= DRAG_ITEM_EFFECT;
|
||||
return actorIndex;
|
||||
}
|
||||
|
||||
|
@ -803,7 +803,7 @@ s32 use_fake_itembox_item(Player* player) {
|
|||
itemBox = (struct FakeItemBox*) &gActorList[actorIndex];
|
||||
itemBox->playerId = (player - gPlayerOne);
|
||||
itemBox->state = HELD_FAKE_ITEM_BOX;
|
||||
player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers |= DRAG_ITEM_EFFECT;
|
||||
return actorIndex;
|
||||
}
|
||||
|
||||
|
@ -850,7 +850,7 @@ s32 use_banana_item(Player* player) {
|
|||
banana->playerId = playerId;
|
||||
banana->state = HELD_BANANA;
|
||||
banana->unk_04 = 0x0014;
|
||||
player->soundEffects |= HOLD_BANANA_SOUND_EFFECT;
|
||||
player->triggers |= DRAG_ITEM_EFFECT;
|
||||
return actorIndex;
|
||||
}
|
||||
|
||||
|
@ -872,7 +872,7 @@ void use_thunder_item(Player* player) {
|
|||
for (index = 0; index < NUM_PLAYERS; index++) {
|
||||
otherPlayer = &gPlayers[index];
|
||||
if (player != otherPlayer) {
|
||||
otherPlayer->soundEffects |= HIT_ROTATING_SOUND_EFFECT;
|
||||
otherPlayer->triggers |= LIGHTNING_STRIKE_TRIGGER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -898,22 +898,22 @@ void player_use_item(Player* player) {
|
|||
use_banana_bunch_item(player);
|
||||
break;
|
||||
case ITEM_MUSHROOM:
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
break;
|
||||
case ITEM_DOUBLE_MUSHROOM:
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
break;
|
||||
case ITEM_TRIPLE_MUSHROOM:
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
break;
|
||||
case ITEM_SUPER_MUSHROOM:
|
||||
player->soundEffects |= BOOST_SOUND_EFFECT;
|
||||
player->triggers |= SHROOM_TRIGGER;
|
||||
break;
|
||||
case ITEM_BOO:
|
||||
player->soundEffects |= BOO_SOUND_EFFECT;
|
||||
player->triggers |= BOO_TRIGGER;
|
||||
break;
|
||||
case ITEM_STAR:
|
||||
player->soundEffects |= STAR_SOUND_EFFECT;
|
||||
player->triggers |= STAR_TRIGGER;
|
||||
break;
|
||||
case ITEM_THUNDERBOLT:
|
||||
use_thunder_item(player);
|
||||
|
|
|
@ -583,7 +583,7 @@ void func_8028EF28(void) {
|
|||
}
|
||||
D_800DC510 = 5;
|
||||
i = gPlayerPositionLUT[1];
|
||||
gPlayers[i].soundEffects |= 0x200000;
|
||||
gPlayers[i].triggers |= SPINOUT_TRIGGER;
|
||||
gPlayers[i].type |= PLAYER_CPU;
|
||||
func_800CA118((u8) i);
|
||||
break;
|
||||
|
@ -601,7 +601,7 @@ void func_8028EF28(void) {
|
|||
if (*(gNmiUnknown2 + i * 3 + 2) > 99) {
|
||||
*(gNmiUnknown2 + i * 3 + 2) = 99;
|
||||
}
|
||||
gPlayers[i].soundEffects |= 0x200000;
|
||||
gPlayers[i].triggers |= SPINOUT_TRIGGER;
|
||||
gPlayers[i].type |= PLAYER_CPU;
|
||||
func_800CA118((u8) i);
|
||||
}
|
||||
|
@ -616,7 +616,7 @@ void func_8028EF28(void) {
|
|||
if (currentPosition == 2) {
|
||||
D_800DC510 = 5;
|
||||
i = gPlayerPositionLUT[3];
|
||||
gPlayers[i].soundEffects |= 0x200000;
|
||||
gPlayers[i].triggers |= SPINOUT_TRIGGER;
|
||||
gPlayers[i].type |= PLAYER_CPU;
|
||||
func_800CA118((u8) i);
|
||||
}
|
||||
|
@ -1156,22 +1156,22 @@ void func_802903D8(Player* playerOne, Player* playerTwo) {
|
|||
func_800C9060((playerTwo - gPlayerOne), 0x19008001U);
|
||||
return;
|
||||
} else {
|
||||
playerTwo->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
playerTwo->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
func_8008FC1C(playerOne);
|
||||
func_800C9060((playerTwo - gPlayerOne), 0x19008001U);
|
||||
}
|
||||
} else if (playerTwo->type & PLAYER_UNKNOWN_0x40) {
|
||||
playerOne->soundEffects |= REVERSE_SOUND_EFFECT;
|
||||
playerOne->triggers |= VERTICAL_TUMBLE_TRIGGER;
|
||||
func_8008FC1C(playerTwo);
|
||||
func_800C9060(playerOne - gPlayerOne, 0x19008001U);
|
||||
return;
|
||||
}
|
||||
if (playerOne->effects & STAR_EFFECT) {
|
||||
if (!(playerTwo->effects & STAR_EFFECT)) {
|
||||
playerTwo->soundEffects |= HIT_BY_STAR_SOUND_EFFECT;
|
||||
playerTwo->triggers |= HIT_BY_STAR_TRIGGER;
|
||||
}
|
||||
} else if (playerTwo->effects & STAR_EFFECT) {
|
||||
playerOne->soundEffects |= HIT_BY_STAR_SOUND_EFFECT;
|
||||
playerOne->triggers |= HIT_BY_STAR_TRIGGER;
|
||||
} else {
|
||||
playerOne->effects |= ENEMY_BONK_EFFECT;
|
||||
playerTwo->effects |= ENEMY_BONK_EFFECT;
|
||||
|
|
|
@ -1502,8 +1502,8 @@ void render_kart(Player* player, s8 playerId, s8 arg2, s8 flipOffset) {
|
|||
AA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_WRAP | ZMODE_XLU | CVG_X_ALPHA | FORCE_BL |
|
||||
GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA));
|
||||
}
|
||||
} else if (((player->unk_0CA & 4) == 4) || (player->soundEffects & 0x08000000) ||
|
||||
(player->soundEffects & 0x04000000)) {
|
||||
} else if (((player->unk_0CA & 4) == 4) || (player->triggers & BECOME_BOMB_EFFECT) ||
|
||||
(player->triggers & LOSE_BATTLE_EFFECT)) {
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxKart[playerId + (arg2 * 8)]),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gDisplayListHead++, common_setting_render_character);
|
||||
|
|
|
@ -156,7 +156,7 @@ void spawn_player(Player* player, s8 playerIndex, f32 startingRow, f32 startingC
|
|||
player->unk_DAC = 0.0f;
|
||||
player->unk_044 = 0;
|
||||
player->unk_046 = 0;
|
||||
player->soundEffects = 0;
|
||||
player->triggers = 0;
|
||||
player->alpha = ALPHA_MAX;
|
||||
|
||||
player->unk_206 = 0;
|
||||
|
|
|
@ -5973,7 +5973,7 @@ void func_80080B28(s32 objectIndex, s32 playerId) {
|
|||
|
||||
temp_s0 = &gPlayerOne[playerId];
|
||||
if (is_obj_flag_status_active(objectIndex, 0x00000200) != 0) {
|
||||
if (!(temp_s0->soundEffects & 0x100)) {
|
||||
if (!(temp_s0->triggers & THWOMP_SQUISH_TRIGGER)) {
|
||||
temp_f0 = func_80088F54(objectIndex, temp_s0);
|
||||
if ((temp_f0 <= 9.0) && !(temp_s0->effects & SQUISH_EFFECT) &&
|
||||
(has_collided_horizontally_with_player(objectIndex, temp_s0) != 0)) {
|
||||
|
@ -6004,7 +6004,7 @@ void func_80080B28(s32 objectIndex, s32 playerId) {
|
|||
func_800722A4(objectIndex, 2);
|
||||
temp_s0->unk_040 = (s16) objectIndex;
|
||||
temp_s0->unk_046 |= 2;
|
||||
temp_s0->soundEffects |= 0x100;
|
||||
temp_s0->triggers |= THWOMP_SQUISH_TRIGGER;
|
||||
func_80088FF0(temp_s0);
|
||||
}
|
||||
}
|
||||
|
@ -6021,7 +6021,7 @@ void func_80080DE4(s32 arg0) {
|
|||
player = gPlayerOne;
|
||||
for (var_v1 = 0; var_v1 < NUM_PLAYERS; var_v1++, player++) {
|
||||
if (arg0 == player->unk_040) {
|
||||
player->soundEffects &= ~0x100;
|
||||
player->triggers &= ~THWOMP_SQUISH_TRIGGER;
|
||||
player->unk_040 = -1;
|
||||
}
|
||||
}
|
||||
|
@ -6389,7 +6389,7 @@ void func_80081D34(s32 objectIndex) {
|
|||
if (player->effects & STAR_EFFECT) {
|
||||
func_800C9060(playerIndex, 0x1900A046U);
|
||||
} else {
|
||||
player->soundEffects |= 2;
|
||||
player->triggers |= HIGH_TUMBLE_TRIGGER;
|
||||
}
|
||||
object->direction_angle[1] = var_s4->rot[1];
|
||||
object->velocity[1] = (player->speed / 2) + 3.0;
|
||||
|
|
Loading…
Reference in New Issue