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

📄 mirrorstatus.cpp

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