public void AddInternalThreat(InternalThreat newThreat, int timeAppears) { newThreat.SetInitialPlacement(timeAppears); newThreat.AttackedSittingDuck += (sender, args) => { ThreatAttackedShip(sender, args); }; newThreat.PlaceOnTrack(InternalTrack); InternalThreats.Add(newThreat); }
static void Main() { var players = GetPlayers(); var sittingDuck = new SittingDuck(); sittingDuck.SetPlayers(players); var externalTracks = new [] { new ExternalTrack(TrackConfiguration.Track1, sittingDuck.BlueZone), new ExternalTrack(TrackConfiguration.Track2, sittingDuck.RedZone), new ExternalTrack(TrackConfiguration.Track3, sittingDuck.WhiteZone) }; var internalTrack = new InternalTrack(TrackConfiguration.Track4); var externalThreats = new ExternalThreat[] { new Destroyer(3, ZoneLocation.Blue, sittingDuck), new Fighter(4, ZoneLocation.Red, sittingDuck), new Fighter(5, ZoneLocation.White, sittingDuck) }; var internalThreats = new InternalThreat[] { new SkirmishersA(3, sittingDuck), new Fissure(2, sittingDuck) //new Alien(1, sittingDuck) }; var game = new Game(sittingDuck, externalThreats, externalTracks, internalThreats, internalTrack, players); var currentTurn = 0; try { for (currentTurn = 0; currentTurn < Game.NumberOfTurns; currentTurn++) { game.PerformTurn(); } } catch (LoseException loseException) { Console.WriteLine("Killed on turn {0} by: {1}", currentTurn, loseException.Threat); } Console.WriteLine("Damage Taken:\r\nBlue: {0}\r\nRed: {1}\r\nWhite: {2}", sittingDuck.BlueZone.TotalDamage, sittingDuck.RedZone.TotalDamage, sittingDuck.WhiteZone.TotalDamage); Console.WriteLine("Threats killed: {0}. Threats survived: {1}", game.defeatedThreats.Count, game.survivedThreats.Count); Console.WriteLine("Total points: {0}", game.TotalPoints); foreach (var zone in sittingDuck.Zones) { foreach (var token in zone.AllDamageTokensTaken) { Console.WriteLine("{0} damage token taken in zone {1}. Still damaged: {2}", token, zone.ZoneLocation, zone.CurrentDamageTokens.Contains(token)); } } }
public static void SixBasicThreats() { var players = GetPlayers(); var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track1 }, { ZoneLocation.Red, TrackConfiguration.Track2 }, { ZoneLocation.White, TrackConfiguration.Track3 }, }; const TrackConfiguration internalTrack = TrackConfiguration.Track4; var destroyer = new Destroyer(); destroyer.SetInitialPlacement(4, ZoneLocation.Blue); var fighter1 = new Fighter(); fighter1.SetInitialPlacement(5, ZoneLocation.Red); var fighter2 = new Fighter(); fighter2.SetInitialPlacement(6, ZoneLocation.White); var externalThreats = new ExternalThreat[] { destroyer, fighter1, fighter2 }; var skirmishers = new SkirmishersA(); skirmishers.SetInitialPlacement(4); var fissure = new Fissure(); fissure.SetInitialPlacement(2); var nuclearDevice = new NuclearDevice(); nuclearDevice.SetInitialPlacement(6); var internalThreats = new InternalThreat[] { skirmishers, fissure, nuclearDevice }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(4, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(3, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(3, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(3, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(3, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(30, game.TotalPoints); Assert.AreEqual(3, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count); Assert.AreEqual(3, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count); Assert.AreEqual(4, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count); }
private static void SlimeBHelper(bool isDefeated, bool isSurvived, TrackConfiguration internalTrack, int timeAppears, List <Player> players, int blueDamage, int redDamage, int whiteDamage, bool battleBotsDisabled) { var totalPoints = 0; if (isDefeated) { totalPoints = 6; } if (isSurvived) { totalPoints = 3; } var otherTracks = EnumFactory.All <TrackConfiguration>().Except(new[] { internalTrack }).ToList(); var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, otherTracks.First() }, { ZoneLocation.Red, otherTracks.Skip(1).First() }, { ZoneLocation.White, otherTracks.Skip(2).First() } }; var externalThreats = new ExternalThreat[0]; var slimeB = new SlimeB(); slimeB.SetInitialPlacement(timeAppears); var internalThreats = new InternalThreat[] { slimeB }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(blueDamage, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(redDamage, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(whiteDamage, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(0, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(blueDamage, game.SittingDuck.BlueZone.CurrentDamageTokens.Count); Assert.AreEqual(redDamage, game.SittingDuck.RedZone.CurrentDamageTokens.Count); Assert.AreEqual(whiteDamage, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count); var battleBotsAreDisabledInPlace = game.SittingDuck.RedZone.LowerRedStation.BattleBotsComponent.BattleBots?.IsDisabled ?? false; Assert.AreEqual(battleBotsDisabled, battleBotsAreDisabledInPlace); Assert.AreEqual(isDefeated, game.ThreatController.DefeatedThreats.Any()); if (totalPoints != game.TotalPoints) { var errorMessage = $"Survived + points didn't match. Expected: {totalPoints} points, survived: {isSurvived}. Actual: {game.TotalPoints} points, survived: {game.ThreatController.SurvivedThreats.Any()}."; Assert.Fail(errorMessage); } }
private static void AddBonusThreatInfo <T>(ThreatInfo <T> threatInfo, InternalThreat newThreat) where T : Threat { if (threatInfo.BonusExternalThreatInfo != null) { AddBonusThreatInfo(threatInfo.BonusExternalThreatInfo, newThreat); } else if (threatInfo.BonusInternalThreatInfo != null) { AddBonusThreatInfo(threatInfo.BonusInternalThreatInfo, newThreat); } else { threatInfo.BonusInternalThreatInfo = new ThreatInfo <InternalThreat> { Threat = newThreat } }; }
public static void JustAFighterNoActions() { var players = Enumerable.Range(0, 1).Select(index => new Player(new List <PlayerAction>(), 0, PlayerColor.Blue)).ToList(); var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track1 }, { ZoneLocation.Red, TrackConfiguration.Track5 }, { ZoneLocation.White, TrackConfiguration.Track3 } }; const TrackConfiguration internalTrack = TrackConfiguration.Track4; var fighter = new Fighter(); fighter.SetInitialPlacement(5, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { fighter }; var internalThreats = new InternalThreat[0]; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(5, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(0, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(1, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(2, game.TotalPoints); Assert.AreEqual(5, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count); }
protected void DamageThreat(InternalThreat threat, Player performingPlayer, bool isHeroic) { var damage = isHeroic ? 2 : 1; threat.TakeDamage(damage, performingPlayer, isHeroic); }
private Action GetMoveCall(InternalThreat internalThreat) { return(() => internalTrack.MoveThreat(internalThreat)); }
public void RemoveZoneDebuffForSource(IEnumerable <ZoneLocation> zoneLocations, InternalThreat source) { foreach (var zone in zoneLocations.Select(zoneLocation => ZonesByLocation[zoneLocation])) { zone.RemoveDebuffForSource(source); } }
public void AddZoneDebuff(IEnumerable <ZoneLocation> zoneLocations, ZoneDebuff debuff, InternalThreat source) { foreach (var zone in zoneLocations.Select(zoneLocation => ZonesByLocation[zoneLocation])) { zone.AddDebuff(debuff, source); } }
public InternalThreatModel(InternalThreat threat) : base(threat.Parent ?? threat) { TotalInaccessibility = threat.TotalInaccessibility.GetValueOrDefault(); DisplayOnTrackStations = threat.DisplayOnTrackStations.ToList(); Position = threat.Position; }
public void AddInternalTracklessThreat(InternalThreat newThreat) { InternalThreats.Add(newThreat); }
public void AddDebuff(ZoneDebuff debuff, InternalThreat source) { DebuffsBySource[source] = debuff; UpdateOptics(); UpdateShields(); }
public static void EzraDoubleActionsCampaignMission2() { var players = new List <Player> { CreateBluePlayerDoubleActionsCampaignMission2(), CreateGreenPlayerDoubleActionsCampaignMission2(), CreateYellowPlayerDoubleActionsCampaignMission2(), CreateRedPlayerDoubleActionsCampaignMission2() }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track7 }, { ZoneLocation.White, TrackConfiguration.Track2 }, { ZoneLocation.Red, TrackConfiguration.Track5 } }; const TrackConfiguration internalTrack = TrackConfiguration.Track4; var interstellarOctopus = new InterstellarOctopus(); interstellarOctopus.SetInitialPlacement(3, ZoneLocation.Blue); var meteoroid = new Meteoroid(); meteoroid.SetInitialPlacement(8, ZoneLocation.Blue); var amoeba = new Amoeba(); amoeba.SetInitialPlacement(2, ZoneLocation.White); var stealthFighter = new StealthFighter(); stealthFighter.SetInitialPlacement(4, ZoneLocation.White); var spinningSaucer = new SpinningSaucer(); spinningSaucer.SetInitialPlacement(7, ZoneLocation.White); var armoredGrappler = new ArmoredGrappler(); armoredGrappler.SetInitialPlacement(1, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { interstellarOctopus, meteoroid, amoeba, stealthFighter, spinningSaucer, armoredGrappler }; var commandosB = new CommandosB(); commandosB.SetInitialPlacement(5); var hackedShieldsB = new HackedShieldsB(); hackedShieldsB.SetInitialPlacement(8); var internalThreats = new InternalThreat[] { commandosB, hackedShieldsB }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(2, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(5, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(6, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(2, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(0, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(2, game.SittingDuck.BlueZone.CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.RedZone.CurrentDamageTokens.Count); Assert.AreEqual(5, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count); }
public static void EzraDoubleActionsCampaignMission1() { var players = new List <Player> { CreateBluePlayerDoubleActionsCampaignMission1(), CreateGreenPlayerDoubleActionsCampaignMission1(), CreateYellowPlayerDoubleActionsCampaignMission1(), CreateRedPlayerDoubleActionsCampaignMission1() }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track6 }, { ZoneLocation.White, TrackConfiguration.Track2 }, { ZoneLocation.Red, TrackConfiguration.Track5 }, }; const TrackConfiguration internalTrack = TrackConfiguration.Track7; var armoredGrappler = new ArmoredGrappler(); armoredGrappler.SetInitialPlacement(1, ZoneLocation.Blue); var meteoroid = new Meteoroid(); meteoroid.SetInitialPlacement(4, ZoneLocation.Blue); var dimensionSpider = new DimensionSpider(); dimensionSpider.SetInitialPlacement(2, ZoneLocation.White); var gunship = new Gunship(); gunship.SetInitialPlacement(6, ZoneLocation.White); var asteroid = new Asteroid(); asteroid.SetInitialPlacement(5, ZoneLocation.Red); var destroyer = new Destroyer(); destroyer.SetInitialPlacement(8, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { armoredGrappler, meteoroid, dimensionSpider, gunship, asteroid, destroyer }; var shambler = new Shambler(); shambler.SetInitialPlacement(4); var internalThreats = new InternalThreat[] { shambler }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); try { for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } } catch (LoseException loseException) { Assert.AreEqual(destroyer, loseException.Threat); Assert.AreEqual(GameStatus.Lost, game.GameStatus); Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(9, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(6, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(0, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(0, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(0, game.SittingDuck.BlueZone.CurrentDamageTokens.Count); Assert.AreEqual(6, game.SittingDuck.RedZone.CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.WhiteZone.CurrentDamageTokens.Count); } }
public static void EzraCampaign1Mission3() { var players = new List <Player> { new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.MoveBlue, null, PlayerActionType.BasicSpecialization, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveRed, null, PlayerActionType.ChangeDeck, null, null, null, PlayerActionType.Charlie }), 0, PlayerColor.Blue, PlayerSpecialization.EnergyTechnician), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { null, PlayerActionType.MoveBlue, PlayerActionType.ChangeDeck, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveRed, PlayerActionType.MoveRed, PlayerActionType.Alpha, PlayerActionType.MoveBlue, null, null, PlayerActionType.Charlie }), 1, PlayerColor.Green, PlayerSpecialization.PulseGunner), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { null, null, PlayerActionType.AdvancedSpecialization, PlayerActionType.MoveRed, PlayerActionType.BasicSpecialization, null, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveBlue, PlayerActionType.ChangeDeck, null, PlayerActionType.Charlie }), 2, PlayerColor.Purple, PlayerSpecialization.Mechanic), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.Charlie, null, PlayerActionType.Alpha, PlayerActionType.BasicSpecialization, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.Charlie, PlayerActionType.ChangeDeck, null, null, PlayerActionType.AdvancedSpecialization }), 3, PlayerColor.Red, PlayerSpecialization.DataAnalyst) }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track6 }, { ZoneLocation.Red, TrackConfiguration.Track2 }, { ZoneLocation.White, TrackConfiguration.Track5 }, }; const TrackConfiguration internalTrack = TrackConfiguration.Track3; var spacecraftCarrier = new SpacecraftCarrier(); spacecraftCarrier.SetInitialPlacement(4, ZoneLocation.Blue); var manOfWar = new ManOfWar(); manOfWar.SetInitialPlacement(5, ZoneLocation.White); var frigate = new Frigate(); frigate.SetInitialPlacement(7, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { spacecraftCarrier, manOfWar, frigate }; var centralLaserJam = new CentralLaserJam(); centralLaserJam.SetInitialPlacement(3); var internalThreats = new InternalThreat[] { centralLaserJam }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(4, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(0, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(28 + 1 + 9, game.TotalPoints); Assert.AreEqual(0, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count); }
public static void EzraCampaign1Mission2() { var players = new List <Player> { new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { null, PlayerActionType.MoveBlue, PlayerActionType.BasicSpecialization, null, PlayerActionType.AdvancedSpecialization, PlayerActionType.ChangeDeck, PlayerActionType.Alpha, PlayerActionType.Alpha, null, null, null, null }), 0, PlayerColor.Blue, PlayerSpecialization.EnergyTechnician), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.MoveRed, PlayerActionType.BasicSpecialization, null, null, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveBlue, PlayerActionType.BasicSpecialization, null, null, null, null }), 1, PlayerColor.Green, PlayerSpecialization.PulseGunner), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.MoveRed, PlayerActionType.ChangeDeck, PlayerActionType.Bravo, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.Alpha, null, null, null, null, null, null }), 2, PlayerColor.Purple), new Player(PlayerActionFactory.CreateSingleActionList(new PlayerActionType?[] { PlayerActionType.Charlie, null, null, PlayerActionType.BasicSpecialization, PlayerActionType.MoveBlue, PlayerActionType.Alpha, PlayerActionType.Alpha, PlayerActionType.MoveRed, PlayerActionType.BasicSpecialization, null, null, null }), 3, PlayerColor.Red, PlayerSpecialization.DataAnalyst) }; var externalTracksByZone = new Dictionary <ZoneLocation, TrackConfiguration> { { ZoneLocation.Blue, TrackConfiguration.Track1 }, { ZoneLocation.Red, TrackConfiguration.Track2 }, { ZoneLocation.White, TrackConfiguration.Track7 }, }; const TrackConfiguration internalTrack = TrackConfiguration.Track4; var dimensionSpider = new DimensionSpider(); dimensionSpider.SetInitialPlacement(6, ZoneLocation.Blue); var cryoshieldFrigate = new CryoshieldFrigate(); cryoshieldFrigate.SetInitialPlacement(4, ZoneLocation.Red); var energyCloud = new EnergyCloud(); energyCloud.SetInitialPlacement(1, ZoneLocation.Red); var externalThreats = new ExternalThreat[] { dimensionSpider, cryoshieldFrigate, energyCloud }; var battleBotUprising = new BattleBotUprising(); battleBotUprising.SetInitialPlacement(5); var internalThreats = new InternalThreat[] { battleBotUprising }; var bonusThreats = new Threat[0]; var game = new Game(players, internalThreats, externalThreats, bonusThreats, externalTracksByZone, internalTrack, null); game.StartGame(); for (var currentTurn = 0; currentTurn < game.NumberOfTurns + 1; currentTurn++) { game.PerformTurn(); } Assert.AreEqual(GameStatus.Won, game.GameStatus); Assert.AreEqual(0, game.SittingDuck.BlueZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.RedZone.TotalDamage); Assert.AreEqual(0, game.SittingDuck.WhiteZone.TotalDamage); Assert.AreEqual(3, game.ThreatController.DefeatedThreats.Count()); Assert.AreEqual(1, game.ThreatController.SurvivedThreats.Count()); Assert.AreEqual(20 + 4 + 2, game.TotalPoints); Assert.AreEqual(2, players.Count(player => player.IsKnockedOut)); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(0).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(1).CurrentDamageTokens.Count); Assert.AreEqual(0, game.SittingDuck.Zones.ElementAt(2).CurrentDamageTokens.Count); }
internal PoisonedPlayers(InternalThreat parent) : base(parent.ThreatType, parent.Difficulty, 0, parent.Speed, new List <StationLocation>(), null) { Parent = parent; poisonedPlayers = new HashSet <Player>(); }
protected void DamageThreat(int damage, InternalThreat threat, Player performingPlayer, bool isHeroic) { threat.TakeDamage(damage, performingPlayer, isHeroic, StationLocation); }
public void RemoveDebuffForSource(InternalThreat source) { DebuffsBySource.Remove(source); UpdateOptics(); UpdateShields(); }