Пример #1
0
        public static CriticalInfo CriticalStrike()
        {
            CriticalInfo critical = new CriticalInfo();

            critical.Id             = "c01";
            critical.Name           = "Critical Strike";
            critical.Chance         = 80.0f;
            critical.Multiple       = 2.0f;
            critical.Bonus          = 0.0f;
            critical.StackType      = System.DamageSystem.StackType.Diminishing;
            critical.Stacks         = new List <System.DamageSystem.IDamageModification>();
            critical.CanEvade       = true;
            critical.CanIgnoreArmor = false;
            critical.CanIgnoreBlock = false;

            return(critical);
        }
Пример #2
0
        public float CalculateDamage()
        {
            float damage = 0;

            rawDamage       = DamageAmount;
            increasedDamage = 0;
            reducedDamage   = 0;

            foreach (DictionaryEntry entry in PrePassive.Modifications)
            {
                CriticalInfo modifier = entry.Value as CriticalInfo;
                modifier.Critical(this);
            }

            foreach (DictionaryEntry entry in Critical.Modifications)
            {
                CriticalInfo modifier = entry.Value as CriticalInfo;
                modifier.Critical(this);
            }

            foreach (DictionaryEntry entry in Evasion.Modifications)
            {
                EvasionInfo modifier = entry.Value as EvasionInfo;
                modifier.Evade(this);
            }

            foreach (DictionaryEntry entry in Reduction.Modifications)
            {
                ReductionInfo modifier = entry.Value as ReductionInfo;
                modifier.Reduce(this);
            }

            foreach (DictionaryEntry entry in PostPassive.Modifications)
            {
                CriticalInfo modifier = entry.Value as CriticalInfo;
                modifier.Critical(this);
            }

            return(damage);
        }