2024-12-21 10:04:04 +08:00
# include "StdAfx.h"
# include "DnAuraProcessor.h"
# include "DnActor.h"
# include "TaskManager.h"
# include "DnPartyTask.h"
# include "DNUserSession.h"
# include "DnGameRoom.h"
# include "DnBlow.h"
# include "DnGameTask.h"
CDnAuraProcessor : : CDnAuraProcessor ( DnActorHandle hActor , float fRange ) : IDnSkillProcessor ( hActor ) ,
m_fRange ( fRange ) ,
m_fRangeSQ ( fRange * fRange ) ,
m_LastAuraCheckTime ( 0 ) ,
m_bAuraOff ( false )
{
}
CDnAuraProcessor : : ~ CDnAuraProcessor ( void )
{
}
void CDnAuraProcessor : : OnBegin ( LOCAL_TIME LocalTime , float fDelta , DnSkillHandle hParentSkill )
{
m_LastAuraCheckTime = LocalTime ;
m_setPartyMemberInAura . clear ( ) ;
m_mapAuraMemberSEID . clear ( ) ;
m_bAuraOff = false ;
}
void CDnAuraProcessor : : Process ( LOCAL_TIME LocalTime , float fDelta )
{
CDnGameTask * pGameTask = ( CDnGameTask * ) CTaskManager : : GetInstance ( m_hHasActor - > GetRoom ( ) ) . GetTask ( " GameTask " ) ;
if ( pGameTask & & pGameTask - > GetGameTaskType ( ) = = GameTaskType : : Farm )
return ;
int nRefreshTime = 30 ;
# ifdef PRE_ADD_AURA_FOR_MONSTER
if ( m_hHasActor - > IsMonsterActor ( ) ) // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ʹ <EFBFBD> <20> <> ĵ<EFBFBD> <C4B5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ϱ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ÿ<> Ӱ<EFBFBD> <D3B0> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ø<EFBFBD> <C3B8> <EFBFBD> <EFBFBD> <EFBFBD> <20> ϰڴ<CFB0> .
nRefreshTime = 600 ;
# endif
// <20> ֺ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> Ƽ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ༮<EFBFBD> <E0BCAE> ȿ<> <C8BF> <EFBFBD> <EFBFBD> <20> ༮<EFBFBD> <E0BCAE> <20> <> <EFBFBD> <EFBFBD>
if ( LocalTime - m_LastAuraCheckTime > nRefreshTime )
{
//assert( m_hHasActor->IsEnabledAuraSkill() && "<22> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> μ<EFBFBD> <CEBC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ߿<EFBFBD> <DFBF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų <20> ߵ <EFBFBD> <20> <> <EFBFBD> ̾<EFBFBD> <CCBE> <EFBFBD> <20> <> " );
DnSkillHandle hAuraSkill = m_hHasActor - > GetEnabledAuraSkill ( ) ;
if ( NULL = = hAuraSkill )
return ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ͱ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 쵵 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <20> ÷<EFBFBD> <C3B7> ̾<EFBFBD> <CCBE> <EFBFBD> <20> <> <EFBFBD> 쿣 <20> <> Ƽ <EFBFBD> <C6BC> <20> ĺ<EFBFBD> <C4BA> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ְ<EFBFBD> ,
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ScanActor <20> <> <20> <> <20> <> <20> ۿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .. (#15461)
DNVector ( DnActorHandle ) vlActors ;
if ( m_hHasActor - > IsPlayerActor ( ) )
{
CDnPartyTask * pPartyTask = static_cast < CDnPartyTask * > ( CTaskManager : : GetInstancePtr ( m_hHasActor - > GetRoom ( ) ) - > GetTask ( " PartyTask " ) ) ;
if ( pPartyTask )
{
vlActors . reserve ( pPartyTask - > GetUserCount ( ) ) ;
for ( int i = 0 ; i < ( int ) pPartyTask - > GetUserCount ( ) ; + + i )
{
CDNGameRoom : : PartyStruct * pPartyData = pPartyTask - > GetPartyData ( i ) ;
vlActors . push_back ( pPartyData - > pSession - > GetActorHandle ( ) ) ;
}
}
}
else
{
CDnActor : : ScanActor ( m_hHasActor - > GetRoom ( ) , * ( m_hHasActor - > GetPosition ( ) ) , m_fRange , vlActors ) ;
}
set < DWORD > setPrevAuraMember = m_setPartyMemberInAura ;
m_setPartyMemberInAura . clear ( ) ;
for ( int i = 0 ; i < ( int ) vlActors . size ( ) ; + + i )
{
DnActorHandle hActor = vlActors . at ( i ) ;
// <20> <> ȿ<EFBFBD> <C8BF> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ü<EFBFBD> <C3BC> <20> <> <EFBFBD> <EFBFBD> .
if ( ! hActor )
continue ;
// <20> ڱ<EFBFBD> <20> ڽ<EFBFBD> <DABD> <EFBFBD> <20> н<EFBFBD> ..
if ( hActor ! = m_hHasActor )
{
# if defined(PRE_FIX_55383)
bool bSkip = false ;
CDnSkill : : TargetTypeEnum skillTargetType = hAuraSkill - > GetTargetType ( ) ;
switch ( skillTargetType )
{
case CDnSkill : : TargetTypeEnum : : Self : //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ڽ<EFBFBD> <DABD> <EFBFBD> <20> <> ŵ <20> ϴµ<CFB4> . <20> ϴ<EFBFBD> <20> ڵ<EFBFBD> <DAB5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> س<EFBFBD> <D8B3> ´ <EFBFBD> .
{
bSkip = hActor ! = m_hHasActor ;
}
break ;
case CDnSkill : : TargetTypeEnum : : Enemy : //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> Ǿ<EFBFBD> <20> ִµ<D6B4> , <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ̸<EFBFBD> <20> <> ŵ
{
int nMyTeam = m_hHasActor - > GetTeam ( ) ;
if ( m_hHasActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nMyTeam = m_hHasActor - > GetOriginalTeam ( ) ;
int nTargetTeam = hActor - > GetTeam ( ) ;
if ( hActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nTargetTeam = hActor - > GetOriginalTeam ( ) ;
bSkip = nMyTeam = = nTargetTeam ;
}
break ;
case CDnSkill : : TargetTypeEnum : : Friend : //<2F> Ʊ<EFBFBD> <C6B1> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> Ǿ<EFBFBD> <20> ִµ<D6B4> <20> ٸ<EFBFBD> <20> <> <EFBFBD> ̸<EFBFBD> <20> <> ŵ
{
int nMyTeam = m_hHasActor - > GetTeam ( ) ;
if ( m_hHasActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nMyTeam = m_hHasActor - > GetOriginalTeam ( ) ;
int nTargetTeam = hActor - > GetTeam ( ) ;
if ( hActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nTargetTeam = hActor - > GetOriginalTeam ( ) ;
bSkip = nMyTeam ! = nTargetTeam ;
}
break ;
case CDnSkill : : TargetTypeEnum : : Party : //<2F> ϴ<EFBFBD> Friend<6E> <64> <20> <> <EFBFBD> <EFBFBD> <20> ϰ<EFBFBD> ó<> <C3B3> <20> ϰ<EFBFBD> , <20> <> <EFBFBD> ߿<EFBFBD> <20> <> û<EFBFBD> <C3BB> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ȯ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ΰ<EFBFBD> <CEB0> <EFBFBD> <EFBFBD> <EFBFBD> Party<74> <79> <20> ƴ<EFBFBD> <C6B4> <EFBFBD> <EFBFBD> <EFBFBD> ó<> <C3B3> ?
{
int nMyTeam = m_hHasActor - > GetTeam ( ) ;
if ( m_hHasActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nMyTeam = m_hHasActor - > GetOriginalTeam ( ) ;
int nTargetTeam = hActor - > GetTeam ( ) ;
if ( hActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nTargetTeam = hActor - > GetOriginalTeam ( ) ;
bSkip = nMyTeam ! = nTargetTeam ;
}
break ;
case CDnSkill : : TargetTypeEnum : : All :
bSkip = false ;
break ;
}
if ( bSkip = = true )
continue ;
# else
// <20> ÷<EFBFBD> <C3B7> ̾<EFBFBD> <CCBE> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> , pvp <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> PartyStruct <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ʿ<EFBFBD> <CABF> ϴ<EFBFBD> .
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 쿣 scanactor <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ϲ Ƿ<CFB9> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
if ( hActor - > GetTeam ( ) ! = m_hHasActor - > GetTeam ( )
# ifdef PRE_ADD_AURA_FOR_MONSTER
& & hAuraSkill - > GetTargetType ( ) ! = CDnSkill : : TargetTypeEnum : : Enemy
| | ( hAuraSkill - > GetTargetType ( ) = = CDnSkill : : TargetTypeEnum : : Enemy & & hActor - > GetTeam ( ) = = m_hHasActor - > GetTeam ( ) )
# endif
)
continue ;
# endif // PRE_FIX_55383
// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϰ<EFBFBD> <20> ִ<EFBFBD> <20> ༮<EFBFBD> <E0BCAE> <20> <> <EFBFBD> <EFBFBD> .
DnSkillHandle hIfNewMemberAuraSkill = hActor - > GetEnabledAuraSkill ( ) ;
if ( hIfNewMemberAuraSkill & &
hIfNewMemberAuraSkill - > GetClassID ( ) = = hAuraSkill - > GetClassID ( ) )
continue ;
// <20> ٸ<EFBFBD> ij<> <C4B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> ȿ<> <C8BF> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ѵ <EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <20> <> ų ȿ<> <C8BF> <EFBFBD> <EFBFBD> <20> <> ø<EFBFBD> <C3B8> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
// ȿ<> <C8BF> <EFBFBD> <EFBFBD> <20> <> ü<EFBFBD> Ǿ<EFBFBD> <C7BE> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ٸ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> AuraProcessor <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ִ<EFBFBD> <20> <> <EFBFBD> °<EFBFBD> <20> Ǿ<EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ǯ<> <C7AE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ٸ<EFBFBD> ij<> <C4B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <D6B4> <EFBFBD> <EFBFBD> <EFBFBD> ȿ<> <C8BF> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ȵȴ<C8B5> .
bool bSameAuraSkillsBlow = false ;
DNVector ( DnBlowHandle ) vlhAppliedBlow ;
hActor - > GetAllAppliedStateBlow ( vlhAppliedBlow ) ;
DNVector ( DnBlowHandle ) : : iterator iter = vlhAppliedBlow . begin ( ) ;
for ( iter ; iter ! = vlhAppliedBlow . end ( ) ; + + iter )
{
const CDnSkill : : SkillInfo * pParentSkillInfo = ( * iter ) - > GetParentSkillInfo ( ) ;
if ( m_hHasActor ! = pParentSkillInfo - > hSkillUser & &
pParentSkillInfo - > iSkillID = = hAuraSkill - > GetClassID ( ) )
{
bSameAuraSkillsBlow = true ;
break ;
}
}
if ( bSameAuraSkillsBlow )
continue ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 쿣 ScanActor <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϱ <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ȿ<EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> 鸸 <20> ˻<EFBFBD> <CBBB> Ǿ<EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> <20> Ÿ<EFBFBD> üũ<C3BC> <C5A9> <20> <> <20> ʿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> .
bool bInRange = true ;
if ( m_hHasActor - > IsPlayerActor ( ) )
{
bInRange = false ;
const EtVector3 * pPos = hActor - > GetPosition ( ) ;
const EtVector3 * pMyPos = m_hHasActor - > GetPosition ( ) ;
EtVector3 vDist = * pPos - * pMyPos ;
float fDistSQ = EtVec3LengthSq ( & vDist ) ;
// <20> <> <EFBFBD> <EFBFBD> <20> Ÿ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ֵ<EFBFBD> <D6B5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ְ<EFBFBD> ,, <20> ϴ<EFBFBD> <20> Ÿ<EFBFBD> <C5B8> <EFBFBD> <20> <> <EFBFBD> Ǵ<EFBFBD> <C7B4> <EFBFBD> <20> <> <EFBFBD> س<EFBFBD> <D8B3> ´ <EFBFBD> . (300)
if ( fDistSQ < m_fRangeSQ )
bInRange = true ;
}
if ( bInRange )
m_setPartyMemberInAura . insert ( hActor - > GetUniqueID ( ) ) ;
}
}
// set <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> ༮<EFBFBD> <E0BCAE> <20> <> <EFBFBD> <EFBFBD> <20> ༮<EFBFBD> <E0BCAE> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> .
vector < DWORD > vlNewMember ;
set_difference ( m_setPartyMemberInAura . begin ( ) , m_setPartyMemberInAura . end ( ) , setPrevAuraMember . begin ( ) , setPrevAuraMember . end ( ) ,
back_inserter ( vlNewMember ) ) ;
vector < DWORD > vlOutMember ;
set_difference ( setPrevAuraMember . begin ( ) , setPrevAuraMember . end ( ) , m_setPartyMemberInAura . begin ( ) , m_setPartyMemberInAura . end ( ) ,
back_inserter ( vlOutMember ) ) ;
int iNumNewMember = ( int ) vlNewMember . size ( ) ;
for ( int iMember = 0 ; iMember < iNumNewMember ; + + iMember )
{
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> target <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> ߰<EFBFBD> .
DnActorHandle hNewMember = CDnActor : : FindActorFromUniqueID ( m_hHasActor - > GetRoom ( ) , vlNewMember . at ( iMember ) ) ;
if ( hNewMember )
{
DWORD dwNumStateEffect = hAuraSkill - > GetStateEffectCount ( ) ;
for ( DWORD dwStateEffect = 0 ; dwStateEffect < dwNumStateEffect ; + + dwStateEffect )
{
const CDnSkill : : StateEffectStruct * pSE = hAuraSkill - > GetStateEffectFromIndex ( dwStateEffect ) ;
# if defined(PRE_FIX_55383)
bool bCanApply = false ;
switch ( pSE - > ApplyType )
{
case CDnSkill : : ApplySelf : //Self<6C> ΰ<EFBFBD> <CEB0> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ڽ<EFBFBD> <DABD> ̾<EFBFBD> <CCBE> <EFBFBD> <20> Ѵ <EFBFBD> .
{
bCanApply = m_hHasActor = = hNewMember ;
}
break ;
case CDnSkill : : ApplyTarget : //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ڽ<EFBFBD> <DABD> <EFBFBD> <20> ƴϸ<C6B4> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
{
bCanApply = m_hHasActor ! = hNewMember ;
}
break ;
case CDnSkill : : ApplyAll : //<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
bCanApply = true ;
}
break ;
case CDnSkill : : ApplyEnemy : //<2F> <> <EFBFBD> <EFBFBD> <20> ٸ<EFBFBD> <20> <> <EFBFBD> 츸
{
int nMyTeam = m_hHasActor - > GetTeam ( ) ;
if ( m_hHasActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nMyTeam = m_hHasActor - > GetOriginalTeam ( ) ;
int nTargetTeam = hNewMember - > GetTeam ( ) ;
if ( hNewMember - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nTargetTeam = hNewMember - > GetOriginalTeam ( ) ;
bCanApply = nMyTeam ! = nTargetTeam ;
}
break ;
case CDnSkill : : ApplyFriend : //<2F> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 츸..
{
int nMyTeam = m_hHasActor - > GetTeam ( ) ;
if ( m_hHasActor - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nMyTeam = m_hHasActor - > GetOriginalTeam ( ) ;
int nTargetTeam = hNewMember - > GetTeam ( ) ;
if ( hNewMember - > IsAppliedThisStateBlow ( STATE_BLOW : : BLOW_149 ) )
nTargetTeam = hNewMember - > GetOriginalTeam ( ) ;
bCanApply = nMyTeam = = nTargetTeam ;
}
break ;
}
if ( bCanApply = = true )
{
int iID = hNewMember - > CmdAddStateEffect ( /*m_hHasActor,*/ hAuraSkill - > GetInfo ( ) , ( STATE_BLOW : : emBLOW_INDEX ) pSE - > nID , - 1 /*SE.nDurationTime*/ , pSE - > szValue . c_str ( ) ) ;
m_mapAuraMemberSEID [ hNewMember - > GetUniqueID ( ) ] . push_back ( iID ) ;
}
# else
if ( CDnSkill : : ApplyTarget = = pSE - > ApplyType )
{
int iID = hNewMember - > CmdAddStateEffect ( /*m_hHasActor,*/ hAuraSkill - > GetInfo ( ) , ( STATE_BLOW : : emBLOW_INDEX ) pSE - > nID , - 1 /*SE.nDurationTime*/ , pSE - > szValue . c_str ( ) ) ;
m_mapAuraMemberSEID [ hNewMember - > GetUniqueID ( ) ] . push_back ( iID ) ;
}
# endif // PRE_FIX_55383
}
}
}
int iNumOutMember = ( int ) vlOutMember . size ( ) ;
for ( int iMember = 0 ; iMember < iNumOutMember ; + + iMember )
{
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> .
DnActorHandle hOutMember = CDnActor : : FindActorFromUniqueID ( m_hHasActor - > GetRoom ( ) , vlOutMember . at ( iMember ) ) ;
if ( hOutMember )
{
//// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϰ<EFBFBD> <20> ִ<EFBFBD> <20> ༮<EFBFBD> <E0BCAE> <20> Ű澲<C5B0> <E6BEB2> <20> ʴ´ <CAB4> .
//DnSkillHandle hIfOutMemberAuraSkill = hOutMember->GetEnabledAuraSkill();
//if( hIfOutMemberAuraSkill &&
// hIfOutMemberAuraSkill->GetClassID() == hAuraSkill->GetClassID() )
// continue;
// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> <C5B3> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϰ<EFBFBD> <20> ִ<EFBFBD> <D6B4> <EFBFBD> <EFBFBD> <EFBFBD> <20> ɷ<EFBFBD> <C9B7> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ɾ<EFBFBD> <C9BE> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ƿ<EFBFBD>
// <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ÿ<EFBFBD> <20> ο <EFBFBD> <CEBF> <EFBFBD> <20> <> <EFBFBD> ̵<EFBFBD> <CCB5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> .
//DWORD dwNumStateEffect = hAuraSkill->GetStateEffectCount();
//for( DWORD dwStateEffect = 0; dwStateEffect < dwNumStateEffect; ++dwStateEffect )
//{
// const CDnSkill::StateEffectStruct* pSE = hAuraSkill->GetStateEffectFromIndex( dwStateEffect );
// if( CDnSkill::ApplyTarget == pSE->ApplyType )
// hOutMember->CmdRemoveStateEffect( (STATE_BLOW::emBLOW_INDEX)pSE->nID );
//}
vector < int > & vlBlowIDsToRemove = m_mapAuraMemberSEID [ hOutMember - > GetUniqueID ( ) ] ;
for ( int i = 0 ; i < ( int ) vlBlowIDsToRemove . size ( ) ; + + i )
hOutMember - > CmdRemoveStateEffectFromID ( vlBlowIDsToRemove . at ( i ) ) ;
m_mapAuraMemberSEID . erase ( hOutMember - > GetUniqueID ( ) ) ;
}
}
m_LastAuraCheckTime = LocalTime ;
}
}
void CDnAuraProcessor : : OnEnd ( LOCAL_TIME LocalTime , float fDelta )
{
if ( m_setPartyMemberInAura . empty ( ) )
return ;
// <20> <> <EFBFBD> <EFBFBD> <20> <> ų<EFBFBD> ̶<EFBFBD> <CCB6> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ִ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ȿ<EFBFBD> <C8BF> <20> <> <EFBFBD> <EFBFBD> .
set < DWORD > : : iterator iter = m_setPartyMemberInAura . begin ( ) ;
//assert( m_hHasActor->IsEnabledAuraSkill() && "<22> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> μ<EFBFBD> <CEBC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ߿<EFBFBD> <DFBF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ų <20> ߵ <EFBFBD> <20> <> <EFBFBD> ̾<EFBFBD> <CCBE> <EFBFBD> <20> <> " );
DnSkillHandle hAuraSkill = m_hHasActor - > GetEnabledAuraSkill ( ) ;
if ( hAuraSkill )
{
for ( iter ; iter ! = m_setPartyMemberInAura . end ( ) ; + + iter )
{
DnActorHandle hMember = CDnActor : : FindActorFromUniqueID ( m_hHasActor - > GetRoom ( ) , * iter ) ;
if ( hMember )
{
vector < int > & vlBlowIDsToRemove = m_mapAuraMemberSEID [ hMember - > GetUniqueID ( ) ] ;
for ( int i = 0 ; i < ( int ) vlBlowIDsToRemove . size ( ) ; + + i )
hMember - > CmdRemoveStateEffectFromID ( vlBlowIDsToRemove . at ( i ) ) ;
}
}
m_setPartyMemberInAura . clear ( ) ;
m_mapAuraMemberSEID . clear ( ) ;
}
m_bAuraOff = true ;
}