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);
            }
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        private void OnSessionLaunched(CampaignGameStarter campaignGameStarter)
        {
            campaignGameStarter.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);

            campaignGameStarter.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);
            campaignGameStarter.AddGameMenuOption("cps_town_courier", "cps_town_courier_missive", "Choose a recipient", new GameMenuOption.OnConditionDelegate(game_menu_cps_town_courier_missive_select_recipient_on_condition), new GameMenuOption.OnConsequenceDelegate(game_menu_cps_town_courier_missive_on_consequence), false, -1, false);
            campaignGameStarter.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);

            campaignGameStarter.AddGameMenu("cps_town_courier_missive", "With {CPS_MISSIVE_RECIPIENT} declared as the recipient, the agent is now ready to accept your missive.", new OnInitDelegate(cps_town_courier_missive_on_init), 0, GameMenu.MenuFlags.none, null);
            campaignGameStarter.AddGameMenuOption("cps_town_courier_missive", "cps_town_courier_missive_friendly", "Pay a {CPS_AMOUNT}{GOLD_ICON} fee to send a friendly missive", new GameMenuOption.OnConditionDelegate(game_menu_cps_town_courier_missive_simple_on_condition), new GameMenuOption.OnConsequenceDelegate(game_menu_cps_town_courier_missive_friendly_on_consequence), false, -1, false);
            campaignGameStarter.AddGameMenuOption("cps_town_courier_missive", "cps_town_courier_missive_threat", "Pay a {CPS_AMOUNT}{GOLD_ICON} fee to send a threatening missive", new GameMenuOption.OnConditionDelegate(game_menu_cps_town_courier_missive_simple_on_condition), new GameMenuOption.OnConsequenceDelegate(game_menu_cps_town_courier_missive_threat_on_consequence), false, -1, false);
            campaignGameStarter.AddGameMenuOption("cps_town_courier_missive", "cps_town_courier_missive_command", "Pay a {CPS_AMOUNT}{GOLD_ICON} fee to send a missive containing orders", new GameMenuOption.OnConditionDelegate(game_menu_cps_town_courier_missive_command_on_condition), new GameMenuOption.OnConsequenceDelegate(game_menu_cps_town_courier_missive_command_on_consequence), false, -1, false);
            campaignGameStarter.AddGameMenuOption("cps_town_courier_missive", "cps_town_courier_missive_back", "{=qWAmxyYz}Back to town center", new GameMenuOption.OnConditionDelegate(back_on_condition), (MenuCallbackArgs x) => GameMenu.SwitchToMenu("town"), true, -1, false);
        }
        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);
            }
        }
        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);
 }
Exemplo n.º 7
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);
        }
 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);
 }
        AddManagePopulationToMenu(Tuple <string, int> parentMenu,
                                  CampaignGameStarter campaignGameSystemStarter)
        {
            string parentMenuId       = parentMenu.Item1;
            int    insertIntoParentAt = parentMenu.Item2;

            string menuId = MODULE_ID + "_" + parentMenuId + "_manage_population";

            campaignGameSystemStarter.AddGameMenuOption(
                parentMenuId, menuId, MANAGE_POPULATION_MENU_TITLE,
                new GameMenuOption.OnConditionDelegate(
                    game_menu_manage_population_on_condition),
                x => GameMenu.SwitchToMenu(menuId), false, insertIntoParentAt);
            const float prosperityRatioDisplay = 0.1f;
            const float loyaltyRatioDisplay    = prosperityRatioDisplay * LOYALTY_RATIO;

            campaignGameSystemStarter.AddGameMenu(
                menuId,
                "{=!}Manage Population.\nPopulation is considered to be equivalent to " +
                "prosperity and reducing it reduces loyalty proportionally. E.g. if " +
                "you remove 500 people and this is " +
                (prosperityRatioDisplay * 100.0f).ToString() + "% of them, " +
                (loyaltyRatioDisplay * 100.0f).ToString() +
                "% of loyalty will also be reduced.",
                new OnInitDelegate(game_menu_manage_population_on_init),
                GameOverlays.MenuOverlayType.SettlementWithCharacters);
            campaignGameSystemStarter.AddGameMenuOption(
                menuId, menuId + "_decrease_10_percent",
                "{=!}Kick 10% of people out (decreases loyalty)", x => true,
                new GameMenuOption.OnConsequenceDelegate(
                    game_menu_manage_population_decrease_pop_10_percent_on_consequence));
            campaignGameSystemStarter.AddGameMenuOption(
                menuId, menuId + "_decrease_30_percent",
                "{=!}Kick 30% of people out (decreases loyalty)", x => true,
                new GameMenuOption.OnConsequenceDelegate(
                    game_menu_manage_population_decrease_pop_30_percent_on_consequence));
            campaignGameSystemStarter.AddGameMenuOption(
                menuId, menuId + "_decrease_200",
                "{=!}Kick 200 people out (decreases loyalty)", x => true,
                new GameMenuOption.OnConsequenceDelegate(
                    game_menu_manage_population_decrease_pop_200_on_consequence));
            campaignGameSystemStarter.AddGameMenuOption(
                menuId, menuId + "_decrease_500",
                "{=!}Kick 500 people out (decreases loyalty)", x => true,
                new GameMenuOption.OnConsequenceDelegate(
                    game_menu_manage_population_decrease_pop_500_on_consequence));
            campaignGameSystemStarter.AddGameMenuOption(
                menuId, menuId + "_change_back", "{=!}Done",
                new GameMenuOption.OnConditionDelegate(back_on_condition),
                x => GameMenu.SwitchToMenu(parentMenuId), true);
        }
Exemplo n.º 10
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);
            obj.AddGameMenuOption("info_troop_type", "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.AddGameMenu("test", "The guild manager goes to the back and after a while comes back to the front with two lists of available mercenaries. " +
                            "{RENOWN_STATUS} " +
                            "The ones you paid for will wait by the gates.",
                            (MenuCallbackArgs args) =>
            {
                if (Clan.PlayerClan.Tier == 0)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She tells you that no one here has heard of you so not many are willing to join.", false);
                }
                else if (Clan.PlayerClan.Tier == 1)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She tells you that she cannot remember you or your face but some of their trainees were talking about you.", false);
                }
                else if (Clan.PlayerClan.Tier == 2)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She thanks you for waiting and tells you that some of their trainees were waiting for you to come again.", false);
                }
                else if (Clan.PlayerClan.Tier == 3)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She thanks you for waiting and tells you that some of their experienced members were discussing your exploits from time to time.", false);
                }
                else if (Clan.PlayerClan.Tier == 4)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She thanks you for your patronage and tells you that noblemen are declining other requests to join you instead.", false);
                }
                else if (Clan.PlayerClan.Tier == 5)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She bows and thanks you for your continued patronage. She tells you that there is now a waiting list to get on the list to join your party.", false);
                }
                else
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She bows and thanks you for your continued patronage. The whole guild is entirely maintained with your money at this point.", false);
                }
            });

            obj.AddGameMenuOption("town", "info_troop_type", "Hire Basilisk Guild Troops", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { GameMenu.SwitchToMenu("test"); }, false, 5);
        }
Exemplo n.º 11
0
        private void CreateSequenceGameMenuFor(CampaignGameStarter gameStarter, IStory story)
        {
            foreach (var sequence in story.Sequences)
            {
                var m = new MenuCallBackDelegate(sequence);

                gameStarter.AddGameMenu(sequence.Id, sequence.Intro, m.ActMenuSetup, GameOverlays.MenuOverlayType.None, GameMenu.MenuFlags.none, "BannerlordTales");

                foreach (var choice in sequence.Choices)
                {
                    var o = new OptionCallBackDelegate(choice);
                    gameStarter.AddGameMenuOption(sequence.Id, choice.Id, choice.Text, o.OnConditionDelegate, o.OnConsequenceDelegate, m.IsLeave(choice.Id), m.Index(choice.Id), m.IsRepeatable(choice.Id));
                }
            }
        }
