public void CharacterHoldsActionUntilLowerDexAndTheCompletesHeldAction_InterruptedPhaseActsNext() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter character = sequence.ActivePhase.Character; HoldActionManuever holdManuever = (HoldActionManuever)character.Manuevers["Hold Action"]; holdManuever.DexWaitingFor = 15; character.Manuevers["Hold Action"].Perform(); sequence.CompleteActivePhase(); //act //execute the held action sequence.CompleteActivePhase(); //assert Assert.AreEqual(sequence.ActiveSegment.CombatPhases[2], sequence.ActivePhase); Assert.AreEqual(character.HeldManuever, null); Assert.AreEqual(sequence.HeldManuevers.Count, 0); }
public void WhenSegmentTwelveFinished_PostSegmentTwelveRecoveryRunOnAllCharcters() { CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharactersWithMocRecManeuver; sequence.StartCombat(); HeroSystemCharacter character = sequence.Characters.FirstOrDefault(); sequence.CompleteActivePhase(); sequence.CompleteActivePhase(); sequence.CompleteActivePhase(); Mock.Get(character?.Manuevers["Recover"]) .Verify(foo => foo.Perform(), Times.Exactly(3)); }
public void MoreThanOneCharacterTriesToUseHeldActionAtSameTime_CharacterWhoWinsDexRollGoesFirst() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter holder1 = sequence.ActivePhase.Character; HeroSystemCharacter holder2 = sequence.ActiveSegment.PhaseNextInDexOrder.Character; HoldActionManuever held1 = holder1.Manuevers["Hold Action"] as HoldActionManuever; held1.DexWaitingFor = 10; HoldActionManuever held2 = holder2.Manuevers["Hold Action"] as HoldActionManuever; held2.DexWaitingFor = 10; held1.Perform(); holder1.DEX.CurrentValue = 30; held2.Perform(); Dice.RandomnessState = RandomnessState.average; Assert.AreEqual(holder1, sequence.ActivePhase.Character); sequence.CompleteActivePhase(); Assert.AreEqual(holder2, sequence.ActivePhase.Character); }
public void CharacterHoldsActionGenerically_HeGoesAfterOtherCharactersPhaseIfHeLosesDexRoll() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter holder = sequence.ActivePhase.Character; HoldActionManuever held = holder.Manuevers["Hold Action"] as HoldActionManuever; HeroSystemCharacter attacker = sequence.NextCombatPhase.Character; Attack ranged = new Attack("Basic Ranged", attacker, DamageType.Normal, 5, DefenseType.PD, true); HeroSystemCharacter defender = sequence.NextCombatPhase.Character; Dice.RandomnessState = RandomnessState.average; //act held.Perform(); ranged.Target(defender); holder.DEX.CurrentValue = 5; held.Interrupt(InterruptionWith.Generic); Assert.AreNotEqual(holder, sequence.ActivePhase.Character); Assert.AreEqual(attacker, sequence.ActivePhase.Character); sequence.CompleteActivePhase(); Assert.AreEqual(holder, sequence.ActivePhase.Character); }
public void CharacterHoldsActionUntilCharactersNextPhase_CharacterLosesHeldAction() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter character = sequence.ActivePhase.Character; HoldActionManuever holdManuever = (HoldActionManuever)character.Manuevers["Hold Action"]; //act holdManuever.DexWaitingFor = 10; holdManuever.SegmentWaitingFor = 2; character.Manuevers["Hold Action"].Perform(); sequence.CompleteActivePhase(); sequence.CompleteActivePhase(); Assert.AreEqual(character.HeldManuever, null); Assert.AreEqual(0, sequence.HeldManuevers.Count); }
CompletingAllCharacterPhasesesinSegment_JumpsToNextSegmentWithCharacterAndActivatesThatCharactersPhase() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); //act sequence.CompleteActivePhase(); sequence.CompleteActivePhase(); sequence.CompleteActivePhase(); //assert Phase phase = sequence.ActivePhase; Assert.AreEqual(sequence.ActiveSegment.Number, 2); Assert.AreEqual("Fast Character", phase.Character.Name); sequence.CompleteActivePhase(); ; }
public void CharacterHoldsActionUntilDifferentSegment_PhaseExecutesAtSegmentSpecified() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter character = sequence.ActivePhase.Character; //act HoldActionManuever holdManuever = (HoldActionManuever)character.Manuevers["Hold Action"]; holdManuever.DexWaitingFor = 15; holdManuever.SegmentWaitingFor = 1; character.Manuevers["Hold Action"].Perform(); sequence.CompleteActivePhase(); sequence.CompleteActivePhase(); Assert.AreEqual(sequence.ActiveSegment.Number, holdManuever.SegmentWaitingFor); }
public void CharacterHoldsActionAfterHalfPhaseAction_OnlyHalfPhaseActionsAreAvailable() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter character = sequence.ActivePhase.Character; TestManuever testManuever = new TestManuever("Sample Half 1", character); //act character.Manuevers["Sample Half 1"].Perform(); HoldActionManuever holdManuever = (HoldActionManuever)character.Manuevers["Hold Action"]; holdManuever.DexWaitingFor = 15; character.Manuevers["Hold Action"].Perform(); sequence.CompleteActivePhase(); //assert Assert.AreEqual(.5, sequence.ActivePhase.PhaseLeft); }
public void CharacterHoldsActionUntilLowerDex_PhaseExecutesAtLowerDexSpecified() { //arrange CombatSequence sequence = Factory.SequenceWithFastMediumAndSlowCharacters; sequence.StartCombat(); HeroSystemCharacter character = sequence.ActivePhase.Character; //act HoldActionManuever holdManuever = (HoldActionManuever)character.Manuevers["Hold Action"]; holdManuever.DexWaitingFor = 15; character.Manuevers["Hold Action"].Perform(); //assert Assert.AreEqual(character.ActivePhase, null); Assert.AreEqual(character.HeldManuever, character.Manuevers["Hold Action"]); Assert.AreEqual(character.HeldManuever, sequence.HeldManuevers[0]); Assert.AreEqual(sequence.ActivePhase.Character.DEX.CurrentValue, 20); sequence.CompleteActivePhase(); Assert.AreEqual(character, sequence.ActivePhase.Character); }
public void TrackingDurationWithOneOrMoreSegmentsToEndOfSegment_TimerActivatesAtEndOfAppropriateSegment() { Time = 2; SequenceTimer timer = new SequenceTimer(DurationUnit.Segment, Time, Sequence, Timing.End); timer.TimerAction += new SequenceTimerAction(TestTimerCompletedOnCorrectSegment); timer.StartTimer(); //complete phase 12 Sequence.CompleteActivePhase(); Assert.IsNull(timer.Stop); //complete phase 2 Sequence.CompleteActivePhase(); //timer stops after phase 2 Segment segment = (Segment)timer.Stop; Assert.AreEqual(2, segment.Number); }