public void TestHooch() { var game = CreateGame(); var Hero = game.Hero; var attack = Hero.Stats[EntityStatKind.Strength].CurrentValue; var chanceToHit = Hero.Stats[EntityStatKind.ChanceToMeleeHit].CurrentValue; var hooch = new Hooch(); //Assert.AreEqual(hooch.PrimaryStatDescription, ""); var added = Hero.Inventory.Add(hooch); Hero.Consume(hooch); Assert.IsTrue(Hero.LastingEffects.Any()); var le = Hero.LastingEffects.Where(i => i.Type == Roguelike.Effects.EffectType.Hooch); Assert.IsTrue(le.Any()); Action assertGreater = () => { var hoochAttack = Hero.Stats[EntityStatKind.Strength]; var hoochChanceToHit = Hero.Stats[EntityStatKind.ChanceToMeleeHit]; Assert.Greater(hoochAttack.CurrentValue, attack); Assert.Less(hoochChanceToHit.CurrentValue, chanceToHit); }; assertGreater(); SkipTurns(1); //still on assertGreater(); SkipTurns(6); //now shall be off Assert.IsFalse(le.Any()); var hoochAttackAfter = Hero.Stats[EntityStatKind.Strength]; var hoochChanceToHitAfter = Hero.Stats[EntityStatKind.ChanceToMeleeHit]; Assert.AreEqual(hoochAttackAfter.CurrentValue, attack); Assert.AreEqual(hoochChanceToHitAfter.CurrentValue, chanceToHit); }
public void TestHoochDrunkTwice() { var game = CreateGame(); var Hero = game.Hero; var attack = Hero.Stats[EntityStatKind.Strength].CurrentValue; var chanceToHit = Hero.Stats[EntityStatKind.ChanceToMeleeHit].CurrentValue; var hooch = new Hooch(); var added = Hero.Inventory.Add(hooch); Hero.Consume(hooch); Assert.IsTrue(Hero.LastingEffects.Any()); var le = Hero.LastingEffects.Where(i => i.Type == Roguelike.Effects.EffectType.Hooch); Assert.IsTrue(le.Any()); float strengthWithLE = 0; float chanceToHitWithLE = 0; Action assertGreater = () => { var hoochAttack = Hero.Stats[EntityStatKind.Strength]; var hoochChanceToHit = Hero.Stats[EntityStatKind.ChanceToMeleeHit]; Assert.Greater(hoochAttack.CurrentValue, attack); Assert.Less(hoochChanceToHit.CurrentValue, chanceToHit); if (strengthWithLE == 0) { strengthWithLE = hoochAttack.CurrentValue; chanceToHitWithLE = hoochChanceToHit.CurrentValue; } }; assertGreater(); SkipTurns(1); //still on assertGreater(); hooch = new Hooch(); added = Hero.Inventory.Add(hooch); Hero.Consume(hooch); //shall be same var str = Hero.Stats[EntityStatKind.Strength].CurrentValue; Assert.AreEqual(str, strengthWithLE); Assert.AreEqual(Hero.Stats[EntityStatKind.ChanceToMeleeHit].CurrentValue, chanceToHitWithLE); SkipTurns(6); //now shall be on - prolonged Assert.IsTrue(le.Any()); SkipTurns(1); //now shall be off Assert.IsFalse(le.Any()); var hoochAttackAfter = Hero.Stats[EntityStatKind.Strength]; var hoochChanceToHitAfter = Hero.Stats[EntityStatKind.ChanceToMeleeHit]; Assert.AreEqual(hoochAttackAfter.CurrentValue, attack); Assert.AreEqual(hoochChanceToHitAfter.CurrentValue, chanceToHit); }