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

📄 delayedskill.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "stdafx.h"
#include "SkillInfoParser.h"
#include "NPC.h"
#include "Field.h"
#include "Character.h"
#include "Player.h"
#include "DelayedSkill.h"
#include "AITypes.h"
#include <PacketStruct_CG.h>
#include <battle.h>
#include "CharacterFormula.h"
#include "SkillInfoParser.h"

VOID DelayedSkill::SetExecuteInterval()
{
	m_wInterval = m_pBaseSkillInfo->m_wSkillCasting + m_pBaseSkillInfo->m_wFlyingLifeTime;
}

VOID DelayedSkill::StartExecute()
{
	m_pField = m_pOwnerChar->GetField();
	if( !m_pField ) 
	{
		m_bEndExecute = FALSE;
		return;
	}

	// MainTarget捞 蜡瓤茄瘤 眉农茄促.(胶懦 荤芭府 眉农)
	if( !Skill::CheckMainTarget() )
	{
		m_bEndExecute = FALSE;
	}

	// 傍烹栏肺 贸府秦具 窍绰 荤亲阑 贸府茄促.
	Skill::CommonExecute();

	// 胶懦 傍拜 矫累俊 措茄 宏肺靛 某胶泼阑 秦霖促.
	MSG_CG_SKILL_ACTION_DELAY_START_BRD actionMsg;
	actionMsg.m_byCategory				= CG_SKILL;
	actionMsg.m_byProtocol				= CG_SKILL_ACTION_DELAY_START_BRD;
	actionMsg.m_SkillCode				= m_SkillInfo.m_SkillCode;
	actionMsg.m_dwClientSerial			= m_SkillInfo.m_dwClientSerial;
	actionMsg.m_dwAttackerKey			= m_pOwnerChar->GetObjectKey();
	actionMsg.m_dwPrimaryTargetKey		= m_SkillInfo.m_dwMainTargetKey;
	actionMsg.m_wvMainTargetPos			= m_SkillInfo.m_wvMainTargetPos;
	actionMsg.m_wvCurPos				= m_SkillInfo.m_wvCurPos;
	actionMsg.m_wvDestPos				= m_SkillInfo.m_wvDestPos;

	m_pOwnerChar->SendPacketAround( &actionMsg, actionMsg.GetSize() );
}

VOID DelayedSkill::EndExecute()
{
	if( !m_bEndExecute )	
	{
		// 加己捞唱 绢呼府萍甸阑 秦力茄促.
		Skill::CommonRelease();

		// Miss 贸府甫 窍扁 困秦辑 搬苞 菩哦篮 焊辰促.
		Broadcast_Delayed_Result();
		return;
	}

	// 颇扼固磐甫 檬扁拳茄促.
	Skill::ParamInitialize();

	// 鸥百府胶飘甫 备茄促.
	m_byNumberOfTargets = FindTargets( m_pTarget );

	// 鸥百俊霸 利侩登绰 绢呼府萍甫 利侩茄促.
	Character *pMainTarget = NULL;
	for( int i = 0; i < m_byNumberOfTargets; ++i )
	{
		if( !m_pTarget[i] )		continue;

		if( m_SkillInfo.m_dwMainTargetKey == m_pTarget[i]->GetObjectKey() )	
			pMainTarget = m_pTarget[i];

		// Ability甫 角青矫挪促.
		if( !Skill::ExecuteAbilities( m_pTarget[i], m_ResultMsg[m_byHitTargetCount] ) )	continue;

		// 傍拜俊 己傍沁阑 版快 AIMessage甫 朝赴促.
		Skill::SendAIMessage( m_pTarget[i] );

		m_byHitTargetCount++;

		if( m_pBaseSkillInfo->m_byMaxTargetNo )
		{
			if( m_byHitTargetCount >= m_pBaseSkillInfo->m_byMaxTargetNo )
				break;
		}
	}

	// 鞘靛俊 利侩登绰 绢呼府萍甫 利侩茄促.
	m_byEffectCount = ExecuteEffectAbilities( &m_ResultEffectMsg[0] );

	// 加己捞唱 绢呼府萍甸阑 秦力茄促.
	Skill::CommonRelease();

	// 傍拜窍搁 MP, HP啊 雀汗登绰 某腐磐啊 乐促.
	m_pOwnerChar->OnAttack( pMainTarget, m_SkillInfo.m_SkillCode, 0 );

	// 搬苞 菩哦阑 焊辰促.
	Broadcast_Delayed_Result();
}
















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -