From 047bc94fd18aa37b03480d0fca297dfc2798f483 Mon Sep 17 00:00:00 2001 From: MysterD Date: Mon, 30 Aug 2021 18:31:59 -0700 Subject: [PATCH] Fixed player-in-cutscene position/animations on late-join --- src/game/mario_actions_cutscene.c | 8 +++++++- src/pc/network/packets/packet_player.c | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c index 56749321..54a15058 100644 --- a/src/game/mario_actions_cutscene.c +++ b/src/game/mario_actions_cutscene.c @@ -460,6 +460,12 @@ s32 act_reading_npc_dialog(struct MarioState *m) { m->actionState++; } + if (m->playerIndex != 0 && gCurrentObject->header.gfx.unk38.animID == -1) { + // set animation + set_mario_animation(m, m->heldObj == NULL ? MARIO_ANIM_FIRST_PERSON + : MARIO_ANIM_IDLE_WITH_LIGHT_OBJ); + } + return FALSE; } @@ -869,7 +875,7 @@ s32 act_unlocking_key_door(struct MarioState *m) { m->faceAngle[1] += 0x8000; } - if (m->actionTimer == 0) { + if ((m->actionTimer == 0) || (m->playerIndex != 0 && gCurrentObject->header.gfx.unk38.animID == -1)) { spawn_obj_at_mario_rel_yaw(m, MODEL_BOWSER_KEY_CUTSCENE, bhvBowserKeyUnlockDoor, 0); set_mario_animation(m, MARIO_ANIM_UNLOCK_DOOR); } diff --git a/src/pc/network/packets/packet_player.c b/src/pc/network/packets/packet_player.c index 8a4d4ec6..2a450ba9 100644 --- a/src/pc/network/packets/packet_player.c +++ b/src/pc/network/packets/packet_player.c @@ -8,6 +8,7 @@ #include "game/area.h" #include "audio/external.h" #include "engine/surface_collision.h" +#include "engine/math_util.h" #include "game/object_list_processor.h" #include "game/mario_misc.h" #include "pc/configfile.h" @@ -350,8 +351,10 @@ void network_receive_player(struct Packet* p) { } // mark this player as visible - if (gNetworkAreaLoaded) { + if (gNetworkAreaLoaded && !m->wasNetworkVisible) { m->wasNetworkVisible = true; + vec3f_copy(m->marioObj->header.gfx.pos, m->pos); + vec3s_copy(m->marioObj->header.gfx.angle, m->faceAngle); } }