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(); } }
public void AddDefense(DefensiveAbility newAbility) { if (newAbility != null) { _Defenses.Add(newAbility); } }
// constructors public CharacterAttributes() { _Attacks = new List <OffensiveAbility>(); _Defenses = new List <DefensiveAbility>(); _ActiveAttack = new NullAttack(); _ActiveDefense = new NullDefend(); }
public void SetActiveDefense(DefensiveAbility value) { if (value != null) { _ActiveDefense = value; } }
public bool RemoveDefense(DefensiveAbility value) { if (_ActiveDefense == value) { return(false); } return(_Defenses.Remove(value)); }