From 7580e4278ceba62246c71c7413544978564afc90 Mon Sep 17 00:00:00 2001 From: Mind Rapist Date: Sat, 20 Dec 2025 02:28:41 +0200 Subject: [PATCH] MR-2: Realtime character level updates + Macros removed --- src/GameLib/ActorInstance.h | 29 +++++++++++++++++-- src/GameLib/ActorInstanceAttach.cpp | 7 ----- src/UserInterface/InstanceBase.cpp | 18 ++++++------ src/UserInterface/InstanceBaseEffect.cpp | 34 ----------------------- src/UserInterface/Locale_inc.h | 9 ------ src/UserInterface/PythonNetworkStream.cpp | 4 --- 6 files changed, 35 insertions(+), 66 deletions(-) diff --git a/src/GameLib/ActorInstance.h b/src/GameLib/ActorInstance.h index dc49f3d..8b3e5bc 100644 --- a/src/GameLib/ActorInstance.h +++ b/src/GameLib/ActorInstance.h @@ -362,10 +362,22 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject BOOL IsActEmotion(); DWORD GetComboIndex(); float GetAttackingElapsedTime(); +#ifdef FIX_POS_SYNC + void SetBlendingPosition(const TPixelPosition& c_rPosition, float fBlendingTime = 1.0f); +#else void SetBlendingPosition(const TPixelPosition & c_rPosition, float fBlendingTime = 1.0f); +#endif void ResetBlendingPosition(); void GetBlendingPosition(TPixelPosition * pPosition); +#ifdef FIX_POS_SYNC + struct BlendingPosition { + D3DXVECTOR3 source; + D3DXVECTOR3 dest; + float duration; + }; +#endif + BOOL NormalAttack(float fDirRot, float fBlendTime = 0.1f); BOOL ComboAttack(DWORD wMotionIndex, float fDirRot, float fBlendTime = 0.1f); @@ -479,6 +491,13 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject void RenderCollisionData(); void RenderToShadowMap(); +#ifdef FIX_POS_SYNC + void ClientAttack(DWORD dwVID); + void ServerAttack(DWORD dwVID); + bool ProcessingClientAttack(DWORD dwVID); + bool ServerAttackCameFirst(DWORD dwVID); +#endif + protected: void __AdjustCollisionMovement(const CGraphicObjectInstance * c_pGraphicObjectInstance); @@ -496,9 +515,7 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject float GetHeight(); void ShowAllAttachingEffect(); void HideAllAttachingEffect(); -#ifdef __ENABLE_STEALTH_FIX__ //EXP void HideAllAttachingEffectForEunhyeong(); -#endif void ClearAttachingEffect(); // Fishing @@ -605,6 +622,10 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject void __ClearCombo(); void __OnEndCombo(); +#ifdef FIX_POS_SYNC + void __Push(const TPixelPosition& c_rkPPosDst, unsigned int unDuration); +#endif + void __ProcessDataAttackSuccess(const NRaceData::TAttackData & c_rAttackData, CActorInstance & rVictim, const D3DXVECTOR3 & c_rv3Position, UINT uiSkill = 0, BOOL isSendPacket = TRUE); void __ProcessMotionEventAttackSuccess(DWORD dwMotionKey, BYTE byEventIndex, CActorInstance & rVictim); void __ProcessMotionAttackSuccess(DWORD dwMotionKey, CActorInstance & rVictim); @@ -612,7 +633,11 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject void __HitStone(CActorInstance& rVictim); void __HitGood(CActorInstance& rVictim); +#ifdef FIX_POS_SYNC + void __HitGreate(CActorInstance& rVictim, UINT uiSkill); +#else void __HitGreate(CActorInstance& rVictim); +#endif void __PushDirect(CActorInstance & rVictim); void __PushCircle(CActorInstance & rVictim); diff --git a/src/GameLib/ActorInstanceAttach.cpp b/src/GameLib/ActorInstanceAttach.cpp index 0cfa5dc..535bc8b 100644 --- a/src/GameLib/ActorInstanceAttach.cpp +++ b/src/GameLib/ActorInstanceAttach.cpp @@ -580,10 +580,7 @@ void CActorInstance::ShowAllAttachingEffect() { CEffectManager::Instance().SelectEffectInstance(it->dwEffectIndex); CEffectManager::Instance().ShowEffect(); -#ifdef __ENABLE_STEALTH_FIX__ CEffectManager::Instance().ReleaseAlwaysHidden(); - //CEffectManager::Instance().Update(); -#endif } } @@ -595,13 +592,10 @@ void CActorInstance::HideAllAttachingEffect() { CEffectManager::Instance().SelectEffectInstance(it->dwEffectIndex); CEffectManager::Instance().HideEffect(); -#ifdef __ENABLE_STEALTH_FIX__ CEffectManager::Instance().ApplyAlwaysHidden(); -#endif } } -#ifdef __ENABLE_STEALTH_FIX__ //EXP void CActorInstance::HideAllAttachingEffectForEunhyeong() { std::list::iterator it; @@ -652,7 +646,6 @@ void CActorInstance::HideAllAttachingEffectForEunhyeong() CEffectManager::Instance().ApplyAlwaysHidden(); } } -#endif void CActorInstance::__ClearAttachingEffect() { diff --git a/src/UserInterface/InstanceBase.cpp b/src/UserInterface/InstanceBase.cpp index 0537f24..ef1cb90 100644 --- a/src/UserInterface/InstanceBase.cpp +++ b/src/UserInterface/InstanceBase.cpp @@ -448,11 +448,7 @@ BOOL CInstanceBase::IsMovieMode() BOOL CInstanceBase::IsInvisibility() { -#ifdef __ENABLE_STEALTH_FIX__ if (IsAffect(AFFECT_INVISIBILITY) || IsAffect(AFFECT_EUNHYEONG) || IsAffect(AFFECT_REVIVE_INVISIBILITY)) -#else - if (IsAffect(AFFECT_INVISIBILITY)) -#endif return true; return false; @@ -1560,7 +1556,11 @@ void CInstanceBase::StateProcess() SetAdvancingRotation(fRotDst); SetRotation(fRotDst); +#ifdef FIX_POS_SYNC + NEW_UseSkill(1, eFunc& FUNC_SKILL - 1, uArg & 0x0f, (uArg >> 4) ? true : false); +#else NEW_UseSkill(0, eFunc & 0x7f, uArg&0x0f, (uArg>>4) ? true : false); +#endif //Tracen("가깝기 때문에 워프 공격"); } } @@ -1738,7 +1738,11 @@ void CInstanceBase::MovementProcess() { SetAdvancingRotation(m_fDstRot); BlendRotation(m_fDstRot); +#ifdef FIX_POS_SYNC + NEW_UseSkill(1, m_kMovAfterFunc.eFunc& FUNC_SKILL - 1, m_kMovAfterFunc.uArg & 0x0f, (m_kMovAfterFunc.uArg >> 4) ? true : false); +#else NEW_UseSkill(0, m_kMovAfterFunc.eFunc & 0x7f, m_kMovAfterFunc.uArg&0x0f, (m_kMovAfterFunc.uArg>>4) ? true : false); +#endif } else { @@ -1794,11 +1798,7 @@ void CInstanceBase::MovementProcess() m_GraphicThingInstance.SetRotation(fRotation); } -#ifdef __ENABLE_STEALTH_FIX__ if (__IsInDustRange() && !IsAffect(AFFECT_INVISIBILITY) && !IsAffect(AFFECT_EUNHYEONG) && !IsAffect(AFFECT_REVIVE_INVISIBILITY)) -#else - if (__IsInDustRange()) -#endif { float fDustDistance = NEW_GetDistanceFromDestPixelPosition(m_kPPosDust); if (IsMountingHorse()) @@ -1978,7 +1978,6 @@ void CInstanceBase::Render() m_kHorse.Render(); m_GraphicThingInstance.Render(); -#ifdef __ENABLE_STEALTH_FIX__ CPythonCharacterManager& rkChrMgr = CPythonCharacterManager::Instance(); for (auto ptr = rkChrMgr.CharacterInstanceBegin(); ptr != rkChrMgr.CharacterInstanceEnd(); ++ptr) @@ -1999,7 +1998,6 @@ void CInstanceBase::Render() } } } -#endif if (CActorInstance::IsDirLine()) { diff --git a/src/UserInterface/InstanceBaseEffect.cpp b/src/UserInterface/InstanceBaseEffect.cpp index 0b07c89..85e1d23 100644 --- a/src/UserInterface/InstanceBaseEffect.cpp +++ b/src/UserInterface/InstanceBaseEffect.cpp @@ -160,11 +160,7 @@ void CInstanceBase::ProcessDamage() m_bDamageEffectType = !m_bDamageEffectType; } -#ifdef __ENABLE_STEALTH_FIX__ //EXP else if (!bTarget || ((IsAffect(AFFECT_INVISIBILITY) || IsAffect(AFFECT_EUNHYEONG)) && bTarget)) -#else - else if (bTarget == false) -#endif { strDamageType = "nontarget_"; rdwCRCEft = EFFECT_DAMAGE_NOT_TARGET; @@ -802,31 +798,23 @@ void CInstanceBase::__SetReviveInvisibilityAffect(bool isVisible) if (IsWearingDress()) return; -#ifdef __ENABLE_STEALTH_FIX__ if (__IsMainInstance() || __MainCanSeeHiddenThing()) { -#endif m_GraphicThingInstance.BlendAlphaValue(0.5f, 1.0f); -#ifdef __ENABLE_STEALTH_FIX__ } else { m_GraphicThingInstance.BlendAlphaValue(0.0f, 1.0f); m_GraphicThingInstance.HideAllAttachingEffect(); } -#endif } else { -#ifdef __ENABLE_STEALTH_FIX__ if (!IsAffect(AFFECT_EUNHYEONG) && !IsAffect(AFFECT_INVISIBILITY)) { -#endif m_GraphicThingInstance.BlendAlphaValue(1.0f, 1.0f); -#ifdef __ENABLE_STEALTH_FIX__ m_GraphicThingInstance.ShowAllAttachingEffect(); } -#endif } } @@ -846,26 +834,20 @@ void CInstanceBase::__Assassin_SetEunhyeongAffect(bool isVisible) { // 2004.10.16.myevan.은형법 완전 투명 m_GraphicThingInstance.BlendAlphaValue(0.0f, 1.0f); -#ifdef __ENABLE_STEALTH_FIX__ //EXP if (!IsAffect(AFFECT_INVISIBILITY) && !IsAffect(AFFECT_REVIVE_INVISIBILITY)) m_GraphicThingInstance.HideAllAttachingEffectForEunhyeong(); else -#endif m_GraphicThingInstance.HideAllAttachingEffect(); } } else { -#ifdef __ENABLE_STEALTH_FIX__ if (!IsAffect(AFFECT_REVIVE_INVISIBILITY) && !IsAffect(AFFECT_INVISIBILITY)) { -#endif m_GraphicThingInstance.BlendAlphaValue(1.0f, 1.0f); m_GraphicThingInstance.ShowAllAttachingEffect(); -#ifdef __ENABLE_STEALTH_FIX__ ProcessDamage(); } -#endif } } @@ -944,11 +926,7 @@ void CInstanceBase::__SetAffect(UINT eAffect, bool isVisible) return; break; case AFFECT_REVIVE_INVISIBILITY: -#ifdef __ENABLE_STEALTH_FIX__ __SetReviveInvisibilityAffect(isVisible); -#else - __Assassin_SetEunhyeongAffect(isVisible); -#endif break; case AFFECT_EUNHYEONG: __Assassin_SetEunhyeongAffect(isVisible); @@ -964,28 +942,16 @@ void CInstanceBase::__SetAffect(UINT eAffect, bool isVisible) // 2004.07.17.levites.isShow를 ViewFrustumCheck로 변경 if (isVisible) { -#ifndef __ENABLE_STEALTH_FIX__ - m_GraphicThingInstance.ClearAttachingEffect(); - __EffectContainer_Destroy(); - DetachTextTail(); -#else m_GraphicThingInstance.HideAllAttachingEffect(); -#endif } else { -#ifdef __ENABLE_STEALTH_FIX__ if (!IsAffect(AFFECT_EUNHYEONG) && !IsAffect(AFFECT_REVIVE_INVISIBILITY)) { m_GraphicThingInstance.BlendAlphaValue(1.0f, 1.0f); m_GraphicThingInstance.ShowAllAttachingEffect(); ProcessDamage(); } -#else - m_GraphicThingInstance.BlendAlphaValue(1.0f, 1.0f); - AttachTextTail(); - RefreshTextTail(); -#endif } return; break; diff --git a/src/UserInterface/Locale_inc.h b/src/UserInterface/Locale_inc.h index e3e84bf..66f7e71 100644 --- a/src/UserInterface/Locale_inc.h +++ b/src/UserInterface/Locale_inc.h @@ -6,12 +6,3 @@ #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM //#define ENABLE_DISCORD_RPC - -#define FIX_SEQ_254 -#define __ENABLE_STEALTH_FIX__ -#define __BL_LEVEL_FIX__ -// #define FIX_POS_SYNC -// #define TW1X1_TEST - -// Python-only -#define FIX_HORSE_SKILLS_TAB diff --git a/src/UserInterface/PythonNetworkStream.cpp b/src/UserInterface/PythonNetworkStream.cpp index 88b0081..d695c5d 100644 --- a/src/UserInterface/PythonNetworkStream.cpp +++ b/src/UserInterface/PythonNetworkStream.cpp @@ -662,14 +662,10 @@ bool CPythonNetworkStream::RecvPingPacket() if (!Send(sizeof(TPacketCGPong), &kPacketPong)) return false; -#ifdef FIX_SEQ_254 - return SendSequence(); -#else if (IsSecurityMode()) return SendSequence(); else return true; -#endif } bool CPythonNetworkStream::RecvDefaultPacket(int header)