public static void StartBattle(PartyBase defenderParty) { StartBattleAction.Apply(MobileParty.MainParty.Party, defenderParty); PlayerEncounter.RestartPlayerEncounter(MobileParty.MainParty.Party, defenderParty, true); PlayerEncounter.Update(); CampaignMission.OpenBattleMission(PlayerEncounter.GetBattleSceneForMapPosition(MobileParty.MainParty.Position2D)); }
private void StartMeeting(Hero hero) { var heroParty = hero.PartyBelongedTo?.Party; var player = Hero.MainHero; var playerParty = player.PartyBelongedTo?.Party; if (!hero.IsWanderer || heroParty != null) { keepEncounter = PlayerEncounter.Current; keepSettlement = player.PartyBelongedTo.CurrentSettlement; if (heroParty == null && hero.CurrentSettlement != null) { player.PartyBelongedTo.CurrentSettlement = hero.CurrentSettlement; } PlayerEncounter.Start(); PlayerEncounter.Current.SetupFields(playerParty, heroParty ?? playerParty); meetingEncounter = PlayerEncounter.Current; meetingHero = hero; Campaign.Current.TimeControlMode = CampaignTimeControlMode.Stop; Campaign.Current.CurrentConversationContext = ConversationContext.Default; AccessTools.Field(typeof(PlayerEncounter), "_mapEventState").SetValue(PlayerEncounter.Current, PlayerEncounterState.Begin); AccessTools.Field(typeof(PlayerEncounter), "_stateHandled").SetValue(PlayerEncounter.Current, true); AccessTools.Field(typeof(PlayerEncounter), "_meetingDone").SetValue(PlayerEncounter.Current, true); } ConversationCharacterData playerCharacterData = new ConversationCharacterData(CharacterObject.PlayerCharacter, playerParty); ConversationCharacterData conversationPartnerData = new ConversationCharacterData(hero.CharacterObject, heroParty); CampaignMission.OpenConversationMission(playerCharacterData, conversationPartnerData); }
internal void CECaptorHuntPrisoners(MenuCallbackArgs args, int amount = 20) { CEPersistence.animationPlayEvent = false; TroopRoster releasedPrisoners = TroopRoster.CreateDummyTroopRoster(); if (CESettings.Instance != null) { amount = CESettings.Instance.AmountOfTroopsForHunt; } try { for (int i = 0; i < amount; i++) { TroopRosterElement test = MobileParty.MainParty.PrisonRoster.GetTroopRoster().Where(troop => !troop.Character.IsHero).GetRandomElementInefficiently(); if (test.Character == null) { continue; } MobileParty.MainParty.PrisonRoster.RemoveTroop(test.Character); releasedPrisoners.AddToCounts(test.Character, 1, true); } } catch (Exception) { CECustomHandler.LogToFile("Couldn't find anymore prisoners."); } if (!releasedPrisoners.GetTroopRoster().IsEmpty()) { CECaptorContinue(args); try { Clan clan = Clan.BanditFactions.First(clanLooters => clanLooters.StringId == "looters"); clan.Banner.SetBannerVisual(Banner.CreateRandomBanner().BannerVisual); Settlement nearest = SettlementHelper.FindNearestSettlement(settlement => { return(true); }); MobileParty prisonerParty = BanditPartyComponent.CreateBanditParty("CustomPartyCE_Hunt_" + MBRandom.RandomInt(int.MaxValue), clan, nearest.Hideout, false); PartyTemplateObject defaultPartyTemplate = clan.DefaultPartyTemplate; prisonerParty.InitializeMobileParty(defaultPartyTemplate, MobileParty.MainParty.Position2D, 0.5f, 0.1f, -1); prisonerParty.SetCustomName(new TextObject("{=CEEVENTS1107}Escaped Captives")); prisonerParty.MemberRoster.Clear(); prisonerParty.MemberRoster.Add(releasedPrisoners.ToFlattenedRoster()); prisonerParty.RecentEventsMorale = -100; prisonerParty.IsActive = true; prisonerParty.ActualClan = clan; prisonerParty.Party.Owner = clan.Leader; prisonerParty.Party.Visuals.SetMapIconAsDirty(); prisonerParty.HomeSettlement = nearest; prisonerParty.InitializePartyTrade(0); Hero.MainHero.HitPoints += 40; CECustomHandler.LogToFile(prisonerParty.Leader.Name.ToString()); PlayerEncounter.RestartPlayerEncounter(prisonerParty.Party, MobileParty.MainParty.Party, true); StartBattleAction.Apply(MobileParty.MainParty.Party, prisonerParty.Party); PlayerEncounter.Update(); CEPersistence.huntState = CEPersistence.HuntState.StartHunt; CampaignMission.OpenBattleMission(PlayerEncounter.GetBattleSceneForMapPosition(MobileParty.MainParty.Position2D)); } catch (Exception) { CECaptorKillPrisoners(args, amount); } } else { CECaptorContinue(args); } }
public IEnumerator RunFetchCampaignMission(string spreadSheetId) { { yield return(StartCoroutine(GetData(spreadSheetId, "CampaignMissions"))); Debug.Log("FINISH RETRIEVING CAMPAIGN ITEMS FROM GOOGLE"); if (_spreadSheetResults == null) { Debug.Log("NULL RETURN - DESTROYING"); Destroy(gameObject); yield break; } var items = new List <CampaignMission>(); for (var i = 0; i < _spreadSheetResults.Length; i++) { var current = _spreadSheetResults[i]; var campaignItem = new CampaignMission(); campaignItem.Id = int.Parse(current["Id"].ToString()); campaignItem.FilesToOpen = GetIntList(current, "FilesToOpen"); campaignItem.FilesToDecrypt = GetIntList(current, "FilesToDecrypt"); campaignItem.DevicesToConnect = GetStringHashedList(GetStringList(current, "DevicesToConnect")); campaignItem.DevicesToDecrypt = GetStringHashedList(GetStringList(current, "DevicesToDecrypt")); campaignItem.SystemVariablesToSet = GetStringList(current, "SystemVariablesToSet"); campaignItem.ProgramsToUnlock = GetIntList(current, "ProgramsToUnlock"); campaignItem.CampaignMissionReward = GetIntList(current, "CampaignMissionRewards"); campaignItem.CampaignMissionToComplete = GetIntList(current, "CampaignMissionToComplete"); items.Add(campaignItem); } var serializedData = JsonConvert.SerializeObject(items, new JsonSerializerSettings() { PreserveReferencesHandling = PreserveReferencesHandling.Objects, TypeNameHandling = TypeNameHandling.All, TypeNameAssemblyFormat = FormatterAssemblyStyle.Full, }); CreateFile(Alias.Config.CollectionsSavePath, "CampaignMissionsData.txt", serializedData); Debug.Log("Finished creating and configuring campaign missions data!"); } { yield return(StartCoroutine(GetData(spreadSheetId, "CampaignMissionsRewards"))); Debug.Log("FINISH RETRIEVING CAMPAIGN ITEMS FROM GOOGLE"); if (_spreadSheetResults == null) { Debug.Log("NULL RETURN - DESTROYING"); Destroy(gameObject); yield break; } var itemsRewards = new List <CampaignMissionReward>(); for (var i = 0; i < _spreadSheetResults.Length; i++) { var current = _spreadSheetResults[i]; var campaignItem = new CampaignMissionReward(); campaignItem.Id = int.Parse(current["Id"].ToString()); campaignItem.FilesToUnlock = GetIntList(current, "FilesToUnlock"); campaignItem.DevicesToUnlock = GetStringHashedList(GetStringList(current, "DevicesToUnlock")); campaignItem.ProgramsToUnlock = GetIntList(current, "ProgramsToUnlock"); campaignItem.CommandsToRun = GetStringList(current, "CommandsToRun"); itemsRewards.Add(campaignItem); } var serializedData = JsonConvert.SerializeObject(itemsRewards, new JsonSerializerSettings() { PreserveReferencesHandling = PreserveReferencesHandling.Objects, TypeNameHandling = TypeNameHandling.All, TypeNameAssemblyFormat = FormatterAssemblyStyle.Full, }); CreateFile(Alias.Config.CollectionsSavePath, "CampaignMissionsRewardsData.txt", serializedData); } AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); Debug.Log("Finished creating and configuring campaign mission rewards data!"); DestroyImmediate(gameObject); }