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);