Jump to content

Giving Spiritshifting Forms abilities at specific levels


Recommended Posts

As the title says: Is it possible to give Spiritshifting Forms new abilities at specific Levels?

 

The problem so far: Whenever i add them to the Temporary Abilities they are available instantly regardless of the level requirements of the ability. Which tables should i rework? Have i to rebuild the progression table maybe? How?

 

Thanks a lot for your input! ;)

Link to comment
Share on other sites

Yep, that's progression table work which you cannot presently modify line by line.

 

It's not really a matter of rebuilding the progression tree, just the PT_Druid entry of the progressiontables.gamedatabundle. Copy that entry into a new file and make your adjustments within the entry. It's not as much work as it seems, and the only real downside is the lack of compatibility with other mods that also change the PT_Druid entry.

Link to comment
Share on other sites

Ok, let me try to understand more.

 

You're trying to add abilities to the Druid that are only available during spiritshift. Correct?

 

The first step is telling the game (via the PT_Druid) that these abilities belong to the Druid, and when they are unlocked. As before, make a copy of the PT_Druid entry. Then add an ability entry for one of your new abilities. This entry should have the same ID as the ability you've created.

 

Then you need to modify this new ability in the progression table. If I'm understanding you correctly, I suggest the following:

 

It should be AutoGrant.

A condition should be having the appropriate spiritshift ability.

The ability should be invisible in the ability tree.

 

I'm on mobile ATM, but I can explain more later. And perhaps it's time for a progression tree tutorial.

  • Like 1
Link to comment
Share on other sites

You are absolutely correct @Armakoir - thats my idea: Giving only the Spiritshift Forms new abilities at higher PL´s!

 

As i have "nearly zero" modding experience (The Druid Mod is the very first one i ever tried) i am more or less using trial-and-error while trying to understand what other mods are doing. The Progression Table looks "easy" but i fear that i am missing some strings. I am also not sure what some of the entries are meaning at all.

 

However: At the moment searching through the tables and trying to mod them is more fun (and more challenging) then playing the game itself. :biggrin:

 

If you wanna help me to get through this: Would be great!! :yes:

 

P.S. If you can give me a step-by-step example of a build-in-new-ability for a Spiritshift Form i would understand it for sure!

Edited by Harpagornis
Link to comment
Share on other sites

Of course I'll help!

 

First, I'm assuming you have a new ability built in another file (let's call it "new_abilities.gamedatabundle" for reference) with new unique GUID.

 

Second, we'll call the copy of the entire Druid progression table "pt_druid.gamedatabundle". This copy of the very large PT_Druid entry should contain a lot of individual ability references.

 

Third, copy ANY of the individual ability references within the progression table and place that copy at the very top of the of the AbilityUnlocks section.

  • Like 1
Link to comment
Share on other sites

Now, take the copied individual ability reference and "reset" it. It should look something like this: https://i.imgur.com/qeBtUEa.png

 

ProTip: the game does not crash or reject a "zeroed" AddAbilityID

 

Now take these steps:

1. Make sure the Druid ID is in "ClassID"

2. Copy the new ability ID from new_abilities.gamedatabundle and place it in "AddAbilityID"

3. Set "MinimumPowerLevel" to something low and easily testable (probably 1)

4. Change the "Note" to something you'd prefer

5. In your situation, maintain "IsMutuallyExclusiveUpgrade" as false

 

There's more to do, but now is a good time for a quick test. Load the game with your mod and check the Druid Ability Tree. You should see the whole vanilla Druid tree as well as your new ability (but you should not have the ability). Edit: you could also now test the functionality of the ability despite the fact that it's not attach to spiritshifting.

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

Now we'll start to attach the new ability to a spiritshift ability.

 

What you have probably done is put the spiritshift ID into "RequiresAbilityID" and you've also used "AutoGrant", and when you load the mod you're automatically granted the ability despite the fact that you don't have the spiritshift, is that correct?

The thing to know here is, as far as I can tell, "RequiresAbilityID" is mostly associated with the Ability Tree UI and it is not sufficient for conditioning abilities. To be honest, in your situation (which I think should include making the new ability invisible in the ability tree) you can probably leave the "RequiresAbilityID" zeroed.

 

Instead, what you're going to do is create a "Conditional". Search for "HasAbility" in the PT and copy the conditional into your new ability reference. It should look like this: https://i.imgur.com/NSHMDZa.png

Now find the appropriate spiritshift ability and place that ID into "Parameters". Also, put the "UnlockStyle" to "AutoGrant" (the G must be capitalized).

 

So, now you can test again if you want. What should happen is this: if you create a new Druid and select the appropriate spiritshift, you should be automatically granted the new ability at PL 1. Now test a negative case and select a different spiritshift; you should NOT have been autogranted the ability.

  • Like 1
Link to comment
Share on other sites

Now, technically, you're done. You have added a new ability that requires a certain spiritshift.

 

But there's really two more steps.

 

First, you don't really need your new ability to be visible on the Druid ability tree because it is autogranted. (There are reasons to keep it visible, but it depends on what else your doing.) Plus, by making it invisible you learn something very useful about progression trees.

 

Within the "VisibilityConditionals" you're going to create an impossible condition. The simplest way is to tell the game: if this is a Druid show the ability and if this is NOT a Druid show the ability. As for the code, I challenge you to figure it out.

 

Now test just like you did before. The only difference is, you should never see the new ability in the Ability Tree. And with this, you're done with the progression tree.

 

But you probably also want to condition the activation of your ability (for example, the ability can only be activated when the character is actually IN spiritshift). This requires putting a conditional into "ActivationPrerequisites" of the new ability entry in new_abilities.gamedatabundle. The advice here is: you'll be using a conditional associated with StatusEffect from this list: https://eternity.obsidian.net/game-data-formats/conditionals

 

