Jump to content

Modding Patch Notes for v2.1.0.0034


Recommended Posts

This is a list of changes from 2.0.0.0029 to 2.1.0.0034 that specifically affect modding the game. Thanks for your feedback and suggestions - we'll continue to implement more of these in the future. The patch notes for other changes to the game can be found here.

Modding Patch Notes for 2.1.0.0034

  • Added a new game data type ModScriptHookGameData, which can be used make some modifications to scenes with a mod. For more information, see this tutorial.
     
  • Mod data that doesn't affect gameplay (atlases, portraits, strings, images) will be loaded when playing God Challenges
     
  • Mods will not be marked as Incompatible unless a game version since the mod's Max Version is marked as breaking
     
  • Added support for loading portraits from mod override folders. The portrait images just need to be in '/gui/portraits/player/male' or '/gui/portraits/player/female'.
     
  • Added support for uploading and consuming mods via the Steam Workshop. For more information, see this guide.
     
  • The game will now load *.globalvariablesbundle files from mod folders.
     
  • (Breaks Enchant UI) Added PrerequisiteItemMod, CostByValueMultiplier, Double2HIngredientCost to RecipeComponent
  • Items no longer must have an existing item mod on them to be enchanted
     
  • PrintInstance console command copies the printed GUID to the clipboard
     
  • Added InverseHealth to StatusEffectValueType enum
  • Added FogRevealRadiusBonus to StatusEffectType
  • ProjectileCountMult status effect now works with the AttackFilter
  • Added TargetType to StatusEffectAttackFilter
  • Added conditional scripts IsUnarmed, IsEquipmentWearEnabled, IsImmobile, IsUnique
  • Added scripts FadeInChildGameObjects, FadeOutChildGameObjects, EncounterStartWave
  • Added BindConditions to SoulbindComponent
  • Added CopyOwnerAbilities to AttackSummonComponent
  • Added DualWeaponFullAttackDamageMultiplier to CombatSettingsComponent
  • Added Prefab to CompanionComponent
  • Added EnableEquipmentWear, FogRevealRadiusBonus, WellLitFogRevealRadiusBonus to GodChallengeComponent
  • Added IsWellLit to MapDataComponent
  • Added IsJunk to ItemComponent
  • Added DurabilityDamage to ItemModComponent
  • Added ItemRepairSettingsComponent
  • Added ActivationPrerequisites, MustDieForCombatToEnd to SigilComponent
  • (Breaking) Renamed MaterialReplacementComponent.OnlySkinnedRenderers to SearchSkeleton
     
  • (Beta Bug) Fixed empty game version numbers in mod manifests breaking loading
  • (Beta Bug) Fixed new game data objects from mods sometimes being incorrectly unloaded
  • Like 5
Link to comment
Share on other sites

  • 2 weeks later...

Not sure if this should be flagged as a bug or not, but in the manifest.json if the "Max" field in "SupportedGameVersion" is left blank, a mod will not load into the Mod Manager.

 

Just found this out when I went to test my Vindictive Faction Ships Battle mod and didn't see it on the Mod Manager list.

 

I had it as the following before:

{
    "Title" : {
        "en" : "Vindictive Faction Ship Battles"
    },
    "Description" : {
        "en" : "Puts four very high level faction ships onto the World Map."
    },
    "Author" : "",
    "ModVersion": "1.0",
    "SupportedGameVersion" : {
        "Min" : "1.1.0",
        "Max" : ""
    }
}

It would not show up in the Mod Manager until I put something in the Max field.

 

This is new behavior as of 2.1.

Link to comment
Share on other sites

I hit "continue" from the title screen and my mods didn't seem to be present- i consoled "giveitem [my item]" and the game wasn't seeing them. I quit to the title screen and reloaded which seemed to fix it, but it looks like there's something weird going on with mods on load. I'm going to try a couple of things to see exactly what conditions cause them to appear/not appear.

 

E: it looks like you have to go to the mod manager and hit Refresh for mods to show up in-game

Edited by house2fly
  • Like 2
Link to comment
Share on other sites

BMac... mods that add new subclasses have been broken with this beta update. I have tested this with my two mods and those of NocturnalTrance.

 

It seems like new CharacterSubClassGameData entries are no longer being recognized. All of the other tweaks that I've made are working (including progressiontable changes, new abilities, tweaks to existing abilities, and tweaks to existing subclasses). I have adjusted the formatting of these entries and moved them to new bundles hoping to cause other issues within a given bundle, but I'm not creating problems. The entries themselves are good; they simply are not recognized in both saved games and new game startups.

 

Please fix this before release.

Edited by Armakoir
  • Like 2
