Exemple #1
0
 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);
    }
Exemple #4
0
        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);
        }