# Damage

# 说明

Damage命名空间提供了伤害计算相关的功能,用于预测和计算各类伤害数值。

# 如何使用

// 计算普通攻击伤害
float adDamage = Damage::CalculateAutoAttackDamage(myHero, target);

// 计算技能伤害
float skillDamage = Damage::CalculateSkillDamage(myHero, target, SkillSlot::Q, 1);

// 获取目标剩余血量
float healthAfterDamage = Damage::GetHealthAfterDamage(target, 100.0f, DamageType::Physical);

# CalculateAutoAttackDamage

float CalculateAutoAttackDamage(Unit* source, Unit* target, bool includeCritical = false)

计算从源单位对目标单位的普通攻击伤害。

参数名字 参数类型 描述
source Unit* 伤害来源单位
target Unit* 伤害目标单位
includeCritical bool 是否计入暴击,默认为false
// 计算普通攻击伤害
float damage = Damage::CalculateAutoAttackDamage(myHero, enemy);

// 计算包含暴击的普通攻击伤害
float critDamage = Damage::CalculateAutoAttackDamage(myHero, enemy, true);

# CalculateSkillDamage

float CalculateSkillDamage(Unit* source, Unit* target, SkillSlot slot, int level = -1)

计算技能伤害。

参数名字 参数类型 描述
source Unit* 伤害来源单位
target Unit* 伤害目标单位
slot SkillSlot 技能槽位,如Q、W、E、R
level int 技能等级,默认为-1表示使用当前等级
// 计算Q技能当前等级的伤害
float qDamage = Damage::CalculateSkillDamage(myHero, enemy, SkillSlot::Q);

// 计算Q技能1级伤害
float qLevel1Damage = Damage::CalculateSkillDamage(myHero, enemy, SkillSlot::Q, 1);

// 计算大招满级伤害
float rMaxDamage = Damage::CalculateSkillDamage(myHero, enemy, SkillSlot::R, 3);

# GetHealthAfterDamage

float GetHealthAfterDamage(Unit* target, float rawDamage, DamageType damageType)

计算目标受到指定伤害后的剩余生命值。

参数名字 参数类型 描述
target Unit* 伤害目标单位
rawDamage float 原始伤害数值
damageType DamageType 伤害类型,如物理、魔法或真实伤害
// 计算受到100点物理伤害后的剩余血量
float healthAfterPhysical = Damage::GetHealthAfterDamage(enemy, 100.0f, DamageType::Physical);

// 计算受到100点魔法伤害后的剩余血量
float healthAfterMagical = Damage::GetHealthAfterDamage(enemy, 100.0f, DamageType::Magical);

// 计算受到100点真实伤害后的剩余血量
float healthAfterTrue = Damage::GetHealthAfterDamage(enemy, 100.0f, DamageType::True);

# CalculateDamageReduction

float CalculateDamageReduction(Unit* target, DamageType damageType)

计算目标对特定伤害类型的减伤百分比。

参数名字 参数类型 描述
target Unit* 目标单位
damageType DamageType 伤害类型
// 计算物理伤害减免率
float physicalReduction = Damage::CalculateDamageReduction(enemy, DamageType::Physical);

// 计算魔法伤害减免率
float magicalReduction = Damage::CalculateDamageReduction(enemy, DamageType::Magical);

# IsTargetKillable

bool IsTargetKillable(Unit* source, Unit* target, float extraDamage = 0.0f)

判断目标是否可以被击杀(计算所有可用技能和普攻的总伤害)。

参数名字 参数类型 描述
source Unit* 伤害来源单位
target Unit* 目标单位
extraDamage float 额外伤害,默认为0
// 判断目标是否可击杀
bool canKill = Damage::IsTargetKillable(myHero, enemy);

// 判断目标是否可被额外100点伤害击杀
bool canKillWithExtra = Damage::IsTargetKillable(myHero, enemy, 100.0f);