e1.6.0-e1.8.0 Modding Adjustments & Access Modifiers Changes

Users who are viewing this thread

Dejan

Community Manager
WBNWVCM&B

1.8.0 Changes​

Greetings!

Here are the modding-related changes that came with patch 1.8.0.
  • We released API documentation for Bannerlord. You can find it here: apidoc.bannerlord.com
  • Modders can now define & add different races like Orcs, Elves,... through the skins.xml file. Custom skeleton support has been added for humanoid characters.
1654773199251.png
  • Fixed various issues with the implementation of a modded world map, removed the hardcoded assumption that the world map is named "Main_map", fixed the hardcoded map size,...
    • In response to the reports from various community members. Special thanks to @NPC99 for his continuous testing and feedback. @hunharibo thank you for your report as well, we now fetch the terrain size from the overridden scene.
  • Enabled warning & assertion texts to help modders with common errors (the Modding Kit must be installed).
  • The Atmosphere Curve Editor is now available through the Atmosphere Inspector. It allows you to change the visuals of an atmosphere.
    • In response to the community request by @NPC99.
  • Added the Color Grade Manager script to the main map scene. It allows the dynamic color grade and atmosphere effects to be previewed within the editor. Color grade textures can be changed from worldmap_color_grades.xml file.
    • In response to the community request by @NPC99.
  • Added exposure compensation to materials for glow effects.
  • Changed the physics object colors of barriers that only players can pass through to green for clarity.
  • Implemented a new method of using generated banner textures in item materials. A new channel called "TableauMaskMap" has been added to explicitly mark where the banner texture will be applied. This leaves the alpha channel on the original texture to be used for the item's own requirements for tassel etc. "use_tableau_mask_as_separate_texture" flag needs to be enabled for this to take effect.
  • Language files are now referenced in language folders in the "language_data.xml" (they were previously automatically searched for and added).
  • Added XSD for game texts, they are now added via SubModule.xml.
  • Players can now override the TournamentModel.GetParticipantArmor to change the tournament participant armor.
  • Changed the SettlementComponent list to single SettlementComponent in Settlement.cs. Settlements can no longer have multiple SettlementComponents.
  • "NonSerializedObjectTypeRecords" were removed from MBObjectManager. There are now only ObjectTypeRecords and their appropriate functions.
  • Removed XML support from game menus and moved related content to code (EncounterGameMenuBehavior.cs).
  • Removed XML support from conversations and moved related content to code.
  • Modders can now use the OnCrimeRatingChanged event for various purposes. This event will trigger with the change amount and the faction it is related with.
  • Added IRandomOwner for easier random usages.
  • Added a dev config option to show localization IDs of texts (relevant for translators).
  • Enabled modders to go above the maximum tier cap for troop upgrades (above tier 6).
  • Modders can now modify the voices of agents (via voice_definitions.xml).
  • The skill leveling system is now fully moddable (Skill Leveling Manager).
  • Removed the campaign cookie system.
  • Refactored the Quest system to make every quest use only one dedicated menu instead of creating multiple menus per quest.
  • Fixed a bug that prevented the navmesh grid generation on big scenes from working correctly.
  • Fixed a crash that occurred when generating rivers.
  • Fixed a bug that caused different instances of a model to use the same factor color.
  • Fixed a bug that prevented the addition of custom troops to villager parties. Villager parties can now use different troop types.
  • Fixed a bug that caused decals to discard season visibility settings.
  • Fixed a crash that occurred when exiting editor scenes while retreating outside of the border.
  • Fixed a freeze issue on the campaign map that was caused by modded troops not having any upgrades.
  • Fixed a crash that occurred when clicking on the Leave edit mode button.
  • Fixed a bug that caused the second editor window to freeze.
  • Fixed a crash that occurred when placing decals on an empty editor scene.
  • Fixed a bug that caused civilian battle sets (for troop spawn) placed in editor scenes to be processed wrongly.
  • Improved the warning messages for incorrect battle set placement.
  • Added an experimental search functionality to the inventory screen. It can be enabled with "ui.set_inventory_search_enabled [1/0]" while the inventory screen is open. We think modders can use this functionality to test and find their items in-game more easily.
  • Extended the functionality of the UI debug mode. Added a new command ("ui.set_screen_debug_information_enabled [True/False]") to help modders find and examine GauntletLayers more easily. This new panel will show the currently loaded GauntletLayers, list included widgets, their visual properties and more in real time.
  • Added the Core.FaceGen.UpdateDeformKeys boolean. Previously, all the sliders in the body generation screen were cleared and added again after gender change. Since we don't use different deform keys between genders, we've moved this functionality to this boolean. If your mod uses different deform keys between genders, your mod should set this value to true. If not done, some deform keys might not show up as sliders in the body generation screen. Can be toggled with "facegen.toggle_update_deform_keys" command.
  • Added Scene.GetAllEntitiesWithScriptComponent method to gather all entities with the given script type.
  • Introduced a "CustomScale" value to font properties, used by Gauntlet. This value is used to scale the whole font. It’s used especially for fonts that generally have bigger characters compared to other fonts used in the game. Modders can use this value to make their fonts bigger or smaller across the whole font.
  • Added a new boolean to the Hero tooltip, isNear. It's used to hide tooltip entries of a hero tooltip that shouldn't be visible if the main hero is not near, like available quests by hero.
  • Improved the spritesheet generator performance, especially for generating numerous sheets at the same time.
  • Changed the banner editor layout to support more colors. Useful for mods expanding the available color set.
  • Changed how we determine singleplayer and multiplayer modules in the SubModule.xml.
    • <SingleplayerModule/> and <MultiplayerModule/> have been renamed to <ModuleCategory/>
    • The correct usage is now <ModuleCategory value="Singleplayer"/> or <ModuleCategory value="Multiplayer"/>
    • The default ModuleCategory is Singleplayer.
  • Fixed a bug that prevented mods from overwriting already existing custom widgets in Gauntlet, consistently.
