📄 windshieldstatus.cpp
字号:
#include "stdafx.h"
#include "Ability.h"
#include "WindShieldStatus.h"
#include "SkillInfoParser.h"
VOID WindShieldStatus::Init( Character *pAttacker, Character *pOwner, Ability *pAbility )
{
AbilityStatus::Init( pAttacker, pOwner, pAbility );
BASE_ABILITYINFO *pBaseAbilityInfo = pAbility->GetBaseAbilityInfo();
m_eAttackType = (eATTACK_TYPE)pBaseAbilityInfo->m_iOption1;
m_fAttackRange = pBaseAbilityInfo->m_iParam[0]/10.0f;
m_wPeriodicDamage = pBaseAbilityInfo->m_iParam[1];
}
VOID WindShieldStatus::Execute()
{
Field *pField = m_pOwner->GetField();
if( !pField ) return;
Character *pTargetArray[MAX_TARGET_NUM];
memset( pTargetArray, 0, sizeof(Character*)*MAX_TARGET_NUM );
BYTE byNumberOfTargets = 0;
BYTE byHitTargetCount = 0;
WzVector vMainTargetPos = { 0, 0, 0 };
// 弥措 付府荐 力茄
SkillScriptInfo *pBaseSkillInfo = (SkillScriptInfo *)SkillInfoParser::Instance()->GetSkillInfo( m_SkillCode );
int iCountLimit = MAX_TARGET_NUM;
if( pBaseSkillInfo && pBaseSkillInfo->m_byMaxTargetNo )
{
iCountLimit = pBaseSkillInfo->m_byMaxTargetNo;
}
// 林函俊 鸥百捞 乐绰瘤 茫绰促.
byNumberOfTargets = pField->FindTargetsByAttacker( SKILL_TARGET_ENEMY, m_pOwner, pTargetArray, vMainTargetPos, m_fAttackRange, iCountLimit, 0 );
MSG_CG_SKILL_PERIODIC_DAMAGE_BRD BrdMsg;
if( m_pAttacker ) BrdMsg.m_dwAttackerKey = m_pAttacker->GetObjectKey();
BrdMsg.m_SkillCode = m_SkillCode;
for( int i = 0; i < byNumberOfTargets; ++i )
{
if( !pTargetArray[i] ) continue;
// 磷菌阑 版快 力寇
if( pTargetArray[i]->IsDead() ) continue;
// 酒焙篮 力寇
if( m_pOwner->IsFriend( pTargetArray[i] ) ) continue;
// 单固瘤 贸府
pTargetArray[i]->Damaged( m_pOwner, m_eAttackType, m_wPeriodicDamage );
// 菩哦俊 单固瘤 沥焊 悸泼
BrdMsg.m_DamageInfo[byHitTargetCount].m_dwTargetKey = pTargetArray[i]->GetObjectKey();
BrdMsg.m_DamageInfo[byHitTargetCount].m_wDamage = m_wPeriodicDamage;
BrdMsg.m_DamageInfo[byHitTargetCount].m_dwTargetHP = pTargetArray[i]->GetHP();
byHitTargetCount++;
}
BrdMsg.m_byNumberOfTargets = byHitTargetCount;
// 林函俊 舅妨霖促.
if( byNumberOfTargets )
m_pOwner->SendPacketAround( &BrdMsg, BrdMsg.GetSize() );
AbilityStatus::Execute();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -