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

Help please - Modlet for progression changes.

TheSaffen

New member
I'm trying to learn how to do modlets, and I have been fiddling with changing the values some perks gives, below is an example of what I tried, it dosn't work (or I wouldn't post :p ) but editing the files directly does - so clearly my syntax is wrong. Any help?

Code:
<?xml version="1.0" encoding="utf-8"?>
<configs>
<!-- Change damage for headshots on the perk SkullCrusher-->
<set xpath="/progression/perk[@name='perkSkullCrusher']">
<effect_group>
		<passive_effect name="DamageModifier" operation="perc_add" value="10,40" level="1,4" tags="head"/>
		<passive_effect name="DamageModifier" operation="perc_add" value="50" level="5" tags="head"/>
		<passive_effect name="DismemberChance" operation="base_add" value="0.05,0.15" level="3,5" tags="head"/>
</effect_group>

</set>
 
With SET you need to change a specific value in a specific spot.

Such as:

Code:
<set xpath="/items/item[@name='meleeHandMaster']/property[@class='Action0']/property[@name='Range']/@value">1.35</set>
Changes Range to 1.35

You will need to separate out your changes and change each one individually rather than lump together like that.

 
So this:

Code:
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@value=">10,40"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@level=">1,4"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@value=">50"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@level=">5"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DismemberChance']/@value=">0.10,0.5"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DismemberChance']/@level=">1,5"></set>
Would correspond to these lines in the progression.xml ?

Code:
<passive_effect name="DamageModifier" operation="perc_add" value="10,40" level="1,4" tags="head"/>
<passive_effect name="DamageModifier" operation="perc_add" value="50" level="5" tags="head"/>
<passive_effect name="DismemberChance" operation="base_add" value="0.1,0.5" level="1,5" tags="head"/>
 
So this:

Code:
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@value=">10,40"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@level=">1,4"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@value=">50"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@level=">5"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DismemberChance']/@value=">0.10,0.5"></set>
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DismemberChance']/@level=">1,5"></set>
Pretty close! :) You are just missing the parent node of "perk" and you had extra >, = and " in there. This should work for you:

Code:
<set xpath="/progression/perks/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@value">10,40</set>
<set xpath="/progression/perks/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@level">1,4</set>
<set xpath="/progression/perks/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@value">50</set>
<set xpath="/progression/perks/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier']/@level">5</set>
<set xpath="/progression/perks/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DismemberChance']/@value">0.10,0.5</set>
<set xpath="/progression/perks/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DismemberChance']/@level">1,5</set>
 
Last edited by a moderator:
Okay, that works - except - not quite. Since there is two different lines, one for level 1-4 and one for 5 - and my code (I'm guessing) dosn't see the difference, then is it possible the code does the first (level 1-4) then writes over that with the level 5 one? I don't see a big difference when testing it - but when I commented out the level 5 one I suddenly saw the changes.

Is it possible to adjust the code so it sees that difference? The original code (in progression.xml) is:

Code:
<perk name="perkSkullCrusher" parent="skillMeleeCombat" name_key="perkSkullCrusher" desc_key="perkSkullCrusherDesc" icon="ui_game_symbol_skull_crusher">
	<level_requirements level="1"><requirement name="ProgressionLevel" progression_name="attStrength" operation="GTE" value="1" desc_key="reqStrengthLevel1"/></level_requirements>
	<level_requirements level="2"><requirement name="ProgressionLevel" progression_name="attStrength" operation="GTE" value="3" desc_key="reqStrengthLevel3"/></level_requirements>
	<level_requirements level="3"><requirement name="ProgressionLevel" progression_name="attStrength" operation="GTE" value="5" desc_key="reqStrengthLevel5"/></level_requirements>
	<level_requirements level="4"><requirement name="ProgressionLevel" progression_name="attStrength" operation="GTE" value="7" desc_key="reqStrengthLevel7"/></level_requirements>
	<level_requirements level="5"><requirement name="ProgressionLevel" progression_name="attStrength" operation="GTE" value="10" desc_key="reqStrengthLevel10"/></level_requirements>

	<effect_group>
		<requirement name="HoldingItemHasTags" tags="melee"/>
		<passive_effect name="DamageModifier" operation="perc_add" value="0.25,1" level="1,4" tags="head"/>
		<passive_effect name="DamageModifier" operation="perc_add" value="1.5" level="5" tags="head"/>
		<passive_effect name="DismemberChance" operation="base_add" value="0.05,0.15" level="3,5" tags="head"/>
		<effect_description level="1" desc_key="perkSkullCrusherRank1Desc"/>
		<effect_description level="2" desc_key="perkSkullCrusherRank2Desc"/>
		<effect_description level="3" desc_key="perkSkullCrusherRank3Desc"/>
		<effect_description level="4" desc_key="perkSkullCrusherRank4Desc"/>
		<effect_description level="5" desc_key="perkSkullCrusherRank5Desc"/>
	</effect_group>
</perk>
 
You will want to use additional conditions in order to specify which one you are trying to target.

Such as: (targets it by name and level)

Code:
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier' and @level='1,4']/@vaule=">0,40</set>
You can add multiple conditionals in your 'search' string so you can narrow it down pretty specifically.

 
You will want to use additional conditions in order to specify which one you are trying to target.
Such as: (targets it by name and level)

Code:
<set xpath="/progression/perk[@name='perkSkullCrusher']/effect_group/passive_effect[@name='DamageModifier' and @level='1,4']/@vaule=">0,40</set>
You can add multiple conditionals in your 'search' string so you can narrow it down pretty specifically.
Just remember to include each parent element in the code. Perk is a child of perks. ;)

 
Back
Top