Exemplo n.º 1
0
	private IEnumerator GameServerState_Turn_Begin_Interact(string context, string pass)
	{
		IGameService gameService = Services.GetService<IGameService>();
		Diagnostics.Assert(gameService != null);
		Diagnostics.Assert(gameService.Game != null);
		global::Game game = gameService.Game as global::Game;
		if (game != null && game.Turn > this.TurnWhenLastBegun)
		{
			this.TurnWhenLastBegun = game.Turn;
			OrderInteractWith order = new OrderInteractWith(base.Index, GameEntityGUID.Zero, "BeginTurn");
			order.WorldPosition = WorldPosition.Invalid;
			order.Tags.AddTag("BeginTurn");
			if (global::GameManager.Preferences.QuestVerboseMode)
			{
				Diagnostics.Log("[Quest] Trying to trigger quests with event BeginTurn for empire {0}", new object[]
				{
					order.EmpireIndex
				});
			}
			IPlayerControllerRepositoryControl playerControllerRepositoryService = gameService.Game.Services.GetService<IPlayerControllerRepositoryService>() as IPlayerControllerRepositoryControl;
			playerControllerRepositoryService.GetPlayerControllerById("server").PostOrder(order);
		}
		yield return null;
		yield break;
	}
Exemplo n.º 2
0
    private void UpdatePillageServerSide(PointOfInterest pointOfInterest)
    {
        float propertyValue = pointOfInterest.GetPropertyValue(SimulationProperties.PillageDefense);

        if (propertyValue <= 0f && !pointOfInterest.SimulationObject.Tags.Contains(DepartmentOfDefense.PillageStatusDescriptor))
        {
            IGameEntity gameEntity = null;
            if (this.GameEntityRepositoryService.TryGetValue(pointOfInterest.ArmyPillaging, out gameEntity))
            {
                Army army = gameEntity as Army;
                if (army != null)
                {
                    OrderPillageSucceed orderPillageSucceed = new OrderPillageSucceed(army.Empire.Index, army.GUID, pointOfInterest.GUID);
                    orderPillageSucceed.ArmyActionName = "ArmyActionPillage";
                    IPlayerControllerRepositoryControl playerControllerRepositoryControl = this.PlayerControllerRepositoryService as IPlayerControllerRepositoryControl;
                    if (playerControllerRepositoryControl != null)
                    {
                        global::PlayerController playerControllerById = playerControllerRepositoryControl.GetPlayerControllerById("server");
                        playerControllerById.PostOrder(orderPillageSucceed);
                    }
                }
            }
        }
    }
Exemplo n.º 3
0
    void IDiplomaticTermManagement.ApplyEffects()
    {
        DiplomaticTermCityExchangeDefinition diplomaticTermCityExchangeDefinition = base.Definition as DiplomaticTermCityExchangeDefinition;

        Diagnostics.Assert(diplomaticTermCityExchangeDefinition != null);
        Diagnostics.Assert(base.EmpireWhichProvides != null && base.EmpireWhichReceives != null);
        DepartmentOfTheInterior agency  = base.EmpireWhichProvides.GetAgency <DepartmentOfTheInterior>();
        DepartmentOfTheInterior agency2 = base.EmpireWhichReceives.GetAgency <DepartmentOfTheInterior>();

        Diagnostics.Assert(agency != null && agency2 != null);
        City city = null;

        for (int i = 0; i < agency.Cities.Count; i++)
        {
            City city2 = agency.Cities[i];
            if (city2.GUID == this.CityGUID)
            {
                city = city2;
                break;
            }
        }
        if (city == null)
        {
            Diagnostics.LogError("DiplomaticTermCityExchange.ApplyEffect failed, can't retrieve the city {0} from the empire which provides the term ({1}).", new object[]
            {
                this.CityGUID,
                base.EmpireWhichProvides
            });
            return;
        }
        IEventService service = Services.GetService <IEventService>();

        if (service == null)
        {
            Diagnostics.LogError("Failed to retrieve the event service.");
            return;
        }
        bool flag  = base.EmpireWhichReceives.SimulationObject.Tags.Contains("FactionTraitCultists9");
        bool flag2 = agency2.Cities.Count >= 1;

        if (flag && flag2)
        {
            IGameService service2 = Services.GetService <IGameService>();
            IPlayerControllerRepositoryService service3 = service2.Game.Services.GetService <IPlayerControllerRepositoryService>();
            IPlayerControllerRepositoryControl playerControllerRepositoryControl = service3 as IPlayerControllerRepositoryControl;
            if (playerControllerRepositoryControl != null)
            {
                global::PlayerController playerControllerById = playerControllerRepositoryControl.GetPlayerControllerById("server");
                if (playerControllerById != null)
                {
                    float propertyValue         = city.GetPropertyValue(SimulationProperties.Population);
                    DepartmentOfScience agency3 = base.EmpireWhichReceives.GetAgency <DepartmentOfScience>();
                    bool flag3 = agency3 != null && agency3.GetTechnologyState("TechnologyDefinitionCultists12") == DepartmentOfScience.ConstructibleElement.State.Researched;
                    int  num   = 0;
                    while ((float)num < propertyValue)
                    {
                        OrderBuyoutAndActivateBooster order = new OrderBuyoutAndActivateBooster(base.EmpireWhichReceives.Index, "BoosterIndustry", 0UL, false);
                        playerControllerById.PostOrder(order);
                        if (flag3)
                        {
                            order = new OrderBuyoutAndActivateBooster(base.EmpireWhichReceives.Index, "BoosterScience", 0UL, false);
                            playerControllerById.PostOrder(order);
                        }
                        num++;
                    }
                    OrderDestroyCity order2 = new OrderDestroyCity(city.Empire.Index, city.GUID, true, true, base.EmpireWhichReceives.Index);
                    playerControllerById.PostOrder(order2);
                    EventCityRazed eventToNotify = new EventCityRazed(city.Empire, city.Region, base.EmpireWhichReceives, false);
                    service.Notify(eventToNotify);
                }
            }
        }
        else
        {
            agency.SwapCityOwner(city, base.EmpireWhichReceives);
            service.Notify(new EventSwapCity(base.EmpireWhichProvides, city, base.EmpireWhichProvides.Index, base.EmpireWhichReceives.Index, false));
            service.Notify(new EventSwapCity(base.EmpireWhichReceives, city, base.EmpireWhichProvides.Index, base.EmpireWhichReceives.Index, false));
        }
    }
