From 20b189a9dacdb7bd5fcdbd71936a38cea7212a76 Mon Sep 17 00:00:00 2001 From: shenlei Date: Wed, 30 Sep 2026 09:42:10 +0900 Subject: [PATCH] client: the player's own character walks through buildings and blocked cells The server checks a move only for its distance and speed, so the local character skips the background-object and map-attribute collision. Other characters and doors still block it. Co-Authored-By: Claude Opus 5.5 --- src/port/UserInterface/InstanceBaseBattle.cpp | 4 ++++ src/port/UserInterface/PythonBackground.cpp | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/port/UserInterface/InstanceBaseBattle.cpp b/src/port/UserInterface/InstanceBaseBattle.cpp index 3ac2e071..33276e65 100644 --- a/src/port/UserInterface/InstanceBaseBattle.cpp +++ b/src/port/UserInterface/InstanceBaseBattle.cpp @@ -605,6 +605,10 @@ BOOL CInstanceBase::CheckAdvancing() } // 맵속성 체크 + // PORT: nor does the player's own character stop at blocked map cells; see CPythonBackground::CheckAdvancing. + if (__IsMainInstance()) + return FALSE; + CPythonBackground& rkBG=CPythonBackground::Instance(); const D3DXVECTOR3 & rv3Position = m_GraphicThingInstance.GetPosition(); const D3DXVECTOR3 & rv3MoveDirection = m_GraphicThingInstance.GetMovementVectorRef(); diff --git a/src/port/UserInterface/PythonBackground.cpp b/src/port/UserInterface/PythonBackground.cpp index 87d7d5ee..ab5c7b02 100644 --- a/src/port/UserInterface/PythonBackground.cpp +++ b/src/port/UserInterface/PythonBackground.cpp @@ -612,6 +612,11 @@ bool CPythonBackground::CheckAdvancing(CInstanceBase * pInstance) if (!IsMapReady()) return true; + // PORT: the player's own character walks through buildings and other background objects. The server + // checks a move only for its distance and speed (CInputMain::Move), so it accepts the position. + if (pInstance == CPythonCharacterManager::Instance().GetMainInstancePtr()) + return false; + Vector3d center; float radius; pInstance->GetGraphicThingInstanceRef().GetBoundingSphere(center,radius);