public D2Action_Damage(AbilityDamageType damageType, AbilityDamageFlag damageFlag, AbilityValueSource damageValueSource, List <D2Action> successActions, ActionTarget actionTarget) : base(actionTarget) { this.damageType = damageType; this.damageFlag = damageFlag; m_SuccessActions = successActions; m_AbilityValueSource = damageValueSource; }
// 造成伤害 public static void ApplyDamage(BattleUnit caster, BattleUnit victim, AbilityDamageType damageType, AbilityDamageFlag damageFlag, AbilityValueSource damageValueSource, string configName) { int casterLevel = caster.GetLevel(); BattleProperty casterProperty = caster.GetProperty(); BattleProperty victimProperty = victim.GetProperty(); float abilityValue = damageValueSource.GetAbilityValue(casterLevel, casterProperty, victimProperty); float finalDamage = CalcDamageByDamageType(abilityValue, damageType, casterProperty, victimProperty); // 护盾 // 吸血 victim.UpdateHP(-finalDamage); BattleLog.LogRpgBattleAttacker(BattleLogic.instance.logicFrame, caster, victim, configName, finalDamage); }
private static float CalcDamageByDamageType(float abilityValue, AbilityDamageType damageType, BattleProperty casterProperty, BattleProperty targetProperty) { // todo 计算减伤 switch (damageType) { case AbilityDamageType.DAMAGE_TYPE_PHYSICAL: break; case AbilityDamageType.DAMAGE_TYPE_MAGICAL: break; case AbilityDamageType.DAMAGE_TYPE_PURE: break; default: break; } return(abilityValue); }
public static int Damage(Actor attacker, Actor defender, AbilityDamageType damageType) { int damage = 0; switch (damageType) { case AbilityDamageType.Physical: damage = (attacker.Strength * 2) - defender.Defense; break; case AbilityDamageType.Magical: damage = (attacker.MagicPower * 2) - defender.MagicDefense; break; case AbilityDamageType.Healing: damage = (attacker.MagicPower * 2); break; default: break; } return(damage); }