public void TestAttackSpellEventsTimeout() { AllPlayers.Invalidate(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Monster joeTheVineBlight = MonsterBuilder.BuildVineBlight("Joe"); Spell zzzRangeSpell = AllSpells.Get("ZZZ Test Range Spell", merkin, 3); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(merkin); game.AddCreature(joeTheVineBlight); game.EnteringCombat(); merkin.CastTest(zzzRangeSpell, joeTheVineBlight); List <CastedSpell> activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(0, activeSpells.Count); Assert.AreEqual("onCasting", Expressions.GetStr("Get(_spellState)", merkin)); const int hiddenThreshold = 12; merkin.ReadyRollDice(DiceRollType.Attack, "1d20(:score),2d8(:damage),1d6(:damage)", hiddenThreshold); Assert.AreEqual("onCast", Expressions.GetStr("Get(_spellState)", merkin)); const int damage = 7; merkin.DieRollStoppedForTestCases(hiddenThreshold, damage); game.AdvanceClock(DndTimeSpan.FromMinutes(1)); Assert.AreEqual("onDispel", Expressions.GetStr("Get(_spellState)", merkin)); activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(0, activeSpells.Count); game.ExitingCombat(); }
public void TestInit() { DndTimeClock dndTimeClock = new DndTimeClock(); DateTime now = DateTime.Now; dndTimeClock.SetTime(now); dndTimeClock.Advance(DndTimeSpan.FromRounds(1)); TimeSpan difference = dndTimeClock.Time - now; Assert.AreEqual(6, difference.TotalSeconds); dndTimeClock.SetTime(now); dndTimeClock.Advance(new DndTimeSpan(TimeMeasure.instant, 5)); difference = dndTimeClock.Time - now; Assert.AreEqual(0, difference.TotalSeconds); dndTimeClock.SetTime(now); dndTimeClock.Advance(DndTimeSpan.FromMinutes(5)); difference = dndTimeClock.Time - now; Assert.AreEqual(5, difference.TotalMinutes); dndTimeClock.SetTime(now); dndTimeClock.Advance(DndTimeSpan.FromHours(3)); difference = dndTimeClock.Time - now; Assert.AreEqual(3, difference.TotalHours); dndTimeClock.SetTime(now); dndTimeClock.Advance(DndTimeSpan.FromDays(2)); difference = dndTimeClock.Time - now; Assert.AreEqual(2, difference.TotalDays); }
public void TestSaveSpellEvents() { AllPlayers.Invalidate(); History.TimeClock = new DndTimeClock(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Monster joeTheVineBlight = MonsterBuilder.BuildVineBlight("Joe"); Spell zzzSaveSpell = AllSpells.Get("ZZZ Test Save Spell", merkin, 3); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(merkin); game.AddCreature(joeTheVineBlight); merkin.CastTest(zzzSaveSpell, joeTheVineBlight); merkin.ReadyRollDice(DiceRollType.DamageOnly, "3d6(fire)", 12); List <CastedSpell> activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(1, activeSpells.Count); Assert.AreEqual("onCast", Expressions.GetStr("Get(_spellState)", merkin)); game.AdvanceClock(DndTimeSpan.FromMinutes(1)); Assert.AreEqual("onDispel", Expressions.GetStr("Get(_spellState)", merkin)); activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(0, activeSpells.Count); }
private void BtnAdd10Minutes_Click(object sender, RoutedEventArgs e) { dndTimeClock.Advance(DndTimeSpan.FromMinutes(10), ShiftKeyDown); }