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

📄 lowhpstatus.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "stdafx.h"
#include "Ability.h"
#include "LowHPStatus.h"
#include "SkillAttrCalculator.h"

VOID LowHPStatus::Init( Character *pOwner, Character *pAttacker, Ability *pAbility )
{
	AbilityStatus::Init( pOwner, pAttacker, pAbility );

	BASE_ABILITYINFO *pBaseAbilityInfo = pAbility->GetBaseAbilityInfo();
	m_eAttackType = (eATTACK_TYPE)pBaseAbilityInfo->m_iOption1;
}


VOID LowHPStatus::Start()
{
	UpdateLowHP();
}

VOID LowHPStatus::End()
{
	// 利侩登绢乐绰 荐摹绰 哗滚赴促.
	m_fHPRatio = 0;
	UpdateLowHP();

	AbilityStatus::End();
}

VOID LowHPStatus::UpdateLowHP()
{
	if( m_pOwner->IsDead() )	return;

	// 泅犁 HP 厚啦 眉农
	float fHPRatio = (float)m_pOwner->GetHP() / m_pOwner->GetMaxHP();

	// 捞固 荐摹啊 利侩登绢 乐栏搁
	if( m_bApplied )
	{
		// HP厚啦 炼扒俊 嘎瘤 臼栏搁 促矫 荐摹甫 猾促.
		if( fHPRatio > m_fHPRatio )
		{
			SkillAttrCalculator SkillCalc( m_pOwner->GetAttr() );
			SkillCalc.DelAttr( m_eAttrID, m_iValueType, m_iValue );
			m_bApplied = FALSE;

			// 荐摹 函拳甫 努扼俊 舅赴促.
			SendAttrChange();
		}
	}
	else
	{
		// HP厚啦 炼扒俊 嘎栏搁 荐摹甫 利侩矫挪促.
		if( fHPRatio <= m_fHPRatio )
		{
			// 傍拜仿阑 刘皑矫挪促.
			SkillAttrCalculator SkillCalc( m_pOwner->GetAttr() );
			int iAddValue = SkillCalc.AddAttr( m_eAttrID, m_iValueType, m_iValue );	// AttrType, 荐摹鸥涝, 荐摹

			// 唱吝俊 促矫 棵妨霖父怒 别扁困秦辑 m_iValue甫 促矫 汲沥茄促.
			m_iValueType = VALUE_TYPE_VALUE;
			m_iValue = iAddValue;
			m_bApplied = TRUE;

			// 荐摹 函拳甫 努扼俊 舅赴促.
			SendAttrChange();
		}
	}
}

VOID LowHPStatus::SendAttrChange()
{
	DWORD dwValue = 0;
	Attributes &Attr = m_pOwner->GetAttr();

	// 加己 傍拜仿 函拳
	if( m_eAttrID >= eATTR_MAGICAL_WATER_ATTACK_POWER && m_eAttrID <= eATTR_MAGICAL_DIVINE_ATTACK_POWER )
	{
		dwValue = Attr.GetMagicalAttackPower( m_eAttackType );
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );
	}
	// 可记 傈眉 傍拜仿
	else if( m_eAttrID == eATTR_OPTION_ALL_ATTACK_POWER )
	{
		dwValue = Attr[eATTR_OPTION_PHYSICAL_ATTACK_POWER][eATTR_KIND_CALC];
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );

		dwValue = Attr[eATTR_OPTION_MAGICAL_ATTACK_POWER][eATTR_KIND_CALC];
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );
	}
	// 加己 傈眉 傍拜仿
	else if( m_eAttrID == eATTR_MAGICAL_ALL_ATTACK_POWER )
	{
		for( int AttackType = eATTACK_TYPE_WATER; AttackType <= eATTACK_TYPE_DIVINE; ++AttackType )
		{
			dwValue = Attr.GetMagicalAttackPower( (eATTACK_TYPE)AttackType );
			m_pOwner->SendAttrChange( m_eAttrID, dwValue );
		}
	}

	// 加己 规绢仿 函拳
	else if( m_eAttrID >= eATTR_MAGICAL_WATER_DEFENSE_POWER && m_eAttrID <= eATTR_MAGICAL_DIVINE_DEFENSE_POWER )
	{
		dwValue = Attr.GetMagicalDefense( m_eAttackType );
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );
	}
	// 可记 傈眉 规绢仿
	else if( m_eAttrID == eATTR_OPTION_ALL_ATTACK_POWER )
	{
		dwValue = Attr[eATTR_OPTION_PHYSICAL_DEFENSE_POWER][eATTR_KIND_CALC];
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );

		dwValue = Attr[eATTR_OPTION_MAGICAL_DEFENSE_POWER][eATTR_KIND_CALC];
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );
	}
	// 加己 傈眉 规绢仿
	else if( m_eAttrID == eATTR_MAGICAL_ALL_DEFENSE_POWER )
	{
		for( int AttackType = eATTACK_TYPE_WATER; AttackType <= eATTACK_TYPE_DIVINE; ++AttackType )
		{
			dwValue = Attr.GetMagicalDefense( (eATTACK_TYPE)AttackType );
			m_pOwner->SendAttrChange( m_eAttrID, dwValue );
		}
	}
	else
	{
		dwValue = Attr[m_eAttrID][eATTR_KIND_CALC];
		m_pOwner->SendAttrChange( m_eAttrID, dwValue );
	}
}















⌨️ 快捷键说明

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