Exemplo n.º 12
0
        public static void CELoadRandomEvent(CampaignGameStarter gameStarter, CEEvent listedEvent, List <CEEvent> eventList)
        {
            CEVariablesLoader          variablesLoader = new CEVariablesLoader();
            MenuCallBackDelegateRandom rcb             = new MenuCallBackDelegateRandom(listedEvent, eventList);

            if (listedEvent.MultipleRestrictedListOfFlags.Contains(RestrictedListOfFlags.ProgressMenu))
            {
                gameStarter.AddWaitGameMenu(listedEvent.Name,
                                            listedEvent.Text,
                                            rcb.RandomProgressInitWaitGameMenu,
                                            rcb.RandomProgressConditionWaitGameMenu,
                                            rcb.RandomProgressConsequenceWaitGameMenu,
                                            rcb.RandomProgressTickWaitGameMenu,
                                            CEProgressMode(variablesLoader.GetIntFromXML(listedEvent.ProgressEvent.DisplayProgressMode)),
                                            TaleWorlds.CampaignSystem.Overlay.GameOverlays.MenuOverlayType.None,
                                            variablesLoader.GetFloatFromXML(listedEvent.ProgressEvent.TimeToTake),
                                            GameMenu.MenuFlags.none,
                                            "CEEVENTS");
            }
            else
            {
                gameStarter.AddGameMenu(
                    listedEvent.Name,
                    listedEvent.Text,
                    rcb.RandomEventGameMenu,
                    TaleWorlds.CampaignSystem.Overlay.GameOverlays.MenuOverlayType.None,
                    GameMenu.MenuFlags.none,
                    "CEEVENTS");
            }

            if (listedEvent.Options == null)
            {
                return;                                                                                                     // Leave if no Options
            }
            List <Option> sorted = listedEvent.Options.OrderBy(item => variablesLoader.GetIntFromXML(item.Order)).ToList(); // Sort Options

            foreach (Option op in sorted)
            {
                MenuCallBackDelegateRandom mcb = new MenuCallBackDelegateRandom(listedEvent, op, eventList);
                gameStarter.AddGameMenuOption(
                    listedEvent.Name,
                    listedEvent.Name + op.Order,
                    op.OptionText,
                    mcb.RandomEventConditionMenuOption,
                    mcb.RandomEventConsequenceMenuOption,
                    false, variablesLoader.GetIntFromXML(op.Order));
            }
        }
Exemplo n.º 13
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);
        }
Exemplo n.º 14
0
        public void AddGameMenu(CampaignGameStarter gameStarter)
        {
            this._gameStarter = gameStarter;

            //PlayerTownVisitCampaignBehavior
            gameStarter.AddGameMenuOption("town", "sms_sneak", "执行秘密任务", ShowCondition, SwitchStealMenuStart, false, 3, false);
            gameStarter.AddGameMenuOption("castle", "sms_sneak", "执行秘密任务", ShowCondition, SwitchStealMenuStart, false, 3, false);

            gameStarter.AddGameMenu("sms_sneak", "听取专业人士建议, 袭击领主,将会袭击没带部队的领主. 袭击部队, 将会袭击正在呆在城里的部队. 袭击监狱,将会获得所有囚犯. 袭击酒馆将获得一些", new OnInitDelegate(MenuInit), GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null);
            gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_lords_shall", "袭击领主", 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", "袭击监牢", HasPrison, BattleInPrison, false, -1, false);

            gameStarter.AddGameMenuOption("sms_sneak", "sms_sneak_leave", "有人来了赶紧跑", null, Leave, true, -1, false);
        }
Exemplo n.º 15
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")));
        }
        public void AddMenuOptions(CampaignGameStarter starter)
        {
            #region Entering garrison headquarters

            starter.AddGameMenuOption("town", "ml_go_to_garrison", "{=ml.garrison.start}Go to the garrison headquarters",
                                      new GameMenuOption.OnConditionDelegate(GarrisonCommandCampaignBehavior.ml_menu_enter_garrison_condition),
                                      (MenuCallbackArgs args) =>
            {
                GarrisonCommandCampaignBehavior.ml_menu_start_enter_garrison_consequence(args, _mlBribedTowns);
            }, false, 4, false);

            #region Bribing

            starter.AddGameMenu("ml_garrison_bribe_enter", "{=ml.garrison.guards.refuse}The guards inform you that you're not allowed to enter and waive you off.",
                                (MenuCallbackArgs args) =>
            {
                GarrisonCommandCampaignBehavior.ml_garrison_enter_bribe_menu_init(args, _mlBribedTowns);
            },
                                TaleWorlds.CampaignSystem.Overlay.GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null);
            starter.AddGameMenuOption("ml_garrison_bribe_enter", "ml_bribe_guards_into_garrison", "{=ml.bribe.guards}Try to bribe the guards with {GOLD_ICON}{ML_BRIBE_AMOUNT}.",
                                      new GameMenuOption.OnConditionDelegate(GarrisonCommandCampaignBehavior.ml_menu_bribe_guards_condition),
                                      (MenuCallbackArgs args) =>
            {
                GarrisonCommandCampaignBehavior.ml_menu_bribe_guards_consequence(args);
                _mlBribedTowns.Add(Settlement.CurrentSettlement);
            }, false, -1, false);
            starter.AddGameMenuOption("ml_garrison_bribe_enter", "ml_bribe_guards_leave", "{=ml.leave}Leave.",
                                      new GameMenuOption.OnConditionDelegate(GarrisonCommandCampaignBehavior.ml_leave_condition),
                                      (MenuCallbackArgs args) =>
            {
                GameMenu.SwitchToMenu("town");
            }, true, -1, false);

            #endregion Bribing

            #endregion Entering garrison headquarters

            #region Garrison menu

            #region Base

            starter.AddGameMenu("ml_garrison_menu", "{=ml.garrison.flavortext}You step into the garrison headquarters of {ML_GARRISON_TOWN_NAME}, a {ML_GARRISON_DESC} adjacent to the keep. Inside you can see {ML_GARRISON_FLAVOR} \n \n You can gauge the air in the room is one {ML_GARRISON_SATISFACTION}",
                                new OnInitDelegate(GarrisonCommandCampaignBehavior.ml_town_init_garrison_menu), TaleWorlds.CampaignSystem.Overlay.GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null);
            starter.AddGameMenuOption("ml_garrison_menu", "ml_garrison_leave", "{=ml.leave}Leave.",
                                      new GameMenuOption.OnConditionDelegate(GarrisonCommandCampaignBehavior.ml_leave_condition),
                                      (MenuCallbackArgs args) =>
            {
                GameMenu.SwitchToMenu("town");
            }, true, -1, false);

            #endregion Base

            #region Talking to garrison commander

            starter.AddGameMenu("ml_garrison_talk_commander_menu", "{ML_COMMANDER_INTRO}",
                                new OnInitDelegate(GarrisonCommandCampaignBehavior.ml_garrison_commander_intro_menu_init), TaleWorlds.CampaignSystem.Overlay.GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null);
            starter.AddGameMenuOption("ml_garrison_talk_commander_menu", "ml_garrison_commander_buy_patrols", "{=ml.talk.commander.about.patrols}Form a garrison detachment.",
                                      (MenuCallbackArgs args) =>
            {
                bool isFull = false;
                if (!_mlTownPatrols.ContainsKey(Settlement.CurrentSettlement.StringId))
                {
                    _mlTownPatrols.Add(Settlement.CurrentSettlement.StringId, new List <TownPatrolData>());
                }
                else if (_mlTownPatrols[Settlement.CurrentSettlement.StringId].Count() >= TownUtils.GetNumberOfDetachmentsFormable(Settlement.CurrentSettlement.Town))
                {
                    isFull = true;
                }
                return(GarrisonCommandCampaignBehavior.ml_ask_garrison_detachment_condition(args, isFull));
            },
                                      (MenuCallbackArgs args) =>
            {
                GarrisonCommandCampaignBehavior.ml_ask_garrison_detachment_consequence(args);
            }, false, -1, false);

            #endregion Talking to garrison commander

            #region Buying patrols menu

            starter.AddGameMenu("ml_patrol_buying_menu", "Below is a list of the available types of patrols you can purchase for this settlement. \n \n Settlement patrols: ({ML_GARRISON_PATROL_NUM}/{ML_GARRISON_PATROL_MAX})",
                                (MenuCallbackArgs args) =>
            {
                ml_garrison_buy_patrol_menu_init(args, _mlTownPatrols);
            },
                                TaleWorlds.CampaignSystem.Overlay.GameOverlays.MenuOverlayType.SettlementWithBoth, GameMenu.MenuFlags.none, null);

            //here we repetedly define menu options in the foreach loop- can lead to probelms down the line if patrols are changed or something, for now it's fine
            foreach (PatrolData dat in manager.Patrols)
            {
                starter.AddGameMenuOption("ml_patrol_buying_menu", "ml_garrison_buy_patrol_" + dat.templateName, "{=ml.buy.text}Buy " + dat.name + " (starting at " + dat.basePrice + "{GOLD_ICON})",
                                          (MenuCallbackArgs args) =>
                {
                    args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                    args.Tooltip         = new TextObject(dat.description);
                    if (Settlement.CurrentSettlement.Culture == dat.culture)
                    {
                        if (Hero.MainHero.Gold >= dat.basePrice)
                        {
                            return(true);
                        }
                        args.IsEnabled = false;
                        args.Tooltip   = new TextObject("You do not have enough money to buy this patrol.");
                        return(true);
                    }
                    return(false);
                },
                                          (MenuCallbackArgs args) =>
                {
                    return;
                }, false, -1, false);
            }


            #endregion Buying patrols menu

            #endregion Garrison menu
        }
