Exemplo n.º 1
0
 public void ApplyArmorAttribute(Attribute attribute, EnhancementOperation priority, int value)
 {
     Assert.IsTrue(IsArmorAttribute(attribute));
     if (attribute == Attribute.Armor)
     {
         armor.AddBoost(priority, value, StatBooster.Priority.First);
     }
 }
        void AggregateEnhancements()
        {
            foreach (AttributeEnhancement enhancement in equipContext.Enhancements)
            {
                Attribute            attribute = enhancement.Attribute;
                EnhancementOperation operation = enhancement.Operation;
                int value = enhancement.Magnitude;

                statBoosters[attribute].AddBoost(operation, value, StatBooster.Priority.First);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Add an enhancement to this statbooster. Priority must correspond to one of the valid stat boosts.
        /// </summary>
        public void AddBoost(EnhancementOperation operation, int magnitude, Priority priority)
        {
            bool first  = priority == Priority.First;
            bool second = priority == Priority.Second;
            bool final  = priority == Priority.Final;

            bool add        = operation == EnhancementOperation.Additive;
            bool mult       = operation == EnhancementOperation.Multiplicative;
            bool overridden = operation == EnhancementOperation.Override;

            Assert.IsTrue(first || second || final);
            Assert.IsTrue(add || mult || overridden);

            if (first && add)
            {
                firstAdditive += magnitude;
            }
            else if (first && mult)
            {
                firstMultiplicative += magnitude;
            }
            else if (second && add)
            {
                secondAdditive += magnitude;
            }
            else if (second && mult)
            {
                secondMultiplicative += magnitude;
            }
            else if (final && add)
            {
                finalAdditive += magnitude;
            }
            else if (final && mult)
            {
                finalMultiplicative += magnitude;
            }
            else if (overridden)
            {
                overrideValue = isOverrideSet ? Mathf.Min(overrideValue, magnitude) : magnitude;
                isOverrideSet = true;
            }
            else
            {
                // In the editor, the assertion above will fail. At run-time, the unidentified boost is skipped.
            }
        }
Exemplo n.º 4
0
 public void ApplyWeaponAttribute(Attribute attribute, EnhancementOperation operation, int value)
 {
     Assert.IsTrue(IsWeaponAttribute(attribute));
     if (attribute == Attribute.MinDamage)
     {
         AddBoost(minBooster, operation, value);
     }
     else if (attribute == Attribute.MaxDamage)
     {
         AddBoost(maxBooster, operation, value);
     }
     else if (attribute == Attribute.WeaponDamage)
     {
         AddBoost(damageBooster, operation, value);
     }
     else if (attribute == Attribute.AttackSpeed)
     {
         AddBoost(speedBooster, operation, value);
     }
     else if (attribute == Attribute.CritMultiplier)
     {
         AddBoost(critBooster, operation, value);
     }
 }
Exemplo n.º 5
0
 void AddBoost(StatBooster booster, EnhancementOperation operation, int value)
 {
     // weapon enhancements are all first-priority
     booster.AddBoost(operation, value, StatBooster.Priority.First);
 }
Exemplo n.º 6
0
 public AttributeEnhancement(Attribute attribute, EnhancementOperation priority, int magnitude)
 {
     this.attribute = attribute;
     this.operation = priority;
     this.magnitude = magnitude;
 }