📄 mirrorstatus.cpp
字号:
#include "stdafx.h"
#include "Ability.h"
#include "MirrorStatus.h"
#include "AbilityFactory.h"
#include "StatusManager.h"
VOID MirrorStatus::Init( Character *pAttacker, Character *pOwner, Ability *pAbility )
{
AbilityStatus::Init( pAttacker, pOwner, pAbility );
BASE_ABILITYINFO *pBaseAbilityInfo = pAbility->GetBaseAbilityInfo();
m_fAbsorbRatio = pBaseAbilityInfo->m_iOption1 / 1000.0f;
m_iOption2 = pBaseAbilityInfo->m_iOption2;
}
VOID MirrorStatus::DamageMirror( Character *pAttacker, DAMAGETYPE wDamage )
{
if( !pAttacker ) return;
MSG_CG_SKILL_REFLECT_DAMAGE_BRD BrdMsg;
// 单固瘤甫 馆荤茄促.
int iMirrorDamage = (int)( wDamage * m_fAbsorbRatio );
pAttacker->Damaged( NULL, eATTACK_TYPE_MELEE, iMirrorDamage );
BrdMsg.m_dwAttackerKey = m_pOwner->GetObjectKey();
BrdMsg.m_dwTargetKey = pAttacker->GetObjectKey();
BrdMsg.m_wDamage = iMirrorDamage;
BrdMsg.m_dwTargetHP = pAttacker->GetHP();
BrdMsg.m_SkillCode = 0;
BrdMsg.m_wAbilityCode = 0;
// 乔拜 单固瘤 馆荤老 版快 惑怕捞惑篮 吧府瘤 臼绰促.
if( m_eAbilityID == eABILITY_REFLECT_DAMAGE )
{
m_pOwner->SendPacketAround( &BrdMsg, BrdMsg.GetSize() );
return;
}
// SkillInfo 檬扁拳
memset( &m_SkillInfoData, 0, sizeof(SkillInfo) );
// BaseAbilityInfo 悸泼
m_BaseAbilityInfo.m_byRangeType = 1; m_BaseAbilityInfo.m_wSuccessRate = 1000;
m_BaseAbilityInfo.m_iOption1 = 0; m_BaseAbilityInfo.m_iOption2 = 0;
m_BaseAbilityInfo.m_iParam[0] = m_iOption2; m_BaseAbilityInfo.m_iParam[1] = m_iValueType;
m_BaseAbilityInfo.m_iParam[2] = m_iValue; m_BaseAbilityInfo.m_iParam[3] = 0;
switch( m_eAbilityID )
{
case eABILITY_REFLECT_STUN: // 乔拜 胶畔
m_BaseAbilityInfo.m_wAbilityID = eABILITY_ABNORMAL_STATUS;
m_BaseAbilityInfo.m_wStateID = eCHAR_STATE_STUN;
break;
case eABILITY_REFLECT_FEAR: // 乔拜 乔绢
m_BaseAbilityInfo.m_wAbilityID = eABILITY_FEAR;
m_BaseAbilityInfo.m_wStateID = eCHAR_STATE_FEAR;
break;
case eABILITY_REFLECT_FROZEN: // 乔拜 橇肺琉
m_BaseAbilityInfo.m_wAbilityID = eABILITY_ABNORMAL_STATUS;
m_BaseAbilityInfo.m_wStateID = eCHAR_STATE_FROZEN;
break;
case eABILITY_REFLECT_SLOW: // 乔拜 练尖
m_BaseAbilityInfo.m_wAbilityID = eABILITY_MOVE_SPEED_INCREASE;
m_BaseAbilityInfo.m_wStateID = eCHAR_STATE_FETTER;
break;
case eABILITY_REFLECT_SLOWDOWN: // 乔拜 敌拳
m_BaseAbilityInfo.m_wAbilityID = eABILITY_PHYSICAL_SPEED_INCREASE;
m_BaseAbilityInfo.m_wStateID = eCHAR_STATE_SLOWDOWN;
break;
}
// 乔拜绢呼府萍 积己
Ability *pNewAbility = AbilityFactory::Instance()->AllocAbility();
pNewAbility->Init( m_pOwner, m_SkillCode, &m_SkillInfoData, 0, &m_BaseAbilityInfo );
// 捞惑惑怕 利侩
AbilityStatus *pAbilityStatus = pAttacker->GetStatusManager()->AllocAbility( m_pOwner, pNewAbility );
if( pAbilityStatus )
{
BrdMsg.m_SkillCode = m_SkillCode;
BrdMsg.m_wAbilityCode = m_eAbilityID;
}
// 惑怕利侩阑 努扼俊 舅赴促.
m_pOwner->SendPacketAround( &BrdMsg, BrdMsg.GetSize() );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -