Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 private static void InsertIndependentSystem(
     Random random,
     StarSystemInfo system,
     OrbitalObjectInfo orbit,
     GameDatabase gamedb,
     AssetDatabase assetdb)
 {
     ScriptModules.GenerateIndependentRace(random, system, orbit, gamedb, assetdb);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        private void AddEasterEggs(
            Random random,
            GameDatabase gamedb,
            AssetDatabase assetdb,
            GameSession game,
            NamesPool namesPool,
            GameSetup gameSetup)
        {
            List <StarSystemInfo> list1 = gamedb.GetStarSystemInfos().ToList <StarSystemInfo>();

            foreach (StarSystemInfo starSystemInfo in new List <StarSystemInfo>((IEnumerable <StarSystemInfo>)list1))
            {
                List <OrbitalObjectInfo> list2 = gamedb.GetStarSystemOrbitalObjectInfos(starSystemInfo.ID).ToList <OrbitalObjectInfo>();
                if (list2.Count <OrbitalObjectInfo>() == 0)
                {
                    list1.Remove(starSystemInfo);
                }
                bool flag = false;
                foreach (OrbitalObjectInfo orbitalObjectInfo in list2)
                {
                    if (gamedb.GetColonyInfoForPlanet(orbitalObjectInfo.ID) != null)
                    {
                        flag = true;
                        break;
                    }
                }
                if (flag)
                {
                    list1.Remove(starSystemInfo);
                }
            }
            using (List <StarSystemInfo> .Enumerator enumerator = list1.GetEnumerator())
            {
label_43:
                while (enumerator.MoveNext())
                {
                    StarSystemInfo current = enumerator.Current;
                    foreach (OrbitalObjectInfo orbit in gamedb.GetStarSystemOrbitalObjectInfos(current.ID).ToList <OrbitalObjectInfo>())
                    {
                        PlanetInfo planetInfo = gamedb.GetPlanetInfo(orbit.ID);
                        if (planetInfo != null && !(planetInfo.Type == "gaseous") && (gamedb.GetLargeAsteroidInfo(orbit.ID) == null && gamedb.GetAsteroidBeltInfo(orbit.ID) == null) && random.CoinToss((double)assetdb.RandomEncOddsPerOrbital * ((double)gameSetup._randomEncounterFrequency / 100.0)))
                        {
                            int maxValue = game.GetAvailableEEOdds().Sum <KeyValuePair <EasterEgg, int> >((Func <KeyValuePair <EasterEgg, int>, int>)(x => x.Value));
                            if (maxValue == 0)
                            {
                                return;
                            }
                            int       num1      = random.Next(maxValue);
                            int       num2      = 0;
                            EasterEgg easterEgg = EasterEgg.EE_SWARM;
                            foreach (KeyValuePair <EasterEgg, int> easterEggOdd in assetdb.EasterEggOdds)
                            {
                                num2 += easterEggOdd.Value;
                                if (num2 > num1)
                                {
                                    easterEgg = easterEggOdd.Key;
                                    break;
                                }
                            }
                            App.Log.Warn(string.Format("Spawning {0} at {1}", (object)easterEgg.ToString(), (object)current.ID), nameof(game));
                            switch (easterEgg)
                            {
                            case EasterEgg.EE_SWARM:
                                if (this.Swarmers != null)
                                {
                                    this.Swarmers.AddInstance(gamedb, assetdb, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_ASTEROID_MONITOR:
                                if (this.AsteroidMonitor != null)
                                {
                                    this.AsteroidMonitor.AddInstance(gamedb, assetdb, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_PIRATE_BASE:
                                if (this.Pirates != null)
                                {
                                    this.Pirates.AddInstance(gamedb, assetdb, game, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_VON_NEUMANN:
                                if (this.VonNeumann != null)
                                {
                                    this.VonNeumann.AddInstance(gamedb, assetdb, namesPool);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_GARDENERS:
                                if (this.Gardeners != null)
                                {
                                    this.Gardeners.AddInstance(gamedb, assetdb, current.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            case EasterEgg.EE_INDEPENDENT:
                                ScriptModules.InsertIndependentSystem(random, current, orbit, gamedb, assetdb);
                                goto label_43;

                            case EasterEgg.EE_MORRIGI_RELIC:
                                if (this.MorrigiRelic != null)
                                {
                                    this.MorrigiRelic.AddInstance(gamedb, assetdb, current.ID, orbit.ID);
                                    goto label_43;
                                }
                                else
                                {
                                    goto label_43;
                                }

                            default:
                                goto label_43;
                            }
                        }
                    }
                }
            }
        }