Beispiel #1
0
 public BaseAction(string name, JobID jobID, CharacterStat stat, ActionAspect aspect,
                   ActionTarget targets, bool isOGCD, double potency, int mpCost,
                   int tpCost, double castTime, double recastTime, double range,
                   double radius, List <BaseAura> aurasApplied)
 {
     Name         = name;
     JobID        = jobID;
     Stat         = stat;
     Aspect       = aspect;
     Targets      = targets;
     IsOGCD       = isOGCD;
     Potency      = potency;
     MpCost       = mpCost;
     TpCost       = tpCost;
     CastTime     = castTime;
     RecastTime   = recastTime;
     Range        = range;
     Radius       = radius;
     AurasApplied = aurasApplied;
 }
Beispiel #2
0
        public BaseAura(string name, JobID jobID, double duration, AuraTarget targets,
                        double damageOverTimePotency, double healingOverTimePotency, ActionAspect damageAspect,
                        double refreshPotency, double magicDamageModifier, double healingSpellModifier,
                        double physicalDamageModifier, double globalDamageModifier, double type1Haste,
                        double type2Haste, double autoAttackDelayModifier,
                        double criticalHitRateModifier, double directHitRateModifier, double mpCostModifier,
                        double slashingResistanceModifier, double piercingResistanceModifier,
                        double bluntResistanceModifier, double damageTakenModifier,
                        double incomingCriticalHitRateModifier)
        {
            Name     = name;
            JobID    = jobID;
            Duration = duration;
            Targets  = targets;

            DamageOverTimePotency  = damageOverTimePotency;
            HealingOverTimePotency = healingOverTimePotency;
            DamageAspect           = damageAspect;
            RefreshPotency         = refreshPotency;

            MagicDamageModifier    = magicDamageModifier;
            HealingSpellModifier   = healingSpellModifier;
            PhysicalDamageModifier = physicalDamageModifier;
            GlobalDamageModifier   = globalDamageModifier;

            Type1Haste = type1Haste;
            Type2Haste = type2Haste;
            AutoAttackDelayModifier = autoAttackDelayModifier;

            CriticalHitRateModifier = criticalHitRateModifier;
            DirectHitRateModifier   = directHitRateModifier;

            MpCostModifier = mpCostModifier;

            SlashingResistanceModifier      = slashingResistanceModifier;
            PiercingResistanceModifier      = piercingResistanceModifier;
            BluntResistanceModifier         = bluntResistanceModifier;
            DamageTakenModifier             = damageTakenModifier;
            IncomingCriticalHitRateModifier = incomingCriticalHitRateModifier;
        }
Beispiel #3
0
        private static List <double> _getAuraMultipliers(IActor source, ITarget target, ActionAspect aspect)
        {
            List <double> damageModifiers = new List <double>();

            // Include source buff damage multipliers.
            foreach (Aura aura in source.Auras)
            {
                var baseAura = aura.BaseAura;

                if (baseAura.GlobalDamageModifier != 1)
                {
                    damageModifiers.Add(baseAura.GlobalDamageModifier);
                }

                if (aspect != ActionAspect.MAGIC && aspect != ActionAspect.UNASPECTED)
                {
                    if (baseAura.PhysicalDamageModifier != 1)
                    {
                        damageModifiers.Add(baseAura.PhysicalDamageModifier);
                    }
                }
                else if (aspect == ActionAspect.MAGIC)
                {
                    if (baseAura.MagicDamageModifier != 1)
                    {
                        damageModifiers.Add(baseAura.MagicDamageModifier);
                    }
                }
                else
                {
                    throw new ArgumentException("Action aspect is unknown: " + aspect.ToString());
                }
            }

            // Include target debuff damage multipliers.
            foreach (Aura aura in target.Auras)
            {
                var baseAura = aura.BaseAura;

                if (baseAura.DamageTakenModifier != 1)
                {
                    damageModifiers.Add(baseAura.DamageTakenModifier);
                }

                if (aspect == ActionAspect.BLUNT)
                {
                    if (baseAura.BluntResistanceModifier != 1)
                    {
                        damageModifiers.Add(baseAura.BluntResistanceModifier);
                    }
                }
                else if (aspect == ActionAspect.PIERCING)
                {
                    if (baseAura.PiercingResistanceModifier != 1)
                    {
                        damageModifiers.Add(baseAura.PiercingResistanceModifier);
                    }
                }
                else if (aspect == ActionAspect.SLASHING)
                {
                    if (baseAura.PiercingResistanceModifier != 1)
                    {
                        damageModifiers.Add(baseAura.PiercingResistanceModifier);
                    }
                }
            }

            return(damageModifiers);
        }