Link to comment
Share on other sites

Many thnks for ability tree preview and gloabalvariables exposed :yes:

 

but there are some issue with mods (e.g. check above and below reply) :

 

a lot of mods seem broken after this beta , what advice could we give to users about that (and also for future patches)  ?

Remove mods till we update them ?

 

https://forums.obsidian.net/topic/105431-new-patch-broken-override-stringtables/

Edited by kilay
  • Like 1
Link to comment
Share on other sites

Bug: Game v2.1.0.0021 no longer allows you to add new cyclopedia entries.1
 
It is no longer possible to add new cyclopedia entries through .gamedatabundle-files.
 
The game wont recognize the following GameDataObjects:

 

{
    "GameDataObjects": [{
        "$type": "Game.GameData.GlossaryEntryGameData, Assembly-CSharp",
        "DebugName": "GlossaryEntry_The_Wheel",
        "ID": "e0063488-d45e-4c0f-a428-ce446bbaf862",
        "Components": [{
            "$type": "Game.GameData.GlossaryEntryComponent, Assembly-CSharp",
            "TermCyclopedia": 288372001,
            "TermGui": -1,
            "DescriptionCyclopedia": 288372002,
            "DescriptionGui": -1,
            "CategoryID": "c2b238b2-c72b-4770-b847-43d18678477c",
            "ShowInJournal": "true",
            "CaseSensitive": "false",
            "AutomaticallyAddLinks": "true",
            "LinkedEntriesIDs": [],
            "ParentObjectID": "9a09068c-0b52-4a44-bb98-0119de678068"
        }]
    }]
}

 

 

This GlossaryEntryGameData will no longer works as intended when used in the latest beta patch (v2.1.0.0021).
 
The game still applies the AutomaticallyAddLinks property in a correct manner and highlights the new keyword (both in the cyclopedia and in dialogue text) although you wont be able to click on the link as it doesn't lead to a cyclopedia page, nor will a tooltip pop-up when hovering the hyperlink in dialogue text.
 
The .stringtable entries I'm trying to link to looks like this:
 

 

<Entry>
   <ID>288372001</ID>
   <DefaultText>The Wheel</DefaultText>
   <FemaleText />
</Entry>
<Entry>
   <ID>288372002</ID>
   <DefaultText>Thought to be of Engwithian design, The Wheel—also known as “&lt;link="glossary://GlossaryEntry_Beraths_Wheel"&gt;Berath's Wheel&lt;/link&gt;” or the “Wheel of Life and &lt;xg&gt;Death&lt;/xg&gt;”—facilitates the process of reincarnation. Upon the death of a living creature, its soul enters the In-Between. When the In-Between grows full, souls move on to the Beyond where they wait to be redistributed into new bodies, new lives.

Without the Wheel, and therefore the means of moving into the Beyond, it is speculated that the souls of all who die would &lt;i&gt;remain&lt;/i&gt; in the In-Between. The Beyond would empty, eventually ending life as we know it in Eora.

It is not known, however, when the Wheel was constructed or what, if anything, came before it.</DefaultText>
   <FemaleText />
</Entry>

 


Although I don't think these entries specifically are causing the bug as I've been able to get them to load properly by referencing them from an already existing GlossaryEntryGameData by doing this:
 

 

{
    "GameDataObjects": [{
        "$type": "Game.GameData.GlossaryEntryGameData, Assembly-CSharp",
        "DebugName": "GlossaryEntry_Beraths_Wheel",
        "ID": "6b1a6b57-477a-425f-b419-fb1bf57e0b2f",
        "Components": [{
            "$type": "Game.GameData.GlossaryEntryComponent, Assembly-CSharp",
            "TermCyclopedia": 288372001,
            "TermGui": -1,
            "DescriptionCyclopedia": 288372002,
            "DescriptionGui": -1,
            "CategoryID": "c2b238b2-c72b-4770-b847-43d18678477c",
            "ShowInJournal": "true",
            "CaseSensitive": "false",
            "AutomaticallyAddLinks": "true",
            "LinkedEntriesIDs": ["6b1a6b57-477a-425f-b419-fb1bf57e0b2f", "68661c8d-52fa-4d8a-a722-0119e7403484", "30dd45b1-97e5-4d29-8a20-734a96df1feb"],
            "ParentObjectID": "9a09068c-0b52-4a44-bb98-0119de678068"
        }]
    }]
}

 


I used the already existing GlossaryEntry_Beraths_Wheel to link to my new stringtable entries and it worked flawlessly. In other words: this issue seems to be isolated to new GameDataObjects and doesn't seem to affect already existing ones.
 
