Example #1
0
        public void AddInstance(
            GameDatabase gamedb,
            AssetDatabase assetdb,
            GameSession game,
            int SystemId,
            int OrbitId)
        {
            Random         random = new Random();
            PirateBaseInfo pbi    = new PirateBaseInfo();

            pbi.SystemId          = SystemId;
            pbi.NumShips          = assetdb.GlobalPiracyData.PiracyMinBaseShips;
            pbi.TurnsUntilAddShip = assetdb.GlobalPiracyData.PiracyBaseTurnsPerUpdate;
            float             num = StarSystemVars.Instance.SizeToRadius(game.GameDatabase.GetPlanetInfo(OrbitId).Size) + (float)StarSystemVars.Instance.StationOrbitDistance;
            OrbitalObjectInfo orbitalObjectInfo = gamedb.GetOrbitalObjectInfo(OrbitId);
            OrbitalPath       path = new OrbitalPath();

            path.Scale        = new Vector2(num, num);
            path.Rotation     = new Vector3(0.0f, 0.0f, 0.0f);
            path.DeltaAngle   = random.NextInclusive(0.0f, 360f);
            path.InitialAngle = 0.0f;
            DesignInfo designInfo = gamedb.GetDesignInfo(this.PirateBaseDesignId);

            pbi.BaseStationId = gamedb.InsertStation(OrbitId, orbitalObjectInfo.StarSystemID, path, designInfo.Name, this.PlayerId, designInfo);
            gamedb.InsertPirateBaseInfo(pbi);
        }
Example #2
0
        public static Matrix GetSpawnTransform(App app, PirateBaseInfo pbi)
        {
            if (pbi == null)
            {
                return(Matrix.Identity);
            }
            StationInfo       stationInfo       = app.GameDatabase.GetStationInfo(pbi.BaseStationId);
            OrbitalObjectInfo orbitalObjectInfo = app.GameDatabase.GetOrbitalObjectInfo(stationInfo.OrbitalObjectID);
            Matrix            orbitalTransform1 = app.GameDatabase.GetOrbitalTransform(orbitalObjectInfo.ID);
            Matrix            orbitalTransform2 = app.GameDatabase.GetOrbitalTransform(orbitalObjectInfo.ParentID.Value);
            Vector3           vector3           = Vector3.Normalize(orbitalTransform1.Position - orbitalTransform2.Position);

            return(Matrix.CreateWorld(orbitalTransform1.Position + vector3 * 2000f, -vector3, Vector3.UnitY));
        }
Example #3
0
        public static Matrix GetBaseEnemyFleetTrans(App app, PirateBaseInfo pbi)
        {
            if (pbi == null)
            {
                return(Matrix.Identity);
            }
            StationInfo       stationInfo       = app.GameDatabase.GetStationInfo(pbi.BaseStationId);
            OrbitalObjectInfo orbitalObjectInfo = app.GameDatabase.GetOrbitalObjectInfo(stationInfo.OrbitalObjectID);
            float             radius            = StarSystemVars.Instance.SizeToRadius(app.GameDatabase.GetPlanetInfo(orbitalObjectInfo.ParentID.Value).Size);
            Matrix            orbitalTransform  = app.GameDatabase.GetOrbitalTransform(orbitalObjectInfo.ParentID.Value);
            Vector3           vector3           = Vector3.Normalize(orbitalTransform.Position);

            return(Matrix.CreateWorld(orbitalTransform.Position + vector3 * (float)((double)radius + 750.0 + 1000.0), -vector3, Vector3.UnitY));
        }
Example #4
0
        private static void SimulatePirateBase(
            Random rand,
            GameSession game,
            int systemId,
            FleetInfo randomsFleet,
            int aiPlayerID,
            List <FleetInfo> aiPlayerFleets)
        {
            int numToKill = rand.NextInclusive(5, 6);
            Dictionary <FleetInfo, List <ShipInfo> > shipsInFleets = CombatSimulatorRandoms.GetShipsInFleets(game, aiPlayerFleets);
            int num1 = shipsInFleets.Sum <KeyValuePair <FleetInfo, List <ShipInfo> > >((Func <KeyValuePair <FleetInfo, List <ShipInfo> >, int>)(x => x.Value.Count));

            if (num1 == 0)
            {
                return;
            }
            PirateBaseInfo pirateBaseInfo = game.GameDatabase.GetPirateBaseInfos().FirstOrDefault <PirateBaseInfo>((Func <PirateBaseInfo, bool>)(x => x.SystemId == systemId));

            if (pirateBaseInfo == null)
            {
                return;
            }
            CombatSimulatorRandoms.UpdateShipsKilled(game, rand, shipsInFleets, randomsFleet.PlayerID, numToKill);
            if (num1 < numToKill)
            {
                return;
            }
            int bounty            = game.AssetDatabase.GlobalPiracyData.Bounties[0];
            List <FleetInfo> list = game.GameDatabase.GetFleetsByPlayerAndSystem(randomsFleet.PlayerID, systemId, FleetType.FL_NORMAL).ToList <FleetInfo>();
            int maxValue          = 0;

            foreach (FleetInfo fleetInfo in list)
            {
                maxValue = game.GameDatabase.GetShipInfoByFleetID(fleetInfo.ID, true).Count <ShipInfo>((Func <ShipInfo, bool>)(x => x.DesignInfo.Class != ShipClass.Station));
            }
            if (maxValue > 0)
            {
                int num2 = rand.NextInclusive(0, maxValue);
                int num3 = bounty + num2 * game.AssetDatabase.GlobalPiracyData.Bounties[1];
            }
            foreach (int num2 in game.GameDatabase.GetStandardPlayerIDs().ToList <int>())
            {
                if (num2 != aiPlayerID)
                {
                    string factionName    = game.GameDatabase.GetFactionName(game.GameDatabase.GetPlayerFactionID(num2));
                    int    reactionAmount = 0;
                    game.AssetDatabase.GlobalPiracyData.ReactionBonuses.TryGetValue(factionName, out reactionAmount);
                    game.GameDatabase.ApplyDiplomacyReaction(num2, aiPlayerID, reactionAmount, new StratModifiers?(StratModifiers.DiplomacyReactionElimPirates), 1);
                }
            }
            game.GameDatabase.InsertTurnEvent(new TurnEvent()
            {
                EventType    = TurnEventType.EV_PIRATE_BASE_DESTROYED,
                EventMessage = TurnEventMessage.EM_PIRATE_BASE_DESTROYED,
                PlayerID     = aiPlayerID,
                SystemID     = systemId,
                TurnNumber   = game.GameDatabase.GetTurnCount(),
                ShowsDialog  = false
            });
            game.GameDatabase.DestroyStation(game, pirateBaseInfo.BaseStationId, 0);
        }