If you set everything up right (and if this is your intention), you should have the following example:

If you select Wolf Spiritshift, you should see the harp_ability_wolfspiritshift ability on your ability bar but not on the ability tree. You should not be able to activate this ability unless that character is currently in wolf spiritshift. If your character chooses any other spiritshift during creation, the new ability should not be on the ability bar.

 

Edit: After you've thoroughly tested the ability and everything seems good, go back to the progression table and adjust MinimumPowerLevel to whatever you intended it to be.

 

 

Ask questions if you have them!

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

Big thanks @Armakoir!

 

In the meanwhile my head is swirling and - even worse: Its not working. What i have done so far:

 

1. I created a new ability file where i copied the data from "Crippling Strike"

2. Renamed the Notes to Shifter Strike

3. Gave it a new unique Ability-ID by altering the last letters ("ID":"1fda55c8-8d5f-47b2-b25d-0ca82c0deddd")

4. Copied the Shifter ID ("568f1c26-1398-4e67-8b81-0f6a60e6cdde") into the ClassID

5. Left the rest of the ability like it was before (error???)

 

After that:

 

1. Created an AbilityUnlock file like in your first image

2. Copied the ClassID

3. Copied the new AbilityID

 

So at the moment i have these two files.

 

I did NOT save the whole Shifter ProgressionTable cause so far there are no other changes. (Another error?)

 

I thought that with the new ability and the unlock conditions it should now show up in the level-up-screen. Its not.

 

Holy cow. A headache is really not good when doing stuff like this... :biggrin:

 

However: Any help or insight is welcome. The first (new) step is always the hardest one. No? :yes:

Edited by Harpagornis
Link to comment
Share on other sites

We'll get it working. Once you learn the basics of modding Deadfire it gets much easier and quicker.

 

For new IDs I use this: https://www.guidgen.com/

 

Right now for progression table changes, you must copy the entire PT_Druid entry. This may be the issue, I'm not entirely sure. I've attached a copy from 2.1beta with an empty ability reference at the top.

 

Start with this and go back through, and we'll narrow down the problem.

pt_druid.zip

Link to comment
Share on other sites

You are the Heroe of my day @Armakoir! :bow:

 

Using your PT and copying in the ID´s suddenly the abilities are popping up. Great!!

 

I am still not sure where the difference is - maybe i have missed some strings.

 

One problem remains: I put in the Bear ID as conditional but the ability is still showing up for all forms (even human).

 

It has to be to Bear ID from the ability table - yes?

Edited by Harpagornis
Link to comment
Share on other sites

Whatever i do the new abilities still are available in Human Form. Therefore i took a look at the original abilities from the Bear: Terrifying Roar.

 

Surpisingly it does NOT has any "ActivationPrerequisites" and there is no entry in the PT. How does the game still knows how to put the roar only to the Spiritshift Bear? So many questions. I will have to take a break... :biggrin:

Edited by Harpagornis
Link to comment
Share on other sites

Whatever i do the new abilities still are available in Human Form. Therefore i took a look at the original abilities from the Bear: Terrifying Roar.

 

Surpisingly it does NOT has any "ActivationPrerequisites" and there is no entry in the PT. How does the game still knows how to put the roar only to the Spiritshift Bear? So many questions. I will have to take a break... :biggrin:

Ok, I think I figured it out! And it's much easier than I originally thought.

 

First, modding the progression table is not necessary!

Second, you only have to modify a single line of code.

 

In your new_abilities.gamedatabundle copy the Spiritshift_Bear_Shifter_SE_ChangeForm entry (67b5a416-ae58-4308-8222-2e1fe3b658c6). Then delete everything from that entry except "TempAbilitiesIDs". It should look like this: https://i.imgur.com/3iWxt3m.png

 

Now add your new ability into those brackets and test!

  • Like 1
Link to comment
Share on other sites

Okay, i can easily get the new ability working with only the Bear BUT the ability is available regardless of the level.

 

I tried to put in a "ActivationPrerequisite" in the new_ability file:

 

"$type":"OEIFormats.FlowCharts.ConditionalCall, OEIFormats","Data":{"FullName":"Boolean IsLevel[Guid,Operator,Int32)","Parameters":["b1a8e901-0000-0000-0000-000000000000","GreaterThanOrEqualTo","4",],"Flags":"","UnrealCall":"","FunctionHash":0,"ParameterHash":0

 

So in theory the level should only available at CL 4 - if i not messed up the code.

 

I also tried to put the "ActivationPrerequisite" into the TemporaryAbilities bracket but then its not showing up at all.

 

Everything seemed so easy... :biggrin:

Edited by Harpagornis
Link to comment
Share on other sites

This is madness. I think that i understand the general how-to and tried again playing with the PT:

 

Modified the PT so the ability unlocks at the specific PL. Works.

 

Then i changed the new_ability and set up "ActivationPrerequisite" using "Booelan Has StatusEffect" putting in the players InstanceID and the Bears ChangeForm ID so the ability should now only show up when shifted to Bear. Right?

 

The result: The new ability is STILL available even in human form.

 

This cannot be... :devil:

Edited by Harpagornis
Link to comment
Share on other sites

I have another idea that might work:

 

Use the PT and replace the Spiritshift_Bear (RemoveAbilityID) with something like Spiritshift_Elder_Bear who got a new AbilityID (and a new_bear file). The linked and reworkd ChangeformID will then tell the Elder_Bear to use all the TemporaryAbilities we want.

 

Can this work? Yes it can! Hopefully... :biggrin:

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