What I've done to try and isolate the bug:

  • I double checked to see if the game uses either the DebugName or the UUID anywhere else in the game files (they're not).
  • I've tried running the game with a completely cleaned out "override" folder to see if the issue stems from any other mod (it doesn't).
  • I've gone through the output.txt log to try and narrow things down further but haven't seen any errors that might be causing this bug.
    Although I should mention that the game doesn't like using the same entry name twice as I get this error in the output log:
    ERROR: Duplicate glossary entry 'Glamfellen' in entries 'glossaryentry_Glamfellen' and 'GlossaryEntry_Cultures_Glamfellen_Subcat'.
    Unfortunately fixing that error (caused by using the TermCyclopedia ID 1050 twice) did not resolve this issue.

I'm not sure what else I can be doing at this point except forwarding my findings to you BMac and the rest of the development team with the hope that this will be resolved before the patch goes live.
 
Only thing that springs to mind is that it might be caused by the following feature added in the patch:

  • Mod data that doesn't affect gameplay (atlases, portraits, strings, images) will be loaded when playing God Challenges

Maybe the game, somehow, thinks that I am playing with God Challanges turned on (I'm not) and thus wont load new GameDataObjects?
 
---
 
All in all, awesome work on the new patch–really digging the new Enchantment UI and the ability to see your skill tree outside of leveling up, very nice additions to the game for sure!
 
Kind regards,
S.
 
---
 
Update on my situation:
 
I've managed to get the game to load the gamedatabundles but there doesn't seem to be anything in particular that makes them load. I've been trying to have a look at the output.txt log to try and figure out if there is something going on behind the scenes that I can fix but I haven't been able to see anything of note so far.
 
I will attach the output logs to this post in the hopes that they will make more sense to someone else.

 
output_log_020918.txt – Couldn't get any gamedatabundles to load in session.
output_log_020918_v2.txt – I was able to get the mods to load properly only on the last save game I loaded.
output_log_020918_v3.txt – I started a completely new game to eliminate the possibility that my old save was causing the problem but the gamedatabundle files didn't load during this session either.

 

--

 

Update #2:

For anyone reading this post (but skipping what BMac says just down below) this is a known issue that OBS is fixing before 2.1 goes live!

output_log_020918.txt

output_log_020918_v2.txt

output_log_020918_v3.txt

Edited by Spherical
  • Like 2

Editor and Designer
Enhanced User Interface
Nexus Mods | Steam Workshop

Link to comment
Share on other sites

None of my mod items work with the new Enchantment Interface: the mod items shows no recipes

 

pAvMO93.jpg

Stupid question probably, but did you change the recipes to fit the format for 2.1?  The recipes have moved from VisibilityConditions to CreationConditions:

 

Before 2.1:

{
			"$type": "Game.GameData.RecipeData, Assembly-CSharp",
			"DebugName": "Recipe_Mirrored_Scales",
			"ID": "42dc5090-a8c6-49d4-97d5-7a75652a74f4",
			"Components": [{
					"$type": "Game.GameData.RecipeComponent, Assembly-CSharp",
					"DisplayName": 553,
					"CraftingLocation": "None",
					"CategoryID": "7bad3803-0dfd-473a-a857-326f4853a4d6",
					"VisibilityConditions": {
						"Operator": 0,
						"Components": [{
								"$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
								"Data": {
									"FullName": "Boolean HasItemMod(Guid)",
									"Parameters": ["a50a5a11-8083-4af2-abfc-5cb5f80481b8"],
									"Flags": "",
									"UnrealCall": "",
									"FunctionHash": 1518072523,
									"ParameterHash": 747015182
								},
								"Not": true,
								"Operator": 0
							}, {
								"$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
								"Data": {
									"FullName": "Boolean HasItemMod(Guid)",
									"Parameters": ["80ca92ff-aa03-4eb4-8375-d381d7ba15a7"],
									"Flags": "",
									"UnrealCall": "",
									"FunctionHash": 1518072523,
									"ParameterHash": -668226597
								},
								"Not": true,
								"Operator": 0
							}
						]
					},
					"CreationConditions": {
						"Operator": 0,
						"Components": []
					},
					"Cost": 3000,
					"CanModifyWeapons": "false",
					"CanModifyArmor": "false",
					"CanModifyShields": "false",
					"CanModifySpecificItemsIDs": ["935271c9-8edd-47a2-9be1-dabd732d7e71"],
					"Ingredients": [{
							"ItemID": "2698426e-c4ee-457b-8d1c-d55823f06c66",
							"Quantity": 1,
							"IsDestroyed": "true"
						}, {
							"ItemID": "f163ffbf-9539-4e6e-ab78-33fb5519066e",
							"Quantity": 1,
							"IsDestroyed": "true"
						}, {
							"ItemID": "71e7bacc-5b5d-474a-8dd9-9cda84846439",
							"Quantity": 1,
							"IsDestroyed": "true"
						}
					],
					"Output": [],
					"ItemModsToAddIDs": ["80ca92ff-aa03-4eb4-8375-d381d7ba15a7"],
					"ItemModsToRemoveIDs": ["075f6b08-c617-4fd1-a827-13a524f728aa"]
				}
			]
		}

After 2.1:

{
			"$type": "Game.GameData.RecipeData, Assembly-CSharp",
			"DebugName": "Recipe_Mirrored_Scales",
			"ID": "42dc5090-a8c6-49d4-97d5-7a75652a74f4",
			"Components": [{
					"$type": "Game.GameData.RecipeComponent, Assembly-CSharp",
					"DisplayName": 553,
					"CraftingLocation": "None",
					"CategoryID": "7bad3803-0dfd-473a-a857-326f4853a4d6",
					"VisibilityConditions": {
						"Operator": 0,
						"Components": []
					},
					"CreationConditions": {
						"Operator": 0,
						"Components": [{
								"$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
								"Data": {
									"FullName": "Boolean HasItemMod(Guid)",
									"Parameters": ["a50a5a11-8083-4af2-abfc-5cb5f80481b8"],
									"Flags": "",
									"UnrealCall": "",
									"FunctionHash": 1518072523,
									"ParameterHash": 747015182
								},
								"Not": true,
								"Operator": 0
							}, {
								"$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
								"Data": {
									"FullName": "Boolean HasItemMod(Guid)",
									"Parameters": ["80ca92ff-aa03-4eb4-8375-d381d7ba15a7"],
									"Flags": "",
									"UnrealCall": "",
									"FunctionHash": 1518072523,
									"ParameterHash": -668226597
								},
								"Not": true,
								"Operator": 0
							}
						]
					},
					"Cost": 3000,
					"CostByValueMultiplier": 0,
					"Double2HIngredientCost": "true",
					"CanModifyWeapons": "false",
					"CanModifyArmor": "false",
					"CanModifyShields": "false",
					"CanModifySpecificItemsIDs": ["935271c9-8edd-47a2-9be1-dabd732d7e71"],
					"Ingredients": [{
							"ItemID": "2698426e-c4ee-457b-8d1c-d55823f06c66",
							"Quantity": 1,
							"IsDestroyed": "true"
						}, {
							"ItemID": "f163ffbf-9539-4e6e-ab78-33fb5519066e",
							"Quantity": 1,
							"IsDestroyed": "true"
						}, {
							"ItemID": "71e7bacc-5b5d-474a-8dd9-9cda84846439",
							"Quantity": 1,
							"IsDestroyed": "true"
						}
					],
					"Output": [],
					"PrerequisiteItemModID": "075f6b08-c617-4fd1-a827-13a524f728aa",
					"ItemModsToAddIDs": ["80ca92ff-aa03-4eb4-8375-d381d7ba15a7"],
					"ItemModsToRemoveIDs": ["075f6b08-c617-4fd1-a827-13a524f728aa"]
				}
			]
		} 

There's also a PrerequisiteItemModID field that needs something (0's might work).  Checking out most of the other recipes, they seem to usually be tied to a base modification on the item that is being enhanced/replaced, though I haven't checked them all yet.

 

Probably have already done these things, but I thought I would bring it up, just in case. :)

 

===

 

The other new fields are "CostByValueMultiplier": and "Double2HIngredientCost":.  Not sure what happens when those are left off a new item.

Edited by Zap Gun For Hire
  • Like 3
Link to comment
Share on other sites

No, I didn't change. Thanks for pointing me to this!

 

Ok, I got it. There is a new atribute "PrerequisiteItemModID" and this is kinda mandatory now. The new interface is now working for me but I have a lot of work to do.  :banghead:

Edited by TT1
  • Like 3
Link to comment
Share on other sites

Thanks for all the details - I found the bug.  It looks like game data objects from mods are getting unloaded sometimes when they aren't supposed to be.  We'll get this fix in by v2.1 release, and I'll see if we can get more testing time dedicated to mods in the future.
 
That fix should account for most of the issues here - though not any issues with missing strings in modded content. If anyone else is seeing that, I'd like to know which mods you're trying to use.
 

Stupid question probably, but did you change the recipes to fit the format for 2.1?  The recipes have moved from VisibilityConditions to CreationConditions:

There's also a PrerequisiteItemModID field that needs something (0's might work).  Checking out most of the other recipes, they seem to usually be tied to a base modification on the item that is being enhanced/replaced, though I haven't checked them all yet.
 
