e1.6.0-v1.2.7 Modding Changes

Users who are viewing this thread

Dejan

Community Manager

v1.2.1-v1.2.7 Changes​

Greetings!

v1.2.x version series has been released to Live today. The hotfixes made during the Beta involved many modding-related changes so here's an overview of them:

v1.2.7​

  • Removed the readonly parameter from the Multiplayer Compression Info classes.

Beta v1.2.5 (23/11/23)​

  • Fixed a crash that occurred on the resource browser.
  • World Map Moddability
    • Removed the hardcoded texture (main_map_snow_flowmap) previously required for Dynamic Campaign (weather) Effects (located in the Terrain Property Browser) on the world map. It is now selected from the editor as a regular texture. Modders now no longer have to use the asset override mechanism (by having the same flowmap texture name as the native flowmap texture) to add a snow layer to the world map - instead, it's recommended that you use your own texture with a different name and select it in your custom world map scene.
    • Fixed a bug that prevented modded campaign maps from using high-resolution heightmaps. A low-resolution main_map_physics_heightmap texture is not required for campaign heightmaps and custom worldmaps can now be used without the Aurelian’s MapFix mod if saved as Main_map (as opposed to modded_main_map).
    • Fixed a bug that prevented world map floras from appearing. Previously, you had to enter and exit a mission scene to force the flora to appear.
    • Added modding support for the world map dynamic atmosphere.
    • Added modding support for color grade grid for the world map.
    • Added modding support for the battle scene index grid for the world map.
    • Added visualization sliders to the editor for easier tweaking of the world map snow map.
    • Added a console option to reduce framerate when the editor is not focused.
    • Improved layer editing and visualization in the Editor.
    • Overall bug fixes.
    • In response to reports from various modders (@Cozur, @hunharibo, @Lemmy1916, @Le_Profyteur and others). Massive thanks to @NPC99 for his continuous detailed feedback on world map modding.
  • Assertions will now be shown in the Editor Console once inside the "Editor Mode".
    • In response to the community request by Poheniks and FoozleMcDoozle
  • Added bulk shader compilation for mods. It's accessible via the “Compile Shaders” checkbox while publishing the module using the “Publish Module” functionality in the editor. It allows you to compile & ship the unique material shaders in your modules. This prevents long initial mod loading times.
  • Added the ability to define and use your own decals.
  • Fixed a bug that prevented texture move operations.
  • Added the ability to set tickrate for dedicated custom servers using the "/tickrate" command line argument or the "set_server_tickrate" console command.
    • In response to the community request by @Gotha

Beta v1.2.4 (28/09/23)​

  • Fixed a crash that occurred in the Cloth Editor if the cloth simulation wasn’t enabled in the config.
  • Fixed a crash that occurred if a mod changed the maximum number of workshops that a player could buy through the DefaultWorkshopModel.
    • In response to the community report by ing32
  • Removed the ConsiderMapEventsAndSiegesInternal function and created the PartyDiplomaticHandlerCampaignBehavior class. The effects of diplomatic changes can now be controlled via the latter class.
  • Fixed several issues related to the moddability of reloading ranged weapons.
  • Allowed the defining of class divisions with no perks.

Beta v1.2.3 (04/08/23)​


Beta v1.2.2 (21/07/23)​

  • Fixed a crash that occurred when entering a town of a modded custom culture.


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).


v1.2.0 Changes​

Greetings!

Patch Beta v1.2.0 came out today and it's quite chunky! Here are the modding-related changes that came with it.

Editor
  • Fixed a crash that occurred when using the "Auto Generate Nav Mesh" functionality.
  • Fixed a crash that occurred when opening the Cloth editor via the console without first entering Editor mode.
  • Fixed a crash that occurred after closing the flora editor.
  • Modified the warning message that explains soft borders need to be present on the scene or flora may not appear correctly.
    • In response to the community request by @NPC99
  • Path points can now be snapped to the water level.
  • Fixed a bug that prevented the Max Height change option from working when using it for a single action with the Elevation or the Paint tool.

Combat
  • Added two new callbacks that allow modders to manually assign targets for AI agents. Agent.SetTargetAgent() allows modders to set a target agent but if they do not disable automatic target selection, our low-level AI will try to pick a new and different target agent when possible. To avoid that, Agent.SetAutomaticTargetSelection() can be used to disable automatic target selection, giving full control over the target selection process to the modders.
  • Added agent references to the AttackInformation struct to allow modders to use agent information in their damage calculations.

Campaign
  • Pathfinding can now be used with excluded face IDs. This enables you to allow or restrict the usage of a specific nav mesh face under set conditions. For example, AI agents on foot can be allowed to enter a specific area while restricting access to mounted AI agents. This also works on the world map, allowing you to restrict access of parties to certain areas based on set conditions.
  • Batte types are now part of their map event within the map event system.
  • Moved some of the MapEventHelper functions in Helpers to the MapEvent class. They’re now directly connected to their map event.
  • Separated PartyVisuals from PartyBase.cs. Deleted the IPartyVisual interface. All party visuals are now stored in PartyVisualManager.cs which is part of the Sandbox.View project.
  • Moved the Prosperity value from Settlement.cs to Town.cs.
  • Moved the skill level requirement for epic perk calculations to the CharacterDevelopmentModel, allowing modders to override them.
    • In response to the community request by gallickgunner on the Modding Discord.
  • Changed the way companion skills are defined (sandboxcore_skill_sets.xml), making them more easily moddable.
  • Removed the neutral faction. This used to be a catch-all faction to avoid crashes and bugs in some circumstances. The code has been refactored to work without such a design.
  • Fixed a bug that caused a custom race to not be applied on save/load for heroes generated with a template from a different race. For example, if a hero named Richard is created using a hero template with an Elf race, Richard will still be an Elf after save/load.

Multiplayer
  • Dedicated Servers
    • Fixed various crashes that occurred due to warmup behavior.
    • Merged the Custom Server Helper module into the base game. Players do not have to manually enable it to download maps from Dedicated Servers anymore.
      • In response to a popular community request.
    • Dedicated servers are now targeting .NET 6 instead of .NET Core 3.1.
    • Added a new console command "set_server_bandwidth_limit_in_mbps" and launch option "serverbandwidthlimitmbps" for limiting dedicated server bandwidth usage.
    • The "AutoTeamBalanceThreshold" option now accepts numbers instead of enum indices. This means that you can now set the auto team balance threshold from 0 to 30 players.
    • Added a new "DisableInactivityKick" option which if set to “true” disables automatic player kicks.
    • Added a new command line argument "use_parent_console” which forces the dedicated server to use the console it is launched from.
    • The welcome message is no longer displayed as a separate popup but is printed into the chat instead.
      • In response to the community request by @Gotha
  • Fixed a crash that occurred due to missing classes and perks of a modded faction.
  • Improved moddability of the AgentStatCalculateModel. GetWeaponDamageMultiplier and GetEffectiveSkill methods now accept the relevant agent as a parameter.
  • Added CalculateStrikeMagnitudeForMissile to the StrikeMagnitudeModel, making Missile damage moddable. Removed CalculateSpeedBonusMultiplierForMissile and integrated it into the default implementation of CalculateStrikeMagnitudeForMissile.
  • Moved some MP code into the Multiplayer module (modders might need to reference these new DLLs).
  • Fixed a bug with the RoundUp calculation of the Captain mode troop counts.
  • Fixed a bug that caused newly added faction banners not to show up on the Multiplayer screens.
  • Fixed a bug that prevented the scoreboard from resetting after a TDM warmup.

Audio
  • Added a new category called "music" to the module_sounds.xml. This allows modders to add music across all aspects of the game more easily.

Other
  • Fixed a bug that caused some textures added by new modules to be rendered incorrectly.


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).


v1.1.0 Changes​

Greetings!

Patch v1.1.0 came to Beta last week. Here are the modding-related changes that came with it (apologies for posting with delay).
  • Improved scene checker code (editor side) in order to detect various spawn path placement problems.
  • The map camera implementation was separated from the map screen code for easier modding.
    • In response to the community request by Jansen via the modding discord.
  • A new attribute is_moving was added to the monster usage system. It allows specifying different actions in moving or stationary situations.
  • Enabled the ability to give banner tableaus to armor pieces. This change adds native support for armor pieces to have banner textures. It works the same way as shields, banner bearer items etc.
  • Fixed a bug that caused issues with asset importing if there were two modules with the same id.
  • Fixed SpCultures default xml to throw warnings when it has no cultures defined.
  • Animation clips can now be searched by their flags in the resource viewer.
  • Increased the ModifiedDamage compression info limits from 500 to 2000 and clamped the out of limit damage numbers to the min/max values.
  • AddGameMenu and GetGameMenu are now public.
  • Game menu options can work with related objects.
  • Fixed a crash that happens if the main hero talks with a hero that does not have any proper conversation lines. Now he/she says a default conversation line if proper dialog lines were not added.
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.9.0 Changes​

Greetings!

Patch e1.9.0 comes with more modding-related changes. Here they are!
  • Changed Official node in SubModule.xml to ModuleType that has possible values of "Official", "OfficialOptional" and "Community". The default value is “Community”.
  • Increased the number of bones defined in monsters.xml to extend modding support of the animation system.
  • Hero.SetSkillValue() function is now public. Modders can now directly change the hero skill value.
  • Added a "Quick Save Scene" option to the editor.
  • Decreased the road generation minimum width value to 0.1 meters.
    • In response to the community report by @NPC99 on the modding discord.
  • The volunteer upgrade tier cap is now calculated from a model, allowing modders to change the value to their needs.
  • Unsealed and removed internals from some combat related classes and methods.
  • Removed the unused GameMenuSelectionBehavior.
  • Fixed a visual bug in relation to tree_far trees.
    • In response to the community report by @Bullero on the modding discord.
  • Fixed a crash that occurred on load if an issue behavior had been removed from the game.
  • Adjusted the algorithm responsible for resizing the helmets to correctly fit the different head shapes, removing the bug that caused helmets to be too large.
    • Was pointed out by many community members, including @KingKilo.
  • Increased the theoretical limit for concurrent players on a custom server to around 1000.
    • In response to the community request by the closed custom servers group.
Our modding documentation has moved to a new address (which has SSL enabled) - https://moddocs.bannerlord.com/ We have also published new pages on it to accompany our recent Custom Servers release:
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.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:

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.
 
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!
 
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:
 
@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?"
 
@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.
 
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
 
Back
Top Bottom