Exemplo n.º 17
0
        private void MenuOption(CampaignGameStarter campaignGameStarter)
        {
            campaignGameStarter.AddGameMenu("sack_settlement", "Sacking will cause the settlement to lose 1 building level for each building and the settlement to lose half of its prosperity.  Razing the settlement will cause the settlement to lose all buildings and reset prosperity to 0.  A large amount of wealth is gained by sacking and an even larger amount is gained by razing.  Looted settlements will have loyalty problems for years to come", (OnInitDelegate)(args => { }), GameOverlays.MenuOverlayType.SettlementWithBoth);

            campaignGameStarter.AddGameMenuOption("sack_settlement", "sack_settlement_sack", "Sack it", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Raid;
                args.IsEnabled       = true;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                UpdateSackSettlement();
                Settlement.CurrentSettlement.Town.Loyalty = 0.0f;
                float prosperitySacked = Settlement.CurrentSettlement.Prosperity / 2.0f;
                Settlement.CurrentSettlement.Prosperity -= prosperitySacked;
                float buildingRazeCost = 0.0f;
                foreach (Building building in Settlement.CurrentSettlement.Town.Buildings)
                {
                    if (building.CurrentLevel > 0)
                    {
                        building.CurrentLevel--;
                        buildingRazeCost += building.GetConstructionCost();
                    }
                    if (building.GetConstructionCost() == 0)
                    {
                        building.CurrentLevel++;
                    }
                }
                int goldSacked      = (int)(5 * buildingRazeCost + 50 * prosperitySacked);
                Hero.MainHero.Gold += goldSacked;
                InformationManager.DisplayMessage(new InformationMessage("Your troops looted " + goldSacked.ToString() + " <img src=\"Icons\\Coin@2x\">gold"));
                if (Settlement.CurrentSettlement.IsTown)
                {
                    GameMenu.SwitchToMenu("town");
                }
                else if (Settlement.CurrentSettlement.IsCastle)
                {
                    GameMenu.SwitchToMenu("castle");
                }
            }), index: 1);

            campaignGameStarter.AddGameMenuOption("sack_settlement", "sack_settlement_raze", "Raze it", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.HostileAction;
                args.IsEnabled       = true;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                UpdateSackSettlement();
                Settlement.CurrentSettlement.Town.Loyalty = 0.0f;
                float prosperitySacked = Settlement.CurrentSettlement.Prosperity;
                ProsperityBeforeRazed  = Settlement.CurrentSettlement.Prosperity;
                Settlement.CurrentSettlement.Prosperity = 0;
                float buildingRazeCost = 0.0f;
                foreach (Building building in Settlement.CurrentSettlement.Town.Buildings)
                {
                    while (building.CurrentLevel > 0)
                    {
                        building.CurrentLevel--;
                        buildingRazeCost += building.GetConstructionCost();
                    }
                    if (building.GetConstructionCost() == 0)
                    {
                        building.CurrentLevel++;
                    }
                }
                int goldSacked      = (int)(5 * buildingRazeCost + 50 * prosperitySacked);
                Hero.MainHero.Gold += goldSacked;
                InformationManager.DisplayMessage(new InformationMessage("Your troops looted " + goldSacked.ToString() + " <img src=\"Icons\\Coin@2x\">gold"));
                GameMenu.SwitchToMenu("sack_settlement_captives");
            }), index: 2);

            campaignGameStarter.AddGameMenuOption("sack_settlement", "sack_settlement_occupy", "Never Mind", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Continue;
                args.IsEnabled       = true;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                GameMenu.SwitchToMenu("sack_settlement_captives");
                if (Settlement.CurrentSettlement.IsTown)
                {
                    GameMenu.SwitchToMenu("town");
                }
                else if (Settlement.CurrentSettlement.IsCastle)
                {
                    GameMenu.SwitchToMenu("castle");
                }
            }), index: 3);

            campaignGameStarter.AddGameMenu("sack_settlement_captives", "With the Settlement reduced to rubble, the question comes to mind of what to do with the displaced locals.  Those that are still alives.", (OnInitDelegate)(args => { }), GameOverlays.MenuOverlayType.SettlementWithBoth);

            campaignGameStarter.AddGameMenuOption("sack_settlement_captives", "sack_settlement_captives_enslave", "Send them to the slave markets", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.ForceToGiveTroops;
                args.IsEnabled       = true;
                args.Tooltip         = new TextObject("gain gold");
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                int gold            = (int)(ProsperityBeforeRazed * 10);
                Hero.MainHero.Gold += gold;
                InformationManager.DisplayMessage(new InformationMessage("The citizens of " + Settlement.CurrentSettlement.Name.ToString() + " sold for " + gold.ToString() + " <img src=\"Icons\\Coin@2x\">gold on the slave market"));
                if (Settlement.CurrentSettlement.IsTown)
                {
                    GameMenu.SwitchToMenu("town");
                }
                else if (Settlement.CurrentSettlement.IsCastle)
                {
                    GameMenu.SwitchToMenu("castle");
                }
            }), index: 1);

            campaignGameStarter.AddGameMenuOption("sack_settlement_captives", "sack_settlement_captives_murder", "Make them into piles of skulls", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.HostileAction;
                args.IsEnabled       = true;
                args.Tooltip         = new TextObject("gain renown");
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                int renownGained           = (int)ProsperityBeforeRazed / 50;
                Hero.MainHero.Clan.Renown += renownGained;
                InformationManager.DisplayMessage(new InformationMessage("News of your gruelsome deeds spread through out all of Calradia (" + renownGained + " renown gained)"));
                if (Settlement.CurrentSettlement.IsTown)
                {
                    GameMenu.SwitchToMenu("town");
                }
                else if (Settlement.CurrentSettlement.IsCastle)
                {
                    GameMenu.SwitchToMenu("castle");
                }
            }), index: 1);

            campaignGameStarter.AddGameMenuOption("sack_settlement_captives", "sack_settlement_captives_resettle", "Resettle the useful ones in one of my towns", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Manage;
                bool ownsTowns       = false;
                foreach (Fief fief in Hero.MainHero.Clan.Fiefs)
                {
                    if (fief.Settlement.IsTown)
                    {
                        ownsTowns = true;
                    }
                }
                args.IsEnabled = ownsTowns;
                if (ownsTowns)
                {
                    args.Tooltip = new TextObject("gain prosperity in an owned town");
                }
                else
                {
                    args.Tooltip = new TextObject("your clan does not own any towns");
                }

                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                List <Town> towns = new List <Town>();
                foreach (Fief fief in Hero.MainHero.Clan.Fiefs)
                {
                    if (fief.Settlement.IsTown)
                    {
                        towns.Add(fief.Settlement.Town);
                    }
                }
                Town Selected                   = towns[rng.Next(0, towns.Count - 1)];
                int prosperityGain              = (int)(ProsperityBeforeRazed / 10);
                Selected.Settlement.Prosperity += prosperityGain;
                InformationManager.DisplayMessage(new InformationMessage("The Town of " + Selected.Name.ToString() + " gained " + prosperityGain + " prosperity from the specialists resettled there"));
                if (Settlement.CurrentSettlement.IsTown)
                {
                    GameMenu.SwitchToMenu("town");
                }
                else if (Settlement.CurrentSettlement.IsCastle)
                {
                    GameMenu.SwitchToMenu("castle");
                }
            }), index: 1);
        }