We have also published a new page on the modding documentation:
We continue to work on other modding-related features/issues:
Thank you again for all your feedback and suggestions. If you have any questions or would like to make further requests, please discuss them below (or HERE).


1.7.2 Changes​

Greetings!

Here are the modding-related changes that came with patch 1.7.2.
  • InquiryData now supports expiration. This allows for the implementation of timed events, for example, "Click yes in 10 seconds".
  • Replaced the "HeroDeveloper" field with the "IHeroDeveloper" interface. This allows modders to change HeroDeveloper of heroes with their own custom classes. As such, they can now change how skill/attribute/focus points work and how heroes gain levels.
  • Added the OnPartyInteraction function to the IMapEntity interface. This allows modders to use custom interaction with custom map objects.
  • Fixed a bug that prevented moved texture files from being moved again in the resource browser.
  • Fixed a bug that caused new Sprites to not override existing ones. Meaning if a sprite is loaded after a sprite with the same name, it wouldn't override the previous one. Because of this modders had to load their overriding sprites before Native or SandBox. This has been fixed.
  • Fixed a bug that caused some GUI textures to appear as missing when launching campaign via the modding tools (also in 1.7.1 latest changes).
We have also published a new page on the modding documentation:
And updated page:
We continue to work on other modding-related features/issues:
  • Automated API documentation
    • In response to the modding open letter.
  • Documentation on implementing new flora
  • Support for custom skins/races
    • In response to the modding open letter.
  • Enable the modifying of equipment of tournament participants
  • The addition of an Atmosphere Curve Editor button to allow for accurate viewing (colours) of the campaign map directly from the scene editor
    • In response to the community request from @NPC99.
  • Other requests in earlier stages of development.
Thank you again for all your feedback and suggestions. If you have any questions or would like to make further requests, please discuss them below (or HERE).


1.7.0 Changes​

Greetings!

Here are the modding-related changes that came with v170.
  • Added new dependency types in SubModule.xml & other improvements.
    • <DependedModule/> Node now supports the Optional attribute. If Optional is true, the launcher will only check if the Depended module is loaded before the current submodule. If Optional is false, the launcher will also check if the Depended module is enabled or not.
    • <ModulesToLoadAfterThis/> Node has been added. Modules given in this scope will be forced to load after the current submodule. Essentially an inverse dependence.
    • <IncompatibleModules/> Node has been added. If any module given in this scope exists and is enabled, the module defined in the node will be disabled. Doesn't depend on load order.
    • Syntax examples for <ModulesToLoadAfterThis/> and <IncompatibleModules/> have been added to the Native SubModule.xml. DependedModule-Optional syntax has been added to the rest of the SubModule.xmls.
    • In response to the community request from @Pickysaurus.
  • Launcher sprite sheets are now located in the Modules/Native/LauncherGUI so that modders can overwrite or add new images for the launcher.
    • In response to the community request from @Lucon via the modding discord.
  • Cultural feats have been moved into CultureObject and are now loaded from XMLs. This allows for much easier replacing or adding of new culture-specific advantages/disadvantages.
  • Child, wanderer, notable, lord and rebel hero templates were moved into CultureObject and are now loaded from XMLs.
  • Mercenary troops for each culture can now be determined in XMLs.
  • Added a new XML (weapon_descriptions.xml) to make weapon descriptions moddable.
  • Removed the PartyBase.Leader, MobileParty.Leader variables. Moved the PartyLeader variable to the PartyComponent.
  • Added more informative errors and warnings for invalid/missing XMLs.
  • Made reload animations moddable. They now support up to 15 reload phases.
  • Fixed a bug that caused the covers_head flag and its usage on helmets to crash the game.
  • Added TickRequirement.TickParallel to provide a multithread tick mechanism for scripts. Can be used with OnTickParallel callback.
  • Added a custom base party speed set option for the custom party component.
  • Added custom harness and mount set options for the custom party component.
  • Added the AvoidHostileActions parameter option for custom party component which prevents the party from being hostile with the encountered party.
  • Fixed a crash that occurred in the editor when closing the scene.
  • Fixed a crash that occurred in the editor when trying to add the ladder spawner.
  • Added slope and height filters to the smoothen brush.
    • In response to the community request from @GourmetBean via the modding discord.
  • Added the ability to select the relevant path by selecting any of the path nodes in the editor.
  • Added a tool that checks the validity of destructible states of destructible components.
  • Reinforced the scene problem checking tool with new additions to the navigation mesh controls.
  • Fixed a bug that caused terrain nodes to only be visible from certain angles and distances on newly created terrains.
  • Fixed a bug that prevented the modification of newly created terrains.
  • Fixed a bug that caused the importer to create redundant mesh vertices.
  • Fixed the activation delay parameter of the particle system.
We have also published a new page on the modding documentation:
We continue to work on the following issues:
  • Documentation on implementing new flora.
  • Other requests (in earlier stages of development).
Thank you for all your feedback and suggestions. If you have any questions or would like to make further requests, please discuss them below (or HERE).


1.6.5 Changes​

Greetings,

Here's an overview of all the modding-related changes that came with v165.
We continue to work on the following issues:
  • Documentation on implementing new flora.
  • The addition of new attributes/dependencies to SubModule.xml & naming convention improvements.
  • Add slope and height filters for the "smoothen" brush.
    • In response to the request from @GourmetBean on the modding discord.
  • Other requests (in earlier stages of development).
Thank you for all your feedback. If you have any questions or would like to make further requests, please discuss them below (or HERE).


1.6.4 Changes​

Greetings,

Here's an overview of all the modding-related changes that came with v164.
  • Font atlas generator is now available to modders. Modders can generate new font files with custom TTF files and use these fonts in-game. We've also created documentation on how to use this tool: http://docs.modding.bannerlord.com/asset-management/how_to_add_custom_fonts/
  • StoryModeEvents.RemoveListeners do not need to be explicitly called anymore. Now, StoryModeEvents is added as a CampaignEventReceiver.
We have also implemented a fix that should take care of the long modding-module loading times in response to the request from @KingKilo. Please let us know if this change helped with your issue.

We continue to work on the following issues:
Thank you for all your feedback. If you have any questions or would like to make further requests, please discuss them below (or HERE).


1.6.3 Changes​

Greetings,

Patch v163 brings a number of modding-related changes as well. They've been included in the patch notes but here's an overview of them as well and some additional information.
  • Heightmap selection dialogue now remembers the last used folder.
  • Added a warning to catch duplicate removals of entities.
  • Animations now support switching the item on the right hand to the left, and back. The appropriate flag for this is "switch_item_between_hands" which can be set in the editor. The addition of "hand_switch_data" to the animation is then also required to be set in the editor.
    • In response to the animation-related request from @Lucon.
    • Preview example of usage:
  • Damage Particles are now moddable. A new GameModel named DamageParticleModel has been added. By creating and using a new model class inherited from DamageParticleModel and overriding needed functions modders can choose damage particles very precisely according to collision properties.
  • banner_icons.xml is now moddable. Modders can include their own banner_icons.xml in their modules under "{MODULE_NAME}/ModuleData/banner_icons.xml". Sigils, backgrounds and colours defined in these XMLs will extend the native banner icons.
  • Added editor visuals that show ranged siege weapon trajectories.
  • Languages are now moddable. Modders can now change options for all languages by providing their own options file. (see Native/ModuleData/Languages/[ID]/[id]_options.xml).
  • Moved occupation field to the Hero class from CharacterObject class, making occupations moddable.
    • In response to a community request made via the modding discord.
  • Made character creation modder friendly.
    • CharacterCreationStages are now moddable. Modders can decide explicitly which stage types should be included and in what order in CharacterCreationContentBase. They can use their own stage types.
    • Fixed a few bugs that could crash the game when new cultures are used in character creation.
    • Exposed CharacterCreation.CharacterCreationMenus to modders.
    • Most functions', fields' enums' protection levels in StoryModeCharacterCreationContent and SandboxCharacterCreationContent have been changed to protected from private.
    • In response to a community request made via the modding discord.
  • Fixed a crash that occurred while sieging settlements with custom cultures.
  • Fixed a crash that occurred if the submodule.xml had a comment in it.
We continue to work on the following issues:
We have also updated the following documentation page as the system has changed a bit with v162 and the addition of the <AlwaysLoad/> spritesheet config: http://docs.modding.bannerlord.com/asset-management/generating_and_loading_ui_sprite_sheets/

We also continue to work on the world-map-related issues that prevent you from using custom maps successfully, thank you for your patience.

Thank you for all your feedback. If you have any questions or would like to make further requests, please discuss them below (or HERE).



1.6.2 Changes​

Greetings,

