public static ScriptModules New( Random random, GameDatabase db, AssetDatabase assetdb, GameSession game, NamesPool namesPool, GameSetup gameSetup) { ScriptModules scriptModules = new ScriptModules(); scriptModules.VonNeumann = VonNeumann.InitializeEncounter(db, assetdb); scriptModules.Swarmers = Swarmers.InitializeEncounter(db, assetdb); scriptModules.Gardeners = Gardeners.InitializeEncounter(db, assetdb); scriptModules.AsteroidMonitor = AsteroidMonitor.InitializeEncounter(db, assetdb); scriptModules.MorrigiRelic = MorrigiRelic.InitializeEncounter(db, assetdb); scriptModules.Slaver = Slaver.InitializeEncounter(db, assetdb); scriptModules.Pirates = Pirates.InitializeEncounter(db, assetdb); scriptModules.Spectre = Spectre.InitializeEncounter(db, assetdb); scriptModules.GhostShip = GhostShip.InitializeEncounter(db, assetdb); scriptModules.MeteorShower = MeteorShower.InitializeEncounter(db, assetdb); scriptModules.SystemKiller = SystemKiller.InitializeEncounter(db, assetdb); scriptModules.Locust = Locust.InitializeEncounter(db, assetdb); scriptModules.Comet = Comet.InitializeEncounter(db, assetdb); if (db.HasEndOfFleshExpansion()) { scriptModules.NeutronStar = NeutronStar.InitializeEncounter(db, assetdb); scriptModules.SuperNova = SuperNova.InitializeEncounter(); } scriptModules.AddEasterEggs(random, db, assetdb, game, namesPool, gameSetup); return(scriptModules); }
public static ScriptModules Resume(GameDatabase db) { ScriptModules scriptModules = new ScriptModules(); scriptModules.VonNeumann = VonNeumann.ResumeEncounter(db); scriptModules.Swarmers = Swarmers.ResumeEncounter(db); scriptModules.Gardeners = Gardeners.ResumeEncounter(db); scriptModules.AsteroidMonitor = AsteroidMonitor.ResumeEncounter(db); scriptModules.MorrigiRelic = MorrigiRelic.ResumeEncounter(db); scriptModules.Slaver = Slaver.ResumeEncounter(db); scriptModules.Pirates = Pirates.ResumeEncounter(db); scriptModules.Spectre = Spectre.ResumeEncounter(db); scriptModules.GhostShip = GhostShip.ResumeEncounter(db); scriptModules.MeteorShower = MeteorShower.ResumeEncounter(db); scriptModules.SystemKiller = SystemKiller.ResumeEncounter(db); scriptModules.Locust = Locust.ResumeEncounter(db); scriptModules.Comet = Comet.ResumeEncounter(db); if (db.HasEndOfFleshExpansion()) { scriptModules.NeutronStar = NeutronStar.ResumeEncounter(db); scriptModules.SuperNova = SuperNova.ResumeEncounter(); } List <PlayerInfo> list = db.GetPlayerInfos().Where <PlayerInfo>((Func <PlayerInfo, bool>)(x => { if (!x.isStandardPlayer) { return(!x.includeInDiplomacy); } return(false); })).ToList <PlayerInfo>(); foreach (int playerID in db.GetStandardPlayerIDs().ToList <int>()) { foreach (PlayerInfo playerInfo in list) { DiplomacyInfo diplomacyInfo = db.GetDiplomacyInfo(playerID, playerInfo.ID); if (diplomacyInfo.State != DiplomacyState.WAR) { db.UpdateDiplomacyState(playerID, playerInfo.ID, DiplomacyState.WAR, diplomacyInfo.Relations, true); } } } return(scriptModules); }
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); } } } }
private void SpawnMaxSwarmerAttackers(Swarmers swarmers) { if (this.m_MaxToCreate <= 0) { return; } Matrix rotationYpr = Matrix.CreateRotationYPR(this.m_SwarmerSpawner.Maneuvering.Rotation); rotationYpr.Position = this.m_SwarmerSpawner.Maneuvering.Position; int num1 = Math.Max(this.m_SwarmerSpawner.BattleRiderMounts.Count <BattleRiderMount>() - (this.m_LoadingSwarmers.Count + this.m_LoadingGuardians.Count + this.m_LaunchingShips.Count), 0); if (num1 == 0) { return; } int val2_1 = Math.Max(this.m_MaxSwarmers - (this.m_LoadingSwarmers.Count + this.m_SpawnedSwarmers.Count), 0); int val2_2 = Math.Max(this.m_MaxGuardians - (this.m_LoadingGuardians.Count + this.m_SpawnedGuardians.Count), 0); if (val2_1 + val2_2 == 0) { return; } int num2 = Math.Min(num1 / 2, val2_1); int num3 = Math.Min(num1 - num2, val2_2); int num4 = Math.Min(num2 + Math.Max(num1 - (num2 + num3), 0), val2_1); int num5 = num4 + num3; for (int index = 0; index < num5; ++index) { int designId; if (num4 > 0 && (index % 2 == 0 || num3 == 0)) { designId = swarmers.SwarmerDesignID; --num4; } else if (num3 > 0) { designId = swarmers.GuardianDesignID; --num3; } else { break; } Ship newShip = CombatAIController.CreateNewShip(this.m_Game.Game, rotationYpr, designId, this.m_SwarmerSpawner.ObjectID, this.m_SwarmerSpawner.InputID, this.m_SwarmerSpawner.Player.ObjectID); if (newShip != null) { if (designId == swarmers.GuardianDesignID) { this.m_LoadingGuardians.Add(newShip); } else { this.m_LoadingSwarmers.Add(newShip); } --this.m_MaxToCreate; } if (this.m_MaxToCreate <= 0) { break; } } if (this.m_LoadingSwarmers.Count <= 0 && this.m_LoadingGuardians.Count <= 0) { return; } this.m_State = SwarmerSpawnerStates.INTEGRATESWARMER; }