Fix koopa the quick sound spam and cheat detection

This commit is contained in:
MysterD 2020-09-08 09:06:25 -07:00
parent ef95d6820b
commit a804981b2a
3 changed files with 12 additions and 16 deletions

View file

@ -120,7 +120,9 @@ void opened_cannon_act_1(void) {
o->oMoveAngleYaw = marioState->marioObj->oMarioCannonObjectYaw + marioState->marioObj->oMarioCannonInputYaw; o->oMoveAngleYaw = marioState->marioObj->oMarioCannonObjectYaw + marioState->marioObj->oMarioCannonInputYaw;
} }
o->oCannonUnk10C = 0; o->oCannonUnk10C = 0;
gMarioShotFromCannon = 1; if (o->oCannonIsLocal) {
gMarioShotFromCannon = 1;
}
} }
void opened_cannon_act_2(void) { void opened_cannon_act_2(void) {

View file

@ -913,14 +913,7 @@ void koopa_the_quick_force_end_race(void) {
level_control_timer(TIMER_CONTROL_STOP); level_control_timer(TIMER_CONTROL_STOP);
if (!o->oKoopaRaceEndpointKoopaFinished) { if (!o->oKoopaRaceEndpointKoopaFinished) {
network_send_object(o);
play_race_fanfare(); play_race_fanfare();
if (gMarioShotFromCannon) {
o->oKoopaRaceEndpointRaceStatus = -1;
}
else {
o->oKoopaRaceEndpointRaceStatus = 1;
}
} }
koopaForceEndRace = FALSE; koopaForceEndRace = FALSE;
} }
@ -931,6 +924,7 @@ void koopa_the_quick_force_end_race(void) {
void bhv_koopa_race_endpoint_update(void) { void bhv_koopa_race_endpoint_update(void) {
if (!network_sync_object_initialized(o)) { if (!network_sync_object_initialized(o)) {
network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS); network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS);
network_init_object_field(o, &o->oKoopaRaceEndpointRaceStatus);
network_init_object_field(o, &koopaForceEndRace); network_init_object_field(o, &koopaForceEndRace);
} }
@ -944,16 +938,15 @@ void bhv_koopa_race_endpoint_update(void) {
level_control_timer(TIMER_CONTROL_STOP); level_control_timer(TIMER_CONTROL_STOP);
if (!o->oKoopaRaceEndpointKoopaFinished) { if (!o->oKoopaRaceEndpointKoopaFinished) {
koopaForceEndRace = TRUE;
network_send_object(o);
koopaForceEndRace = FALSE;
play_race_fanfare(); play_race_fanfare();
if (gMarioShotFromCannon) { if (gMarioShotFromCannon) {
o->oKoopaRaceEndpointRaceStatus = -1; o->oKoopaRaceEndpointRaceStatus = -1;
} else { } else {
o->oKoopaRaceEndpointRaceStatus = 1; o->oKoopaRaceEndpointRaceStatus = 1;
} }
koopaForceEndRace = TRUE;
network_send_object(o);
koopaForceEndRace = FALSE;
} }
} }
} }

View file

@ -51,15 +51,16 @@ void set_home_to_mario(void) {
break; break;
} }
} }
struct Object* player = nearest_player_to_object(o);
if (parentIsMario) { if (parentIsMario) {
o->oHomeX = o->parentObj->oPosX; o->oHomeX = o->parentObj->oPosX;
o->oHomeZ = o->parentObj->oPosZ; o->oHomeZ = o->parentObj->oPosZ;
o->oHomeY = o->parentObj->oPosY; o->oHomeY = o->parentObj->oPosY;
} else { } else {
o->oHomeX = gMarioObject->oPosX; struct Object* player = nearest_player_to_object(o);
o->oHomeZ = gMarioObject->oPosZ; o->oHomeX = player->oPosX;
o->oHomeY = gMarioObject->oPosY; o->oHomeZ = player->oPosZ;
o->oHomeY = player->oPosY;
} }
o->oHomeY += 250.0f; o->oHomeY += 250.0f;
o->oPosY = o->oHomeY; o->oPosY = o->oHomeY;