📄 delayedskill.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 + -