private static void SimulateSwarmerQueen( Random rand, GameSession game, int systemId, FleetInfo randomsFleet, int aiPlayerID, List <FleetInfo> aiPlayerFleets) { int numToKill = rand.NextInclusive(4, 6); Dictionary <FleetInfo, List <ShipInfo> > shipsInFleets = CombatSimulatorRandoms.GetShipsInFleets(game, aiPlayerFleets); shipsInFleets.Sum <KeyValuePair <FleetInfo, List <ShipInfo> > >((Func <KeyValuePair <FleetInfo, List <ShipInfo> >, int>)(x => x.Value.Count)); if (shipsInFleets.Sum <KeyValuePair <FleetInfo, List <ShipInfo> > >((Func <KeyValuePair <FleetInfo, List <ShipInfo> >, int>)(x => { if (x.Value.Count <= 0) { return(0); } return(x.Value.Sum <ShipInfo>((Func <ShipInfo, int>)(y => { if (y.DesignInfo == null) { return 0; } return CombatAI.GetShipStrength(y.DesignInfo.Class) / 3; }))); })) <= 4) { foreach (KeyValuePair <FleetInfo, List <ShipInfo> > keyValuePair in shipsInFleets) { foreach (ShipInfo shipInfo in keyValuePair.Value) { game.GameDatabase.RemoveShip(shipInfo.ID); } CombatSimulatorRandoms.FleetDestroyed(game, randomsFleet.PlayerID, keyValuePair.Key, (ShipInfo)null); game.GameDatabase.RemoveFleet(keyValuePair.Key.ID); } if (game.GameDatabase.GetShipInfoByFleetID(randomsFleet.ID, false).ToList <ShipInfo>().Count == 0) { game.GameDatabase.RemoveFleet(randomsFleet.ID); } } else { CombatSimulatorRandoms.UpdateShipsKilled(game, rand, shipsInFleets, randomsFleet.PlayerID, numToKill); List <ShipInfo> list = game.GameDatabase.GetShipInfoByFleetID(randomsFleet.ID, false).ToList <ShipInfo>(); if (list.Count > 0) { CombatSimulatorRandoms.FleetDestroyed(game, aiPlayerID, randomsFleet, list.First <ShipInfo>()); } game.GameDatabase.RemoveFleet(randomsFleet.ID); } foreach (SwarmerInfo si in game.GameDatabase.GetSwarmerInfos().ToList <SwarmerInfo>()) { if (si.QueenFleetId.HasValue) { FleetInfo fleetInfo = game.GameDatabase.GetFleetInfo(si.QueenFleetId.Value); if (fleetInfo != null && fleetInfo.SystemID == systemId) { Swarmers.ClearTransform(game.GameDatabase, si); } } } }