Probably have already done these things, but I thought I would bring it up, just in case. :)
 
===
 
The other new fields are "CostByValueMultiplier": and "Double2HIngredientCost":.  Not sure what happens when those are left off a new item.

Yeah, you will want to move most of the conditionals on your recipes from VisibilityConditions to CreationConditions. This is just because in the old UI, we set up non-qualifying mods to hide to reduce confusion. Now that we have the new UI, we can show all these mods in a way that's actually understandable. The only thing you need VisibilityConditions for is if you actually wanted to hide a recipe entirely until the user meets some condition.

You do also need to fill in the PrerequisiteItemModID in order for the UI to understand how to display your recipes in the tree.

Though these particular changes are necessary to have the mods play nice with the UI, in general, it's fine if you're missing fields that have been added (like CostByValueMultiplier). They'll automatically have an appropriate default value.

 

I should have marked that as a breaking change because of the UI - I'll do that now.

  • Like 6
Link to comment
Share on other sites

Any chance of adding a copy log to clipboard

Maybe only if console active - maybe even a copytoclipboard console command?

 

I know printinstance does this automatically but that's not the only time it's useful so such a feature is desirable and I imagine extremely easy at your end

OK Fair warning has been applied

 

I'm gonna move the domain to https://perspak.com early Feb but will keep all content

 

There are reasons behind this move which basically boil down to unifying my release schedule

 

My friends are welcome to play (I'll set you up your own areas if you desire them)

 

Please note that this process is messy so may take a few weeks 

Link to comment
Share on other sites

Added support for loading portraits from mod override folders. The portrait images just need to be in '<mod-folder>/gui/portraits/player/male' or '<mod-folder>/gui/portraits/player/female'.

 

For what it's worth, companion portraits can also be modded in this fashion as well

'<mod-folder>/gui/portraits/companion'

 

Now we just need Aarik to package up his durance photoshops into a Church Of Durance mod! :p

  • Like 3
Link to comment
Share on other sites

 

Added support for loading portraits from mod override folders. The portrait images just need to be in '/gui/portraits/player/male' or '/gui/portraits/player/female'.

 

For what it's worth, companion portraits can also be modded in this fashion as well

'/gui/portraits/companion'

 

Now we just need Aarik to package up his durance photoshops into a Church Of Durance mod! :p

 

That's a good point, though those portraits won't be selectable by player characters and hired adventurers, of course.

  • Like 1
Link to comment
Share on other sites

Hey!  Sorry, very new to the mod world - question for anyone who can answer, does this:

 

"Mod data that doesn't affect gameplay (atlases, portraits, strings, images) will be loaded when playing God Challenges"

 

Mean I can change the Reckless Brigandine thumbnails and animation to look like a regular Brigandine? I like the armor but not so into the Huana Brigandine look, and have modded it to look like the regular Brigandine.  Want to do the God challenges and would love it to work.

 

Any help greatly appreciated!!

“How do you 'accidentally' kill a nobleman in his own mansion?"

"With a knife in the chest. Or, rather, a pair of knives in the chest...”

The Final Empire, Mistborn Trilogy

Link to comment
Share on other sites

 

Added support for loading portraits from mod override folders. The portrait images just need to be in '/gui/portraits/player/male' or '/gui/portraits/player/female'.

 

For what it's worth, companion portraits can also be modded in this fashion as well

'/gui/portraits/companion'

 

Now we just need Aarik to package up his durance photoshops into a Church Of Durance mod! :p

 

Just need to get the water color versions done! 

  • Like 2
Link to comment
Share on other sites

Hey!  Sorry, very new to the mod world - question for anyone who can answer, does this:

 

"Mod data that doesn't affect gameplay (atlases, portraits, strings, images) will be loaded when playing God Challenges"

 

Mean I can change the Reckless Brigandine thumbnails and animation to look like a regular Brigandine? I like the armor but not so into the Huana Brigandine look, and have modded it to look like the regular Brigandine.  Want to do the God challenges and would love it to work.

 

Any help greatly appreciated!!

No modded game data files will be loaded, so you won't be able to change what icons or model visual data the armor is pointing to (well, the change won't be loaded in Magran's Fires). However, you could find the names of the icons that the Reckless Brigandine is pointing to and override those icons in a custom atlas as described in this tutorial.  You could override them with any image you like, including the images from the normal Brigandine.

 

Just need to get the water color versions done! 

daarik.png

  • Like 3
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...