Exemplo n.º 18
0
        private void ToolMakerMenuItems(CampaignGameStarter campaignGameStarter)
        {
            campaignGameStarter.AddGameMenuOption("town", "town_tool_maker", "Visit tool maker at your smithy", (GameMenuOption.OnConditionDelegate)(args =>
            {
                if (MoreSettlementActionHelper.OwnsWorkshop(Settlement.CurrentSettlement.Town, "smithy") == 0)
                {
                    return(false);
                }
                args.optionLeaveType = GameMenuOption.LeaveType.Craft;
                args.IsEnabled       = true;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args => {
                GameMenu.SwitchToMenu("town_tool_maker_menu");
            }), index: 1);

            campaignGameStarter.AddGameMenu("town_tool_maker_menu", "The tool maker can turn various metal ingots into tools.  Smeltable items in the stockpile will be melted down if there are no ingots avalible.  Hardwood in stockpile will be refined into charcoal when there is not enough charcoal.  If the import material option is turned on iron ore and hardwood will be imported from owned slave estates producing iron ore and hardwood when none is left in the inventory of the tool maker but is avalible at the slave estates.  The import cost is 5 gold per unit delievered.  Building can be upgraded, with each level increasing building base production by 50%", (OnInitDelegate)(args => {
                ToolMaker toolMaker;
                if (!ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker))
                {
                    return;
                }
                MBTextManager.SetTextVariable("LEVEL", "(Current Level: " + toolMaker.UpgradeLevel.ToString() + ")", false);
            }), GameOverlays.MenuOverlayType.SettlementWithBoth);

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "tool_maker_upgrade", "Upgrade Buildings {LEVEL}", (GameMenuOption.OnConditionDelegate)(args =>
            {
                ToolMaker toolMaker;
                if (!ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker))
                {
                    return(false);
                }
                int itemNumber     = PartyBase.MainParty.ItemRoster.GetItemNumber(MBObjectManager.Instance.GetObject <ItemObject>("hardwood"));
                string tooltipText = "";
                if (itemNumber < 100 * (toolMaker.UpgradeLevel + 2))
                {
                    args.IsEnabled = false;
                    tooltipText    = tooltipText + "you lack the " + (100 * (toolMaker.UpgradeLevel + 2)).ToString() + " hardwood needed to upgrade to next level.  ";
                }
                else
                {
                    tooltipText = tooltipText + (100 * (toolMaker.UpgradeLevel + 2)).ToString() + " hardwood needed to upgrade to next level.  ";
                }
                if (toolMaker.UpgradeLevel == 0)
                {
                    tooltipText = tooltipText + "This currently has no bonuses";
                }
                else
                {
                    tooltipText = tooltipText + "This building has a " + (50 * toolMaker.UpgradeLevel).ToString() + "% bounus to base daily work rate";
                }
                args.Tooltip         = new TextObject(tooltipText);
                args.optionLeaveType = GameMenuOption.LeaveType.Manage;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                ToolMaker toolMaker;
                ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker);
                _startTime              = CampaignTime.Now;
                int partySize           = MobileParty.MainParty.Army == null ? MobileParty.MainParty.Party.NumberOfAllMembers : (int)MobileParty.MainParty.Army.TotalManCount;
                int engineeringSkill    = Hero.MainHero.GetSkillValue(DefaultSkills.Engineering);
                int partyEngineeringSum = MoreSettlementActionHelper.GetSkillTotalForParty(DefaultSkills.Engineering);
                _Duration     = 1000 * (toolMaker.UpgradeLevel + 2);
                _upgrade_cost = 100 * (toolMaker.UpgradeLevel + 2);
                _Duration     = _Duration / ((100 + engineeringSkill) / 100 * (partySize + (partyEngineeringSum / 100)));
                GameMenu.SwitchToMenu("tool_maker_upgrade_wait");
            }));

            campaignGameStarter.AddWaitGameMenu("tool_maker_upgrade_wait", "Your party is upgrading your toolmaker workshop", (OnInitDelegate)(args =>
            {
                args.MenuContext.GameMenu.SetTargetedWaitingTimeAndInitialProgress(_Duration, 0.0f);
                args.MenuContext.GameMenu.SetMenuAsWaitMenuAndInitiateWaiting();
            }), (TaleWorlds.CampaignSystem.GameMenus.OnConditionDelegate)(args =>
            {
                args.MenuContext.GameMenu.SetMenuAsWaitMenuAndInitiateWaiting();
                args.optionLeaveType = GameMenuOption.LeaveType.Wait;
                return(true);
            }), (TaleWorlds.CampaignSystem.GameMenus.OnConsequenceDelegate)(args => {
                ToolMaker toolMaker;
                ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker);
                PartyBase.MainParty.ItemRoster.AddToCounts(MBObjectManager.Instance.GetObject <ItemObject>("hardwood"), (int)(-1 * _upgrade_cost));
                toolMaker.UpgradeLevel++;
                InformationManager.DisplayMessage(new InformationMessage("Toolmaker workshop in the slave estate at " + Settlement.CurrentSettlement.Town.Name.ToString() + " has been upgraded to level " + toolMaker.UpgradeLevel.ToString()));

                GameMenu.SwitchToMenu("town_tool_maker_menu");
            }), (OnTickDelegate)((args, dt) => args.MenuContext.GameMenu.SetProgressOfWaitingInMenu(_startTime.ElapsedHoursUntilNow / _Duration)), GameMenu.MenuAndOptionType.WaitMenuShowOnlyProgressOption);

            campaignGameStarter.AddGameMenuOption("tool_maker_upgrade_wait", "tool_maker_upgrade_wait_leave", "Stop and Leave", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Leave;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                InformationManager.DisplayMessage(new InformationMessage("You stopped builing before the job was done."));
                GameMenu.SwitchToMenu("village");
            }));

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "town_tool_maker_menu_leave_companion", "Leave companion to assist tool maker", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                LeaveCompanion();
            }));

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "town_tool_maker_menu_take_companion", "Take companion to party", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                ToolMaker toolMaker;
                if (ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker))
                {
                    return(toolMaker.Assistants.Count > 0);
                }
                else
                {
                    return(false);
                }
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                TakeCompanion();
            }));

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "town_tool_maker_menu_manage_stockpile", "Manage Inventory", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                ToolMaker toolMaker;
                if (!ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker))
                {
                    toolMaker = new ToolMaker();
                    ToolMakers.Add(Settlement.CurrentSettlement.Town, toolMaker);
                }
                if (ToolMakers.TryGetValue(Settlement.CurrentSettlement.Town, out toolMaker))
                {
                    InventoryManager.OpenScreenAsStash(toolMaker.StockPile);
                }
            }));

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "town_tool_maker_menu_import_materials_on", "Import Materials : off", (GameMenuOption.OnConditionDelegate)(args =>
            {
                if (ImportMaterials)
                {
                    return(false);
                }
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                args.Tooltip         = new TextObject("click to turn on");
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                ImportMaterials = true;
                GameMenu.SwitchToMenu("town");
            }));

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "town_tool_maker_menu_import_materials_off", "Import Materials : on", (GameMenuOption.OnConditionDelegate)(args =>
            {
                if (!ImportMaterials)
                {
                    return(false);
                }
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                args.Tooltip         = new TextObject("click to turn off");
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                ImportMaterials = false;
                GameMenu.SwitchToMenu("town");
            }));

            campaignGameStarter.AddGameMenuOption("town_tool_maker_menu", "town_tool_maker_menu_leave", "Back", (GameMenuOption.OnConditionDelegate)(args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Leave;
                return(true);
            }), (GameMenuOption.OnConsequenceDelegate)(args =>
            {
                GameMenu.SwitchToMenu("town");
            }));
        }
Exemplo n.º 19
0
        private void OnSessionLaunched(CampaignGameStarter starter)
        {
            MBTextManager.SetTextVariable("PLAYER_CAMP_STATE", "idling");
            MBTextManager.SetTextVariable("PLAYER_CAMP_START_STOP", "Start");

            starter.AddGameMenu(
                PlayerCampMenu,
                "Player camp.\n \nTroops are currently {PLAYER_CAMP_STATE}.\nResources left for {PLAYER_CAMP_RESOURCES} days.",
                null
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_train",
                "{PLAYER_CAMP_START_STOP} training",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Recruit),
                _ =>
            {
                if (_establishedCamp != null)
                {
                    _establishedCamp.IsTraining = !_establishedCamp.IsTraining;

                    MBTextManager.SetTextVariable("PLAYER_CAMP_STATE", _establishedCamp.IsTraining ? "training" : "idling");
                    MBTextManager.SetTextVariable("PLAYER_CAMP_START_STOP", _establishedCamp.IsTraining ? "Stop" : "Start");
                }
            }
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_remove",
                "Remove camp",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Continue),
                _ =>
            {
                RemoveCamp();
                PlayerEncounter.Finish();
            },
                true
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_wait",
                "Wait",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Wait),
                _ => GameMenu.ActivateGameMenu("player_camp_menu_wait")
                );

            starter.AddGameMenuOption(
                PlayerCampMenu,
                "player_camp_leave",
                "Leave",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Leave),
                _ => PlayerEncounter.Finish()
                );

            // wait menu
            starter.AddWaitGameMenu("player_camp_menu_wait", "Waiting.",
                                    null,
                                    args =>
            {
                args.MenuContext.GameMenu.AllowWaitingAutomatically();
                args.optionLeaveType = GameMenuOption.LeaveType.Wait;
                return(true);
            },
                                    null,
                                    null,
                                    GameMenu.MenuAndOptionType.WaitMenuHideProgressAndHoursOption
                                    );

            starter.AddGameMenuOption(
                "player_camp_menu_wait",
                "wait_leave",
                "{=UqDNAZqM}Stop waiting",
                Utils.positiveLeaveType(GameMenuOption.LeaveType.Leave),
                _ => GameMenu.ActivateGameMenu(PlayerCampMenu)
                );
        }
