While I like the idea that Druids got a shapeshifting-focused class, the actual implementation leaves something to be desired for me. As such, I've been poking around the files somewhat (Dear Obsidian: Thanks for making these JSON!) but I'm still learning things.
First question: How are Parameter Hash values calculated? In a block such as the following:
"VisibilityConditional": {
"Operator": 0,
"Components": [{
"$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
"Data": {
"FullName": "Boolean ProgressionTableHasAbility(Guid)",
"Parameters": ["60086dac-cfd6-4441-9e29-f63bfc8772d3"],
"UnrealCall": "",
"FunctionHash": -1793712019,
"ParameterHash": 1248234653
},
"Not": false,
"Operator": 0
}
]
}
I don't know if ParameterHash is required, but it's the same wherever "60086dac-cfd6-4441-9e29-f63bfc8772d3" happens to occur. (This is the ID for Spiritshift: Stag.) Fortunately, Spiritshift Stag (Shifter) is defined as a distinct ability so it can be tweaked without affecting the base class. Unfortunately, It's not referred to in a block like this anywhere in the files so I don't know the hash value for "9271e6bb-5ba7-461c-9ca1-8faa58852052". The function still seems to work when given a dummy value, but it would be nice to know how it's intended to be found.
Second question: How do you remove things? When just editing a file I can just actually remove them, but how would one go about overwriting some component of an ability entirely, without providing an alternative? I know that the heal at the end of spiritshift stag is applied with an instantaneous status effect with ID "191d2701-43c8-43ef-a49e-d26169bacc05". The easiest solution would be to redefine it to do nothing, but is there some other way to functionally remove it?