fix: Update normal attack.
This commit is contained in:
@@ -59,7 +59,7 @@ public class CECHPWork : CECObjectWork
|
||||
public CECHPWork(int iWorkID, CECHPWorkMan pWorkMan) : base(iWorkID)
|
||||
{
|
||||
m_pWorkMan = pWorkMan;
|
||||
//m_pHost = pWorkMan.GetHostPlayer();
|
||||
m_pHost = pWorkMan.GetHostPlayer();
|
||||
}
|
||||
|
||||
// Operations
|
||||
@@ -453,38 +453,36 @@ public class CECHPWorkMan
|
||||
|
||||
public bool StartWork(int iPriority, CECHPWork pWork, bool bNoDelay = false)
|
||||
{
|
||||
//if (!pWork)
|
||||
//{
|
||||
// ASSERT(false);
|
||||
// return false;
|
||||
//}
|
||||
//if (!ValidatePriority(iPriority))
|
||||
//{
|
||||
// ASSERT(false);
|
||||
// delete pWork;
|
||||
// return false;
|
||||
//}
|
||||
//if (pWork->GetWorkID() == CECHPWork::WORK_TRACEOBJECT)
|
||||
if (pWork == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!ValidatePriority(iPriority))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//if (pWork.GetWorkID() == CECHPWork.Host_work_ID.WORK_TRACEOBJECT)
|
||||
//{
|
||||
// if (g_pGame->GetGameRun()->GetHostInputFilter()->IsMoveUsagePressed())
|
||||
// {
|
||||
// CECHPWorkTrace* pWorkTrace = dynamic_cast<CECHPWorkTrace*>(pWork);
|
||||
// if (!pWorkTrace->CanTouch())
|
||||
// CECHPWorkTrace pWorkTrace = pWork as CECHPWorkTrace;
|
||||
// if (!pWorkTrace.CanTouch())
|
||||
// { // 2014-8-16 当还在通过键盘操纵移动时、有条件忽略 CECHPWorkTrace,
|
||||
// delete pWorkTrace; // 否则会因 CECHPWorkTrace 中临时转向目标位置、而后又被键盘操纵调整移动方向导致方向瞬间抖动
|
||||
// //delete pWorkTrace; // 否则会因 CECHPWorkTrace 中临时转向目标位置、而后又被键盘操纵调整移动方向导致方向瞬间抖动
|
||||
// return false; // 当 CECHPWorkTrace 中目标可立即接触时,不忽略 CECHPWorkTrace,以实现键盘控制移动中、对某怪应用技能时,立刻转向怪施放技能
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//if (!bNoDelay && DelayWork(iPriority, pWork))
|
||||
//{
|
||||
// return true;
|
||||
//}
|
||||
//return InternallyStartWork(iPriority, pWork);
|
||||
if (!bNoDelay && DelayWork(iPriority, pWork))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return InternallyStartWork(iPriority, pWork);
|
||||
}
|
||||
public bool StartWork_p0(CECHPWork pWork, bool bNoDelay = false) { return StartWork(Work_priority.PRIORITY_0, pWork, bNoDelay); }
|
||||
public bool StartWork_p1(CECHPWork pWork, bool bNoDelay = false) { return StartWork(Work_priority.PRIORITY_1, pWork, bNoDelay); }
|
||||
public bool StartWork_p2(CECHPWork pWork, bool bNoDelay = false) { return StartWork(Work_priority.PRIORITY_2, pWork, bNoDelay); }
|
||||
public CECHostPlayer GetHostPlayer() { return m_pHost; }
|
||||
}
|
||||
|
||||
public abstract class CECHPWorkPostTickCommand
|
||||
|
||||
@@ -4,6 +4,22 @@ using PerfectWorld.Scripts.Managers;
|
||||
using PerfectWorld.Scripts.Player;
|
||||
using UnityEngine;
|
||||
|
||||
class CECHPWorkPostTickCommand1 : CECHPWorkPostTickRunWorkCommand
|
||||
{
|
||||
public CECHPWorkPostTickCommand1(CECHPWork pWork) : base(pWork, true)
|
||||
{
|
||||
}
|
||||
public virtual bool Run(CECHPWorkMan pWorkMan)
|
||||
{
|
||||
if (!base.Run(pWorkMan))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//AP_ActionEvent(AP_EVENT_MELEEOUTOFRANGE);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Class CECHPWorkMelee
|
||||
@@ -79,37 +95,22 @@ class CECHPWorkMelee : CECHPWork
|
||||
|
||||
if (idTraceTarget && !m_pHost.IsRooting())
|
||||
{
|
||||
CECHPWorkTrace pWork = (CECHPWorkTrace*)m_pWorkMan.CreateWork(WORK_TRACEOBJECT);
|
||||
pWork.SetTraceTarget(pWork.CreatTraceTarget(idTraceTarget, CECHPWorkTrace.Trace_reason.TRACE_ATTACK));
|
||||
class CECHPWorkPostTickCommand1 : CECHPWorkPostTickRunWorkCommand
|
||||
{
|
||||
public CECHPWorkPostTickCommand1(CECHPWork pWork) : CECHPWorkPostTickRunWorkCommand(pWork, true)
|
||||
{
|
||||
}
|
||||
public virtual bool Run(CECHPWorkMan pWorkMan)
|
||||
{
|
||||
if (!CECHPWorkPostTickRunWorkCommand::Run(pWorkMan))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
AP_ActionEvent(AP_EVENT_MELEEOUTOFRANGE);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
m_pWorkMan.SetPostTickCommand(new CECHPWorkPostTickCommand1(pWork));
|
||||
CECHPWorkTrace pWork = (CECHPWorkTrace)m_pWorkMan.CreateWork(Host_work_ID.WORK_TRACEOBJECT);
|
||||
pWork.SetTraceTarget(pWork.CreatTraceTarget(idTraceTarget, CECHPWorkTrace.Trace_reason.TRACE_ATTACK));
|
||||
m_pWorkMan.SetPostTickCommand(new CECHPWorkPostTickCommand1(pWork));
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
return true;
|
||||
}
|
||||
// Reset work
|
||||
public virtual void Reset()
|
||||
{
|
||||
base.Reset();
|
||||
{
|
||||
base.Reset();
|
||||
|
||||
m_idTarget = 0;
|
||||
m_iIdleTime = 0;
|
||||
m_iIdleTimeCnt = 0;
|
||||
}
|
||||
m_idTarget = 0;
|
||||
m_iIdleTime = 0;
|
||||
m_iIdleTimeCnt = 0;
|
||||
}
|
||||
// Copy work data
|
||||
public virtual bool CopyData(CECHPWork pWork)
|
||||
{
|
||||
|
||||
@@ -99,12 +99,12 @@ abstract class CECTracedObject
|
||||
CECObject pObject = g_pGame->GetGameRun()->GetWorld()->GetObject(m_iObjectId, 0);
|
||||
|
||||
float fTouchRadius = 0.0f;
|
||||
if (ISPLAYERID(m_iObjectId))
|
||||
if (GPDataTypeHelper.ISPLAYERID(m_iObjectId))
|
||||
{
|
||||
if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_TALK)
|
||||
{
|
||||
fTouchRadius = 0.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CECPlayer pPlayer = pObject as CECPlayer;
|
||||
@@ -112,13 +112,13 @@ abstract class CECTracedObject
|
||||
}
|
||||
return m_pHost.CanTouchTarget(vHostPos, vTargetPos, fTouchRadius, iTouchReason, fMaxCut);
|
||||
}
|
||||
else if (ISNPCID(m_iObjectId))
|
||||
else if (GPDataTypeHelper.ISNPCID(m_iObjectId))
|
||||
{
|
||||
CECNPC pNPC = pObject as CECNPC;
|
||||
fTouchRadius = pNPC.GetTouchRadius();
|
||||
return m_pHost.CanTouchTarget(vHostPos, vTargetPos, fTouchRadius, iTouchReason, fMaxCut);
|
||||
}
|
||||
else if (ISMATTERID(m_iObjectId))
|
||||
else if (GPDataTypeHelper.ISMATTERID(m_iObjectId))
|
||||
{
|
||||
CECMatter pMatter = (pObject) as CECMatter;
|
||||
return pMatter.CalcDist(vHostPos, true) < pMatter.GetGatherDist();
|
||||
@@ -149,9 +149,6 @@ class CECHPWorkTrace : CECHPWork
|
||||
{
|
||||
|
||||
}
|
||||
public: // Attributes
|
||||
|
||||
public: // Operations
|
||||
|
||||
// Change trace target
|
||||
//void ChangeTarget(int idTarget, int iReason, bool bUseAutoPF=false);
|
||||
|
||||
@@ -758,6 +758,11 @@ public class CECHostPlayer : EC_Player
|
||||
A3DVECTOR3 vector = new A3DVECTOR3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z);
|
||||
return CanTouchTarget(vector, vTargetPos, fTargetRad, iReason, fMaxCut);
|
||||
}
|
||||
bool IsRooting() {
|
||||
var mask = (uint)(Logic_Influence_Extned_states.LIES_ROOT
|
||||
| Logic_Influence_Extned_states.LIES_SLEEP
|
||||
| Logic_Influence_Extned_states.LIES_STUN);
|
||||
return (m_dwLIES & mask) != 0; }
|
||||
}
|
||||
|
||||
public enum StateAnim
|
||||
|
||||
Reference in New Issue
Block a user