Exemplo n.º 20
0
 private void OnSessionLaunched(CampaignGameStarter campaignGameStarter)
 {
     campaignGameStarter.AddGameMenu(
         FastDialogueSubModule.FastEncounterMenu,
         "{=!}{ENCOUNTER_TEXT}",
         Init,
         GameOverlays.MenuOverlayType.Encounter,
         GameMenu.MenuFlags.none,
         null);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_attack",
         "{=o1pZHZOF}Attack!",
         args =>
     {
         return(ShouldShowWarOptions() && ReflectionUtils.ForceCall <bool>(GetGlobalCampaignBehaviorManager(), "game_menu_encounter_attack_on_condition", new object[] { args }));
     },
         ConsequenceOf("game_menu_encounter_attack_on_consequence"),
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_troops",
         "{=rxSz5dY1}Send troops.",
         (args) =>
     {
         return(ShouldShowWarOptions() && ReflectionUtils.ForceCall <bool>(GetGlobalCampaignBehaviorManager(), "game_menu_encounter_order_attack_on_condition", new object[] { args }));
     },
         ConsequenceOf("game_menu_encounter_order_attack_on_consequence"),
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_getaway",
         "{=qNgGoqmI}Try to get away.",
         ConditionOf("game_menu_encounter_leave_your_soldiers_behind_on_condition"),
         ConsequenceOf("game_menu_encounter_leave_your_soldiers_behind_accept_on_consequence"),
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_talk",
         "{=qNgGoqmI}Converse.",
         args =>
     {
         args.optionLeaveType = GameMenuOption.LeaveType.Conversation;
         return(true);
     },
         args =>
     {
         PlayerEncounter.DoMeeting();
     },
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_surrend",
         "{=3nT5wWzb}Surrender.",
         ConditionOf("game_menu_encounter_surrender_on_condition"),
         args =>
     {
         PlayerEncounter.PlayerSurrender = true;
         PlayerEncounter.Update();
     },
         false,
         -1,
         false);
     campaignGameStarter.AddGameMenuOption(
         FastDialogueSubModule.FastEncounterMenu,
         $"{FastDialogueSubModule.FastEncounterMenu}_leave",
         "{=2YYRyrOO}Leave...",
         ConditionOf("game_menu_encounter_leave_on_condition"),
         (args) =>
     {
         MenuHelper.EncounterLeaveConsequence(args);
         if (PartyBase.MainParty.IsMobile && PartyBase.MainParty.MobileParty != null)
         {
             PartyBase.MainParty.MobileParty.IsDisorganized = false;
         }
     },
         true,
         -1,
         false);
 }
Exemplo n.º 21
0
        public void AddPatrolMenu(CampaignGameStarter obj)
        {
            try
            {
                obj.AddGameMenuOption("village", "basilpatrol_manage_patrol", "Manage patrols",
                                      (MenuCallbackArgs args) =>
                {
                    args.optionLeaveType = GameMenuOption.LeaveType.Manage;

                    /*
                     * if (Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                     * {
                     *  return false;
                     * }
                     */
                    return(true);
                },
                                      (MenuCallbackArgs args) => { GameMenu.SwitchToMenu("basilpatrol_pay_menu"); }, false, 4);

                obj.AddGameMenu("basilpatrol_pay_menu", "The {BASILPATROL_SETTLEMENT_TYPE} says they have the manpower but not the gear to " +
                                "send men on patrols. He tells he can send up to {BASILPATROL_MAX_PATROL_AMOUNT} patrols if you are willing to pay their " +
                                "gear. Your clan must own the village to hire patrols. Patrols will switch allegiance to the new clan owner if ownership changes. " +
                                "Disbanding patrols will only affect patrols that are not engaging an enemy.",
                                (MenuCallbackArgs args) =>
                {
                    if (Settlement.CurrentSettlement.IsVillage)
                    {
                        MBTextManager.SetTextVariable("BASILPATROL_SETTLEMENT_TYPE", "village spokesman", false);
                        MBTextManager.SetTextVariable("BASILPATROL_MAX_PATROL_AMOUNT", MaxPatrolCountPerVillage, false);
                    }
                    else
                    {
                        MBTextManager.SetTextVariable("BASILPATROL_SETTLEMENT_TYPE", "castle sergeant", false);
                        MBTextManager.SetTextVariable("BASILPATROL_MAX_PATROL_AMOUNT", MaxPatrolCountPerCastle, false);
                    }
                });

                #region Hiring

                obj.AddGameMenuOption("basilpatrol_pay_menu", "basilpatrol_pay_small", "Pay for a small patrol ({BASILPATROL_SMALL_COST}{GOLD_ICON})",
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                        PatrolProperties patrolProperties;
                        string settlementID = Settlement.CurrentSettlement.StringId;
                        settlementPatrolProperties.TryGetValue(settlementID, out patrolProperties);
                        int cost = BaseCost + patrolProperties.getPatrolCost();
                        MBTextManager.SetTextVariable("BASILPATROL_SMALL_COST", cost, false);
                        MBTextManager.SetTextVariable("GOLD_ICON", "<img src=\"Icons\\Coin@2x\">");
                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            if (cost > Hero.MainHero.Gold || patrolProperties.getPatrolCount() >= MaxPatrolCountPerVillage || Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                            {
                                return(false);
                            }
                            return(true);
                        }
                        else
                        {
                            if (cost > Hero.MainHero.Gold || patrolProperties.getPatrolCount() >= MaxPatrolCountPerCastle || Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                            {
                                return(false);
                            }
                            return(true);
                        }
                    } catch (Exception e)
                    {
                        MessageBox.Show("Error in small button..." + e.ToString());
                        return(false);
                    }
                },
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        PatrolProperties patrolProperties;
                        string settlementID = Settlement.CurrentSettlement.StringId;
                        settlementPatrolProperties.TryGetValue(settlementID, out patrolProperties);
                        int cost = BaseCost + patrolProperties.getPatrolCost();
                        if (AttemptAddPatrolToDictionary(Settlement.CurrentSettlement, patrolProperties, cost))
                        {
                            InformationManager.DisplayMessage(new InformationMessage("You have hired a patrol at " + Settlement.CurrentSettlement.ToString()));
                        }
                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                        else
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                    } catch (Exception e)
                    {
                        MessageBox.Show("Error in small purchase..." + e.ToString());
                    }
                });

                obj.AddGameMenuOption("basilpatrol_pay_menu", "basilpatrol_pay_medium", "Pay for a medium patrol ({BASILPATROL_MEDIUM_COST}{GOLD_ICON})",
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                        PatrolProperties patrolProperties;
                        string settlementID = Settlement.CurrentSettlement.StringId;
                        settlementPatrolProperties.TryGetValue(settlementID, out patrolProperties);
                        int cost = (BaseCost + patrolProperties.getPatrolCost()) * 2;
                        MBTextManager.SetTextVariable("BASILPATROL_MEDIUM_COST", cost, false);
                        MBTextManager.SetTextVariable("GOLD_ICON", "<img src=\"Icons\\Coin@2x\">");
                        //MBTextManager.SetTextVariable("BASILPATROL_COST", patrolProperties.getPatrolCost, false);
                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            if (cost > Hero.MainHero.Gold || patrolProperties.getPatrolCount() >= MaxPatrolCountPerVillage || Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                            {
                                return(false);
                            }
                            return(true);
                        }
                        else
                        {
                            if (cost > Hero.MainHero.Gold || patrolProperties.getPatrolCount() >= MaxPatrolCountPerCastle || Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                            {
                                return(false);
                            }
                            return(true);
                        }
                    } catch (Exception e)
                    {
                        MessageBox.Show("Error in medium button... " + e.ToString());
                        return(false);
                    }
                },
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        PatrolProperties patrolProperties;
                        string settlementID = Settlement.CurrentSettlement.StringId;
                        settlementPatrolProperties.TryGetValue(settlementID, out patrolProperties);
                        int cost = (BaseCost + patrolProperties.getPatrolCost()) * 2;
                        if (AttemptAddPatrolToDictionary(Settlement.CurrentSettlement, patrolProperties, cost, 2))
                        {
                            InformationManager.DisplayMessage(new InformationMessage("You have hired a patrol at " + Settlement.CurrentSettlement.ToString()));
                        }
                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                        else
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                    } catch (Exception e)
                    {
                        MessageBox.Show("Error in medium purchase... " + e.ToString());
                    }
                });

                obj.AddGameMenuOption("basilpatrol_pay_menu", "basilpatrol_pay_large", "Pay for a large patrol ({BASILPATROL_LARGE_COST}{GOLD_ICON})",
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                        PatrolProperties patrolProperties;
                        string settlementID = Settlement.CurrentSettlement.StringId;
                        settlementPatrolProperties.TryGetValue(settlementID, out patrolProperties);
                        int cost = (BaseCost + patrolProperties.getPatrolCost()) * 3;
                        MBTextManager.SetTextVariable("BASILPATROL_LARGE_COST", cost, false);
                        MBTextManager.SetTextVariable("GOLD_ICON", "<img src=\"Icons\\Coin@2x\">");
                        //MBTextManager.SetTextVariable("BASILPATROL_COST", patrolProperties.getPatrolCost, false);
                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            if (cost > Hero.MainHero.Gold || patrolProperties.getPatrolCount() >= MaxPatrolCountPerVillage || Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                            {
                                return(false);
                            }
                            return(true);
                        }
                        else
                        {
                            if (cost > Hero.MainHero.Gold || patrolProperties.getPatrolCount() >= MaxPatrolCountPerCastle || Settlement.CurrentSettlement.OwnerClan != Clan.PlayerClan)
                            {
                                return(false);
                            }
                            return(true);
                        }
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Error in large button..." + e.ToString());
                        return(false);
                    }
                },
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        PatrolProperties patrolProperties;
                        string settlementID = Settlement.CurrentSettlement.StringId;
                        settlementPatrolProperties.TryGetValue(settlementID, out patrolProperties);
                        int cost = (BaseCost + patrolProperties.getPatrolCost()) * 3;
                        if (AttemptAddPatrolToDictionary(Settlement.CurrentSettlement, patrolProperties, cost, 3))
                        {
                            InformationManager.DisplayMessage(new InformationMessage("You have hired a patrol at " + Settlement.CurrentSettlement.ToString()));
                        }
                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                        else
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Error in large purchase..." + e.ToString());
                    }
                });
                #endregion

                obj.AddGameMenuOption("basilpatrol_pay_menu", "basilpatrol_disband_all", "Disband all patrols",
                                      (MenuCallbackArgs args) =>
                {
                    try
                    {
                        args.optionLeaveType = GameMenuOption.LeaveType.Manage;
                        PatrolProperties patrolProperties;
                        if (Settlement.CurrentSettlement.IsVillage || Settlement.CurrentSettlement.IsCastle)
                        {
                            if (settlementPatrolProperties.TryGetValue(Settlement.CurrentSettlement.StringId, out patrolProperties))
                            {
                                if (patrolProperties.patrols.Count > 0 && Settlement.CurrentSettlement.OwnerClan == Clan.PlayerClan)
                                {
                                    return(true);
                                }
                            }
                        }
                        return(false);
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Error in disband option..." + e.ToString());
                        return(false);
                    }
                }, (MenuCallbackArgs args) =>
                {
                    try
                    {
                        PatrolProperties patrolProperties;
                        if (settlementPatrolProperties.TryGetValue(Settlement.CurrentSettlement.StringId, out patrolProperties))
                        {
                            if (patrolProperties.patrols.Count > 0)
                            {
                                foreach (MobileParty patrol in patrolProperties.patrols.ToList())
                                {
                                    if (!patrol.IsEngaging)
                                    {
                                        DisbandPartyAction.ApplyDisband(patrol);
                                        allPatrols.Remove(patrol);
                                        patrolProperties.patrols.Remove(patrol);
                                    }
                                }
                                settlementPatrolProperties[Settlement.CurrentSettlement.StringId] = patrolProperties;
                            }
                        }

                        if (Settlement.CurrentSettlement.IsVillage)
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                        else
                        {
                            GameMenu.SwitchToMenu("basilpatrol_pay_menu");
                        }
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Error in disbanding all patrols..." + e.ToString());
                    }
                });

                obj.AddGameMenuOption("basilpatrol_pay_menu", "basilpatrol_leave", "Leave", game_menu_just_add_leave_conditional, game_menu_switch_to_village_menu);
            } catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
        }
