⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 windshieldstatus.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 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 + -