mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Synchronized bowser bombs
This commit is contained in:
parent
81d23b3cc9
commit
10bdd1e1fe
1 changed files with 40 additions and 10 deletions
|
|
@ -1,18 +1,48 @@
|
||||||
// bowser_bomb.c.inc
|
// bowser_bomb.c.inc
|
||||||
|
|
||||||
|
static s32 networkBowserBombHit = 0;
|
||||||
|
|
||||||
|
static void bhv_bowser_bomb_hit_player(void) {
|
||||||
|
if (networkBowserBombHit == 0) {
|
||||||
|
networkBowserBombHit = o->oSyncID;
|
||||||
|
network_send_object(o);
|
||||||
|
}
|
||||||
|
networkBowserBombHit = 0;
|
||||||
|
|
||||||
|
o->oInteractStatus &= ~INT_STATUS_INTERACTED;
|
||||||
|
spawn_object(o, MODEL_EXPLOSION, bhvExplosion);
|
||||||
|
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bhv_bowser_bomb_interacted(void) {
|
||||||
|
if (networkBowserBombHit == 0) {
|
||||||
|
networkBowserBombHit = -o->oSyncID;
|
||||||
|
network_send_object(o);
|
||||||
|
}
|
||||||
|
networkBowserBombHit = 0;
|
||||||
|
|
||||||
|
spawn_object(o, MODEL_BOWSER_FLAMES, bhvBowserBombExplosion);
|
||||||
|
create_sound_spawner(SOUND_GENERAL_BOWSER_BOMB_EXPLOSION);
|
||||||
|
set_camera_shake_from_point(SHAKE_POS_LARGE, o->oPosX, o->oPosY, o->oPosZ);
|
||||||
|
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
|
||||||
|
}
|
||||||
|
|
||||||
void bhv_bowser_bomb_loop(void) {
|
void bhv_bowser_bomb_loop(void) {
|
||||||
if (obj_check_if_collided_with_object(o, gMarioObject) == 1) {
|
if (!network_sync_object_initialized(o)) {
|
||||||
o->oInteractStatus &= ~INT_STATUS_INTERACTED;
|
struct SyncObject* so = network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS);
|
||||||
spawn_object(o, MODEL_EXPLOSION, bhvExplosion);
|
so->syncDeathEvent = FALSE;
|
||||||
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
|
network_init_object_field(o, &networkBowserBombHit);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (o->oInteractStatus & INT_STATUS_HIT_MINE)
|
struct MarioState* marioState = nearest_mario_state_to_object(o);
|
||||||
{
|
struct Object* player = marioState->marioObj;
|
||||||
spawn_object(o, MODEL_BOWSER_FLAMES, bhvBowserBombExplosion);
|
|
||||||
create_sound_spawner(SOUND_GENERAL_BOWSER_BOMB_EXPLOSION);
|
if (networkBowserBombHit == o->oSyncID || (marioState->playerIndex == 0 && obj_check_if_collided_with_object(o, player) == 1)) {
|
||||||
set_camera_shake_from_point(SHAKE_POS_LARGE, o->oPosX, o->oPosY, o->oPosZ);
|
bhv_bowser_bomb_hit_player();
|
||||||
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
|
}
|
||||||
|
|
||||||
|
if (networkBowserBombHit == -o->oSyncID || o->oInteractStatus & INT_STATUS_HIT_MINE) {
|
||||||
|
bhv_bowser_bomb_interacted();
|
||||||
}
|
}
|
||||||
|
|
||||||
set_object_visibility(o, 7000);
|
set_object_visibility(o, 7000);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue