private static void OnSessionLaunched(CampaignGameStarter starter) { try { starter.AddGameMenuOption("village", "village_j_recruit_all_button", "Recruit all the troops available", GameMenuVillageRecruitTroopsOnCondition, RecruitAllAvailableTroops, false, 3); starter.AddGameMenuOption("town", "town_j_recruit_all_button", "Recruit all the troops available", GameMenuTownRecruitTroopsOnCondition, RecruitAllAvailableTroops, false, 7); starter.AddGameMenuOption("town_backstreet", "town_backstreet_j_hire_one_merc", "Hire one {JMERCNAME} ({JONEMERCCOST}{GOLD_ICON})", GameMenuTavernHireOneMercOnCondition, GameMenuTavernHireOneMercOnConsequnce, false, 1); starter.AddGameMenuOption("town_backstreet", "town_backstreet_j_hire_all_merc", "Hire all {JMERCNAME}s ({JALLMERCCOST}{GOLD_ICON})", GameMenuTavernHireAllMercOnCondition, GameMenuTavernHireAllMercOnConsequnce, false, 2); } catch (Exception ex) { NativeMethods.MessageBox(IntPtr.Zero, ex.Message, "RecruitAllButton -- OnSessionLaunched", NativeMethods.MB_ICONERROR | NativeMethods.MB_OK); } }
private void OnAfterNewGameCreated(CampaignGameStarter starter) { //To get these to line up with the other tournament items, have to move them to somewhere else GameMenu menuArena = ((Dictionary <string, GameMenu>)Traverse.Create(Campaign.Current.GameMenuManager).Field("_gameMenus").GetValue())["town_arena"]; if (TournamentXPSettings.Instance.MaxNumberOfRerollsPerTournament > 0) { var text = new TextObject("{=tourn001}Re-roll Prize"); //Was going to put the remaining count, but not updating correctly. starter.AddGameMenuOption("town_arena", "bm_reroll_tournamentprize", text.ToString(), new GameMenuOption.OnConditionDelegate(RerollCondition), new GameMenuOption.OnConsequenceDelegate(RerollConsequence), false, -1, true); } if (TournamentXPSettings.Instance.EnablePrizeSelection) { starter.AddGameMenuOption("town_arena", "bm_select_tournamentprize", new TextObject("{=tourn002}Select Prize").ToString(), new GameMenuOption.OnConditionDelegate(PrizeSelectCondition), new GameMenuOption.OnConsequenceDelegate(PrizeSelectConsequence), false, 1, true); } if (TournamentXPSettings.Instance.EnableTournamentTypeSelection) { starter.AddGameMenuOption("town_arena", "bm_select_tournamenttype", new TextObject("{=tourn003}Select Tournament Style").ToString(), new GameMenuOption.OnConditionDelegate(TournamentTypeSelectCondition), new GameMenuOption.OnConsequenceDelegate(TournamentTypeSelectConsequence), false, 2, true); } }
AddProsperityCheatToMenu(Tuple <string, int> parentMenu, CampaignGameStarter campaignGameSystemStarter) { string parentMenuId = parentMenu.Item1; int insertIntoParentAt = parentMenu.Item2; string menuId = MODULE_ID + "_" + parentMenuId + "_prosperity_cheat"; campaignGameSystemStarter.AddGameMenuOption( parentMenuId, menuId, PROSPERITY_CHEAT_MENU_TITLE, new GameMenuOption.OnConditionDelegate( game_menu_prosperity_cheat_on_condition), x => GameMenu.SwitchToMenu(menuId), false, insertIntoParentAt); campaignGameSystemStarter.AddGameMenu( menuId, PROSPERITY_CHEAT_MENU_TITLE, new OnInitDelegate(game_menu_prosperity_cheat_on_init), GameOverlays.MenuOverlayType.SettlementWithCharacters); campaignGameSystemStarter.AddGameMenuOption( menuId, menuId + "_increase_500", "{=!}Increase by 500 (no penalty)", x => true, new GameMenuOption.OnConsequenceDelegate( game_menu_prosperity_cheat_increase_prosperity_by_500_on_consequence)); campaignGameSystemStarter.AddGameMenuOption( menuId, menuId + "_decrease_500", "{=!}Decrease by 500 (no penalty)", x => true, new GameMenuOption.OnConsequenceDelegate( game_menu_prosperity_cheat_decrease_prosperity_by_500_on_consequence)); campaignGameSystemStarter.AddGameMenuOption( menuId, menuId + "_change_back", "{=!}Done", new GameMenuOption.OnConditionDelegate(back_on_condition), x => GameMenu.SwitchToMenu(parentMenuId), true); }
private static void Postfix(PlayerTownVisitCampaignBehavior __instance, CampaignGameStarter campaignGameSystemStarter) { campaignGameSystemStarter.AddGameMenuOption("town", "cps_town_courier", "Find a courier", new GameMenuOption.OnConditionDelegate(game_menu_town_find_courier_on_condition), new GameMenuOption.OnConsequenceDelegate(game_menu_town_find_courier_on_consequence), false, 4, false); campaignGameSystemStarter.AddGameMenu("cps_town_courier", "You find a Calradian Postal Service agent. They can send a missive by raven for a small fee.", new OnInitDelegate(cps_town_courier_on_init), 0, GameMenu.MenuFlags.none, null); campaignGameSystemStarter.AddGameMenuOption("cps_town_courier", "cps_town_courier_missive", "Pay a {AMOUNT}{GOLD_ICON} fee to send the missive", new GameMenuOption.OnConditionDelegate(game_menu_cps_town_courier_missive_on_condition), new GameMenuOption.OnConsequenceDelegate(game_menu_cps_town_courier_missive_on_consequence), false, -1, false); campaignGameSystemStarter.AddGameMenuOption("cps_town_courier", "cps_town_courier_back", "{=qWAmxyYz}Back to town center", new GameMenuOption.OnConditionDelegate(back_on_condition), (MenuCallbackArgs x) => GameMenu.SwitchToMenu("town"), true, -1, false); }
public static void SetupGameMenus(CampaignGameStarter campaignGameSystemStarter) { campaignGameSystemStarter.AddGameMenuOption( "town_arena", "blt_join_tournament", "JOIN the viewer tournament", args => { args.optionLeaveType = GameMenuOption.LeaveType.HostileAction; return(BLTTournamentQueueBehavior.Current.TournamentAvailable); }, _ => { BLTTournamentQueueBehavior.Current.JoinViewerTournament(); GameMenu.SwitchToMenu("town"); }, index: 2); campaignGameSystemStarter.AddGameMenuOption( "town_arena", "blt_watch_tournament", "WATCH the viewer tournament", args => { args.optionLeaveType = GameMenuOption.LeaveType.HostileAction; return(BLTTournamentQueueBehavior.Current.TournamentAvailable); }, _ => { BLTTournamentQueueBehavior.Current.WatchViewerTournament(); GameMenu.SwitchToMenu("town"); }, index: 3); }
public void AddGameMenus(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption("town", "town_medical_district", "{=l9sFJawW}Go to the medical district", new GameMenuOption.OnConditionDelegate(game_menu_go_to_medical_district_on_condition), delegate(MenuCallbackArgs x) { GameMenu.SwitchToMenu("town_medical_district"); }, false, 4, false); campaignGameStarter.AddGameMenu("town_medical_district", "You arrive at the city's medical district. As you approach you notice the local nurses and doctors running about treating the masses.", new OnInitDelegate(town_medical_district_on_init), GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null); campaignGameStarter.AddGameMenuOption("town_medical_district", "town_medical_district_self_heal", "{=*}Get yourself treated. ({HEAL_SELF_AMOUNT}{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(player_needs_heal_on_condition), delegate(MenuCallbackArgs x) { HealPlayerCharacter(); }, false, -1, false); campaignGameStarter.AddGameMenuOption("town_medical_district", "town_medical_district_companion_heal", "{=*}Get your companions treated. ({HEAL_COMPANION_AMOUNT}{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(companions_needs_heal_on_condition), delegate(MenuCallbackArgs x) { HealPartyCharacters(false); }, false, -1, false); campaignGameStarter.AddGameMenuOption("town_medical_district", "town_medical_district_player_and_companion_heal", "{=*}Get your companions and yourself treated. ({HEAL_ALL_AMOUNT}{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(party_characters_needs_heal_on_condition), delegate(MenuCallbackArgs x) { HealPartyCharacters(true); }, false, -1, false); campaignGameStarter.AddGameMenuOption("town_medical_district", "town_medical_district_back", "{=qWAmxyYz}Back to town center", new GameMenuOption.OnConditionDelegate(back_on_condition), delegate(MenuCallbackArgs x) { GameMenu.SwitchToMenu("town"); }, false, -1, false); }
private void OnAfterNewGameCreated(CampaignGameStarter starter) { starter.AddGameMenuOption("town", "town_workshop_stash", "Visit your workshops", new GameMenuOption.OnConditionDelegate(HasAnyWorkshops), new GameMenuOption.OnConsequenceDelegate(_ => GameMenu.SwitchToMenu("town_workshop_stash")), false, 6, false); starter.AddGameMenu("town_workshop_stash", "You are visiting your workshops.", new OnInitDelegate(args => { args.MenuTitle = new TextObject("Workshops", null); }), GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, (object)null); starter.AddGameMenuOption("town_workshop_stash", "town_workshop_stash_browse", "Browse your stash", new GameMenuOption.OnConditionDelegate(StashCondition), new GameMenuOption.OnConsequenceDelegate(StashConsequence), false, -1, false); starter.AddGameMenuOption("town_workshop_stash", "town_workshop_stash_toggle_input", "Use materials from stash: {STASH_INPUT}", new GameMenuOption.OnConditionDelegate(ProductionCondition), new GameMenuOption.OnConsequenceDelegate(ToggleInput), false, -1, false); starter.AddGameMenuOption("town_workshop_stash", "town_workshop_stash_toggle_output", "Place finished products in stash: {STASH_OUTPUT}", new GameMenuOption.OnConditionDelegate(ProductionCondition), new GameMenuOption.OnConsequenceDelegate(ToggleOutput), false, -1, false); starter.AddGameMenuOption("town_workshop_stash", "town_workshop_stash_back", "Back to town center", new GameMenuOption.OnConditionDelegate(BackCondition), new GameMenuOption.OnConsequenceDelegate(_ => GameMenu.SwitchToMenu("town")), true, -1, false); }
private void AddVillageStealMenu(CampaignGameStarter campaignGameStarter) { try { campaignGameStarter.AddGameMenuOption("village", "village_steal", "Steal supplies from the peasants.", this.game_menu_steal_on_condition, this.game_menu_steal_on_consequence, false, 6, false); campaignGameStarter.AddGameMenu("village_steal", "{VILLAGE_STEAL_INTRO} \n{SETTLEMENT_STEAL_INTRO_CONSEQUENCE}", this.game_menu_steal_on_init, GameOverlays.MenuOverlayType.SettlementWithCharacters, GameMenu.MenuFlags.none, null); campaignGameStarter.AddGameMenuOption("village_steal", "village_steal_atempt", "Look for opportunities to steal supplies.", this.game_menu_steal_atempt_on_condition, this.game_menu_steal_atempt_on_consequence, false, 1, false); campaignGameStarter.AddGameMenuOption("village_steal", "village_steal_back", "Leave.", this.game_menu_steal_leave_on_condition, this.game_menu_steal_leave_on_consequence, false, -1, false); campaignGameStarter.AddWaitGameMenu("village_steal_wait", "{SETTLEMENT_STEAL_WAIT} \n {SETTLEMENT_STEAL_WAIT_DETECTION} \n {SETTLEMENT_STEAL_WAIT_MIN_GOODS}", this.game_menu_steal_wait_on_init, this.game_menu_steal_wait_on_condition, this.game_menu_steal_wait_on_consequence, this.game_menu_steal_wait_on_tick, GameMenu.MenuAndOptionType.WaitMenuHideProgressAndHoursOption, GameOverlays.MenuOverlayType.SettlementWithBoth, 0f, GameMenu.MenuFlags.none, null); campaignGameStarter.AddGameMenuOption("village_steal_wait", "village_steal_wait_back", "Forget it.", this.game_menu_steal_leave_on_condition, this.game_menu_steal_leave_on_consequence, false, -1, false); campaignGameStarter.AddGameMenu("village_steal_receive", "{SETTLEMENT_STEAL_RECEIVE} \n{SETTLEMENT_STEAL_RECEIVE_DETECT} \n {SETTLEMENT_STEAL_RECEIVE_LOOT}", this.game_menu_steal_receive_on_init, GameOverlays.MenuOverlayType.SettlementWithCharacters, GameMenu.MenuFlags.none, null); campaignGameStarter.AddGameMenuOption("village_steal_receive", "village_steal_loot", "Take away the supplies.", this.game_menu_steal_receive_on_condition, this.game_menu_steal_receive_on_consequence, false, -1, false); campaignGameStarter.AddGameMenuOption("village_steal_receive", "village_steal_encounter_persuade", "Here, some denars will shut you up. " + KleptomaniaSubModule.settings.EncounterBribeCost + "{GOLD_ICON}", this.game_menu_steal_encounter_persuade_on_condition, this.game_menu_steal_encounter_persuade_on_consequence, false, 0, false); campaignGameStarter.AddGameMenuOption("village_steal_receive", "village_steal_encounter_influence", "Do you even know who I am? " + KleptomaniaSubModule.settings.EncounterInfluenceCost + " Influence", this.game_menu_steal_encounter_influence_on_condition, this.game_menu_steal_encounter_influence_on_consequence, false, 1, false); campaignGameStarter.AddGameMenuOption("village_steal_receive", "village_steal_encounter_threat", "Don't mess with gang business, or else...", this.game_menu_steal_encounter_threat_on_condition, this.game_menu_steal_threat_on_consequence, false, 2, false); campaignGameStarter.AddGameMenuOption("village_steal_receive", "village_steal_encounter_giveback", "Fine, you can have all the supplies back.", this.game_menu_steal_encounter_giveback_on_condition, this.game_menu_steal_giveback_on_consequence, false, 3, false); KleptomaniaSubModule.Log.Info("Behaviour intialization | Sucessfully added Village Steal Menus"); if (KleptomaniaSubModule.settings.DebugInfo) { InformationManager.DisplayMessage(new InformationMessage("Sucessfully added Village Steal Menus", Colors.Yellow)); } } catch (Exception ex) { InformationManager.DisplayMessage(new InformationMessage("Something went wrong with Iron Will - Wound Experience: " + ex.Message, Colors.Red)); KleptomaniaSubModule.Log.Error("Error on adding StealSuppliesBehaviour for Villages | " + ex.Message); } }
private void MenuItems(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption("village", "breed_horses", "Breed Horse", (GameMenuOption.OnConditionDelegate)(args => { if (!Settlement.CurrentSettlement.Village.IsProducing(MBObjectManager.Instance.GetObject <ItemObject>("aserai_horse")) && !Settlement.CurrentSettlement.Village.IsProducing(MBObjectManager.Instance.GetObject <ItemObject>("battania_horse")) && !Settlement.CurrentSettlement.Village.IsProducing(MBObjectManager.Instance.GetObject <ItemObject>("empire_horse")) && !Settlement.CurrentSettlement.Village.IsProducing(MBObjectManager.Instance.GetObject <ItemObject>("khuzait_horse")) && !Settlement.CurrentSettlement.Village.IsProducing(MBObjectManager.Instance.GetObject <ItemObject>("sturgia_horse")) && !Settlement.CurrentSettlement.Village.IsProducing(MBObjectManager.Instance.GetObject <ItemObject>("vlandia_horse"))) { args.optionLeaveType = GameMenuOption.LeaveType.Continue; args.Tooltip = new TextObject("The land around this village is not suited to horse breeding (Hint: go to a village that produces horse to use this action)"); args.IsEnabled = true; return(false); } return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => ShowHorseBreedList()), index: 1); campaignGameStarter.AddWaitGameMenu("breeding_wait", "You are breeding horses", (OnInitDelegate)(args => { args.MenuContext.GameMenu.SetTargetedWaitingTimeAndInitialProgress(_Duration, 0.0f); args.MenuContext.GameMenu.AllowWaitingAutomatically(); }), (TaleWorlds.CampaignSystem.GameMenus.OnConditionDelegate)(args => { args.MenuContext.GameMenu.AllowWaitingAutomatically(); args.optionLeaveType = GameMenuOption.LeaveType.Wait; return(true); }), (TaleWorlds.CampaignSystem.GameMenus.OnConsequenceDelegate)(args => ProduceEnd()), (OnTickDelegate)((args, dt) => args.MenuContext.GameMenu.SetProgressOfWaitingInMenu(_startTime.ElapsedHoursUntilNow / _Duration)), GameMenu.MenuAndOptionType.WaitMenuShowOnlyProgressOption); campaignGameStarter.AddWaitGameMenu("breeding_wait2", "You are breeding horses", (OnInitDelegate)(args => { args.MenuContext.GameMenu.SetTargetedWaitingTimeAndInitialProgress(_Duration, 0.0f); args.MenuContext.GameMenu.AllowWaitingAutomatically(); }), (TaleWorlds.CampaignSystem.GameMenus.OnConditionDelegate)(args => { args.MenuContext.GameMenu.AllowWaitingAutomatically(); args.optionLeaveType = GameMenuOption.LeaveType.Wait; return(true); }), (TaleWorlds.CampaignSystem.GameMenus.OnConsequenceDelegate)(args => Produce2End()), (OnTickDelegate)((args, dt) => args.MenuContext.GameMenu.SetProgressOfWaitingInMenu(_startTime.ElapsedHoursUntilNow / _Duration)), GameMenu.MenuAndOptionType.WaitMenuShowOnlyProgressOption); campaignGameStarter.AddGameMenuOption("breeding_wait", "breeding_wait_leave", "Stop and Leave", (GameMenuOption.OnConditionDelegate)(args => { args.optionLeaveType = GameMenuOption.LeaveType.Leave; return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => { GameMenu.SwitchToMenu("village"); })); campaignGameStarter.AddGameMenuOption("breeding_wait2", "breeding_wait2_leave", "Stop and Leave", (GameMenuOption.OnConditionDelegate)(args => { args.optionLeaveType = GameMenuOption.LeaveType.Leave; return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => { GameMenu.SwitchToMenu("village"); })); }
private void createCultureChangerSettlementMenus(CampaignGameStarter obj) { obj.AddGameMenuOption("town", "town_culture_change", "Change town culture", new GameMenuOption.OnConditionDelegate(CultureChangerCampaignBehaviour.game_menu_town_change_culture_on_condition), new GameMenuOption.OnConsequenceDelegate(CultureChangerCampaignBehaviour.game_menu_change_culture_on_consequence), false, 5, false); obj.AddGameMenuOption("castle", "castle_culture_change", "Change castle culture", new GameMenuOption.OnConditionDelegate(CultureChangerCampaignBehaviour.game_menu_castle_change_culture_on_condition), new GameMenuOption.OnConsequenceDelegate(CultureChangerCampaignBehaviour.game_menu_change_culture_on_consequence), false, 7, false); }
private void OnSessionLaunched(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption("town_arena", "host_tournament", "Host a tournament in your honor (" + Settings.TournamentCost.ToString() + "{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(OnHostTournamentMenuCondition), new GameMenuOption.OnConsequenceDelegate(OnHostTournamentMenuConsequence), false, 1, false); campaignGameStarter.AddGameMenuOption("town_arena", "select_prize", "Select your prize", new GameMenuOption.OnConditionDelegate(OnPrizeSelectMenuCondition), new GameMenuOption.OnConsequenceDelegate(OnPrizeSelectMenuConsequence), false, 1, true); }
private void MenuPartyInit(MenuCallbackArgs args) { _gameStarter.AddGameMenu("sms_sneak_party", "此时,你看到一些部队正在操练, 选择一支部队进行袭击", null, GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null); if (null != this._parties && this._parties.Count() > 0) { foreach (MobileParty current in this._parties) { _gameStarter.AddGameMenuOption("sms_sneak_party", "sms_sneak_party_name", current.Name.ToString(), null, BattleInCenter, false, -1, false); } } _gameStarter.AddGameMenuOption("sms_sneak_party", "sms_sneak_leave", "有人来了赶紧跑", null, Leave, true, -1, false); }
public void AddTroopMenu(CampaignGameStarter obj) { obj.AddGameMenuOption("town", "info_troop_type", "Recruit a Bandit Brigand from the local Gangleader. (30)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits5(30); }, false, 5); obj.AddGameMenuOption("town", "info_troop_type", "Recruit Asyrina and her Frostmaiden. (1000)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits6(1000); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit Klyka the Banditlord and his Warrior. (1000)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits(1000); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit Rengo and his Merry Men. (1000)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits7(1000); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit Bandit Squad (500)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits1(500); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit a Horsethief (30)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits2(30); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit Recruit Bandit Ambusher (50)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits3(50); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit Ruffian and Cutthroat (30)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits4(30); }, false, 5); obj.AddGameMenuOption("hideout_place", "info_troop_type", "Recruit a Bandit Brigand (30)", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { AddHideoutBandits5(30); }, false, 5); }
private void OnSessionLaunched(CampaignGameStarter campaignGameStarter) { string menuText = new TextObject("{=kRA_menu_access}Access The Royal Armoury").ToString(); campaignGameStarter.AddGameMenuOption("town_keep", "armoury", menuText, generic_access_on_condition, armory_on_consequence); }
// GAME MENU CODE public void AddGameMenus(CampaignGameStarter campaignGameStarter) { // index is location in menu 0 being top, 1 next if other of same index exist this are placed on top of them campaignGameStarter.AddGameMenuOption("town_backstreet", "recruit_custom_mercenaries_all", "{=*}Recruit {C_MEN_COUNT} {C_MERCENARY_NAME} ({C_TOTAL_AMOUNT}{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(HireCustomMercsViaMenuCondition), delegate(MenuCallbackArgs x) { HireCustomMecenariesViaGameMenu(false, false); }, false, 1, false); campaignGameStarter.AddGameMenuOption("town_backstreet", "recruit_custom_mercenaries_party_limit", "{=*}Recruit to Party Limit {C_MEN_COUNT_PL} {C_MERCENARY_NAME_PL} ({C_TOTAL_AMOUNT_PL}{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(HireCustomMercsViaMenuConditionToPartyLimit), delegate(MenuCallbackArgs x) { HireCustomMecenariesViaGameMenu(false, true); }, false, 1, false); campaignGameStarter.AddGameMenuOption("town_backstreet", "recruit_custom_mercenaries_hire_one", "{=*}Recruit 1 {C_MERCENARY_NAME_ONLY_ONE} ({C_TOTAL_AMOUNT_ONLY_ONE}{GOLD_ICON})", new GameMenuOption.OnConditionDelegate(HireCustomMercsViaMenuConditionHireOne), delegate(MenuCallbackArgs x) { HireCustomMecenariesViaGameMenu(true, false); }, false, 1, false); }
private static void AddSettlersMenu(CampaignGameStarter campaignGameSystemStarter) { foreach (var tier in TierSettlersList) { campaignGameSystemStarter.AddGameMenuOption( VillageSettlersMenu, tier.GetOptionId(), tier.GetOptionText(), args => { args.optionLeaveType = GameMenuOption.LeaveType.Trade; return(true); }, args => { try { Villagers.Add(tier.GoldPrice, tier.VillagersToAdd, Hero.MainHero, Settlement.CurrentSettlement.Village); } catch (Exception e) { Logger.logError(e); } } ); } }
public void AddGameMenu(CampaignGameStarter gameStarter) { this._gameStarter = gameStarter; //PlayerTownVisitCampaignBehavior gameStarter.AddGameMenuOption("town", "sms_sneak", "{=sms_sneak_on_secret_mission}Go on a secret mission", ShowCondition, SwitchStealMenuStart, false, 3, false); gameStarter.AddGameMenuOption("castle", "sms_sneak", "{=sms_sneak_on_secret_mission}Go on a secret mission", ShowCondition, SwitchStealMenuStart, false, 3, false); gameStarter.AddGameMenu("sms_sneak", "{=sms_sneak_menu_describe}Attack a Lord and take him prisoner. Attack the dungeon and save your companions", new OnInitDelegate(MenuInit), GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null); gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_lords_shall", "{=sms_sneak_attack_lord}Attack the Lord", HasLordWithOutParty, SwitchStealMenuLordWithoutParty, false, -1, false); //gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_party_center", "袭击部队", HasLordParty, SwitchStealMenuParty, false, -1, false); //gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_party_tavern", "袭击酒馆", HasTavern, BattleInTavern, false, -1, false); gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_party_prison", "{=sms_sneak_attack_dungeon}Attack the dungeon", HasPrison, BattleInPrison, false, -1, false); gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_leave", "{=sms_sneak_leave}Leave", null, Leave, true, -1, false); }
private static void AddTiers(CampaignGameStarter campaignGameSystemStarter) { foreach (var tier in TierMilitiaList) { campaignGameSystemStarter.AddGameMenuOption( VillageMilitiaMenu, tier.GetOptionId(), tier.GetOptionText(), args => { args.optionLeaveType = GameMenuOption.LeaveType.Trade; return(true); }, args => { try { AddMilitia(tier.GoldPrice, tier.MilitiaToAdd); } catch (Exception e) { Logger.logError(e); } } ); } }
private void AddGameMenus(CampaignGameStarter campaignGameSystemStarter) { try { campaignGameSystemStarter.AddGameMenuOption( "village", "village_militia_rec_menu_button", Main.Localization.GetTranslation(Localization.MilitiaMenuVillage), args => { args.optionLeaveType = GameMenuOption.LeaveType.Recruit; return(Campaign.Current.CurrentMenuContext.GameMenu.StringId != VillageMilitiaMenu && Settlement.CurrentSettlement.IsVillage && Settlement.CurrentSettlement.OwnerClan == Clan.PlayerClan); }, args => { GameMenu.SwitchToMenu(VillageMilitiaMenu); }, false, 4 ); campaignGameSystemStarter.AddGameMenu( VillageMilitiaMenu, Main.Localization.GetTranslation(Localization.MilitiaMenuVillageDescription), null ); AddTiers(campaignGameSystemStarter); AddLeaveButtons(campaignGameSystemStarter); } catch (Exception e) { Logger.logError(e); } }
private void OnGameLoaded(CampaignGameStarter obj) { Dictionary <Settlement, CultureObject> startingCultures = new(); if (BannerlordTweaksSettings.Instance is { } settings) { OverrideCulture = null; foreach (CultureObject Culture in from kingdom in Campaign.Current.Kingdoms where settings.PlayerCultureOverride.SelectedValue == kingdom.Culture.StringId || (settings.PlayerCultureOverride.SelectedValue == "khergit" && kingdom.Culture.StringId == "rebkhu") select kingdom.Culture) { OverrideCulture = Culture; break; } if (OverrideCulture == null && settings.ChangeToKingdomCulture && Clan.PlayerClan.Kingdom != null) { OverrideCulture = Clan.PlayerClan.Kingdom.Culture; } else if (OverrideCulture == null) { OverrideCulture = Clan.PlayerClan.Culture; } } foreach (Settlement settlement in from settlement in Campaign.Current.Settlements where settlement.IsTown || settlement.IsCastle || settlement.IsVillage select settlement) { startingCultures.Add(settlement, settlement.Culture); if (BannerlordTweaksSettings.Instance is { } settings2) { bool PlayerOverride = settlement.OwnerClan == Clan.PlayerClan && OverrideCulture != settlement.Culture; bool KingdomOverride = settlement.OwnerClan != Clan.PlayerClan && settings2.ChangeToKingdomCulture && settlement.OwnerClan.Kingdom != null && settlement.OwnerClan.Kingdom.Culture != settlement.Culture; bool ClanCulture = settlement.OwnerClan != Clan.PlayerClan && (!settings2.ChangeToKingdomCulture || settlement.OwnerClan.Kingdom == null) && settlement.OwnerClan.Culture != settlement.Culture; if ((PlayerOverride || KingdomOverride || ClanCulture) && !WeekCounter.ContainsKey(settlement)) { this.AddCounter(settlement); } else if ((PlayerOverride || KingdomOverride || ClanCulture) && this.IsSettlementDue(settlement)) { this.Transform(settlement, false); } } } ChangeSettlementCulture.initialCultureDictionary = startingCultures; obj.AddGameMenuOption("village", "village_culture_changer", "Culture Transformation", new GameMenuOption.OnConditionDelegate(ChangeSettlementCulture.Game_menu_village_change_culture_on_condition), new GameMenuOption.OnConsequenceDelegate(ChangeSettlementCulture.Game_menu_change_culture_on_consequence), false, 5, false); obj.AddGameMenuOption("town", "town_culture_changer", "Culture Transformation", new GameMenuOption.OnConditionDelegate(ChangeSettlementCulture.Game_menu_town_change_culture_on_condition), new GameMenuOption.OnConsequenceDelegate(ChangeSettlementCulture.Game_menu_change_culture_on_consequence), false, 5, false); obj.AddGameMenuOption("castle", "castle_culture_changer", "Culture Transformation", new GameMenuOption.OnConditionDelegate(ChangeSettlementCulture.Game_menu_castle_change_culture_on_condition), new GameMenuOption.OnConsequenceDelegate(ChangeSettlementCulture.Game_menu_change_culture_on_consequence), false, 5, false); }
private static void InitializeMod(CampaignGameStarter campaignGameStarter) { if (campaignGameStarter != null) { campaignGameStarter.AddGameMenuOption("town", "TLWorkshopCurrentRatingCondition", "Show Ratings of Workshops", new GameMenuOption.OnConditionDelegate(TownCondition), new GameMenuOption.OnConsequenceDelegate(TownConsequence), false, -1, false); } OnSessionLaunched(); }
private void OnCampaignStarted(CampaignGameStarter campaignGameStarter) { _entryFeeEnabled = bool.Parse(_modSettings.Descendants("EntryFeeEnabled").FirstOrDefault().Value); if (int.TryParse(_modSettings.Descendants("IndexInMenu").FirstOrDefault().Value, out int index)) { campaignGameStarter.AddGameMenuOption("town_keep", "armoury", "Enter the Armoury", OnCondition, OnConsequence, false, index); } }
private static void Postfix(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption( "training_field_menu", "training_field_train_troops", "{=training_field_train_troops}Train your troops.", menuCallbackArgs => { menuCallbackArgs.optionLeaveType = GameMenuOption.LeaveType.Wait; return(TrainingFieldCampaignBehavior.Current.HasTroopsToTrain); }, menuCallbackArgs => TrainingFieldCampaignBehavior.Current.BeginTraining(), false, 1 ); campaignGameStarter.AddWaitGameMenu( "training_field_train_troops_wait", "{=training_field_train_troops_wait}Your troops train tirelessly throughout the day, increasing their combat effectiveness.", null, args => { args.MenuContext.GameMenu.SetTargetedWaitingTimeAndInitialProgress(TrainingFieldCampaignBehavior.Current.MaximumNumberOfHoursToTrain, 0); args.MenuContext.GameMenu.AllowWaitingAutomatically(); return(true); }, null, (args, dt) => { args.MenuContext.GameMenu.SetProgressOfWaitingInMenu(TrainingFieldCampaignBehavior.Current.TrainingProgress); }, GameMenu.MenuAndOptionType.WaitMenuShowOnlyProgressOption ); campaignGameStarter.AddGameMenuOption( "training_field_train_troops_wait", "training_field_train_troops_wait_end_training", "{=training_field_train_troops_wait_end_training}End training early.", args => { args.optionLeaveType = GameMenuOption.LeaveType.Leave; return(true); }, args => TrainingFieldCampaignBehavior.Current.CancelTraining() ); }
private void AddArenaTrainingMenus(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption( "town_arena", "town_arena_train_troops", "{=town_arena_train_troops}Train your troops ({COST}{GOLD_ICON})", menuCallbackArgs => { MBTextManager.SetTextVariable("COST", CalculateCostToTrainTroops()); menuCallbackArgs.optionLeaveType = GameMenuOption.LeaveType.Wait; return(HasTroopsToTrain && !Settlement.CurrentSettlement.HasTournament); }, menuCallbackArgs => BeginTraining(), false, 2 ); campaignGameStarter.AddWaitGameMenu( "town_arena_train_troops_wait", "{=town_arena_train_troops_wait}Your troops train tirelessly throughout the day, increasing their combat effectiveness.", null, args => { args.MenuContext.GameMenu.SetTargetedWaitingTimeAndInitialProgress(MaximumNumberOfHoursToTrain, 0); args.MenuContext.GameMenu.AllowWaitingAutomatically(); return(true); }, null, (args, dt) => { args.MenuContext.GameMenu.SetProgressOfWaitingInMenu(TrainingProgress); }, GameMenu.MenuAndOptionType.WaitMenuShowOnlyProgressOption ); campaignGameStarter.AddGameMenuOption( "town_arena_train_troops_wait", "town_arena_train_troops_wait_end_training", "{=town_arena_train_troops_wait_end_training}End training early.", args => { args.optionLeaveType = GameMenuOption.LeaveType.Leave; return(true); }, args => CancelTraining() ); }
private void AddAssassinateAtSettlementOption(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption( "castle_outside", AssassinateOutsideCastleOptionId, new TextObject("{=RlEP2LMr}Assassinate...").ToString(), MenuCondition, MenuConsequence, false, 1 ); campaignGameStarter.AddGameMenuOption( "castle", AssassinateCastleOptionId, new TextObject("{=RlEP2LMr}Assassinate...").ToString(), MenuCondition, MenuConsequence, false, 1 ); campaignGameStarter.AddGameMenuOption( "town_keep_bribe", AssassinateTownKeepBribeOptionId, new TextObject("{=RlEP2LMr}Assassinate...").ToString(), MenuCondition, MenuConsequence, false, 1 ); campaignGameStarter.AddGameMenuOption( "town_keep", AssassinateTownKeepOptionId, new TextObject("{=RlEP2LMr}Assassinate...").ToString(), MenuCondition, MenuConsequence, false, 1 ); }
private void MainCastleMenu(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption("castle", "ruler_castle", "Ruler Action", (GameMenuOption.OnConditionDelegate)(args => { if (Settlement.CurrentSettlement.OwnerClan != Hero.MainHero.Clan) { return(false); } args.optionLeaveType = GameMenuOption.LeaveType.Submenu; return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => GameMenu.SwitchToMenu("ruler_castle_menu")), index: 1); campaignGameStarter.AddGameMenu("ruler_castle_menu", "You can issue special grants and decrees here", (OnInitDelegate)(args => { }), GameOverlays.MenuOverlayType.SettlementWithBoth); campaignGameStarter.AddGameMenuOption("ruler_castle_menu", "ruler_castle_menu_leave", "Back", (GameMenuOption.OnConditionDelegate)(args => { args.optionLeaveType = GameMenuOption.LeaveType.Leave; return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => GameMenu.SwitchToMenu("castle"))); }
private void TownArmSeperatists(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption("town", "town_arm_seperatist", "Smuggle Weapons to Angry Seperatists", (GameMenuOption.OnConditionDelegate)(args => { if (Settlement.CurrentSettlement.Town.Loyalty > 50 || (Settlement.CurrentSettlement.OwnerClan.Culture == Settlement.CurrentSettlement.Culture) || (Settlement.CurrentSettlement.OwnerClan.Kingdom != null && Settlement.CurrentSettlement.OwnerClan.Kingdom.Culture == Settlement.CurrentSettlement.Culture) || Settlement.CurrentSettlement.MapFaction == Hero.MainHero.MapFaction) { return(false); } args.optionLeaveType = GameMenuOption.LeaveType.Raid; return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => ArmSeperatists())); }
private static void AddMenuOption(Game game, CampaignGameStarter gameStarter) { try { gameStarter.AddGameMenuOption("encounter", "rts_camera_watch_battle", game.GameTextManager.FindText("str_rts_camera_watch_battle").ToString(), args => { try { CheckEnemyAttackableHonorably(args); return(EncounterAttackCondition(args)); } catch (Exception e) { Utility.DisplayMessage(e.ToString()); } return(false); }, args => { try { WatchMode = true; MenuHelper.EncounterAttackConsequence(args); } catch (Exception e) { WatchMode = false; Utility.DisplayMessage(e.ToString()); } }); gameStarter.AddGameMenuOption("menu_siege_strategies", "rts_camera_watch_battle", game.GameTextManager.FindText("str_rts_camera_watch_battle").ToString(), WatchSiegeCondition, WatchSiegeConsequence); } catch (Exception e) { Utility.DisplayMessage(e.ToString()); } }
private void OnSessionLaunched(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption( TOWN_KEEP_MENU_ID, "armoury", "Access the Armoury", new GameMenuOption.OnConditionDelegate(this.AccessOnCondition), new GameMenuOption.OnConsequenceDelegate(this.ArmouryOnConsequence), false, -1, false ); }
private void createEntrepeneurVillageMenus(CampaignGameStarter obj) { // Enter appraising menu obj.AddGameMenuOption("village", "village_enter_entr_option", "Appraise land", (MenuCallbackArgs args) => { args.optionLeaveType = GameMenuOption.LeaveType.Trade; return(true); }, (MenuCallbackArgs args) => { VillageData settlementAcreProperties; this._villageData.TryGetValue(Settlement.CurrentSettlement.StringId, out settlementAcreProperties); // Edit the View Model here? or pass data into VillagePropertyScreen and do it there? ScreenManager.PushScreen(new VillagePropertyScreen(ref settlementAcreProperties)); }, false, 4); }