From e2d128deb05b972fc9cca2cdb84ebe22a0dc27b9 Mon Sep 17 00:00:00 2001 From: Aeshur Date: Mon, 6 Apr 2026 07:26:18 -0400 Subject: [PATCH] [c++] Fix Moghouse entry in WoTG + SoA --- src/map/packets/c2s/0x05e_maprect.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/map/packets/c2s/0x05e_maprect.cpp b/src/map/packets/c2s/0x05e_maprect.cpp index abe25af7002..7ecd84b1436 100644 --- a/src/map/packets/c2s/0x05e_maprect.cpp +++ b/src/map/packets/c2s/0x05e_maprect.cpp @@ -21,6 +21,8 @@ #include "0x05e_maprect.h" +#include + #include "common/utils.h" #include "entities/charentity.h" #include "enums/msg_std.h" @@ -63,8 +65,13 @@ void GP_CLI_COMMAND_MAPRECT::process(MapSession* PSession, CCharEntity* PChar) c PChar->ClearTrusts(); - auto isMogHouseExit = std::memcmp(&this->RectID, "zmrq", 4) == 0; // zmrq is the universal Mog House exit zoneline - auto isMogHouseEntrance = std::memcmp(&this->RectID, "zmr", 3) == 0; // zmr* are zone-specific Mog House entry zonelines + // RectID is a uint32_t holding a 4-character zoneline tag (fourcc); reinterpret as exactly 4 bytes (no trailing NUL). + const std::string_view rectView(reinterpret_cast(&this->RectID), 4); + + const auto isMogHouseExit = rectView == "zmrq"; // universal Mog House exit zoneline + + const std::string_view mogEntrancePrefix = rectView.substr(0, 3); + const auto isMogHouseEntrance = mogEntrancePrefix == "zmr" || mogEntrancePrefix == "zms"; // zmr* classic cities; zms* WoTG [S] + Adoulin if (PChar->status == STATUS_TYPE::NORMAL) {