/// <summary> /// 受到伤害 /// </summary> /// <param name="damage">受到的伤害</param> public virtual void TakeDamages(Damage damage) { BaseNoArmorComponent armor = GetComponent<BaseNoArmorComponent>(); Damage newDamage = armor.CalculateDamage(damage); this.hpComponent.LosePoint(newDamage.source, newDamage.realTotalDamage); }
/// <summary> /// 获取伤害数据结果 /// </summary> /// <param name="source">源</param> /// <param name="target">目标</param> /// <returns></returns> public Damage GetAttackDamage(Character source, Character target) { Damage damage = new Damage(attacks.GetAttacks(), null, source, target); return damage; }
/// <summary> /// 计算护甲抵挡后的伤害,override /// </summary> /// <param name="damage">抵挡前的伤害</param> /// <returns>抵挡后的伤害</returns> public override Damage CalculateDamage(Damage damage) { for (int i = 0; i < damage.realDamages.Length; i++) { damage.realDamages[i] *= (damageModifiedValue) / (damageModifiedValue + Mathf.Max(Mathf.Min(armorList[i], maxArmor), minArmor)); } return damage; }
/// <summary> /// 计算护甲抵挡后的伤害,override /// </summary> /// <param name="damage">抵挡前的伤害</param> /// <returns>抵挡后的伤害</returns> public override Damage CalculateDamage(Damage damage) { for (int i = 0; i < damage.realDamages.Length; i++) { damage.realDamages[i] -= Mathf.Max(Mathf.Min(armorList[i], maxArmor), minArmor); } return damage; }
/// <summary> /// 计算护甲抵挡后的伤害,virtual /// </summary> /// <param name="damage">抵挡前的伤害</param> /// <returns>抵挡后的伤害</returns> public virtual Damage CalculateDamage(Damage damage) { return damage; }