Exemplo n.º 22
0
        private void AddMenus(CampaignGameStarter campaignGameStarter)
        {
            // Town Menu
            campaignGameStarter.AddGameMenuOption(
                "town",
                "town_go_to_recruiter",
                "{=town_recruiter}Go to the recruiter",
                args =>
            {
                var(canPlayerAccessRecruiter, reasonMessage) = CanPlayerAccessRecruiterAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Submenu;
                args.IsEnabled       = canPlayerAccessRecruiter;
                args.Tooltip         = canPlayerAccessRecruiter ? TextObject.Empty : new TextObject(reasonMessage);
                return(true);
            },
                args => GameMenu.SwitchToMenu("recruiter"),
                false,
                1
                );

            // Castle Menu
            campaignGameStarter.AddGameMenuOption(
                "castle",
                "castle_go_to_recruiter",
                "{=castle_recruiter}Go to the recruiter",
                args =>
            {
                var(canPlayerAccessRecruiter, reasonMessage) = CanPlayerAccessRecruiterAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Submenu;
                args.IsEnabled       = canPlayerAccessRecruiter;
                args.Tooltip         = canPlayerAccessRecruiter ? TextObject.Empty : new TextObject(reasonMessage);
                return(true);
            },
                args => GameMenu.SwitchToMenu("recruiter"),
                false,
                1
                );

            // Recruiter
            campaignGameStarter.AddGameMenu(
                "recruiter",
                "{=recruiter_info}{DANGER_RECRUITER_INFO}\n{DANGER_RECRUITER_CURRENT_LIMIT}",
                args => UpdateRecruiterMenuTextVariables(),
                GameOverlays.MenuOverlayType.SettlementWithBoth
                );
            campaignGameStarter.AddGameMenuOption(
                "recruiter",
                "recruiter_hire",
                "{=recruiter_hire}{DANGER_RECRUITER_ACTION} ({DANGER_RECRUITER_COST}{GOLD_ICON})",
                args =>
            {
                var canPlayerAffordToHireRecruiterAtSettlement = CanPlayerAffordToHireRecruiterAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Continue;
                args.IsEnabled       = canPlayerAffordToHireRecruiterAtSettlement;
                args.Tooltip         = canPlayerAffordToHireRecruiterAtSettlement
                        ? TextObject.Empty
                        : new TextObject("You cannot afford to hire a recruiter here.");

                if (DoesPlayerHaveRecruiterAtSettlement(Settlement.CurrentSettlement))
                {
                    var recruiterData = GetRecruiterDataAtSettlement(Settlement.CurrentSettlement);
                    return(recruiterData.RecruiterLevel < 4 ? true : false);
                }

                return(true);
            },
                args => OnRecruiterHireAtSettlement(Settlement.CurrentSettlement)
                );
            campaignGameStarter.AddGameMenuOption(
                "recruiter",
                "recruiter_increase",
                "{=recruiter_increase}{DANGER_RECRUITER_INCREASE_LIMIT}",
                args =>
            {
                args.IsEnabled       = GetRecruiterDataAtSettlement(Settlement.CurrentSettlement).MaxPercentOfUnitsInGarrison < GetIncreaseLimitInPercent(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Conversation;
                return(true);
            },
                args => OnRecruiterChangeLimit(Settlement.CurrentSettlement, GetIncreaseLimitInPercent(Settlement.CurrentSettlement))
                );
            campaignGameStarter.AddGameMenuOption(
                "recruiter",
                "recruiter_decrease",
                "{=recruiter_decrease}{DANGER_RECRUITER_DECREASE_LIMIT}",
                args =>
            {
                args.IsEnabled       = GetRecruiterDataAtSettlement(Settlement.CurrentSettlement).MaxPercentOfUnitsInGarrison > GetDecreaseLimitInPercent(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Conversation;
                return(true);
            },
                args => OnRecruiterChangeLimit(Settlement.CurrentSettlement, GetDecreaseLimitInPercent(Settlement.CurrentSettlement))
                );
            campaignGameStarter.AddGameMenuOption(
                "recruiter",
                "recruiter_apply_same_limit_to_all",
                "{=recruiter_apply_same_limit_to_all}{DANGER_RECRUITER_APPLY_SAME_LIMIT_TO_ALL}",
                args =>
            {
                var hasRecruiter = GetRecruiterDataAtSettlement(Settlement.CurrentSettlement).HasRecruiter;
                args.IsEnabled   = hasRecruiter;
                args.Tooltip     = hasRecruiter
                        ? TextObject.Empty
                        : new TextObject("You didn't hire recruiter yet.");
                args.optionLeaveType = GameMenuOption.LeaveType.Conversation;
                return(true);
            },
                args => OnRecruiterApplySameLimitToAllSettlements(Settlement.CurrentSettlement)
                );
            campaignGameStarter.AddGameMenuOption(
                "recruiter",
                "recruiter_enable_or_disable",
                "{=recruiter_enable_or_disable}{DANGER_RECRUITER_ENABLE_OR_DISABLE}",
                args =>
            {
                var hasRecruiter = GetRecruiterDataAtSettlement(Settlement.CurrentSettlement).HasRecruiter;
                args.IsEnabled   = hasRecruiter;
                args.Tooltip     = hasRecruiter
                        ? TextObject.Empty
                        : new TextObject("You didn't hire recruiter yet.");
                args.optionLeaveType = GameMenuOption.LeaveType.Conversation;
                return(true);
            },
                args => OnRecruiterEnabledOrDisabled(Settlement.CurrentSettlement)
                );
            campaignGameStarter.AddGameMenuOption(
                "recruiter",
                "recruiter_leave",
                "{=recruiter_leave}Leave recruiter",
                args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Leave;
                return(true);
            },
                args => GameMenu.SwitchToMenu(Settlement.CurrentSettlement.IsTown ? "town" : "castle")
                );
        }
Exemplo n.º 23
0
        public void AddTroopMenu(CampaignGameStarter obj)
        {
            obj.AddGameMenuOption("town", "info_troop_type", "Hire Basilisk Guild Troops", game_menu_just_add_recruit_conditional, (MenuCallbackArgs args) => { GameMenu.SwitchToMenu("town_mod_pay"); }, false, 5);

            obj.AddGameMenu("town_mod_pay", "The Basilisk Guild offers its powerful mercenaries, both commoners and nobles, in every town for quite the coin. " +
                            "The guild manager tells you that their mercenaries favor more wealthy places." +
                            " She also tells you that there is a weekly upfront fee of {COST} denars here just to view available mercenaries. The available mercenaries will update weekly." +
                            "She then tells you that they also offer immediate contingents for the extreme wealthy. The larger contingents are of higher quality.",
                            (MenuCallbackArgs args) =>
            {
                TroopProperties troopProps;
                troopDic.TryGetValue(Settlement.CurrentSettlement.StringId, out troopProps);
                MBTextManager.SetTextVariable("COST", troopProps.getCost, false);
                if (Clan.PlayerClan.Tier == 0)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "No one here has heard of you before", false);
                }
            });

            obj.AddGameMenu("town_mod_troop_type", "The guild manager goes to the back and after a while comes back to the front with two lists of available mercenaries. " +
                            "{RENOWN_STATUS} " +
                            "The ones you paid for will wait by the gates.",
                            (MenuCallbackArgs args) =>
            {
                if (Clan.PlayerClan.Tier == 0)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She tells you that no one here has heard of you so not many are willing to join.", false);
                }
                else if (Clan.PlayerClan.Tier == 1)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She tells you that she cannot remember you or your face but some of their trainees were talking about you.", false);
                }
                else if (Clan.PlayerClan.Tier == 2)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She thanks you for waiting and tells you that some of their trainees were waiting for you to come again.", false);
                }
                else if (Clan.PlayerClan.Tier == 3)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She thanks you for waiting and tells you that some of their experienced members were discussing your exploits from time to time.", false);
                }
                else if (Clan.PlayerClan.Tier == 4)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She thanks you for your patronage and tells you that noblemen are declining other requests to join you instead.", false);
                }
                else if (Clan.PlayerClan.Tier == 5)
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She bows and thanks you for your continued patronage. She tells you that there is now a waiting list to get on the list to join your party.", false);
                }
                else
                {
                    MBTextManager.SetTextVariable("RENOWN_STATUS", "She bows and thanks you for your continued patronage. The whole guild is entirely maintained with your money at this point.", false);
                }
            });

            obj.AddGameMenuOption("town_mod_pay", "pay_fee", "Pay {DAILY_COST} denars to see weekly troops",
                                  (MenuCallbackArgs args) =>
            {
                TroopProperties troopProps;
                troopDic.TryGetValue(Settlement.CurrentSettlement.StringId, out troopProps);
                MBTextManager.SetTextVariable("DAILY_COST", troopProps.getCost, false);
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                if (troopProps.getCost >= Hero.MainHero.Gold || troopProps.paid)
                {
                    return(false);
                }
                return(true);
            },
                                  (MenuCallbackArgs args) =>
            {
                TroopProperties troopProps;
                troopDic.TryGetValue(Settlement.CurrentSettlement.StringId, out troopProps);
                int cost = troopProps.getCost;
                if (cost <= Hero.MainHero.Gold)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost);
                    troopProps.paid = true;
                    troopDic[Settlement.CurrentSettlement.StringId] = troopProps;
                }
                GameMenu.SwitchToMenu("town_mod_troop_type");
            });

            obj.AddGameMenuOption("town_mod_pay", "pay_fee_5", "Pay {COST_5} denars for 5 troops",
                                  (MenuCallbackArgs args) =>
            {
                int cost = (int)Math.Ceiling(3000 + Settlement.CurrentSettlement.Prosperity / 2 + Clan.PlayerClan.Tier * 1000);
                MBTextManager.SetTextVariable("COST_5", cost, false);
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                if (cost >= Hero.MainHero.Gold)
                {
                    return(false);
                }
                return(true);
            },
                                  (MenuCallbackArgs args) =>
            {
                int cost = (int)Math.Ceiling(3000 + Settlement.CurrentSettlement.Prosperity / 2 + Clan.PlayerClan.Tier * 1000);
                if (cost <= Hero.MainHero.Gold)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost);
                    giveTroops(5);
                }
            });

            obj.AddGameMenuOption("town_mod_pay", "pay_fee_15", "Pay {COST_15} denars for 15 troops",
                                  (MenuCallbackArgs args) =>
            {
                int cost = (int)Math.Ceiling(15000 + Settlement.CurrentSettlement.Prosperity / 2 + Clan.PlayerClan.Tier * 2000);
                MBTextManager.SetTextVariable("COST_15", cost, false);
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                if (cost >= Hero.MainHero.Gold)
                {
                    return(false);
                }
                return(true);
            },
                                  (MenuCallbackArgs args) =>
            {
                int cost = (int)Math.Ceiling(15000 + Settlement.CurrentSettlement.Prosperity / 2 + Clan.PlayerClan.Tier * 2000);
                if (cost <= Hero.MainHero.Gold)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost);
                    giveTroops(15);
                }
            });

            obj.AddGameMenuOption("town_mod_pay", "pay_fee_25", "Pay {COST_25} denars for 25 troops",
                                  (MenuCallbackArgs args) =>
            {
                int cost = (int)Math.Ceiling(30000 + Settlement.CurrentSettlement.Prosperity / 2 + Clan.PlayerClan.Tier * 3000);
                MBTextManager.SetTextVariable("COST_25", cost, false);
                args.optionLeaveType = GameMenuOption.LeaveType.Trade;
                if (cost >= Hero.MainHero.Gold)
                {
                    return(false);
                }
                return(true);
            },
                                  (MenuCallbackArgs args) =>
            {
                int cost = (int)Math.Ceiling(30000 + Settlement.CurrentSettlement.Prosperity / 2 + Clan.PlayerClan.Tier * 3000);
                if (cost <= Hero.MainHero.Gold)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost);
                    giveTroops(25);
                }
                else
                {
                    GameMenu.SwitchToMenu("town");
                }
            });

            obj.AddGameMenuOption("town_mod_pay", "already_paid", "View troops",
                                  (MenuCallbackArgs args) =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                TroopProperties troopProps;
                troopDic.TryGetValue(Settlement.CurrentSettlement.StringId, out troopProps);
                if (troopProps.paid)
                {
                    return(true);
                }
                return(false);
            },
                                  (MenuCallbackArgs args) =>
            {
                GameMenu.SwitchToMenu("town_mod_troop_type");
            });


            obj.AddGameMenuOption("town_mod_pay", "notpaying", "Leave", this.game_menu_just_add_leave_conditional, this.game_menu_switch_to_town_menu);

            obj.AddGameMenuOption("town_mod_troop_type", "militia_type", "Look at the Commoners list", this.game_menu_just_add_recruit_conditional, this.conversation_miltia_on_consequence);
            obj.AddGameMenuOption("town_mod_troop_type", "noble_type", "Look at the Nobles list", this.game_menu_just_add_recruit_conditional, this.conversation_noble_on_consequence);
            obj.AddGameMenuOption("town_mod_troop_type", "mod_leave", "Finished looking", this.game_menu_just_add_leave_conditional, this.game_menu_switch_to_town_menu);
        }
        private void AddMenus(CampaignGameStarter campaignGameStarter)
        {
            // Town Menu
            campaignGameStarter.AddGameMenuOption(
                "town",
                "town_go_to_bank",
                "{=town_bank}Go to the bank",
                args =>
            {
                var(canPlayerAccessBank, reasonMessage) = CanPlayerAccessBankAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Submenu;
                args.IsEnabled       = canPlayerAccessBank;
                args.Tooltip         = canPlayerAccessBank ? TextObject.Empty : new TextObject(reasonMessage);
                return(true);
            },
                args => GameMenu.SwitchToMenu("bank_account"),
                false,
                1
                );

            // Bank Account
            campaignGameStarter.AddGameMenu(
                "bank_account",
                "{=bank_account_info}{XORBERAX_BANKS_BANK_ACCOUNT_INFO}",
                args => UpdateBankMenuTextVariables(),
                GameOverlays.MenuOverlayType.SettlementWithBoth
                );
            campaignGameStarter.AddGameMenuOption(
                "bank_account",
                "bank_account_open_account",
                "{=bank_account_open_account}Open Account ({XORBERAX_BANKS_BANK_ACCOUNT_OPENING_COST}{GOLD_ICON})",
                args =>
            {
                if (DoesPlayerHaveAccountAtSettlementBank(Settlement.CurrentSettlement))
                {
                    return(false);
                }
                var canPlayerAffordToOpenBankAccountAtSettlement = CanPlayerAffordToOpenBankAccountAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.Continue;
                args.IsEnabled       = canPlayerAffordToOpenBankAccountAtSettlement;
                args.Tooltip         = canPlayerAffordToOpenBankAccountAtSettlement
                        ? TextObject.Empty
                        : new TextObject("You cannot afford to open a bank account here.");
                return(true);
            },
                args => OnOpenBankAccountAtSettlement(Settlement.CurrentSettlement)
                );
            campaignGameStarter.AddGameMenuOption(
                "bank_account",
                "bank_account_deposit",
                "{=bank_account_deposit}Deposit",
                args =>
            {
                if (!DoesPlayerHaveAccountAtSettlementBank(Settlement.CurrentSettlement))
                {
                    return(false);
                }
                var isLoanOverdueAtSettlement = IsLoanOverdueAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType          = GameMenuOption.LeaveType.RansomAndBribe;
                args.IsEnabled = !isLoanOverdueAtSettlement;
                args.Tooltip   = isLoanOverdueAtSettlement ? new TextObject("You must repay your loan.") : TextObject.Empty;
                return(true);
            },
                args => { PromptDepositAmount(Settlement.CurrentSettlement); }
                );
            campaignGameStarter.AddGameMenuOption(
                "bank_account",
                "bank_account_withdraw",
                "{=bank_account_withdraw}Withdraw",
                args =>
            {
                if (!DoesPlayerHaveAccountAtSettlementBank(Settlement.CurrentSettlement))
                {
                    return(false);
                }
                args.optionLeaveType = GameMenuOption.LeaveType.RansomAndBribe;
                if (IsLoanOverdueAtSettlement(Settlement.CurrentSettlement))
                {
                    args.IsEnabled = false;
                    args.Tooltip   = new TextObject("You must repay your loan.");
                }
                else if (GetBalanceAtSettlement(Settlement.CurrentSettlement) <= 0)
                {
                    args.IsEnabled = false;
                    args.Tooltip   = new TextObject("You do not have any money to withdraw.");
                }
                return(true);
            },
                args => { PromptWithdrawAmount(Settlement.CurrentSettlement); }
                );
            campaignGameStarter.AddGameMenuOption(
                "bank_account",
                "bank_account_take_out_loan",
                "{=bank_account_take_out_loan}Take out a loan",
                args =>
            {
                var doesPlayerHaveActiveLoanAtSettlement = DoesPlayerHaveActiveLoanAtSettlement(Settlement.CurrentSettlement);
                if (doesPlayerHaveActiveLoanAtSettlement)
                {
                    return(false);
                }
                var doesPlayerHaveEnoughRenownToTakeOutLoan = DoesPlayerHaveEnoughRenownToTakeOutLoan();
                var canLoan          = doesPlayerHaveEnoughRenownToTakeOutLoan && MaxAvailableLoanAtSettlement(Settlement.CurrentSettlement) > 0;
                args.optionLeaveType = GameMenuOption.LeaveType.RansomAndBribe;
                args.IsEnabled       = canLoan;
                if (!canLoan)
                {
                    args.Tooltip = new TextObject(
                        doesPlayerHaveEnoughRenownToTakeOutLoan
                                ? "{XORBERAX_BANKS_SETTLEMENT_NAME}'s bank is unable to offer loans at this time."
                                : $"You must have at least {SubModule.Config.MinimumRenownRequiredToTakeOutLoan} renown to take out a loan."
                        );
                }
                return(true);
            },
                args => { PromptLoanAmount(Settlement.CurrentSettlement); }
                );
            campaignGameStarter.AddGameMenuOption(
                "bank_account",
                "bank_account_repay_loan",
                "{=bank_account_repay_loan}Repay loan ({XORBERAX_BANKS_REMAINING_UNPAID_LOAN}{GOLD_ICON})",
                args =>
            {
                var doesPlayerHaveActiveLoanAtSettlement = DoesPlayerHaveActiveLoanAtSettlement(Settlement.CurrentSettlement);
                if (!doesPlayerHaveActiveLoanAtSettlement)
                {
                    return(false);
                }
                var doesPlayerHaveEnoughMoneyToRepayLoanAtSettlement = DoesPlayerHaveEnoughMoneyToRepayLoanAtSettlement(Settlement.CurrentSettlement);
                args.optionLeaveType = GameMenuOption.LeaveType.RansomAndBribe;
                args.IsEnabled       = doesPlayerHaveEnoughMoneyToRepayLoanAtSettlement;
                args.Tooltip         = doesPlayerHaveEnoughMoneyToRepayLoanAtSettlement
                        ? TextObject.Empty
                        : new TextObject("You do not have enough money on your person to repay this loan.");
                return(true);
            },
                args => { RepayLoanAtSettlement(Settlement.CurrentSettlement); }
                );
            campaignGameStarter.AddGameMenuOption(
                "bank_account",
                "bank_account_leave",
                "{=bank_account_leave}Leave bank",
                args =>
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Leave;
                return(true);
            },
                args => GameMenu.SwitchToMenu("town")
                );
        }
