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

Users who are viewing this thread

LDominating

Regular
@Bloc Hei dude,your modding capabilities are insanely good.
I,personally,didn't use many mods in my gameplay,none of yours.
I will,however,try your mods when I get a new PC.

But I'll take the liberty to speak for everyone.
If you are truly done with modding,you'll be missed,but nonetheless we appreciated your efforts and your creations.
I really hope you inspired someone to pick up your mantle if and when you leave.

Goodluck in the future,buddy!
 
@Bloc Hei dude,your modding capabilities are insanely good.
I,personally,didn't use many mods in my gameplay,none of yours.
I will,however,try your mods when I get a new PC.

But I'll take the liberty to speak for everyone.
If you are truly done with modding,you'll be missed,but nonetheless we appreciated your efforts and your creations.
I really hope you inspired someone to pick up your mantle if and when you leave.

Goodluck in the future,buddy!
👍
 

Jarungo

Recruit
WBNWVC
Question for the art team : Are there new Vlandian helmets in development or planned for future release? the past few release have been almost solely focused on Battanian and Sturgian models. Thank you!
 

svelok

Sergeant
Are there any plans to make changes to Occupation?

Right now, it's stored as an enum, so it can't be modded or extended. And it's also referenced in lots and lots of places, so replacing it isn't really practical either - and all those places use hardcoded calls (eg, Hero.CanHaveRecruits calls methods like Hero.IsArtisan which just return Occupation == Occupation.Artisan), so modifying the behavior of notables or attempting to piggyback off of notable behavior with new types of Hero objects gets really messy.

I think ideally, it would make sense for Occupation to be a PropertyObject, like attributes now are. Alternately and/or additionally, it might be beneficial for Notables to use inheritance, so that a Notable class could simply implement its own CanHaveRecruits or the like?
 
TaleWorlds.CampaignSystemHerox
Am I crazy or just not reading this properly. It says Hero internal added field/property. Does that mean Hero is now internal? Because that would be... uh... kind of a problem. I'm hoping they have only added some internal field to Hero.
 
  • 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.
Yeah about this, for policies we used to have the ability to add new policies via Campaign.Current.DefaultPolicies.Policies.Add(myPolicy), except DefaultPolicies is private now, and PolicyObject.All only returns a readonly list, and I'm assuming it's similar with other of All lists. In other words you can't add your own policies anymore (and who knows what else, as far as I have found) so this was quite a nerf to modding, at least for the policies in my mod.
 

Dejan

Community Manager
WBNWVCM&B
Yeah about this, for policies we used to have the ability to add new policies via Campaign.Current.DefaultPolicies.Policies.Add(myPolicy), except DefaultPolicies is private now, and PolicyObject.All only returns a readonly list, and I'm assuming it's similar with other of All lists. In other words you can't add your own policies anymore (and who knows what else, as far as I have found) so this was quite a nerf to modding, at least for the policies in my mod.
Now you can properly add them using:
Code:
var myPolicy = Game.Current.ObjectManager.RegisterPresumedObject(new PolicyObject("unique_string_id"));
            myPolicy.Initialize(...
 
Now you can properly add them using:
Code:
var myPolicy = Game.Current.ObjectManager.RegisterPresumedObject(new PolicyObject("unique_string_id"));
            myPolicy.Initialize(...
Ok thanks. So we don't need to add them to any policies list anymore? The initialization is the same as before, yeah, I just assumed I would need an extra register step as before, but I guess that step has been refactored out.
 

Dejan

Community Manager
WBNWVCM&B
Ok thanks. So we don't need to add them to any policies list anymore? The initialization is the same as before, yeah, I just assumed I would need an extra register step as before, but I guess that step has been refactored out.
You should see the policy in the list if you create it as described above.
 

Dejan

Community Manager
WBNWVCM&B
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).
 
Last edited:
Whoa, the IMapEntity looks great. I was going to ask about something like what you described, because I would like to make some custom locations on the map but I don't want to package a whole world map (Such as Training Field at the start of the game, but it seems I can't make one of these locations because it is instantiated during the Campaign initialization). I would like to just add some locations programatically on the map. (Fountain of Youth? Some hidden temple or lost ruins randomly seeded at game start?) Sounds like I could probably do it through a map entity and show a menu + load into a scene/mission through it, hopefully.
 

Lucon

Subforum Moderator
WBWF&SNWVC
Good, it's good to see some things change, but we need more changes as mod communities. Thanks to @Dejan for refreshing us in this August heat. You deserve an Cold Ayran. :wink: 🥶

The about a things you continue to work on; I hope there will be an update about our Animation request in the near future. Because we do not want our animation to go to waste.
 

NPC99

Baron
M&BWBWF&SVC
@Dejan Campaign map size is no longer hardcoded, it is now set from the map scene.

Where is it set? I couldn't find anything in the editor. I disabled general modding patches saved my campaign map as Main_map and loaded the game in e1.6.1:
a) Terrain heights were still hard-coded to Calradia spawning my player icon underground.
5SXpw.jpg
b) In helicopter mode I couldn't reach parts of my map, truncating access.
r6YoH.jpg
map_size in scene.xscene ignored:
edk_4.jpg
Clearly, the size isn't set just by saving from the scene editor as I did that with the above results.

EDIT - I'm advised two new scene entities border_min and border_max need to be implemented. They are located at the extreme corners of the map with a z height of zero for border_min and 620 for border_max to enclose a 3D space. Putting them in my map allowed me to access all areas. Unfortunately, by themselves they didn't resolve the spawning underground as Calradia's terrain heights over-rode those of my map. Hopefully, something else resolves that or it's back to using general modding patches.
 
Last edited:

Spinozart1

Squire
  • Fixed a bug where CampaignGameStarter object was reinitialized. Now, Behaviors and models will be added to CampaignGameStarter at MBSubModuleBase.InitializeGameStarter so other modules can add/remove other campaign behaviors before they are initialized.
Maybe one consequence of this change.
It is no more possible to add additional menu (AddGameMenu) & options (AddGameMenuOption) to the EncounterGameMenuBehavior menus ("town_outside", "castle_outside").
 

Dejan

Community Manager
WBNWVCM&B
Maybe one consequence of this change.
It is no more possible to add additional menu (AddGameMenu) & options (AddGameMenuOption) to the EncounterGameMenuBehavior menus ("town_outside", "castle_outside").
We tested this but couldn't reproduce it on 1.6.1. Could you please provide in what kind of scenario you tried this/more information on how to reproduce it?
The about a things you continue to work on; I hope there will be an update about our Animation request in the near future. Because we do not want our animation to go to waste.
It's on the list, as you know. Will keep you informed.
 

AnotherJoke

Recruit
Time to update the mod again and remove the disgusting work arounds for internals :smile:. I really appreciate the changes!
 
Top Bottom