public void AttackGenerateRange() { var a = new Attack(10, 100); for (int i = 0; i < 20; i++) { int dmg = a.GenerateDamage(); Assert.IsTrue(dmg <= 100 && dmg >= 10); } }
public override void RecieveAttack(Attack incoming) { Health -= (int) (incoming.GenerateDamage()*(1 - Stats.DamageReduction)); if (Health <= (Stats.BaseHealth/2)) Strategy = new MonsterIrritatedStrategy(); if (Health <= (Stats.BaseHealth/3)) Strategy = new MonsterMadStrategy(); }
public void AttackLeveledGenerateFixed() { var a = new Attack(10, 10, 2); Assert.AreEqual(12, a.GenerateDamage()); a = new Attack(30, 30, 2); Assert.AreEqual(36, a.GenerateDamage()); a = new Attack(30, 30, 5); Assert.AreEqual(54, a.GenerateDamage()); }
public void AttackMultipliedGenerateRange() { var a = new Attack(10, 100); a.MultiplyDamage(1.5); for (int i = 0; i < 20; i++) { int dmg = a.GenerateDamage(); Assert.IsTrue(dmg <= 150 && dmg >= 15); } }
public void AttackMultipliedGenerateFixed() { var a = new Attack(10, 10); a.MultiplyDamage(1.5); Assert.AreEqual(15, a.GenerateDamage()); }
public void AttackGenerateFixed() { var a = new Attack(10, 10); Assert.AreEqual(10, a.GenerateDamage()); }
public override void ModifyOutgoing(Attack outgoing) { outgoing.MultiplyDamage(DamageMultiplier); }
public override void ModifyOutgoing(Attack outgoing) { // do nothing }
public override void RecieveAttack(Attack incoming) { Weapon.ModifyIncoming(incoming); Health -= (int) (incoming.GenerateDamage()*(1 - Stats.DamageReduction)); }
public override void ModifyOutgoing(Attack outgoing) { outgoing.MaximumDamage = (int)(outgoing.MaximumDamage * MaxMultiplier); outgoing.MinimumDamage = (int)(outgoing.MinimumDamage * MinMultiplier); }
public override void ModifyIncoming(Attack incoming) { // default: do nothing // note: you can completely omit this method if you don't wish to modify incoming attacks }
/// <summary> /// Recieves an <see cref="Attack" />, reducing the character's health after giving them /// an opportunity to apply damage reduction /// </summary> /// <param name="incoming">The incoming attack</param> public abstract void RecieveAttack(Attack incoming);
public virtual void ModifyIncoming(Attack incoming) { // default: do nothing }
public override Attack GenerateAttack() { var a = new Attack(Stats.MinimumDamage, Stats.MaximumDamage, Level); Strategy.ModifyOutgoing(a); return a; }
public override void ModifyOutgoing(Attack outgoing) { // don't modify }
public void ModifyOutgoing(Attack outgoing) { outgoing.MaximumDamage = (int) (outgoing.MaximumDamage*AttackMultiplier); outgoing.MinimumDamage = (int) (outgoing.MinimumDamage*AttackMultiplier); }
public abstract void ModifyOutgoing(Attack outgoing);
public override Attack GenerateAttack() { var outgoing = new Attack(Stats.MinimumDamage, Stats.MaximumDamage, Level); Weapon.ModifyOutgoing(outgoing); Drink.ModifyOutgoing(outgoing); // drink used up after one attack Drink = DrinkFactory.Create(DrinkType.NullDrink); return outgoing; }