• If you have a mod, tool or prefab, please use the Resources section. Click Mods at the top of the forums.

Help specifying perk point cost per INDIVIDUAL rank (not cost_multiplier_per_level)!

Fuhtuhwuh

New member
Hey! 

New to modding, just wanting to do some relatively simple changes. I've got them all down, but when I've got to the final thing I wanted to do (Should have checked first...) I realized I have no idea how! It seems like it'd be so simple, y'know?

I did some small balances to most of my perks, and based them around certain ranks costing more (like landmark upgrades, instead of each upgrade being of relatively similar value) but I can't, for the life of me, figure out how to specify if I want rank 2 and 3 to cost 2 perk points (with 1, 4, 5 needing only 1 perk point). Any time I try to add in/remove/append ANYTHING to separate them (like adding in a level="1,2,3,4,5" and changing base_skill_point_cost="1" to "1,2,2,1,1") it fails to parse when I try and load in. (Or just doesn't have the effect I want)

https://imgur.com/a/fLOIqdY - For example, on this image, how would I go about making it so level 2 and 3 of perkDeadEye cost 2 perk points, with levels 1, 4, 5 costing 1? It's been driving me crazy, hours of searching and reading up on XMLs, and the IF/ELSE conditionals that a22 added in and it's either not helpful or just going straight over my head entirely. Reddit hasn't been able to help (as of yet), so I'm turning to the forums in the hope a more specific kind of community can help me!

If it's definitively NOT possible, I'd love to know now before I invest another day of hair pulling :D

Cheers!

 
First of all, xml is text so you are making it harder for anyone answering you if you post pictures of it. For one thing, nobody can cut and paste from a picture. The editor has a code tag that even understands xml and highlights it correctly

Now, the default progression is handled in this line:

<!--values here are simply base values for any attribute that doesn't override it. -->
<attributes min_level="1" max_level="10" base_skill_point_cost="1" cost_multiplier_per_level="1.14">




The comment tells you that you could override that base_skill_point_cost. I am very rusty in modding so I only have a guess, someone else will hopefully correct me:

<level_requirements level="2"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="3" desc_key="reqPerceptionLevel03"/>
<effect_group>
<requirement name="ProgressionLevel" progression_name="perkDeadEye" operation="Equals" value="3">
<passive_effect name="base_skill_point_cost" operation="base_set" value="2"/> </requirement>
</effect_group>
</level_requirements>





I am not sure if it has to be done that way or you can simply add the requirement line to some effect_group below. If nobody corrects me you will have to try it out and if it doesn't work that way experiment with the syntax.

But principally the answer is: Definitely yes, you can

 
Thank you! 

You know what's worse? I genuinely had the thought of "Text or Image?" and my still awake at 5am mind just went "Image, hell yeah brother"... noted, I'll stick to text form :D
 

I've tried the above code, if it's under an effect_group it fails parse with "base_skill_point_cost" not found" If I try to put the code, without the effect_group, anywhere (before requirements, in them, after them, under the normal set of effect_groups) it just has 0 effect (or fails parse for the above reason)

If I try to place any code relevant to the perkDeadEye outside of the <perk name="perkDeadEye" (to) </perk>, it fails parse as it says a perk with the same key already exists. It says the skill point cost can be overridden, but I'm failing to see how? At least, how to specify it to a specific perk. Tried all the ways I can think of, but I just can't find out how to alter the <perks> root values, as the skill points cost is only found under the <attributes> and <perks> roots, from outside the <perk name="perkDeadEye"/> without it failing parse due to the above "same key already exists" thing.

Anything I alter WITHIN the <perk> root for DeadEye just does not recognize base_skill_point_cost 😕 (Or cost_multiplier_per_level)

EDIT: I also tried placing everything from within the <effect_group></effect_group> you sent under <perks>, outside of <perk>, but that fails parse for the same reason of "requested value 'base_skill_point_cost' was not found." before loading me in game (shows 0 perks in the skill tree)

 
Last edited by a moderator:
For the cost to unlock the perk, it needs to be in the following location:

    <perk name="perkDeadEye" parent="skillPerceptionCombat" name_key="perkDeadEyeName" desc_key="perkDeadEyeDesc" icon="ui_game_symbol_map_cursor">
        <level_requirements level="1"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="1" desc_key="reqPerceptionLevel01"/></level_requirements>
        <level_requirements level="2"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="3" desc_key="reqPerceptionLevel03"/></level_requirements>
        <level_requirements level="3"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="5" desc_key="reqPerceptionLevel05"/></level_requirements>
        <level_requirements level="4"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="7" desc_key="reqPerceptionLevel07"/></level_requirements>
        <level_requirements level="5"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="10" desc_key="reqPerceptionLevel10"/></level_requirements>






Maybe try to add base_skill_point_cost to each of the level requirements.  For example:

        <level_requirements level="2"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="3"  base_skill_point_cost ="2" desc_key="reqPerceptionLevel02"/></level_requirements>




or maybe try
 

        <level_requirements level="1">
            <requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="1" desc_key="reqPerceptionLevel01"/>
            <requirement name="base_skill_point_cost" value="2"/>
        </level_requirements>




Though I don't know if any of this will work

Another way to get what you want (by thinking outside the box) is by changing when the perks unlock.

So right now DeadEye unlocks level 2 at Perception 3.  If you change that the Perception 4 unlock, that is the same as needing two points to unlock.

 
        <level_requirements level="2"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="3"  base_skill_point_cost ="2" desc_key="reqPerceptionLevel02"/></level_requirements>



Code:
        <level_requirements level="1">
            <requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="1" desc_key="reqPerceptionLevel01"/>
            <requirement name="base_skill_point_cost" value="2"/>
        </level_requirements>



Tried both of these, unfortunately it fails parse for the same reason "requested value 'base_skill_point_cost' was not found." 😕

The changing the level is a good call, I'll do that if I can't figure out how to change perk point cost! Thank you.

 
Another idea: Try to use skill_point_cost instead of base_skill_point_cost inside level_requirements. Either as "name=... value=" or directly as "skill_point_cost="1"

Or maybe this:

<perk name="perkDeadEye" parent="skillPerceptionCombat" base_skill_point_cost="2" name_key="perkDeadEyeName" desc_key="perkDeadEyeDesc" icon="ui_game_symbol_map_cursor">
<level_requirements level="1"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="1" desc_key="reqPerceptionLevel01"/></level_requirements>
</perk>

<perk name="perkDeadEye" parent="skillPerceptionCombat" skill_point_cost="3" name_key="perkDeadEyeName" desc_key="perkDeadEyeDesc" icon="ui_game_symbol_map_cursor">
<level_requirements level="2"><requirement name="ProgressionLevel" progression_name="attPerception" operation="GTE" value="1" desc_key="reqPerceptionLevel01"/></level_requirements>
</perk>
...




Note I tried for both ways with and without base_ here.

 
Both ways have no effect, unfortunately. It passes parse and doesn't mess anything up, it just ignores both the base_skill_point_cost and skill_point_cost strings when placed within the requirements for any of the levels. (Placing it outside of the requirements makes it fail parse with the requested value not found still) 😕

Currently using what BFT2020 recommended, with just a few small alterations to balance the perks a bit better to match the reduced perk cost + increased attribute requirements. I'd love to get it working the way I wanted but it's really starting to seem like it isn't possible :(  

 
Back
Top