Exemplo n.º 25
0
        public void AddRecruiterMenu(CampaignGameStarter obj)
        {
            GameMenuOption.OnConditionDelegate hireRecruiterDelegate = delegate(MenuCallbackArgs args)
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                return(Settlement.CurrentSettlement.OwnerClan == Clan.PlayerClan);
            };
            GameMenuOption.OnConsequenceDelegate hireRecruiterConsequenceDelegate = delegate(MenuCallbackArgs args)
            {
                GameMenu.SwitchToMenu("recruiter_culture_menu");
            };

            obj.AddGameMenu("recruiter_culture_menu", "The Chamberlain asks you what culture your recruits should be.", null, GameOverlays.MenuOverlayType.None, GameMenu.MenuFlags.none, null);

            RecruiterProperties props = new RecruiterProperties();

            foreach (CultureObject culture in getPossibleCultures())
            {
                obj.AddGameMenuOption("recruiter_culture_menu", "recruiter_" + culture.GetName().ToString(), culture.GetName().ToString(),
                                      delegate(MenuCallbackArgs args)
                {
                    return(Settlement.All.Count(settlement => settlement.Culture == culture &&
                                                settlement.OwnerClan != null &&
                                                !((settlement.OwnerClan.Kingdom != null && settlement.OwnerClan.Kingdom.IsAtWarWith(Hero.MainHero.Clan)) ||
                                                  settlement.OwnerClan.IsAtWarWith(Hero.MainHero.Clan) ||
                                                  (settlement.OwnerClan.Kingdom != null && Hero.MainHero.Clan.Kingdom != null && settlement.OwnerClan.Kingdom.IsAtWarWith(Hero.MainHero.Clan.Kingdom))
                                                  )
                                                ) > 0);
                },
                                      delegate(MenuCallbackArgs args)
                {
                    props = new RecruiterProperties();
                    props.SearchCulture = culture;
                    GameMenu.SwitchToMenu("recruiter_pay_menu");
                });
            }

            obj.AddGameMenuOption("town_keep", "recruiter_buy_recruiter", "Hire a Recruiter", hireRecruiterDelegate, hireRecruiterConsequenceDelegate, false, 4, false);
            obj.AddGameMenuOption("castle", "recruiter_buy_recruiter", "Hire a Recruiter", hireRecruiterDelegate, hireRecruiterConsequenceDelegate, false, 4, false);

            obj.AddGameMenu("recruiter_pay_menu", "The Chamberlain asks you for how many denars he should buy recruits.", null, GameOverlays.MenuOverlayType.None, GameMenu.MenuFlags.none, null);

            obj.AddGameMenuOption("recruiter_pay_menu", "recruiter_pay_small", "Pay 500.", delegate(MenuCallbackArgs args)
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                string stringId      = Settlement.CurrentSettlement.StringId;
                int cost             = 500;
                bool flag            = cost >= Hero.MainHero.Gold;
                return(!flag);
            }, delegate(MenuCallbackArgs args)
            {
                string stringId = Settlement.CurrentSettlement.StringId;
                int cost        = 500;
                bool flag       = cost <= Hero.MainHero.Gold;
                if (flag)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost, false);
                    MobileParty item = this.spawnRecruiter(Settlement.CurrentSettlement, cost, props);
                }
                GameMenu.SwitchToMenu("castle");
            }, false, -1, false);
            obj.AddGameMenuOption("recruiter_pay_menu", "recruiter_pay_medium", "Pay 1500.", delegate(MenuCallbackArgs args)
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                string stringId      = Settlement.CurrentSettlement.StringId;
                int cost             = 1500;
                bool flag            = cost >= Hero.MainHero.Gold;
                return(!flag);
            }, delegate(MenuCallbackArgs args)
            {
                string stringId = Settlement.CurrentSettlement.StringId;
                int cost        = 1500;
                bool flag       = cost <= Hero.MainHero.Gold;
                if (flag)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost, false);
                    MobileParty item = this.spawnRecruiter(Settlement.CurrentSettlement, cost, props);
                }
                GameMenu.SwitchToMenu("castle");
            }, false, -1, false);
            obj.AddGameMenuOption("recruiter_pay_menu", "recruiter_pay_large", "Pay 3000.", delegate(MenuCallbackArgs args)
            {
                args.optionLeaveType = GameMenuOption.LeaveType.Recruit;
                string stringId      = Settlement.CurrentSettlement.StringId;
                int cost             = 3000;
                bool flag            = cost >= Hero.MainHero.Gold;
                return(!flag);
            }, delegate(MenuCallbackArgs args)
            {
                string stringId = Settlement.CurrentSettlement.StringId;
                int cost        = 3000;
                bool flag       = cost <= Hero.MainHero.Gold;
                if (flag)
                {
                    GiveGoldAction.ApplyForCharacterToSettlement(Hero.MainHero, Settlement.CurrentSettlement, cost, false);
                    MobileParty item = this.spawnRecruiter(Settlement.CurrentSettlement, cost, props);
                }
                GameMenu.SwitchToMenu("castle");
            }, false, -1, false);
            obj.AddGameMenuOption("recruiter_pay_menu", "recruiter_leave", "Leave", new GameMenuOption.OnConditionDelegate(this.game_menu_just_add_leave_conditional), new GameMenuOption.OnConsequenceDelegate(this.game_menu_switch_to_village_menu), false, -1, false);
        }