// Only triggers on new campaigns created private void OnAfterNewGameCreated(CampaignGameStarter starter) { if (custom_merc_data_holder == null) { CustomMercDataHolder customMercDataHolder = new CustomMercDataHolder(); custom_merc_data_holder = customMercDataHolder; foreach (Town town in Town.AllTowns) { UpdateCurrentMercenaryTroopAndCount(town); } } }
public static void NPCToCompanion(CharacterObject character, CampaignGameStarter campaignGameStarter) { Hero hero = DealNPC(character, campaignGameStarter); OccuptionChange.ChangeToWanderer(hero.CharacterObject); // hero.IsNoble = true; if (!MobileParty.MainParty.MemberRoster.Contains(hero.CharacterObject)) { MobileParty.MainParty.MemberRoster.AddToCounts(hero.CharacterObject, 1); } AddCompanionAction.Apply(Clan.PlayerClan, hero); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { Campaign campaign = game.GameType as Campaign; if (campaign == null) { return; } CampaignGameStarter gameInitializer = (CampaignGameStarter)gameStarterObject; AddBehaviours(gameInitializer); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { base.OnGameStart(game, gameStarterObject); if (game.GameType is Campaign) { CampaignGameStarter campaignGameStarter = (CampaignGameStarter)gameStarterObject; campaignGameStarter.AddBehavior(new RoyalArmoury()); campaignGameStarter.AddBehavior(new StoneOfRenewal()); gameStarterObject.AddModel(new Shadowfax()); } }
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); }
// basic dialogue overview: // ids are used to differentiate similar dialogues (must be unique) // tokens are like impulses, so an out token leads into an in token. 'magic tokens' are tokens which have special functions, they are start (in token) and close_window (out token) // conditions are delegates that must anonymously return a bool, which will be wheteher or not the line is displayed // consequences are void delegates, just pieces of code run after a line has been selected // i think? priority determines which line is shown if multiple lines meet the requirements, // and also maybe what order player lines are displayed in (speculation) // -ComradeCheekiBreeki //It seems that the first condition that is met is run, and all after it are ignored. //The higher the priority (higher number), the more likelihood it has of being run first. //However, there also seems to be an option to turn off this sorting of conditions based on priority through //ConversationManager.[Enable/Disable]Sort(). Sorting seems to be enabled by default in the time of writing (Bannerlord 1.5.8) //-Ozan public void AddCustomDialogues(CampaignGameStarter starter) { if (dataManager == null) { GetData(); } foreach (Data.DialogueData d in dataManager.Data) // handle the dialogues { AddDialogLine(starter, d, "start"); } }
private void AddModels(CampaignGameStarter gameStarter) { if (gameStarter != null) { gameStarter.AddModel(heroModel = new HeroBuilderModel()); if (DCCSettings.Instance != null && DCCSettings.Instance.CustomAgeModel) { gameStarter.AddModel(new Models.AgeModel()); } } }
private void TownArmSeperatists(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption("town", "town_arm_seperatist", "Smuggle Weapons to Angry Seperatists", (GameMenuOption.OnConditionDelegate)(args => { if (Settlement.CurrentSettlement.Town.Loyalty > 50 || (Settlement.CurrentSettlement.OwnerClan.Culture == Settlement.CurrentSettlement.Culture) || (Settlement.CurrentSettlement.OwnerClan.Kingdom != null && Settlement.CurrentSettlement.OwnerClan.Kingdom.Culture == Settlement.CurrentSettlement.Culture) || Settlement.CurrentSettlement.MapFaction == Hero.MainHero.MapFaction) { return(false); } args.optionLeaveType = GameMenuOption.LeaveType.Raid; return(true); }), (GameMenuOption.OnConsequenceDelegate)(args => ArmSeperatists())); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { Campaign campaign = game.GameType as Campaign; bool flag = campaign == null; if (!flag) { CampaignGameStarter gameInitializer = (CampaignGameStarter)gameStarterObject; this.AddBehaviors(gameInitializer); this.AddGameModels(gameInitializer); } }
public void OnGameLoaded(CampaignGameStarter starter) { if (!Campaign.Current.GameStarted || Campaign.Current.Settlements == null) { return; } foreach (Settlement settlement in Campaign.Current.Settlements.Where(x => x.IsVillage || x.IsCastle || x.IsTown)) { changeSettlementCulture(settlement); } }
private void AddModels(CampaignGameStarter gameStarter) { if (gameStarter != null) { gameStarter.AddModel(new HardmodeDifficultyModel()); gameStarter.AddModel(new HardmodePartyMoraleModel()); gameStarter.AddModel(new HardmodeMobilePartyFoodConsumptionModel()); gameStarter.AddModel(new HardmodeClanFinanceModel()); gameStarter.AddModel(new HardmodePlayerCaptivityModel()); gameStarter.AddModel(new HardmodePartyHealingModel()); } }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { if (game.GameType is CampaignStoryMode) { CampaignGameStarter gameInitializer = (CampaignGameStarter)gameStarterObject; gameInitializer.LoadGameTexts(string.Format("{0}/Modules/{1}/ModuleData/sue_chat_prisoner.xml", BasePath.Name, "SueMoreSpouses")); gameInitializer.AddBehavior(new SpouseFromPrisonerBehavior()); gameInitializer.AddBehavior(new SpousesStatsBehavior()); gameInitializer.AddBehavior(new SpouseClanLeaderFixBehavior()); gameInitializer.AddBehavior(new SpousesSneakBehavior()); } }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { base.OnGameStart(game, gameStarterObject); if (!(game.GameType is Campaign)) { return; } // Here we create a new custom campaign behavior, KingdomTemplateBehavior, and add it to the CampaignGameStarter. CampaignGameStarter campaignGameStarter = (CampaignGameStarter)gameStarterObject; _kingdomTemplateBehavior = new KingdomTemplateBehavior(new DataSynchronizer()); campaignGameStarter.AddBehavior(_kingdomTemplateBehavior); }
protected override void OnGameStart(Game game, IGameStarter gameStarter) { if (game.GameType is Campaign) { Utils.Print("Hello from Heritage Logger :) We are in campaign mode"); CampaignGameStarter campaignStarter = (CampaignGameStarter)gameStarter; campaignStarter.AddBehavior(new HeritageBehavior()); campaignStarter.AddBehavior(new HeroFixBehavior()); campaignStarter.AddBehavior(new MarriageFixBehavior()); } }
private void addPlayerLineToSelectSpouse(Hero spouse) { CampaignGameStarter.AddRepeatablePlayerLine(FLAG_CLAN_CREATE_CHOICE_SPOUSE_ITEM, "sue_clan_create_from_family_take_spouse", "sue_clan_create_from_family_request_money", spouse.Name.ToString(), new ConversationSentence.OnConditionDelegate(() => { Hero hero = Hero.OneToOneConversationHero; return(hero != spouse); }), new ConversationSentence.OnConsequenceDelegate(() => { { this.clanCreateBussniess.targetSpouse = spouse; } })); }
private void createEntrepeneurVillageMenus(CampaignGameStarter obj) { // Enter appraising menu obj.AddGameMenuOption("village", "village_enter_entr_option", "Appraise land", (MenuCallbackArgs args) => { args.optionLeaveType = GameMenuOption.LeaveType.Trade; return(true); }, (MenuCallbackArgs args) => { VillageData settlementAcreProperties; this._villageData.TryGetValue(Settlement.CurrentSettlement.StringId, out settlementAcreProperties); // Edit the View Model here? or pass data into VillagePropertyScreen and do it there? ScreenManager.PushScreen(new VillagePropertyScreen(ref settlementAcreProperties)); }, false, 4); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { // Adding save DataStore. Campaign campaign = game.GameType as Campaign; if (campaign == null) { return; } CampaignGameStarter gameInitializer = (CampaignGameStarter)gameStarterObject; gameInitializer.AddBehavior(new baseBehavior()); }
private void AddStoneOfRenewalMenuItems(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption( TOWN_KEEP_MENU_ID, "stone_of_renewal", "Touch the Stone of Renewal", new GameMenuOption.OnConditionDelegate(this.AccessOnCondition), new GameMenuOption.OnConsequenceDelegate(this.RespecOnConsequence), false, -1, false ); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { base.OnGameStart(game, gameStarterObject); if (!(game.GameType is Campaign)) { return; } CampaignGameStarter gameInitializer = (CampaignGameStarter)gameStarterObject; this.AddBehaviours(gameInitializer); }
public void AddCastleDialog(CampaignGameStarter obj) { obj.AddGameMenuOption("castle", "basilpatrol_castle_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); }
private void OnSessionLaunched(CampaignGameStarter campaignGameStarter) { campaignGameStarter.AddGameMenuOption( TOWN_KEEP_MENU_ID, "armoury", "Access the Armoury", new GameMenuOption.OnConditionDelegate(this.AccessOnCondition), new GameMenuOption.OnConsequenceDelegate(this.ArmouryOnConsequence), false, -1, false ); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { if (game.GameType is Campaign) { CampaignGameStarter campaignGameStarter = gameStarterObject as CampaignGameStarter; //gameStarterObject.AddModel(new TournamentPrizeExpansion()); MBObjectManager.Instance.RegisterType <TournamentPrizePool>("TournamentPrizePool", "TournamentPrizePools", true); if (campaignGameStarter != null) { campaignGameStarter.AddBehavior(new TournamentPrizePoolBehavior()); } } }
public static ConversationManager GetConversationManager(CampaignGameStarter campaignGameStarter) { ConversationManager conversationManager = null; FieldInfo fieldInfo = campaignGameStarter.GetType().GetField("_conversationManager", BindingFlags.NonPublic | BindingFlags.Instance); Object obj = fieldInfo.GetValue(campaignGameStarter); if (null != obj) { conversationManager = (ConversationManager)fieldInfo.GetValue(campaignGameStarter); } return(conversationManager); }
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); }
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); }
public override void CompileToken(CampaignGameStarter campaign) { var inputToken = InputToken?.TokenName ?? "start"; if (InputToken is IBarterResultToken) { inputToken += "_result"; } if (InputToken is IInputDialogToken) { inputToken = InputToken.TokenName; } campaign.AddDialogLine(TokenName, inputToken, OutputToken, GetText() + Expressions?.Tag, Condition, Consequence, Priority); }
public void OnSessionLaunched(CampaignGameStarter campaignGameStarter) { if (this.savegame_module_version.Major < 3 && this.savegame_module_version.Minor < 5 && this.savegame_module_version.Revision < 3) { this.FindDuplicateParties(); } this.RegisterIndyArmyTimer(); PartyOrder.PartyOrderBuilder.Instance.RegisterDialogue(campaignGameStarter); if (GetBestInitiativeBehaviorPatch.parties_around_position_patched && GetBestInitiativeBehaviorPatch.parties_distance_patched) { return; } int num = (int)MessageBox.Show("One or more \"Party AI Overhaul and Commands\" transpiler patches failed.\nThe mod likely needs an update. If there is no update available yet, you can still continue playing the game.\nThe only thing that you're missing out on is the extended range parties react to each other"); }
protected override void OnGameStart(Game game, IGameStarter gameStarterObject) { if (game.GameType is Campaign) { //The current game is a campaign CampaignGameStarter campaignStarter = (CampaignGameStarter)gameStarterObject; campaignStarter.AddBehavior(new CustomSaveBehavior()); Harmony harmony = new Harmony("fun.wangyanan.patch.villagerate"); if (harmony.GetPatchedMethods().IsEmpty()) { new Harmony("fun.wangyanan.patch.villagerate").PatchAll(); } } }
private void AddModels(CampaignGameStarter gameStarter) { if (SubModule.Settings is { } settings&& gameStarter is not null) { if (settings.ModifyGarrisonConsumption) { gameStarter.AddModel(new LightSettlementGarrisonModel()); } if (settings.NewProsperityModel) { gameStarter.AddModel(new LightSettlementProsperityModel()); } } }
/** * Load data. */ private void LoadSavedData(CampaignGameStarter obj) { if (_customDataMap != null) { foreach (var currentSettlement in Campaign.Current.Settlements) { if (_customDataMap.ContainsKey(currentSettlement.Id.ToString())) { ToolsHelper.SetSettlementName(currentSettlement, _customDataMap[currentSettlement.Id.ToString()], false); } } } }