Jump to content

Creating a custom buff?


Recommended Posts

I am working on a mod and I want a custom electrical/shocking buff to apply under certain situations. I copied the shock buff from the games Buffs.xml file to the mods Buffs.xml file. Below is the stock shocking buff.


    <buff name="buffShocked" description_key="buffShockedDesc" tooltip_key="buffShockedTooltip" icon="ui_game_symbol_electric_power" name_key="buffShockedName" icon_color="255,0,0">
        <damage_type value="electrical"/>
        <stack_type value="duration"/>
        <duration value="4"/>
        <update_rate value="1"/>
        <display_value value="$buffShockedDisplay"/>
        <display_value_format value="time"/>

        <effect_group>
            <!-- Blinks the display -->
            <passive_effect name="BuffBlink" operation="base_set" value="2" duration="0,3" tags="buffShocked"/>
        
            <triggered_effect trigger="onSelfBuffStart" action="GetBuffDuration" reference="$shockDurationMax"/>
            <triggered_effect trigger="onSelfBuffStart" action="GetBuffDuration" reference="$buffShockedDisplay"/>
            <triggered_effect trigger="onSelfBuffStart" action="ModifyCVar" cvar="$buffShockedDisplay" operation="set" value="4">
                <requirement name="CVarCompare" cvar="$buffShockedDisplay" operation="LTE" value="0"/>
            </triggered_effect>

            <triggered_effect trigger="onSelfBuffStack" action="GetBuffDuration" reference="$buffShockedDisplay"/>

            <passive_effect name="HealthChangeOT" operation="base_add" value="-6"/>

            <triggered_effect trigger="onSelfBuffUpdate" action="ModifyCVar" cvar="$buffShockedDisplay" operation="add" value="-1"/>
            <triggered_effect trigger="onSelfBuffRemove" action="ModifyCVar" cvar="$buffShockedDisplay" operation="set" value="0"/>

            <triggered_effect trigger="onSelfBuffStart" action="AttachParticleEffectToEntity" particle="p_electric_shock" parent_transform="Spine1" local_offset="0,-.2,0"/>
            <triggered_effect trigger="onSelfEnteredGame" action="AttachParticleEffectToEntity" particle="p_electric_shock" parent_transform="Spine1" local_offset="0,-.2,0"/>

            <triggered_effect trigger="onSelfDied" action="RemoveParticleEffectFromEntity" particle="p_electric_shock"/>
            <triggered_effect trigger="onSelfBuffRemove" action="RemoveParticleEffectFromEntity" particle="p_electric_shock"/>

            <triggered_effect trigger="onSelfBuffFinish" action="RemoveParticleEffectFromEntity" particle="p_electric_shock"/>
            <triggered_effect trigger="onSelfBuffRemove" action="RemoveParticleEffectFromEntity" particle="p_electric_shock"/>
            <triggered_effect trigger="onSelfBuffRemove" action="ModifyCVar" cvar="ETrapHit" operation="set" value="0"/>
            <triggered_effect trigger="onSelfLeaveGame" action="RemoveParticleEffectFromEntity" particle="p_electric_shock"/>

            <triggered_effect trigger="onSelfBuffStart" action="PlaySound" sound="electric_fence_impact"/>
            <triggered_effect trigger="onSelfBuffRemove" action="FadeOutSound" sound="electric_fence_impact"/>
            <triggered_effect trigger="onSelfLeaveGame" action="StopSound" sound="electric_fence_impact"/>
        </effect_group>

        <effect_group>
            <requirement name="CVarCompare" cvar="$shockDurationMax" operation="GTE" value="4"/>
                <passive_effect name="RunSpeed" operation="perc_subtract" value=".9,.05" duration="0,4"/>
                <passive_effect name="WalkSpeed" operation="perc_subtract" value=".9,.05" duration="0,4"/>
                <passive_effect name="CrouchSpeed" operation="perc_subtract" value=".9,.05" duration="0,4"/>
                <passive_effect name="JumpStrength" operation="perc_subtract" value=".9,.05" duration="0,4"/>
        </effect_group>

        <effect_group>
            <requirement name="CVarCompare" cvar="$shockDurationMax" operation="GTE" value="5"/>
                <passive_effect name="RunSpeed" operation="perc_subtract" value=".9,.05" duration="0,5"/>
                <passive_effect name="WalkSpeed" operation="perc_subtract" value=".9,.05" duration="0,5"/>
                <passive_effect name="CrouchSpeed" operation="perc_subtract" value=".9,.05" duration="0,5"/>
                <passive_effect name="JumpStrength" operation="perc_subtract" value=".9,.05" duration="0,5"/>
        </effect_group>

        <effect_group>
            <requirement name="CVarCompare" cvar="$shockDurationMax" operation="GTE" value="6"/>
                <passive_effect name="RunSpeed" operation="perc_subtract" value=".9,.05" duration="0,6"/>
                <passive_effect name="WalkSpeed" operation="perc_subtract" value=".9,.05" duration="0,6"/>
                <passive_effect name="CrouchSpeed" operation="perc_subtract" value=".9,.05" duration="0,6"/>
                <passive_effect name="JumpStrength" operation="perc_subtract" value=".9,.05" duration="0,6"/>
        </effect_group>

        <effect_group>
            <requirement name="CVarCompare" cvar="$shockDurationMax" operation="GTE" value="7"/>
                <passive_effect name="RunSpeed" operation="perc_subtract" value=".9,.05" duration="0,7"/>
                <passive_effect name="WalkSpeed" operation="perc_subtract" value=".9,.05" duration="0,7"/>
                <passive_effect name="CrouchSpeed" operation="perc_subtract" value=".9,.05" duration="0,7"/>
                <passive_effect name="JumpStrength" operation="perc_subtract" value=".9,.05" duration="0,7"/>
        </effect_group>

        <effect_group>
            <requirement name="CVarCompare" cvar="$shockDurationMax" operation="GTE" value="8"/>
                <passive_effect name="RunSpeed" operation="perc_subtract" value=".9,.05" duration="0,8"/>
                <passive_effect name="WalkSpeed" operation="perc_subtract" value=".9,.05" duration="0,8"/>
                <passive_effect name="CrouchSpeed" operation="perc_subtract" value=".9,.05" duration="0,8"/>
                <passive_effect name="JumpStrength" operation="perc_subtract" value=".9,.05" duration="0,8"/>
        </effect_group>

        <effect_group>
            <requirement name="CVarCompare" cvar="$shockDurationMax" operation="GTE" value="9"/>
                <passive_effect name="RunSpeed" operation="perc_subtract" value=".9,.05" duration="0,9"/>
                <passive_effect name="WalkSpeed" operation="perc_subtract" value=".9,.05" duration="0,9"/>
                <passive_effect name="CrouchSpeed" operation="perc_subtract" value=".9,.05" duration="0,9"/>
                <passive_effect name="JumpStrength" operation="perc_subtract" value=".9,.05" duration="0,9"/>
        </effect_group>
    </buff>

I believe I can figure most of it out, but why so many effect groups? Is this for a situation where a player or zed sits on an electric fence and the damage becomes stronger the longer he/it sits there? What about these cvars? Are these variables in the game code itself that we are accessing or are these defined here in the XML and used in the XML? I can't seem to find any documentation on this and I would like to understand it better.

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