From ccf2af43c14608da4ef52f248832e1e8b7975482 Mon Sep 17 00:00:00 2001 From: flan Date: Thu, 31 Jul 2025 23:35:24 +0200 Subject: [PATCH] Explicitly set default facing direction to south Both server[0] and client[1] code assume the default is 0 (`f` is sent only if the client's facing value is other than 0), but the liblcf default is actually 2 (down)[2]. Fixes an issue where a player facing north (0) would show up as facing south (2) after logging out or switching to private mode. [0]: https://github.com/ynoproject/ynoserver/blob/2db0c7f392665e06761ffeafa85ac7171e6160c0/server/room.go#L340 [1]: https://github.com/ynoproject/ynoengine/blob/ddec6fd42a10d3788600dcb0454f7581b2b3eb31/src/multiplayer/game_multiplayer.cpp#L561 [2]: https://github.com/EasyRPG/liblcf/blob/92c4450a1bc1acb58bd02bbb99b57e5036919cdf/src/generated/lcf/rpg/savemapeventbase.h#L37 --- src/game_playerother.h | 3 +++ src/multiplayer/game_multiplayer.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/game_playerother.h b/src/game_playerother.h index be431e1c9..24feee6b0 100644 --- a/src/game_playerother.h +++ b/src/game_playerother.h @@ -12,8 +12,11 @@ using Game_PlayerBase = Game_CharacterDataStorage; */ class Game_PlayerOther : public Game_PlayerBase { public: + static constexpr int DEFAULT_FACING = Down; + Game_PlayerOther(int id) : Game_CharacterDataStorage(PlayerOther), id(id) { + SetFacing(DEFAULT_FACING); SetDirection(lcf::rpg::EventPage::Direction_down); SetMoveSpeed(4); SetAnimationType(lcf::rpg::EventPage::AnimType_non_continuous); diff --git a/src/multiplayer/game_multiplayer.cpp b/src/multiplayer/game_multiplayer.cpp index bbda99587..ddfea4964 100644 --- a/src/multiplayer/game_multiplayer.cpp +++ b/src/multiplayer/game_multiplayer.cpp @@ -558,7 +558,7 @@ void Game_Multiplayer::SendBasicData() { connection.SendPacketAsync(player->GetMoveSpeed()); connection.SendPacketAsync(player->GetSpriteName(), player->GetSpriteIndex()); - if (player->GetFacing() > 0) { + if (player->GetFacing() != Game_PlayerOther::DEFAULT_FACING) { connection.SendPacketAsync(player->GetFacing()); } connection.SendPacketAsync(player->IsSpriteHidden());