As part of the v162 patch, we released a number of modding related adjustments. They’ve been included in the patch notes but we’ll list them here as well.
  • Made adjustments so that custom classes that inherit from LogEntry, Issue, Quest or InformationData should now be much less likely to break a save game when the mod is removed.
    • In response to the discussion on the modding discord. Requested by [BUTR] zijistark.
  • Fixed a problem that caused rebellions in settlements with a custom culture (introduced by a mod) to crash the game.
  • Did preliminary work to allow modders to add to existing banner icon groups and introduce whole new groups with BannerManager.LoadBannerIcons(string xmlPath).
  • MissionGauntletNameMarker (ALT key name markers in settlements etc.) is now more moddable as you’re able to add/remove new agent targets.
  • Added horizontal scrolling to troop trees in the encyclopedia (if it's required).
  • Added <AlwaysLoad/> spritesheet config to indicate that the spritesheet category should be loaded by default.
  • Minor faction hero templates are now added through XML and stored in the Clan object directly. The minor faction hero spawn chance and hero limit values are now also moddable.
  • Troops can now have individual upgrade costs and XP reward for killing.
  • In the editor, progress bars were added to the “Navigation Mesh Auto Generation”, “Navigation Mesh Grid Generation”, “NavMesh Debug Mark Elevation Problem Faces” and “Remove Unreachable Faces” features.

We continue to work on the following issues:
  • Implement a left_hand flag.
    • In response to the animation-related request from @Lucon.
  • Making occupations moddable.
  • Documentation on implementing new flora.
  • Other requests (in earlier stages of development).
We likewise continue to look into the reported world map issues.

Thank you for all your feedback. If you have any questions or would like to make further requests, please discuss them below (or HERE).
 
Last edited:

Dejan

Community Manager
WBNWVCM&B

1.6.1 Changes​

Greetings,

As part of the e1.6.1 patch, we made another set of modding-related adjustments. As they don’t all fit within the patch notes, we are sharing a list of the changed classes as well as some additional information here. Make sure to check the patch notes for some additional new adjustments.

Just like the OP notes:
This topic is dedicated to the discussion of the changes - whether you have questions about them or would like to make further requests (although you can do the latter HERE as well).

To begin, the 1.6.1 patch introduced the following changes based on community requests:
We also introduced a new documentation page since the OP was created:
Beyond that, we continue to work on:
  • Making languages moddable.
  • Documentation on implementing new flora.
  • Documentation for using models to add attributes to items & determine the exact weapon damage.
  • Making UpgradeXpCost and GetXpValue moddable.
  • Minor faction hero templates being added through XML and storing them in the Clan object directly. Making minor faction hero spawn chance and hero limit values moddable.
  • Other requests (in earlier stages of development).
You can find the more detailed list of changed classes here:
Project nameClass nameINTERNAL CLASS CHANGE - REMOVEDINTERNAL FIELD/function CHANGE - REMOVED
TaleWorlds.MountAndBladeBallistaAIx
TaleWorlds.MountAndBladeBatteringRamAIx
TaleWorlds.MountAndBladeMangonelAIx
TaleWorlds.MountAndBladeSiegeLadderAIx
TaleWorlds.MountAndBladeSiegeTowerAIx
TaleWorlds.MountAndBladeTrebuchetAIx
SandBox.GauntletUIPanelScreenStatusx
TaleWorlds.MountAndBlade.GauntletUI.WidgetsChatMultiLineElementx
TaleWorlds.MountAndBlade.GauntletUI.WidgetsMapInfoBarWidgetx
TaleWorlds.MountAndBlade.ViewModelCollectionGenderBasedSelectedValuex
TaleWorlds.MountAndBlade.GauntletUIChatLineDatax
SandBoxFamilyFeudIssueMissionBehaviorx
SandBoxFamilyFeudIssuex
SandBoxFamilyFeudIssueQuestx
SandBoxNotableWantsDaughterFoundIssuex
SandBoxNotableWantsDaughterFoundIssueQuestx
SandBoxProdigalSonIssuex
SandBoxProdigalSonIssueQuestx
SandBoxRivalGangMovingInIssuex
SandBoxRivalGangMovingInIssueQuestx
SandBoxRuralNotableInnAndOutIssuex
SandBoxRuralNotableInnAndOutIssueQuestx
SandBoxSuspectNpcx
SandBoxTheSpyPartyIssuex
SandBoxTheSpyPartyIssueQuestx
StoryModeArzagosBannerPieceQuestx
StoryModeAssembleTheBannerQuestx
StoryModeBannerInvestigationQuestx
StoryModeCreateKingdomQuestx
StoryModeIstianasBannerPieceQuestx
StoryModeMeetWithArzagosQuestx
StoryModeSupportKingdomQuestx
StoryModeRebuildPlayerClanQuestx
StoryModeRescueFamilyQuestx
StoryModeConspiracyProgressQuestx
StoryModeAssembleEmpireQuestx
StoryModeMeetWithIstianaQuestx
StoryModeStopConspiracyQuestx
StoryModeWeakenEmpireQuestx
StoryModeFindHideoutTutorialQuestx
StoryModeLocateAndRescueTravellerTutorialQuestx
StoryModeTalkToTheHeadmanTutorialQuestx
StoryModeTravelToVillageTutorialQuestx
TaleWorlds.CampaignSystemDeclareWarDecisionOutcomex
TaleWorlds.CampaignSystemExpelClanDecisionOutcomex
TaleWorlds.CampaignSystemPolicyDecisionOutcomex
TaleWorlds.CampaignSystemKingSelectionDecisionOutcomex
TaleWorlds.CampaignSystemMakePeaceDecisionOutcomex
TaleWorlds.CampaignSystemClanAsDecisionOutcomex
TaleWorlds.CampaignSystemSettlementClaimantPreliminaryOutcomex
TaleWorlds.CampaignSystemArmyNeedsSuppliesIssuex
TaleWorlds.CampaignSystemArmyNeedsSuppliesIssueQuestx
TaleWorlds.CampaignSystemArtisanCantSellProductsAtAFairPriceIssuex
TaleWorlds.CampaignSystemArtisanCantSellProductsAtAFairPriceIssueQuestx
TaleWorlds.CampaignSystemArtisanOverpricedGoodsIssuex
TaleWorlds.CampaignSystemArtisanOverpricedGoodsIssueQuestx
TaleWorlds.CampaignSystemCapturedByBountyHuntersIssuex
TaleWorlds.CampaignSystemCapturedByBountyHuntersIssueQuestx
TaleWorlds.CampaignSystemCaravanAmbushIssuex
TaleWorlds.CampaignSystemCaravanAmbushIssueQuestx
TaleWorlds.CampaignSystemEscortMerchantCaravanIssuex
TaleWorlds.CampaignSystemEscortMerchantCaravanIssueQuestx
TaleWorlds.CampaignSystemExtortionByDesertersIssuex
TaleWorlds.CampaignSystemExtortionByDesertersIssueQuestx
TaleWorlds.CampaignSystemGangLeaderNeedsRecruitsIssuex
TaleWorlds.CampaignSystemGangLeaderNeedsRecruitsIssueQuestx
TaleWorlds.CampaignSystemGangLeaderNeedsToOffloadStolenGoodsIssuex
TaleWorlds.CampaignSystemGangLeaderNeedsToOffloadStolenGoodsIssueQuestx
TaleWorlds.CampaignSystemGangLeaderNeedsWeaponsIssuex
TaleWorlds.CampaignSystemGangLeaderNeedsWeaponsIssueQuestx
TaleWorlds.CampaignSystemHeadmanNeedsGrainIssuex
TaleWorlds.CampaignSystemHeadmanNeedsGrainIssueQuestx
TaleWorlds.CampaignSystemHeadmanNeedsToDeliverAHerdIssuex
TaleWorlds.CampaignSystemHeadmanNeedsToDeliverAHerdIssueQuestx
TaleWorlds.CampaignSystemHeadmanVillageNeedsDraughtAnimalsIssuex
TaleWorlds.CampaignSystemHeadmanVillageNeedsDraughtAnimalsIssueQuestx
TaleWorlds.CampaignSystemLadysKnightOutIssuex
TaleWorlds.CampaignSystemLadysKnightOutIssueQuestx
TaleWorlds.CampaignSystemLandLordCompanyOfTroubleIssuex
TaleWorlds.CampaignSystemLandLordCompanyOfTroubleIssueQuestx
TaleWorlds.CampaignSystemLandlordNeedsAccessToVillageCommonsIssuex
TaleWorlds.CampaignSystemLandlordNeedsAccessToVillageCommonsIssueQuestx
TaleWorlds.CampaignSystemLandLordNeedsManualLaborersIssuex
TaleWorlds.CampaignSystemLandLordNeedsManualLaborersIssueQuestx
TaleWorlds.CampaignSystemLandLordTheArtOfTheTradeIssuex
TaleWorlds.CampaignSystemLandLordTheArtOfTheTradeIssueQuestx
TaleWorlds.CampaignSystemLandlordTrainingForRetainersIssuex
TaleWorlds.CampaignSystemLandlordTrainingForRetainersIssueQuestx
TaleWorlds.CampaignSystemLesserNobleRevoltIssuex
TaleWorlds.CampaignSystemLesserNobleRevoltIssueQuestx
TaleWorlds.CampaignSystemLordNeedsGarrisonTroopsIssuex
TaleWorlds.CampaignSystemLordNeedsGarrisonTroopsIssueQuestx
TaleWorlds.CampaignSystemLordNeedsHorsesIssuex
TaleWorlds.CampaignSystemLordNeedsHorsesIssueQuestx
TaleWorlds.CampaignSystemLordsNeedsTutorIssuex
TaleWorlds.CampaignSystemLordsNeedsTutorIssueQuestx
TaleWorlds.CampaignSystemLordWantsRivalCapturedIssuex
TaleWorlds.CampaignSystemLordWantsRivalCapturedIssueQuestx
TaleWorlds.CampaignSystemMerchantArmyOfPoachersIssuex
TaleWorlds.CampaignSystemMerchantArmyOfPoachersIssueQuestx
TaleWorlds.CampaignSystemMerchantNeedsHelpWithOutlawsIssuex
TaleWorlds.CampaignSystemMerchantNeedsHelpWithOutlawsIssueQuestx
TaleWorlds.CampaignSystemNearbyBanditBaseIssuex
TaleWorlds.CampaignSystemNearbyBanditBaseIssueQuestx
TaleWorlds.CampaignSystemRaidAnEnemyTerritoryIssuex
TaleWorlds.CampaignSystemRaidAnEnemyTerritoryQuestx
TaleWorlds.CampaignSystemQuestSettlementx
TaleWorlds.CampaignSystemScoutEnemyGarrisonsIssuex
TaleWorlds.CampaignSystemScoutEnemyGarrisonsQuestx
TaleWorlds.CampaignSystemTheConquestOfSettlementIssuex
TaleWorlds.CampaignSystemTheConquestOfSettlementIssueQuestx
TaleWorlds.CampaignSystemVillageNeedsToolsIssuex
TaleWorlds.CampaignSystemVillageNeedsToolsIssueQuestx
Again, the classes that inherit from these are not specifically mentioned but are still affected by the change of their parent class. We will continue to review the code base as we develop the game and you highlight limitations that you are facing.

Thank you for all your feedback. If you have any questions or would like to make further requests, please discuss them below (or HERE).


1.6.0 Changes​

Greetings,

As part of the e1.6.0 patch, we released a number of modding-related adjustments. As they don’t all fit within the patch notes, we are sharing a list of the changed classes as well as some additional information here. This topic is dedicated to the discussion of the changes - whether you have questions about them or would like to make further requests (although you can do the latter HERE as well).

To begin with, the patch included the following changes in response to community requests:
Beyond that, we continue to work on:
Of course, the core of the current discussion concerns access modifiers. The patch notes provided a rough summary of the changes made as part of the relevant code review:
  • Added and removed some internal modifiers to make them more consistent and reduce unnecessary limitations.
  • Made the character attraction for romance moddable by moving it to a game model.
  • Removed "All" lists for some of the default classes such as DefaultSkills, DefaultPerks, DefaultFeats, DefaultTraits, DefaultBuildingTypes, DefaultIssueEffects, DefaultPolicies, DefaultSiegeStrategies, DefaultSkillEffects, DefaultVillageType, DefaultSiegeEngineTypes, DefaultItems, DefaultItemCategories, DefaultCharacterAttributes.
    • Every instance of said object can now be accessed with a new list at its corresponding type or its extensions, for example, use SiegeEngineTypes.All instead of DefaultSiegeEngineTypes.All. SiegeEngineTypes.All will include all of the Siege Engine Types in the object manager. Lists like DefaultSiegeEngineTypes.All were mostly hardcoded.
  • Skill effects are now registered to the object manager which means that SkillEffect.All now includes skill effects added by mods.
  • Modifying which basic volunteers a hero gives out can now be changed through a game model (VolunteerProductionModel). The only way to achieve that previously was by rewriting the RecruitmentCampaignBehavior.
  • Campaign event receivers are now moddable (modders can add their custom campaign event receivers through Campaign.AddCampaignEventReceiver).
  • Removed the character attribute enum (adding new attributes wasn’t possible before). It is now using static references instead at DefaultCharacterAttributes and Attributes.All to reference CharacterAttributes.
You can find the more detailed list of changed classes here:
Project nameClass nameINTERNAL CLASS CHANGE - ADDEDINTERNAL CLASS CHANGE - REMOVEDINTERNAL FIELD/function CHANGE - ADDEDINTERNAL FIELD/function CHANGE - REMOVED
SandBox.ViewSandBoxMissionViewsx
SandBox.ViewPartyVisualCreatorx
SandBoxMissionTacticManagerCampaignBehaviorx
SandBoxAgentBehaviorManagerx
SandBoxTreeNodeTablutx
SandBoxTilex
SandBoxSandBoxMissionManagerx
SandBoxLordConversationsCampaignBehaviorx
SandBoxTournamentJoustingMissionControllerx
StorymodeAchievementsCampaignBehaviorx
StorymodeStoryModNotableSpawnModelx
StoryModeRescueFamilyQuestBehaviorx
StoryModeConspiracyQuestBasexx
StoryModeStoryModeAgentDecideKilledOrUnconsciousModelx
StoryModeStoryModeHeroDeathProbabilityCalculationModelx
StoryModeStoryModePartySizeLimitModelx
StoryModeStoryModex
StoryModeStoryModeEventsx
StoryModeStoryModeHeroesx
StoryModeTutorialQuestPhasex
TaleWorlds.CampaignSystem.ViewModelCollectionCampaignUIHelperx
TaleWorlds.CampaignSystem.ViewModelCollectionDeclareWarDecisionItemVMx
TaleWorlds.CampaignSystem.ViewModelCollectionKingdomPolicyDecisionVMx
TaleWorlds.CampaignSystem.ViewModelCollectionKingSelectionDecisionVMx
TaleWorlds.CampaignSystem.ViewModelCollectionMakePeaceDecisionVMx
TaleWorlds.CampaignSystem.ViewModelCollectionQuestNotificationItemVMx
TaleWorlds.CampaignSystem.ViewModelCollectionSettlementOwnerChangedNotificationItemVMx
TaleWorlds.CampaignSystem.ViewModelCollectionSettlementUnderSiegeMapNotificationItemVMx
TaleWorlds.CampaignSystemPlayerCaptivityCampaignBehaviorx
TaleWorlds.CampaignSystemPrisonerCaptureCampaignBehaviorx
TaleWorlds.CampaignSystemDefaultMilitaryPowerModelx
TaleWorlds.CampaignSystemDefaultPrisonerDonationModelx
TaleWorlds.CampaignSystemDefaultHeirSelectionCalculationModelx
TaleWorlds.CampaignSystemDefaultSettlementGarrisonModelx
TaleWorlds.CampaignSystemDefaultEncounterx
TaleWorlds.CampaignSystemPlayerTownVisitx
TaleWorlds.CampaignSystemAiPartyThinkBehaviorx
TaleWorlds.CampaignSystemPartyHealCampaignBehaviorx
TaleWorlds.CampaignSystemDefaultSettlementTaxModelx
TaleWorlds.CampaignSystemSandboxStrikeMagnitudeModelx
TaleWorlds.CampaignSystemGangLeaderNeedsRecruitsIssueBehaviorx
TaleWorlds.CampaignSystemHeadmanVillageNeedsDraughtAnimalsIssueBehaviorx
TaleWorlds.CampaignSystemLandLordNeedsManualLaborersIssueBehaviorx
TaleWorlds.CampaignSystemLandLordTheArtOfTheTradeIssueBehaviorx
TaleWorlds.CampaignSystemLesserNobleRevoltIssueBehaviorx
TaleWorlds.CampaignSystemMerchantArmyOfPoachersIssueBehaviorx
TaleWorlds.CampaignSystemMainPartyCurrentActionx
TaleWorlds.CampaignSystemBarterGroupx
TaleWorlds.CampaignSystemBarterManagerx
TaleWorlds.CampaignSystemCampaignx
TaleWorlds.CampaignSystemCampaignEventDispatcherx
TaleWorlds.CampaignSystemCampaignEventReceiverx
TaleWorlds.CampaignSystemCampaignEventsx
TaleWorlds.CampaignSystemCampaignPeriodicEventManagerxx
TaleWorlds.CampaignSystemSkillLevelingManagerx
TaleWorlds.CampaignSystemSettlementEconomyModelx
TaleWorlds.CampaignSystemConversationTagHelperx
TaleWorlds.CampaignSystemKingdomPolicyDecisionx
TaleWorlds.CampaignSystemMobilePartyHelperx
TaleWorlds.CampaignSystemBuildingHelperx
TaleWorlds.CampaignSystemHerox
TaleWorlds.CampaignSystemInventoryLogic.PartyEquipmentx
TaleWorlds.CampaignSystemItemDatax
TaleWorlds.CampaignSystemTownMarketDatax
TaleWorlds.CampaignSystemEmissarySystemCampaignBehaviorx
TaleWorlds.CampaignSystemIMapTracksCampaignBehaviorx
TaleWorlds.CampaignSystemRaidAnEnemyTerritoryIssuex
TaleWorlds.CampaignSystemTownx
TaleWorlds.CampaignSystemEquipment.EquipmentTypex
TaleWorlds.MountAndBlade.CustomBattleArmyCompositionGroupVMx
TaleWorlds.MountAndBlade.CustomBattleCustomBattleMenuVMx
TaleWorlds.MountAndBlade.GauntletUIMultiplayerIntermissionNextMapImageWidgetx
TaleWorlds.MountAndBlade.GauntletUIBrightnessDemoTextureProviderx
TaleWorlds.MountAndBlade.GauntletUIMissionGauntletBoundaryCrossingViewx
TaleWorlds.MountAndBlade.GauntletUIMissionGauntletLeaveViewx
TaleWorlds.MountAndBlade.ViewCraftedDataViewManagerx
TaleWorlds.MountAndBlade.ViewFormationIndicatorMissionView.Indicatorx
TaleWorlds.MountAndBlade.ViewNodeComparerx
TaleWorlds.MountAndBlade.ViewBannerVisualCreatorx
TaleWorlds.MountAndBladeAgentx
TaleWorlds.MountAndBladeAgentComponentx
TaleWorlds.MountAndBladeHumanAIComponent.BehaviorValuesx
TaleWorlds.MountAndBladeAgentComponentExtensionsx
TaleWorlds.MountAndBladeBehaviorComponentx
TaleWorlds.MountAndBladeBehaviorDefendx
TaleWorlds.MountAndBladeBehaviorDefendSiegeWeaponx
TaleWorlds.MountAndBladeBehaviorDefensiveRingx
TaleWorlds.MountAndBladeBehaviorDestroySiegeWeaponsx
TaleWorlds.MountAndBladeColumnFormationx
TaleWorlds.MountAndBladeLineFormationx
TaleWorlds.MountAndBladeDetachmentDatax
TaleWorlds.MountAndBladeDetachmentManagerx
TaleWorlds.MountAndBladeOrderControllerx
TaleWorlds.MountAndBladeFacingOrder.FacingOrderEnumx
TaleWorlds.MountAndBladeFacingOrderx
TaleWorlds.MountAndBladeFiringOrder.RangedWeaponUsageOrderEnumx
TaleWorlds.MountAndBladeFiringOrderx
TaleWorlds.MountAndBladeFormOrder.FormOrderEnumx
TaleWorlds.MountAndBladeFormOrderx
TaleWorlds.MountAndBladeRidingOrder.RidingOrderEnumx
TaleWorlds.MountAndBladeRidingOrderx
TaleWorlds.MountAndBladeWeaponUsageOrder.WeaponUsageOrderEnumx
TaleWorlds.MountAndBladeWeaponUsageOrderx
TaleWorlds.MountAndBladeCastleGateAIx
TaleWorlds.MountAndBladeRangedSiegeWeaponAi.ThreatSeekerx
TaleWorlds.MountAndBladeStrategicAreax
TaleWorlds.MountAndBladeTacticBreachWallsx
TaleWorlds.MountAndBladeTacticComponentx
TaleWorlds.MountAndBladeTacticDefendCastle.TacticStatex
TaleWorlds.MountAndBladeTacticDefendCastlex
TaleWorlds.MountAndBladeSiegeQuerySystemx
TaleWorlds.MountAndBladeTeamQuerySystemx
TaleWorlds.MountAndBladeArcherPositionxx
TaleWorlds.MountAndBladeAttackEntityOrderDetachmentx
TaleWorlds.MountAndBladeSiegeLanexx
TaleWorlds.MountAndBladeSiegeLane.LaneStateEnumx
TaleWorlds.MountAndBladeSiegeLane.LaneDefenseStatesx
TaleWorlds.MountAndBladeTeamAIComponentx
TaleWorlds.MountAndBladeTeamAISallyOutAttackerx
TaleWorlds.MountAndBladeTeamAISallyOutDefenderx
TaleWorlds.MountAndBladeTeamAISiegeAttackerx
TaleWorlds.MountAndBladeTeamAISiegeComponentx
TaleWorlds.MountAndBladeTeamAISiegeDefenderx
TaleWorlds.MountAndBladeFormationx
TaleWorlds.MountAndBladeFormationDeploymentOrderx
TaleWorlds.MountAndBladeFormationDeploymentPlanx
TaleWorlds.MountAndBladeMissionAgentSpawnLogicx
TaleWorlds.MountAndBladeMissionx
TaleWorlds.MountAndBladeMissionTimex
TaleWorlds.MountAndBladeMissionTimeTrackerxx
TaleWorlds.MountAndBladeMission.TeamCollectionx
TaleWorlds.MountAndBladeMissionWeaponx
TaleWorlds.MountAndBladeChatBoxx
TaleWorlds.MountAndBladeCastleGatex
TaleWorlds.MountAndBladeDestructableComponentx
TaleWorlds.MountAndBladeSiegeWeaponMovementComponentx
TaleWorlds.MountAndBladeStandingPointx
TaleWorlds.MountAndBladeStandingPointWithWeaponRequirementx
TaleWorlds.MountAndBladeTacticalPositionx
TaleWorlds.MountAndBladeUsableMachinex
TaleWorlds.MountAndBladeTeamx
TaleWorlds.MountAndBladeWeaponDatax
TaleWorlds.MountAndBladeWeaponInfox
TaleWorlds.MountAndBladeMovementPathx
TaleWorlds.MountAndBladeMovementOrderx
TaleWorlds.MountAndBladeMovementOrder.MovementOrderEnumx
TaleWorlds.MountAndBladeMovementOrder.MovementStateEnumx
TaleWorlds.MountAndBladeArrangementOrderx
TaleWorlds.GauntletUIFloatInputTextWidgetx
TaleWorlds.GauntletUI.PrefabSystemCustomWidgetTypex
Please note that classes that inherit from these are not specifically mentioned, but are still affected by the change of their parent class. This is also only a first pass and we will continue to review the code base as we develop the game and the modding community highlights limitations that you are facing.

Thank you everyone for your continued feedback and requests. If you have any questions or would like to make further requests, please discuss them below (or HERE
 
Last edited:
Just skimming through and it seems fantastic, so many good changes for C# modders in this update. Can't wait to see what other stuff will be improved in the future but for now the community has a lot of new stuff to play with.
 

Lucon

Subforum Moderator
WBWF&SNWVC
We would like to thank the developers in the TW team for fulfilling our thoughts on some issues. As the team members of the Sword & Musket project, which is in the Mod Community as much as we can, we continue to support the deficiencies in the mod tools and the development of Bannerlord.

Just like other mod projects, we will be waiting with hope that the necessary deficiencies should be fulfilled immediately. Thanks for everything Taleworlds.
 
Added and removed some internal modifiers to make them more consistent and reduce unnecessary limitations.
Damn, I was just thinking how different the other thread might've looked if they added that last part there as well.

This sounds like great news overall, hope this sparks passion in modders again!
 

vonbalt

Sergeant Knight
WBNWVCM&B
This is amazing, lots of good changes in there and i hope TW and the modding community will keep working together so we can all have a better game :smile:
 

bishey

Regular
@Dejan Do you think TaleWorlds suffered some unnecessary negative PR by being overly vague in the other thread? From what I see here, changes are pretty positive. Do you think there is something to learn from this experience? Instead of saying "Some internal modifiers were added and some were removed", would it have been better to say something like "Significant amounts of internal modifiers removed and a few were added?"
 

WhyAmIHere

@Dejan Do you think TaleWorlds suffered some unnecessary negative PR by being overly vague in the other thread? From what I see here, changes are pretty positive. Do you think there is something to learn from this experience? Instead of saying "Some internal modifiers were added and some were removed", would it have been better to say something like "Significant amounts of internal modifiers removed and a few were added?"
It would have been so easy for them to say "Over 100 removed and about half a dozen added" but they instead chose to be vague as all hell. An absolutely avoidable own goal in terms of communication.
 

svelok

Sergeant
Instead of saying "Some internal modifiers were added and some were removed", would it have been better to say something like "Significant amounts of internal modifiers removed and a few were added?"
It probably would have been better for the community to see the changes before reacting rather than the inverse
 
Top Bottom