The_Great_Sephiroth
Refugee
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.
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.
Code:
<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.