コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #4
0
 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);
 }
コード例 #5
0
 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);
 }
コード例 #6
0
        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);
        }
コード例 #7
0
 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);
 }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        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");
            }));
        }
コード例 #10
0
 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);
 }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
 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);
 }
コード例 #14
0
        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);
                    }
                }
                    );
            }
        }
コード例 #17
0
        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);
            }
        }
コード例 #20
0
        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();
 }
コード例 #22
0
        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);
            }
        }
コード例 #23
0
 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()
         );
 }
コード例 #24
0
 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()
         );
 }
コード例 #25
0
        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
                );
        }
コード例 #26
0
        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")));
        }
コード例 #27
0
 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()));
 }
コード例 #28
0
        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());
            }
        }
コード例 #29
0
 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
         );
 }
コード例 #30
0
 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);
 }