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; }
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); } } } } }
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)); } }
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); }