示例#1
0
        public void PerformActiveDefense(Double incomingDamage)
        {
            CharacterAttributes defenderAttributes = this._Attributes;
            DefensiveAbility    activeDefense      = defenderAttributes.GetActiveDefense();

            Double damagePrevented = defenderAttributes._armor;

            if (AbilitySuccessful(activeDefense._successRate))
            {
                damagePrevented += activeDefense._armorIncrease;
                AddMessage(this.GetName() + "'s " + activeDefense.ToString() + " defense was successful for a " + damagePrevented + " damage decrease!");

                defenderAttributes._health -= Math.Max(0, incomingDamage - damagePrevented);
                AddMessage(this.GetName() + " lost " + Math.Max(0, incomingDamage - damagePrevented) + " health points");
            }
            else
            {
                AddMessage(this.GetName() + "'s " + activeDefense.ToString() + " defense was unsuccessful! No damage will be prevented!");
                defenderAttributes._health -= Math.Max(0, incomingDamage);
                AddMessage(this.GetName() + " lost " + Math.Max(0, incomingDamage) + " health points");
            }
            if (GetAttributes()._health == 0)
            {
                HandleDeath();
            }
        }
示例#2
0
 public void AddDefense(DefensiveAbility newAbility)
 {
     if (newAbility != null)
     {
         _Defenses.Add(newAbility);
     }
 }
示例#3
0
 // constructors
 public CharacterAttributes()
 {
     _Attacks       = new List <OffensiveAbility>();
     _Defenses      = new List <DefensiveAbility>();
     _ActiveAttack  = new NullAttack();
     _ActiveDefense = new NullDefend();
 }
示例#4
0
 public void SetActiveDefense(DefensiveAbility value)
 {
     if (value != null)
     {
         _ActiveDefense = value;
     }
 }
示例#5
0
 public bool RemoveDefense(DefensiveAbility value)
 {
     if (_ActiveDefense == value)
     {
         return(false);
     }
     return(_Defenses.Remove(value));
 }