forked from metin-server/m2dev-client-src
Merge pull request #98 from MindRapist/mr-10
This commit is contained in:
@@ -48,34 +48,43 @@ void CActorInstance::INSTANCEBASE_Transform()
|
||||
void CActorInstance::OnUpdate()
|
||||
{
|
||||
#ifdef __PERFORMANCE_CHECKER__
|
||||
DWORD t1=ELTimer_GetMSec();
|
||||
DWORD t1 = ELTimer_GetMSec();
|
||||
#endif
|
||||
if (!IsParalysis())
|
||||
CGraphicThingInstance::OnUpdate();
|
||||
#ifdef __PERFORMANCE_CHECKER__
|
||||
DWORD t2=ELTimer_GetMSec();
|
||||
DWORD t2 = ELTimer_GetMSec();
|
||||
#endif
|
||||
|
||||
UpdateAttachingInstances();
|
||||
|
||||
#ifdef __PERFORMANCE_CHECKER__
|
||||
DWORD t3=ELTimer_GetMSec();
|
||||
DWORD t3 = ELTimer_GetMSec();
|
||||
#endif
|
||||
|
||||
// celine skill fix
|
||||
if (__IsInSplashTime())
|
||||
UpdateSplashArea();
|
||||
|
||||
#ifdef __PERFORMANCE_CHECKER__
|
||||
DWORD t4 = ELTimer_GetMSec();
|
||||
#endif
|
||||
// END OF celine skill fix
|
||||
|
||||
__BlendAlpha_Update();
|
||||
|
||||
#ifdef __PERFORMANCE_CHECKER__
|
||||
DWORD t4=ELTimer_GetMSec();
|
||||
DWORD t5 = ELTimer_GetMSec();
|
||||
{
|
||||
static FILE* fp=fopen("perf_actor_update2.txt", "w");
|
||||
|
||||
if (t4-t1>3)
|
||||
if (t4 - t1 > 3)
|
||||
{
|
||||
fprintf(fp, "AIU2.Total %d (Time %f)\n",
|
||||
t4-t1, ELTimer_GetMSec()/1000.0f);
|
||||
fprintf(fp, "AIU2.GU %d\n", t2-t1);
|
||||
fprintf(fp, "AIU2.UAI %d\n", t3-t2);
|
||||
fprintf(fp, "AIU2.BAU %d\n", t4-t3);
|
||||
t4-t1, ELTimer_GetMSec() / 1000.0f);
|
||||
fprintf(fp, "AIU2.GU %d\n", t2 - t1);
|
||||
fprintf(fp, "AIU2.UAI %d\n", t3 - t2);
|
||||
fprintf(fp, "AIU2.BAU %d\n", t4 - t3);
|
||||
fprintf(fp, "-------------------------------- \n");
|
||||
fflush(fp);
|
||||
}
|
||||
@@ -646,6 +655,36 @@ void CActorInstance::AdjustDynamicCollisionMovement(const CActorInstance * c_pAc
|
||||
}
|
||||
}
|
||||
|
||||
// celine skill fix
|
||||
void CActorInstance::UpdateSplashArea()
|
||||
{
|
||||
const CRaceMotionData::TMotionAttackingEventData* c_pAttackingData = m_kSplashArea.c_pAttackingEvent;
|
||||
if (!c_pAttackingData)
|
||||
return;
|
||||
|
||||
if (m_kSplashArea.SphereInstanceVector.size() != c_pAttackingData->CollisionData.SphereDataVector.size())
|
||||
return;
|
||||
|
||||
float fRadian = D3DXToRadian(270.0f + 360.0f - GetRotation());
|
||||
|
||||
for (DWORD i = 0; i < c_pAttackingData->CollisionData.SphereDataVector.size(); ++i)
|
||||
{
|
||||
const TSphereData& c_rSphereData = c_pAttackingData->CollisionData.SphereDataVector[i].GetAttribute();
|
||||
CDynamicSphereInstance& rSphereInstance = m_kSplashArea.SphereInstanceVector[i];
|
||||
|
||||
rSphereInstance.v3Position.x =
|
||||
m_x + c_rSphereData.v3Position.x * sinf(fRadian) +
|
||||
c_rSphereData.v3Position.y * cosf(fRadian);
|
||||
|
||||
rSphereInstance.v3Position.y =
|
||||
m_y + c_rSphereData.v3Position.x * cosf(fRadian) -
|
||||
c_rSphereData.v3Position.y * sinf(fRadian);
|
||||
|
||||
rSphereInstance.v3Position.z =
|
||||
m_z + c_rSphereData.v3Position.z;
|
||||
}
|
||||
}
|
||||
// END OF celine skill fix
|
||||
|
||||
void CActorInstance::__AdjustCollisionMovement(const CGraphicObjectInstance * c_pGraphicObjectInstance)
|
||||
{
|
||||
|
||||
@@ -324,6 +324,9 @@ class CActorInstance : public IActorInstance, public IFlyTargetableObject
|
||||
virtual bool TestCollisionWithDynamicSphere(const CDynamicSphereInstance & dsi);
|
||||
|
||||
void UpdateAdvancingPointInstance();
|
||||
// celine skill fix
|
||||
void UpdateSplashArea();
|
||||
// END OF celine skill fix
|
||||
|
||||
BOOL IsClickableDistanceDestInstance(CActorInstance & rkInstDst, float fDistance);
|
||||
|
||||
|
||||
@@ -1859,11 +1859,31 @@ int g_iAccumulationTime = 0;
|
||||
|
||||
void CInstanceBase::Update()
|
||||
{
|
||||
++ms_dwUpdateCounter;
|
||||
++ms_dwUpdateCounter;
|
||||
|
||||
StateProcess();
|
||||
|
||||
m_GraphicThingInstance.PhysicsProcess();
|
||||
m_GraphicThingInstance.RotationProcess();
|
||||
|
||||
// celine skill fix
|
||||
if (IsUsingSkill())
|
||||
{
|
||||
if (m_dwSkillTargetVID)
|
||||
{
|
||||
CInstanceBase* pTargetInstance =
|
||||
CPythonCharacterManager::Instance().GetInstancePtr(m_dwSkillTargetVID);
|
||||
|
||||
if (pTargetInstance)
|
||||
NEW_LookAtDestInstance(*pTargetInstance);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearSkillTarget();
|
||||
}
|
||||
// END OF celine skill fix
|
||||
|
||||
m_GraphicThingInstance.ComboProcess();
|
||||
m_GraphicThingInstance.AccumulationMovement();
|
||||
|
||||
@@ -1873,6 +1893,7 @@ void CInstanceBase::Update()
|
||||
NEW_GetPixelPosition(&kPPosCur);
|
||||
|
||||
DWORD dwCurTime=ELTimer_GetFrameMSec();
|
||||
|
||||
//if (m_dwNextUpdateHeightTime<dwCurTime)
|
||||
{
|
||||
m_dwNextUpdateHeightTime=dwCurTime;
|
||||
@@ -3070,17 +3091,20 @@ void CInstanceBase::__Initialize()
|
||||
m_dwRace = 0;
|
||||
m_dwVirtualNumber = 0;
|
||||
|
||||
m_dwBaseCmdTime=0;
|
||||
m_dwBaseChkTime=0;
|
||||
m_dwSkipTime=0;
|
||||
m_dwBaseCmdTime = 0;
|
||||
m_dwBaseChkTime = 0;
|
||||
m_dwSkipTime = 0;
|
||||
|
||||
m_GraphicThingInstance.Initialize();
|
||||
|
||||
m_dwAdvActorVID=0;
|
||||
m_dwLastDmgActorVID=0;
|
||||
m_dwAdvActorVID = 0;
|
||||
// celine skill fix
|
||||
m_dwSkillTargetVID = 0;
|
||||
// END OF celine skill fix
|
||||
m_dwLastDmgActorVID = 0;
|
||||
|
||||
m_nAverageNetworkGap=0;
|
||||
m_dwNextUpdateHeightTime=0;
|
||||
m_nAverageNetworkGap = 0;
|
||||
m_dwNextUpdateHeightTime = 0;
|
||||
|
||||
// Moving by keyboard
|
||||
m_iRotatingDirection = DEGREE_DIRECTION_SAME;
|
||||
@@ -3141,3 +3165,15 @@ void CInstanceBase::SetLevel(DWORD dwLvl)
|
||||
{
|
||||
m_dwLevel = dwLvl;
|
||||
}
|
||||
|
||||
// celine skill fix
|
||||
void CInstanceBase::SetSkillTarget(DWORD dwVID)
|
||||
{
|
||||
m_dwSkillTargetVID = dwVID;
|
||||
}
|
||||
|
||||
void CInstanceBase::ClearSkillTarget()
|
||||
{
|
||||
m_dwSkillTargetVID = 0;
|
||||
}
|
||||
// END OF celine skill fix
|
||||
|
||||
@@ -508,6 +508,11 @@ class CInstanceBase
|
||||
void SetMoveSpeed(UINT uMovSpd);
|
||||
void SetRotationSpeed(float fRotSpd);
|
||||
|
||||
// celine skill fix
|
||||
void SetSkillTarget(DWORD dwVID);
|
||||
void ClearSkillTarget();
|
||||
// END OF celine skill fix
|
||||
|
||||
const char * GetNameString();
|
||||
int GetInstanceType();
|
||||
DWORD GetPart(CRaceData::EParts part);
|
||||
@@ -963,6 +968,9 @@ class CInstanceBase
|
||||
int m_iRotatingDirection;
|
||||
|
||||
DWORD m_dwAdvActorVID;
|
||||
// celine skill fix
|
||||
DWORD m_dwSkillTargetVID;
|
||||
// END OF celine skill fix
|
||||
DWORD m_dwLastDmgActorVID;
|
||||
|
||||
LONG m_nAverageNetworkGap;
|
||||
|
||||
@@ -1598,6 +1598,25 @@ enum EPointTypes
|
||||
|
||||
POINT_RESIST_NORMAL_DAMAGE, // 99
|
||||
|
||||
// MR-10: Added missing POINT_* values
|
||||
POINT_HIT_HP_RECOVERY, // 100
|
||||
POINT_HIT_SP_RECOVERY, // 101
|
||||
POINT_MANASHIELD, // 102 흑신수호 스킬에 의한 마나쉴드 효과 정도
|
||||
|
||||
POINT_PARTY_BUFFER_BONUS, // 103
|
||||
POINT_PARTY_SKILL_MASTER_BONUS, // 104
|
||||
|
||||
POINT_HP_RECOVER_CONTINUE, // 105
|
||||
POINT_SP_RECOVER_CONTINUE, // 106
|
||||
|
||||
POINT_STEAL_GOLD, // 107
|
||||
POINT_POLYMORPH, // 108 변신한 몬스터 번호
|
||||
POINT_MOUNT, // 109 타고있는 몬스터 번호
|
||||
|
||||
POINT_PARTY_HASTE_BONUS, // 110
|
||||
POINT_PARTY_DEFENDER_BONUS, // 111
|
||||
// MR-10: -- END OF -- Added missing POINT_* values
|
||||
|
||||
POINT_STAT_RESET_COUNT = 112,
|
||||
POINT_HORSE_SKILL = 113,
|
||||
|
||||
@@ -1616,6 +1635,9 @@ enum EPointTypes
|
||||
POINT_NORMAL_HIT_DEFEND_BONUS, // 124 평타 방어 데미지
|
||||
POINT_PC_BANG_EXP_BONUS, // 125
|
||||
POINT_PC_BANG_DROP_BONUS, // 126 PC방 전용 드롭률 보너스
|
||||
// MR-10: Added missing POINT_* values
|
||||
POINT_RAMADAN_CANDY_BONUS_EXP, // 라마단 사탕 경험치 증가용
|
||||
// MR-10: -- END OF -- Added missing POINT_* values
|
||||
|
||||
POINT_ENERGY = 128, // 128 기력
|
||||
|
||||
@@ -1626,6 +1648,20 @@ enum EPointTypes
|
||||
// 임시로 이렇게 둔다.
|
||||
POINT_ENERGY_END_TIME = 129, // 129 기력 종료 시간
|
||||
|
||||
// MR-10: Added missing POINT_* values
|
||||
POINT_COSTUME_ATTR_BONUS = 130,
|
||||
POINT_MAGIC_ATT_BONUS_PER = 131,
|
||||
POINT_MELEE_MAGIC_ATT_BONUS_PER = 132,
|
||||
|
||||
// 추가 속성 저항
|
||||
POINT_RESIST_ICE = 133, // 냉기 저항 : 얼음공격에 대한 대미지 감소
|
||||
POINT_RESIST_EARTH = 134, // 대지 저항 : 얼음공격에 대한 대미지 감소
|
||||
POINT_RESIST_DARK = 135, // 어둠 저항 : 얼음공격에 대한 대미지 감소
|
||||
|
||||
POINT_RESIST_CRITICAL = 136, // 크리티컬 저항 : 상대의 크리티컬 확률을 감소
|
||||
POINT_RESIST_PENETRATE = 137, // 관통타격 저항 : 상대의 관통타격 확률을 감소
|
||||
// MR-10: -- END OF -- Added missing POINT_* values
|
||||
|
||||
// 클라이언트 포인트
|
||||
POINT_MIN_WEP = 200,
|
||||
POINT_MAX_WEP,
|
||||
|
||||
@@ -676,6 +676,13 @@ bool CPythonPlayer::__UseSkill(DWORD dwSlotIndex)
|
||||
}
|
||||
}
|
||||
|
||||
// celine skill fix
|
||||
if (pkInstTarget && pkInstTarget != pkInstMain)
|
||||
{
|
||||
pkInstMain->SetSkillTarget(pkInstTarget->GetVirtualID());
|
||||
}
|
||||
// END OF celine skill fix
|
||||
|
||||
// 관격술 처리
|
||||
DWORD dwTargetMaxCount = pSkillData->GetTargetCount(rkSkillInst.fcurEfficientPercentage);
|
||||
DWORD dwRange = __GetSkillTargetRange(*pSkillData);
|
||||
|
||||
Reference in New Issue
Block a user