Exemplo n.º 4
0
    protected override State Execute(QuestBehaviour questBehaviour, params object[] parameters)
    {
        IGameService service = Services.GetService <IGameService>();

        Diagnostics.Assert(service != null);
        Diagnostics.Assert(service.Game != null);
        global::Empire initiator = questBehaviour.Initiator;

        Diagnostics.Assert(initiator.SimulationObject != null);
        if (!initiator.SimulationObject.Tags.Contains(global::Empire.TagEmpireEliminated))
        {
            if (initiator.GetAgency <DepartmentOfDefense>() != null)
            {
                IEncounterRepositoryService service2 = service.Game.Services.GetService <IEncounterRepositoryService>();
                if (service2 != null)
                {
                    IEnumerable <Encounter> enumerable = service2;
                    if (enumerable != null)
                    {
                        List <Encounter> list = new List <Encounter>();
                        foreach (Encounter encounter in enumerable)
                        {
                            if (encounter != null)
                            {
                                for (int i = 0; i < encounter.Empires.Count; i++)
                                {
                                    if (encounter.Empires[i].Index == initiator.Index && encounter.EncounterState != EncounterState.BattleHasEnded)
                                    {
                                        list.Add(encounter);
                                    }
                                }
                            }
                        }
                        global::Empire.PlayerControllersContainer playerControllers = (initiator as MajorEmpire).PlayerControllers;
                        if (playerControllers != null && playerControllers.Server != null)
                        {
                            for (int j = 0; j < list.Count; j++)
                            {
                                Encounter         encounter2 = list[j];
                                OrderEndEncounter order      = new OrderEndEncounter(encounter2.GUID, true);
                                playerControllers.Server.PostOrder(order);
                                OrderDestroyEncounter order2 = new OrderDestroyEncounter(encounter2.GUID);
                                playerControllers.Server.PostOrder(order2);
                            }
                        }
                    }
                }
            }
            SimulationDescriptor             simulationDescriptor = null;
            IDatabase <SimulationDescriptor> database             = Databases.GetDatabase <SimulationDescriptor>(false);
            if (database != null)
            {
                database.TryGetValue("EmpireEliminated", out simulationDescriptor);
            }
            if (simulationDescriptor != null)
            {
                initiator.AddDescriptor(simulationDescriptor, false);
                initiator.Refresh(true);
            }
            else
            {
                initiator.SimulationObject.Tags.AddTag(global::Empire.TagEmpireEliminated);
            }
        }
        ISessionService service3 = Services.GetService <ISessionService>();

        Diagnostics.Assert(service3 != null && service3.Session != null);
        if (service3.Session.IsHosting)
        {
            service3.Session.SetLobbyData(string.Format("Empire{0}Eliminated", initiator.Index), true, true);
        }
        IPlayerControllerRepositoryControl playerControllerRepositoryControl = service.Game.Services.GetService <IPlayerControllerRepositoryService>() as IPlayerControllerRepositoryControl;

        if (playerControllerRepositoryControl != null)
        {
            global::PlayerController playerControllerById = playerControllerRepositoryControl.GetPlayerControllerById("server");
            if (playerControllerById != null)
            {
                if (initiator is MajorEmpire)
                {
                    MajorEmpire majorEmpire = initiator as MajorEmpire;
                    if (majorEmpire.TamedKaijus.Count > 0)
                    {
                        majorEmpire.ServerUntameAllKaijus();
                    }
                }
                OrderEliminateEmpire order3 = new OrderEliminateEmpire(questBehaviour.Initiator.Index);
                playerControllerById.PostOrder(order3);
            }
        }
        return(State.Success);
    }