Jump to content

Modding Subclasses


Recommended Posts

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?

Link to comment
Share on other sites

You should set the hashes to 0 or just omit them and they'll be automatically handled by the game.

 

You can't remove a game data object from the game.  You can, as you said, override it with an effect that does nothing ("None" type), or you can instead override the ability(s) that reference the effect and remove the GUID for it from their status effect lists.

  • Like 3
Link to comment
Share on other sites

Very nice. I think it'd be cool to see a Steel Garrote paladin subclass modded in. From what I understand the subclass abilities are already in the game but only usable by NPCs.

 

Would save a lot work using the existing versions I would think (unless balancing changes are required)

  • Like 2
Link to comment
Share on other sites

Very nice. I think it'd be cool to see a Steel Garrote paladin subclass modded in. From what I understand the subclass abilities are already in the game but only usable by NPCs.

 

Would save a lot work using the existing versions I would think (unless balancing changes are required)

 

Yeah also it seems the spells of Woedica priest are already in the game, and I'd like to play both subclasses because they sounds very interesting :) The choking LoH and spiritual claws which benefits from monk transcendent suffering :)

  • Like 1
Link to comment
Share on other sites

And maybe Monastic Unarmed Training as well...? ;)

 

Hmm but is strangling affected by unarmed proficiency? If anyone would know it'd be you  ;)

Steel Garrote: Lay on Hands (on throat)

 

I could seriously get behind that RP-wise

Edited by fortuntek
Link to comment
Share on other sites

No, I meant the summoned weapons (fists) of Priests of Woedica. Tried them yesterday on a monk: pretty awesome. Didn't test Monastic stuff though.

 

I'm 99,999% sure that unarmed bonuses don't work for Lay on Hands, even if it's the one from Steel Garrotte guys. :)

Edited by Boeroer

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

  • 2 weeks later...

Hey, I'm back.

 

It's interesting looking at druid shapeshift forms, as they are not all defined identically in the code. In particular, Spiritshift Wolf (Shifter) uses a completely unique "transform" status effect. The other 4 shifter versions use the status effect shared with the normal version, but have a durationOverride set to extend it out to 22 seconds base. (Wolf also has this set, but it still functions normally if you remove it. The others break in some small ways.) Going forward, are these going to be separate? Should I plan for 1.0 being like wolf, or being like the other 4? I guess I can find out for myself in a week or so, but I am fairly curious.

 

Edit: For anyone else who was curious, they're all like beta Wolf in 1.0.

Edited by HiddenWings
Link to comment
Share on other sites

×
×
  • Create New...