MR-3: Bunch of fixes
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -603,14 +622,25 @@ 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);
|
||||
|
||||
// MR-3: Shaman on-mount hitting fix
|
||||
float __GetInvisibleTimeAdjust(const UINT uiSkill, const NRaceData::TAttackData& c_rAttackData);
|
||||
// MR-3: -- END OF -- Shaman on-mount hitting fix
|
||||
|
||||
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);
|
||||
|
||||
@@ -620,19 +620,21 @@ void CActorInstance::__ProcessDataAttackSuccess(const NRaceData::TAttackData & c
|
||||
// VICTIM_COLLISION_TEST_END
|
||||
}
|
||||
|
||||
// MR-3: Shaman on-mount hitting fix
|
||||
// Invisible Time
|
||||
if (IS_PARTY_HUNTING_RACE(rVictim.GetRace()))
|
||||
{
|
||||
if (uiSkill) // 파티 사냥 몬스터라도 스킬이면 무적시간 적용
|
||||
rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime;
|
||||
rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + (c_rAttackData.fInvisibleTime - __GetInvisibleTimeAdjust(uiSkill, c_rAttackData));
|
||||
|
||||
if (m_isMain) // #0000794: [M2KR] 폴리모프 - 밸런싱 문제 타인 공격에 의한 무적 타임은 고려하지 않고 자신 공격에 의한것만 체크한다
|
||||
rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime;
|
||||
rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + (c_rAttackData.fInvisibleTime - __GetInvisibleTimeAdjust(uiSkill, c_rAttackData));
|
||||
}
|
||||
else // 파티 사냥 몬스터가 아닐 경우만 적용
|
||||
{
|
||||
rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + c_rAttackData.fInvisibleTime;
|
||||
rVictim.m_fInvisibleTime = CTimer::Instance().GetCurrentSecond() + (c_rAttackData.fInvisibleTime - __GetInvisibleTimeAdjust(uiSkill, c_rAttackData));
|
||||
}
|
||||
// MR-3: -- END OF -- Shaman on-mount hitting fix
|
||||
|
||||
// Stiffen Time
|
||||
rVictim.InsertDelay(c_rAttackData.fStiffenTime);
|
||||
@@ -964,3 +966,19 @@ void CActorInstance::__SetFallingDirection(float fx, float fy)
|
||||
{
|
||||
m_PhysicsObject.SetDirection(D3DXVECTOR3(fx, fy, 0.0f));
|
||||
}
|
||||
|
||||
// MR-3: Shaman on-mount hitting fix
|
||||
float CActorInstance::__GetInvisibleTimeAdjust(const UINT uiSkill, const NRaceData::TAttackData& c_rAttackData) {
|
||||
|
||||
static const int shamanw = 3, shamanm = 7;
|
||||
|
||||
if ((GetRace() != shamanw && GetRace() != shamanm) ||
|
||||
uiSkill != 0 ||
|
||||
m_fAtkSpd < 1.3)
|
||||
return 0.0f;
|
||||
|
||||
const auto scale = (m_fAtkSpd - 1.3) / 1.3;
|
||||
const auto inv = c_rAttackData.fInvisibleTime * 0.5;
|
||||
return inv * scale;
|
||||
}
|
||||
// MR-3: -- END OF -- Shaman on-mount hitting fix
|
||||
|
||||
Reference in New Issue
Block a user