Files
BarotraumaModServer/LocalMods/Immersive Ignitables/Content/Items/Misc/misc.xml
2026-06-09 00:42:10 +03:00

1677 lines
148 KiBLFS
XML
Executable File

<?xml version="1.0" encoding="utf-8"?>
<Override>
<Items>
<!-- VANILLA OVERRIDES -->
<Item name="" identifier="molotovcoctail" category="Equipment" maxstacksize="12" health="2" cargocontaineridentifier="metalcrate" impacttolerance="5" Scale="0.5" tags="smallitem,molotov,light,ignitable,provocative,separatists" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" damagedbyexplosions="true" damagedbyrepairtools="true" damagedbyprojectiles="true" damagedbymeleeweapons="true">
<PreferredContainer primary="secarmcab" secondary="armcab" />
<PreferredContainer secondary="wreckarmcab,abandonedarmcab" spawnprobability="0" />
<Price baseprice="90" minavailable="6" sold="false">
<Price storeidentifier="merchantoutpost" minavailable="2" maxavailable="4" sold="true">
<Reputation faction="separatists" min="50" />
</Price>
<Price storeidentifier="merchantcity" minavailable="3" maxavailable="6" sold="true">
<Reputation faction="separatists" min="50" />
</Price>
<Price storeidentifier="merchantmilitary" minavailable="5" maxavailable="10" sold="true">
<Reputation faction="separatists" min="50" />
</Price>
</Price>
<Fabricate suitablefabricators="fabricator" requiredtime="10" requiresrecipe="true" amount="2">
<RequiredItem identifier="ethanol" />
<RequiredItem identifier="organicfiber" />
</Fabricate>
<InventoryIcon texture="Content/Map/Outposts/Art/FactionItems.png" sourcerect="271,2,65,68" origin="0.5,0.5" />
<sprite texture="Content/Map/Outposts/Art/FactionItems.png" sourcerect="308,165,40,64" depth="0.55" origin="0.5,0.5" />
<Body width="40" height="60" density="12" />
<Holdable slots="Any,RightHand,LeftHand" holdpos="0,0" handle1="0,0" aimpos="25,-40" aimangle="0" msg="ItemMsgPickUpSelect">
<!-- remove the contained projectile when this item breaks as to not cause 2 explosions (one from this item and one from the projectile) when the item breaks in its lit state -->
<StatusEffect type="OnBroken" target="Contained">
<Remove />
</StatusEffect>
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can (not being held in hand "PhysicsBodyActive") | This effect is both in LightComponent and Holdable to make sure it doesn't self ignite under any circumstances -->
<StatusEffect type="OnContained" target="This" IsOn="false" tags="unlit" DontCleanUp="false" IsDangerous="false" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- add the temporary "wet" tag and spawn water drop particles for 10 seconds after the item entered water to block reigniting it again for that duration -->
<StatusEffect type="InWater" targettype="This" IsOn="false" tags="wet" duration="10" setvalue="true" stackable="false">
<ParticleEmitter particle="waterdrop" colormultiplier="255,255,255" copyentityangle="false" particlespersecond="3" anglemin="0" anglemax="360" distancemin="0" distancemax="5" scalemin="0.4" scalemax="0.8" velocitymin="0" velocitymax="0" highqualitycollisiondetection="false" />
</StatusEffect>
<!-- turn the LightComponent on if the item has the "lit" tag and doesn't have the temporary "wet" tag when the item is being aimed (SecondaryUse) -->
<StatusEffect type="OnSecondaryUse" targettype="This" IsOn="true" comparison="And">
<Conditional HasTag="lit" />
<Conditional IsOn="eq False" targetitemcomponent="LightComponent" />
<sound file="Content/Items/Tools/FlareIgnite.ogg" range="800.0" />
</StatusEffect>
<!-- change the aim position and spawn the projectile version inside the hidden inventory, if the item has the "lit" tag and doesn't have the temporary "wet" tag and the LightComponent is on when the item is being aimed (SecondaryUse) -->
<StatusEffect type="OnSecondaryUse" targettype="This" aimpos="35,-10" setvalue="true" comparison="And">
<Conditional HasTag="lit" />
<Conditional IsOn="eq true" targetitemcomponent="LightComponent" />
<SpawnItem identifier="molotovprojectile" spawnposition="ThisInventory" spawnifinventoryfull="false" />
</StatusEffect>
<!-- add temporary tag "onfire" while the item is in a real fire -->
<StatusEffect type="OnFire" target="This" tags="onfire" interval="0.1" duration="0.2" />
<!-- add the tag "lit", turn on the LightComponent and spawn the projectile version inside the hidden inventory if the item has the temporary tag "onfire" and doesn't have the temporary "wet" tag -->
<StatusEffect type="OnActive" target="This" tags="lit" IsOn="true" DontCleanUp="true" IsDangerous="true" setvalue="true" disabledeltatime="true" comparison="And">
<Conditional HasStatusTag="onfire" />
<Conditional IsOn="false" />
<sound file="Content/Items/Tools/FlareIgnite.ogg" range="800.0" />
<SpawnItem identifier="molotovprojectile" spawnposition="ThisInventory" spawnifinventoryfull="false" />
</StatusEffect>
</Holdable>
<!-- RangedWeapon component to "throw" the item. A throwable component doesn't allow for OnSecondaryUse effect to trigger so we fake the throwing by shooting a projectile version from the item and then remove the original item -->
<RangedWeapon reload="0.5" launchimpulse="4.0" barrelpos="0,0" spread="0" unskilledspread="0" combatPriority="60" drawhudwhenequipped="true" crosshairscale="0.2">
<Crosshair texture="Content/Items/Weapons/Crosshairs.png" sourcerect="0,256,256,256" />
<CrosshairPointer texture="Content/Items/Weapons/Crosshairs.png" sourcerect="256,256,256,256" />
<!-- cause an invisible explosion that only applies some force to give the arms some motion to make the fake throwing more convincing and remove this item -->
<StatusEffect type="OnUse" target="This">
<Explosion range="30.0" force="3" shockwave="false" smoke="false" flames="false" flash="false" sparks="false" underwaterbubble="false" camerashake="1.0" />
<Remove />
</StatusEffect>
<RequiredItems items="molotovprojectile" type="Contained" />
<RequiredSkill identifier="weapons" level="30" />
</RangedWeapon>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" drawinventory="false" removecontaineditemsondeconstruct="true">
<Containable items="molotovprojectile" />
</ItemContainer>
<LightComponent LightColor="255,100,50,255" Flicker="0.5" range="600" IsOn="false">
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can -->
<StatusEffect type="OnActive" target="This" IsOn="false" tags="unlit" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- reduce the condition of this item while the item is lit (LightComponent is on) -->
<StatusEffect type="OnActive" targettype="This" Condition="-0.02" />
<!-- create flame particles while the LightComponent is on -->
<StatusEffect type="OnActive" targettype="This" conditionalcomparison="And">
<Conditional PhysicsBodyActive="eq true" />
<ParticleEmitter particle="flame" particlespersecond="15" copyentityangle="true" distancemin="15" distancemax="15" velocitymin="10" velocitymax="10" scalemin="0.2" scalemax="0.3" anglemin="85" anglemax="95" lifetimemultiplier="0.5" />
</StatusEffect>
<!-- create smoke particles when burning inside a trash can -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="82" distancemin="3" distancemax="3" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
<!-- turn the LightComponent off when in water -->
<StatusEffect type="InWater" targettype="This" IsOn="false" />
<!-- break the item on impact -->
<StatusEffect type="OnImpact" targettype="This" condition="-100" disabledeltatime="true" />
<!-- spawn shard particles, play a glass shatter sound and remove the item, if the LightComponent was off while breaking -->
<StatusEffect type="OnBroken" target="This">
<Conditional IsOn="eq False" />
<sound file="Content/Sounds/Damage/GlassImpact2.ogg" selectionmode="All" range="2000" />
<ParticleEmitter particle="iceshards" anglemin="0" anglemax="360" particleamount="30" velocitymin="0" velocitymax="500" scalemin="0.5" scalemax="1" />
<Remove />
</StatusEffect>
<!-- explode the item, start a 4m fire area and spawn shard particles while playing a glass breaking and explosion sound if the LightComponent was on while breaking -->
<StatusEffect type="OnBroken" target="This" conditionalcomparison="And">
<Conditional IsOn="eq True" />
<sound file="Content/Sounds/Damage/GlassImpact2.ogg" selectionmode="All" range="2000" />
<sound file="Content/Items/Weapons/ExplosionDebris3.ogg" selectionmode="All" range="2000" />
<ParticleEmitter particle="iceshards" anglemin="0" anglemax="360" particleamount="20" velocitymin="500" velocitymax="800" scalemin="0.5" scalemax="0.5" />
<Explosion range="500.0" ballastfloradamage="200" structuredamage="0" itemdamage="100" force="2.0" severlimbsprobability="0" debris="true" underwaterbubble="false">
<Affliction identifier="burn" strength="50" />
<Affliction identifier="stun" strength="0.5" />
</Explosion>
<Fire size="400" />
<Remove />
</StatusEffect>
</LightComponent>
</Item>
<Item name="Cigar" identifier="cigar" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem" cargocontaineridentifier="metalcrate" scale="0.35" isshootable="true" RequireAimToUse="true" impactsoundtag="impact_soft">
<PreferredContainer primary="crewcab" />
<Price baseprice="130" sold="false" />
<Fabricate suitablefabricators="fabricator" requiredtime="5" requiresrecipe="true">
<RequiredItem identifier="pipetobacco" />
</Fabricate>
<InventoryIcon texture="Content/Items/JobGear/TalentGear.png" sourcerect="174,234,42,50" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,53,50,11" depth="0.55" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,65,50,11" depth="0.55" maxcondition="99.9" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,77,50,11" depth="0.55" maxcondition="75" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,89,50,11" depth="0.55" maxcondition="62.5" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,101,50,11" depth="0.55" maxcondition="50" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,113,50,11" depth="0.55" maxcondition="37.5" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,125,50,11" depth="0.55" maxcondition="25" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="81,137,50,11" depth="0.55" maxcondition="12.5" fadein="false" />
<Body width="45" height="10" density="9.9" />
<LightComponent range="0" lightcolor="0,0,0,0" castshadows="false" powerconsumption="0" allowingameediting="false" comparison="And">
<ActiveConditional HasTag="lit" />
<ActiveConditional InWater="false" />
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can -->
<StatusEffect type="OnActive" target="This" IsOn="false" tags="unlit" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- constantly burn down the cigar when it was lit and procude smoke particles while not inhaling (using) -->
<StatusEffect type="OnActive" target="This" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<Conditional condition="gt 50" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
<!-- constantly burn down the cigar when it is lit, its condition is between 37.5 and 50 and procude smoke particles while not inhaling (using) with adjusted particle position to match the different sprite length -->
<StatusEffect type="OnActive" target="This" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<Conditional condition="lte 50" />
<Conditional condition="gt 37.5" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="5" distancemax="5" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
<!-- constantly burn down the cigar when it is lit, its condition is between 0 and 37.5 and procude smoke particles while not inhaling (using) with adjusted particle position to match the different sprite length -->
<StatusEffect type="OnActive" target="This" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<Conditional condition="lte 37.5" />
<Conditional condition="gt 0" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="1" distancemax="1" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,RightHand" handle1="-10,-18" aimpos="24,13" holdangle="0" holdpos="30,-5" aimangle="-5" aimable="false" swingwhenaiming="false" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- add the tag "ignitable" when the item is being held while it is not yet lit so it can be lit up by a lighter -->
<StatusEffect type="OnSecondaryUse" target="This" tags="ignitable" targetitemcomponent="LightComponent" setvalue="true" comparison="And" delay="1" checkconditionalalways="true">
<Conditional HasTag="neq ignitable" />
<Conditional HasTag="neq lit" />
<Conditional IsOn="false" />
</StatusEffect>
<!-- add the temporary "wet" tag and spawn water drop particles for 10 seconds after the item entered water to block reigniting it again for that duration -->
<StatusEffect type="InWater" target="This" tags="wet" setvalue="true" duration="10" stackable="false" />
<!-- add the tag "lit" and change the hand position if the item was in real fire -->
<StatusEffect type="OnFire" target="This" tags="lit" handle1="0,-35" setvalue="true" interval="1" disabledeltatime="true">
<Conditional HasTag="neq cigarcase" targetcontainer="true" />
</StatusEffect>
<!-- constantly reduce the condition of the item while it is in a real fire -->
<StatusEffect type="OnFire" target="This" Condition="-10.0" interval="1" disabledeltatime="true">
<Conditional HasTag="neq cigarcase" targetcontainer="true" />
</StatusEffect>
<!-- reduce the condition of the cigar and prevent it from producing smoke when actively smoking it (using) while it is on (tag "lit") -->
<StatusEffect type="OnUse" target="This,Character" tags="lit,inhaling" condition="-1" interval="0.1" duration="0.2">
<Conditional HasTag="lit" />
</StatusEffect>
<!-- remove the ability to breath oxygen, apply the custom "smokingcigarette" affliction and play a sizzling sound while inhaling the smoke (using the item while it has the tag "lit") -->
<StatusEffect type="OnUse" target="This,Character" availableoxygen="0" setvalue="true" interval="0.1" duration="0.2" multiplyafflictionsbymaxvitality="true">
<Conditional HasTag="lit" />
<Affliction identifier="smoking" amount="0.01" />
<Affliction identifier="oxygenlow" amount="0.15" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/SmokingCigaretteLoop.ogg" range="200" volume="1.0" loop="true" />
</StatusEffect>
<!-- apply and reduce various afflictions when smoking (using the item while it has the tag "lit") | separate effect to allow better control over the applied amounts (configured value per second) -->
<StatusEffect type="OnUse" target="This,Character" multiplyafflictionsbymaxvitality="true">
<Conditional HasTag="lit" />
<Affliction identifier="he-tobaccoaddiction" amount="0.2" />
<Affliction identifier="psychosisresistance" amount="20" />
<Affliction identifier="ii_recenttobaccointake" amount="100" />
<ReduceAffliction type="tobaccocraving" amount="6.0" />
<ReduceAffliction identifier="psychosis" amount="6" />
<ReduceAffliction identifier="hallucinating" amount="10" />
<ReduceAffliction identifier="reaperstax" amount="1" />
<ReduceAffliction identifier="watchersgaze" amount="5" />
</StatusEffect>
<!-- change hand position when holding the item while not using it (no temporary "inhaling" tag) -->
<StatusEffect type="OnActive" target="This" handle1="-10,-18" setvalue="true">
<Conditional HasStatusTag="neq inhaling" />
</StatusEffect>
<!-- start a fire when it burns out (breaks) inside a trashcan -->
<StatusEffect type="OnBroken" target="This">
<Conditional HasTag="outposttrashcan" targetcontainer="true" />
<Fire size="1" />
</StatusEffect>
<!-- remove the item when it is broken -->
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
</Item>
<Item name="" identifier="captainspipe" category="Misc" Tags="smallitem" scale="0.5" cargocontaineridentifier="metalcrate" impactsoundtag="impact_metal_light" isshootable="true" requireaimtouse="true">
<PreferredContainer primary="crewcab" spawnprobability="0.05" notcampaign="true" />
<PreferredContainer secondary="wreckcrewcab,abandonedcrewcab" spawnprobability="0.1" />
<Price baseprice="50">
<Price storeidentifier="merchantoutpost" />
<Price storeidentifier="merchantcity" />
<Price storeidentifier="merchantresearch" />
<Price storeidentifier="merchantmilitary" />
<Price storeidentifier="merchantmine" />
</Price>
<InventoryIcon texture="Content/Items/InventoryIconAtlas.png" sourcerect="511,957,64,64" origin="0.5,0.5" />
<Sprite texture="Content/Items/Misc/Misc.png" sourcerect="105,73,50,30" depth="0.55" origin="0.5,0.5" />
<Body width="58" height="20" density="15" />
<!-- LightComponent that doesn't produce light and only turns on if the item has the tag "lit" and temporary tag "hastobacco" while not being in water -->
<LightComponent range="0" lightcolor="0,0,0,0" castshadows="false" powerconsumption="0" allowingameediting="false" comparison="And">
<ActiveConditional HasTag="lit" />
<ActiveConditional HasStatusTag="hastobacco" />
<ActiveConditional InWater="false" />
<!-- check on the tobacco every 5 seconds if the container of the captains pipe (pipe = targetcontainer | grandparent = container of the targetcontainer) is a trash can while being lit (lightcomponent is active) and create a fire after being contained in it for 45 seconds while also deleting the tobacco -->
<StatusEffect type="OnActive" target="Contained" interval="5" delay="45" stackable="false" checkconditionalalways="true" comparison="And">
<Conditional HasTag="outposttrashcan" targetcontainer="true" targetgrandparent="true" />
<Fire size="1" />
<Remove />
</StatusEffect>
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can -->
<StatusEffect type="OnActive" target="This" IsOn="false" tags="unlit" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- constantly burn down the tobacco when it was lit and procude smoke particles while not inhaling (using) -->
<StatusEffect type="OnActive" target="Contained" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="9" distancemax="9" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
</LightComponent>
<Holdable slots="Any,RightHand,LeftHand" aimable="false" holdpos="30,-5" aimpos="27,10" handle1="10,-15" swingamount="0,0" swingspeed="0.5" swingwhenusing="true" msg="ItemMsgPickUpSelect">
<!-- add the tag "ignitable" when the item is being held while it is not yet lit so it can be lit up by a lighter -->
<StatusEffect type="OnSecondaryUse" target="This" tags="ignitable" targetitemcomponent="LightComponent" setvalue="true" comparison="And" delay="1" checkconditionalalways="true">
<Conditional HasTag="neq ignitable" />
<Conditional HasTag="neq lit" />
<Conditional IsOn="false" />
</StatusEffect>
<!-- add the temporary "wet" tag that overrides the "lit" tag and spawn water drop particles for 10 seconds after the item entered water to block reigniting it again for that duration -->
<StatusEffect type="InWater" target="This" tags="wet" setvalue="true" duration="10" stackable="false" />
<!-- reduce the condition of the tobacco and prevent the pipe from producing smoke when actively smoking it (using) while it is on (has tag "lit" and temporary tag "hastobacco") -->
<StatusEffect type="OnUse" target="Contained,Character" tags="lit,inhaling" condition="-1" interval="0.1" duration="0.2">
<Conditional IsOn="true" targetcontainer="true" />
</StatusEffect>
<!-- remove the ability to breath oxygen, apply the custom "smokingcigarette" affliction and play a sizzling sound while inhaling the smoke (using the item while it is on, meaning it has the tag "lit" and temporary tag "hastobacco") -->
<StatusEffect type="OnUse" target="This,Character" availableoxygen="0" setvalue="true" interval="0.1" duration="0.2" multiplyafflictionsbymaxvitality="true">
<Conditional IsOn="true" />
<Affliction identifier="smoking" amount="0.01" />
<Affliction identifier="oxygenlow" amount="0.15" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/SmokingCigaretteLoop.ogg" range="200" volume="1.0" loop="true" />
</StatusEffect>
<!-- apply and reduce various afflictions when smoking (using the item while it is on, meaning it has the tag "lit" and temporary tag "hastobacco") | separate effect to allow better control over the applied amounts (configured value per second) -->
<StatusEffect type="OnUse" target="This,Character" multiplyafflictionsbymaxvitality="true">
<Conditional IsOn="true" />
<Affliction identifier="he-tobaccoaddiction" amount="0.15" />
<Affliction identifier="psychosisresistance" amount="7.5" />
<Affliction identifier="ii_recenttobaccointake" amount="70" />
<ReduceAffliction type="tobaccocraving" amount="4.0" />
<ReduceAffliction identifier="psychosis" amount="2.5" />
<ReduceAffliction identifier="hallucinating" amount="5" />
</StatusEffect>
<!-- tag the item with "unlit" to override the "lit" tag and essentially turn it off, if the contained pipe tobacco was used up or removed by checking if the item still has the temporary tag "hastobacco" -->
<StatusEffect type="OnActive" target="This" tags="unlit" setvalue="true" interval="0.1">
<Conditional HasStatusTag="neq hastobacco" />
</StatusEffect>
</Holdable>
<ItemContainer hideitems="true" drawinventory="true" capacity="1" maxstacksize="1" canbeselected="false">
<SlotIcon slotindex="0" texture="Content/UI/StatusMonitorUI.png" sourcerect="0,384,64,64" origin="0.5,0.5" />
<Containable items="pipetobacco">
<!-- apply a temporary tag "hastobacco" to the item when pipetobacco is contained -->
<StatusEffect type="OnContaining" target="This" tags="hastobacco" interval="0.1" duration="0.2" />
</Containable>
</ItemContainer>
</Item>
<!-- trash can override to position the items contained in it a bit higher to make smoke particles come out of its opening slit | also added sound effect when interacting with it -->
<Item name="" identifier="opdeco_trashcan" tags="outposttrashcan" width="122" height="201" texturescale="1.0,1.0" scale="0.5" category="Decorative" AllowStealingContainedItems="true">
<sprite texture="Content/Map/Outposts/Art/Storage.png" sourcerect="1662,914,125,205" depth="0.97" premultiplyalpha="false" origin="0.5,0.5" />
<ItemContainer capacity="3" slotsperrow="3" canbeselected="true" hideitems="true" itempos="45,-25" msg="ItemMsgInteractSelect">
<GuiFrame relativesize="0.18,0.25" anchor="Center" style="ItemUI" />
<Containable items="smallitem,mediumitem" />
<!-- play a sound effect when opening the trash can inventory -->
<StatusEffect type="OnPicked" target="this">
<Sound file="%ModDir:3217556378%/Content/Items/Misc/loader_open1.ogg" volume="1" range="250" selectionmode="Random" />
</StatusEffect>
</ItemContainer>
</Item>
<!-- CUSTOM ITEMS -->
<Item name="Lighter Fuel" identifier="lighterfuel" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighterfuel" description="Used to refill a lighter. Simply hold it onto the lighter" cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="false">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,outpostcrewcab,beaconengcab" amount="1" spawnprobability="0.05" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="120" sold="true" displaynonempty="true">
<Price storeidentifier="merchantoutpost" minavailable="1" maxavailable="3" />
<Price storeidentifier="merchantcity" minavailable="3" maxavailable="6" />
<Price storeidentifier="merchantresearch" multiplier="1.25" maxavailable="3" />
<Price storeidentifier="merchantmilitary" multiplier="1.25" maxavailable="3" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="1" maxavailable="6" />
<Price storeidentifier="merchantengineering" multiplier="0.9" maxavailable="6" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="ethanol" mincondition="0.5" usecondition="true" />
</Fabricate>
<!-- second recipe to just refuel the empty lighter fuel -->
<Fabricate suitablefabricators="fabricator" displayname="recycleitem" requiredtime="5">
<RequiredSkill identifier="mechanical" level="15" />
<RequiredItem identifier="lighterfuel" mincondition="0.0" maxcondition="0.1" usecondition="false" />
<RequiredItem identifier="ethanol" mincondition="0.5" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="180,64,35,92" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="180,64,35,92" depth="0.55" />
<Body width="32" height="88" density="13.2" />
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,RightHand" aimpos="25,21" handle1="10,-20" holdangle="0" holdpos="36,-20" aimangle="210" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- apply the temporary "lighter_refill" tag to the character, if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="Character" tags="lighter_refill" interval="0.1" duration="0.2" />
<!-- reduce the condition when the item is being aimed while the character has the temporary tag "aiming" which is applied by aiming while holding a lighter | current configuration allows about 4 full lighter refills -->
<StatusEffect type="OnSecondaryUse" target="This" condition="-2.05">
<Conditional HasStatusTag="lighter_allowrefill" targetcontainer="true" />
</StatusEffect>
<StatusEffect type="OnSecondaryUse" target="This" handle1="10,-10" setvalue="true" interval="0.1" />
<StatusEffect type="OnActive" target="This" handle1="-20,-20" setvalue="true" interval="0.1">
<Conditional HasStatusTag="neq lighter_refill" targetcontainer="true" />
</StatusEffect>
</Holdable>
</Item>
<Item name="Lighter" identifier="zippolighter" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,outpostcrewcab,beaconengcab" amount="1" spawnprobability="0.05" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="true" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="1" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="3" maxavailable="16" />
<Price storeidentifier="merchantresearch" multiplier="1.25" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.25" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="1" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,0,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="45,11,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,0,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item name="Cigar Case" identifier="cigarcase" category="Equipment" health="100" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,cigarcase" description="Holds up to 7 cigars and a lighter." cargocontaineridentifier="metalcrate" scale="0.4" impactsoundtag="impact_soft" canflipx="false" fireproof="false">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,outpostcrewcab,beaconengcab" amount="1" spawnprobability="0.05" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="75" displaynonempty="true">
<Price storeidentifier="merchantoutpost" minavailable="2" />
<Price storeidentifier="merchantcity" minavailable="4" />
<Price storeidentifier="merchantresearch" multiplier="1.25" />
<Price storeidentifier="merchantmilitary" multiplier="1.25" minavailable="3" />
<Price storeidentifier="merchantmine" multiplier="0.9" />
<Price storeidentifier="merchantengineering" multiplier="0.9" />
</Price>
<Deconstruct time="7" />
<!-- <Fabricate suitablefabricators="vendingmachine" requiredtime="1" requiredmoney="20" fabricationlimitmin="0" fabricationlimitmax="5" /> -->
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="146,160,109,95" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="111,200,34,55" depth="0.55" origin="0.5,0.5" />
<Body width="30" height="50" density="11.2" />
<Holdable canbecombined="true" slots="Any,LeftHand" handle1="0,-10" handle2="0,-10" holdangle="0" holdpos="36,-20" msg="ItemMsgPickUpSelect">
<!-- damage the item when it is in a real fire and add the temporary tag "onfire" -->
<StatusEffect type="OnFire" target="This" Condition="-5.0" tags="onfire" duration="1" stackable="false" />
<!-- remove the item when it breaks -->
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
<!-- ItemContainer for the cigars -->
<ItemContainer capacity="7" maxstacksize="1" slotsperrow="4" allowaccess="true" drawinventory="true" removecontaineditemsondeconstruct="false">
<!-- icon for the lighter slot -->
<SlotIcon slotindex="7" texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,0,44,51" origin="0.5,0.5" />
<Containable items="cigar" />
<!-- make the last slot able to also contain a lighter-->
<SubContainer capacity="1">
<Containable items="lighter" />
</SubContainer>
</ItemContainer>
</Item>
<Item name="Pack of Cigarettes" identifier="packofcigarettes" category="Equipment" health="100" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,cigarettepack" description="Holds up to 20 cigarettes." cargocontaineridentifier="metalcrate" scale="0.36" impactsoundtag="impact_soft" canflipx="false" fireproof="false">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,outpostcrewcab,beaconengcab" amount="1" spawnprobability="0.05" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="15" displaynonempty="true">
<Price storeidentifier="merchantoutpost" minavailable="6" />
<Price storeidentifier="merchantcity" minavailable="7" />
<Price storeidentifier="merchantresearch" multiplier="1.25" />
<Price storeidentifier="merchantmilitary" multiplier="1.25" minavailable="3" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="4" />
<Price storeidentifier="merchantengineering" multiplier="0.9" />
</Price>
<Deconstruct time="7" />
<Fabricate suitablefabricators="vendingmachine" requiredtime="1" requiredmoney="20" fabricationlimitmin="0" fabricationlimitmax="5" />
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="110,0,38,52" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="110,0,38,52" depth="0.55" origin="0.5,0.5" />
<Body width="34" height="48" density="10.7" />
<Holdable canbecombined="true" slots="Any,LeftHand" handle1="0,-10" handle2="0,-10" holdangle="0" holdpos="36,-20" msg="ItemMsgPickUpSelect">
<!-- damage the item when it is in a real fire and add the temporary tag "onfire" -->
<StatusEffect type="OnFire" target="This" Condition="-5.0" tags="onfire" duration="1" stackable="false" />
<!-- remove the item when it breaks -->
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
<!-- GreaterComponent timeframe used to track if the item is freshly spawned or old so it doesn't spawn more cigarettes -->
<GreaterComponent canbeselected="false" canbepicked="false" allowingameediting="false" timeframe="0" />
<!-- ItemContainer for the cigarettes. Can't make use of spawnwithid="cigarette,cigarette,..." because it would respawn them after every single loading screen if the inventory is empty -->
<ItemContainer capacity="19" maxstacksize="1" slotsperrow="5" allowaccess="true" drawinventory="true" removecontaineditemsondeconstruct="false">
<!-- icon for the lighter slot -->
<SlotIcon slotindex="19" texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,0,44,51" origin="0.5,0.5" />
<Containable items="cigarette" />
<!-- make the last slot able to also contain a lighter-->
<SubContainer capacity="1">
<Containable items="cigarette,lighter" />
</SubContainer>
<!-- check once per round (oneshot) if the item spawned cigarettes in its inventory already (timeframe="1") or if it did not spawn them yet (timeframe="0") | if timeframe is below 1, spawn 20 cigarettes in this inventory -->
<StatusEffect type="Always" target="This" timeframe="1" setvalue="true" disabledeltatime="true" oneshot="true">
<Conditional timeframe="lt 1" />
<SpawnItem identifier="cigarette" spawnposition="ThisInventory" spawnifinventoryfull="false" count="20" />
</StatusEffect>
</ItemContainer>
</Item>
<Item name="Cigarette" identifier="cigarette" category="Equipment" maxstacksize="20" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="20" Tags="smallitem,cigarette" description="A submariner's life is mentally taxing, but a good cigarette can help you soothe your nerves a bit. Ignite it with a lighter or an open fire." cargocontaineridentifier="metalcrate" scale="0.2" isshootable="true" RequireAimToUse="true" impactsoundtag="impact_soft">
<PreferredContainer primary="crewcab" />
<Deconstruct time="1" />
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="149,0,64,63" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,53,80,10" depth="0.55" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,63,80,10" depth="0.55" maxcondition="99.9" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,73,80,10" depth="0.55" maxcondition="80" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,83,80,10" depth="0.55" maxcondition="70" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,93,80,10" depth="0.55" maxcondition="60" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,103,80,10" depth="0.55" maxcondition="50" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,113,80,10" depth="0.55" maxcondition="40" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,123,80,10" depth="0.55" maxcondition="30" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,133,80,10" depth="0.55" maxcondition="20" fadein="false" />
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="0,143,80,10" depth="0.55" maxcondition="10" fadein="false" />
<Body width="78" height="6" density="9.7" />
<!-- LightComponent that doesn't produce light and only turns on if the item has the tag "lit" while not being in water -->
<LightComponent range="0" lightcolor="0,0,0,0" castshadows="false" powerconsumption="0" allowingameediting="false" comparison="And">
<ActiveConditional HasTag="lit" />
<ActiveConditional InWater="false" />
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can -->
<StatusEffect type="OnActive" target="This" IsOn="false" tags="unlit" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- constantly burn down the cigarette when it is lit, its condition is above 50 and procude smoke particles while not inhaling (using) -->
<StatusEffect type="OnActive" target="This" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<Conditional condition="gt 50" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
<!-- constantly burn down the cigarette when it is lit, its condition is between 30 and 50 and procude smoke particles while not inhaling (using) with adjusted particle position to match the different sprite length -->
<StatusEffect type="OnActive" target="This" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<Conditional condition="lte 50" />
<Conditional condition="gt 30" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="5" distancemax="5" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
<!-- constantly burn down the cigarette when it is lit, its condition is between 0 and 30 and procude smoke particles while not inhaling (using) with adjusted particle position to match the different sprite length -->
<StatusEffect type="OnActive" target="This" condition="-0.5" comparison="And">
<Conditional HasStatusTag="neq inhaling" />
<Conditional condition="lte 30" />
<Conditional condition="gt 0" />
<ParticleEmitter particle="fleshsmoke" colormultiplier="120,120,120,150" particlespersecond="3" copyentityangle="true" anglemin="0" anglemax="0" distancemin="3" distancemax="3" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,RightHand" handle1="-25,-30" aimpos="22,13" holdangle="0" holdpos="30,5" aimangle="-5" aimable="false" swingwhenaiming="false" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- add the tag "ignitable" when the item is being held while it is not yet lit so it can be lit up by a lighter -->
<StatusEffect type="OnSecondaryUse" target="This" tags="ignitable" targetitemcomponent="LightComponent" setvalue="true" comparison="And" delay="1" checkconditionalalways="true">
<Conditional HasTag="neq ignitable" />
<Conditional HasTag="neq lit" />
<Conditional IsOn="false" />
</StatusEffect>
<!-- add the temporary "wet" tag and spawn water drop particles for 10 seconds after the item entered water to block reigniting it again for that duration -->
<StatusEffect type="InWater" target="This" tags="wet" setvalue="true" duration="10" stackable="false" />
<!-- add the tag "lit" and change the hand position if the item was in real fire -->
<StatusEffect type="OnFire" target="This" tags="lit" handle1="0,-35" setvalue="true" interval="1" disabledeltatime="true">
<Conditional HasTag="neq cigarettepack" targetcontainer="true" />
</StatusEffect>
<!-- constantly reduce the condition of the item while it is in a real fire -->
<StatusEffect type="OnFire" target="This" Condition="-10.0" interval="1" disabledeltatime="true">
<Conditional HasTag="neq cigarettepack" targetcontainer="true" />
</StatusEffect>
<!-- reduce the condition of the cigarette and prevent it from producing smoke (the StatusEffects in LightComponent) when actively smoking it (using) while it is on (tag "lit") by adding the temporary tag "inhaling" -->
<StatusEffect type="OnUse" target="This,Character" tags="lit,inhaling" condition="-1" interval="0.1" duration="0.2">
<Conditional HasTag="lit" />
</StatusEffect>
<!-- remove the ability to breath oxygen, apply the custom "smokingcigarette" affliction and play a sizzling sound while inhaling the smoke (using the item while it has the tag "lit") -->
<StatusEffect type="OnUse" target="This,Character" availableoxygen="0" setvalue="true" interval="0.1" duration="0.2" multiplyafflictionsbymaxvitality="true">
<Conditional HasTag="lit" />
<Affliction identifier="smoking" amount="0.01" />
<!-- affliction tracks time spent inhaling and creates different amount of smoke with exhaling sound depending on the duration you were inhaling (using the item while it has the tag "lit") -->
<Affliction identifier="oxygenlow" amount="0.15" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/SmokingCigaretteLoop.ogg" range="200" volume="1.0" loop="true" />
</StatusEffect>
<!-- apply and reduce various afflictions when smoking (using the item while it has the tag "lit") | separate effect to allow better control over the applied amounts (configured value per second) -->
<StatusEffect type="OnUse" target="This,Character" multiplyafflictionsbymaxvitality="true">
<Conditional HasTag="lit" />
<Affliction identifier="he-tobaccoaddiction" amount="0.1" />
<Affliction identifier="psychosisresistance" amount="4" />
<Affliction identifier="ii_recenttobaccointake" amount="50" />
<ReduceAffliction type="tobaccocraving" amount="2.0" />
<ReduceAffliction identifier="psychosis" amount="1.2" />
<ReduceAffliction identifier="hallucinating" amount="2" />
<ReduceAffliction identifier="watchersgaze" amount="1" />
</StatusEffect>
<!-- change hand position when holding the item while not using it (no temporary "inhaling" tag) -->
<StatusEffect type="OnActive" target="This" handle1="-30,-35" setvalue="true">
<Conditional HasStatusTag="neq inhaling" />
</StatusEffect>
<!-- start a fire when it burns out (breaks) inside a trash can -->
<StatusEffect type="OnBroken" target="This">
<Conditional HasTag="outposttrashcan" targetcontainer="true" />
<Fire size="1" />
</StatusEffect>
<!-- remove the item when it is broken -->
<StatusEffect type="OnBroken" target="This">
<Remove />
</StatusEffect>
</Holdable>
</Item>
<Item hideinmenus="true" name="" identifier="molotovprojectile" health="1.1" category="Equipment" maxstacksize="1" cargocontaineridentifier="metalcrate" impacttolerance="5" Scale="0.5" tags="smallitem,light,provocative,separatists" impactsoundtag="impact_metal_light" damagedbyexplosions="true" damagedbyrepairtools="true" damagedbyprojectiles="true" damagedbymeleeweapons="true" isshootable="true" DontCleanUp="true" IsDangerous="true">
<InventoryIcon texture="Content/Map/Outposts/Art/FactionItems.png" sourcerect="271,2,65,68" origin="0.5,0.5" />
<sprite texture="Content/Map/Outposts/Art/FactionItems.png" sourcerect="308,165,40,64" depth="0.55" origin="0.5,0.5" />
<Body width="40" height="60" density="12" />
<Holdable slots="Any,RightHand,LeftHand" holdpos="0,0" handle1="0,0" aimpos="35,-10" msg="ItemMsgPickUpSelect">
<!-- spawn the original molotovcoctail and remove this projectile version, if the item was somehow not destroyed and is getting picked up -->
<StatusEffect type="OnPicked" target="This" oneshot="true">
<SpawnItem identifier="molotovcoctail" spawnposition="SameInventory" spawnifinventoryfull="true" spawnifcantbecontained="true" />
<Remove />
</StatusEffect>
</Holdable>
<LightComponent LightColor="255,100,50,255" Flicker="0.5" range="600" IsOn="true">
<!-- remove this item to disable being able to throw (shoot) the item, if the container (molotovcoctail) has the temporary tag "wet" or no longer has the tag "lit" -->
<StatusEffect type="OnContained" target="This" interval="0.1">
<Conditional HasStatusTag="wet" targetcontainer="true" />
<Conditional HasTag="neq lit" targetcontainer="true" />
<Remove />
</StatusEffect>
<!-- create flame particles when the item was thrown (shot) -->
<StatusEffect type="OnActive" targettype="This" conditionalcomparison="And">
<Conditional PhysicsBodyActive="eq true" />
<Conditional Condition="gt 1" />
<ParticleEmitter particle="flame" particlespersecond="15" velocitymin="0" scalemin="0.2" scalemax="0.3" anglemin="0" anglemax="360" lifetimemultiplier="0.5" />
</StatusEffect>
<!-- turn the lightcomponent off if the item is in water -->
<StatusEffect type="InWater" targettype="This" IsOn="false" />
<!-- just remove the item while spawning shard particles and playing a glass breaking sound if it wasn't lit (LightComponent is off) while breaking -->
<StatusEffect type="OnBroken" targettype="This">
<Conditional IsOn="false" />
<sound file="Content/Sounds/Damage/GlassImpact2.ogg" selectionmode="All" range="2000" />
<ParticleEmitter particle="iceshards" anglemin="0" anglemax="360" particleamount="30" velocitymin="0" velocitymax="500" scalemin="0.5" scalemax="1" />
<Remove />
</StatusEffect>
<!-- explode the item, start a 4m fire area and spawn shard particles while playing a glass breaking and explosion sound if it was lit (LightComponent is on) while breaking -->
<StatusEffect type="OnBroken" targettype="This">
<Conditional IsOn="true" />
<sound file="Content/Sounds/Damage/GlassImpact2.ogg" selectionmode="All" range="2000" />
<sound file="Content/Items/Weapons/ExplosionDebris3.ogg" selectionmode="All" range="2000" />
<ParticleEmitter particle="iceshards" anglemin="0" anglemax="360" particleamount="20" velocitymin="500" velocitymax="800" scalemin="0.5" scalemax="0.5" />
<Explosion range="500.0" ballastfloradamage="200" structuredamage="0" itemdamage="100" force="2.0" severlimbsprobability="0" debris="true" underwaterbubble="false">
<Affliction identifier="burn" strength="50" />
<Affliction identifier="stun" strength="0.5" />
</Explosion>
<Fire size="400" />
<Remove />
</StatusEffect>
<!-- break the item on impact -->
<StatusEffect type="OnImpact" target="This" Condition="-100.0" conditionalcomparison="And" />
</LightComponent>
<Projectile characterusable="false" hitscan="false" removeonhit="false" spread="0">
<Attack structuredamage="1" targetforce="4" itemdamage="2" severlimbsprobability="0.0">
<Affliction identifier="stun" strength="0.025" />
</Attack>
</Projectile>
</Item>
<!-- crumpled paper can be ignited and "thrown" to cause a fire -->
<Item name="Crumpled Paper" identifier="crumpledpaper" category="Equipment" maxstacksize="12" cargocontaineridentifier="metalcrate" Scale="0.5" tags="smallitem,light,ignitable" description="A crumpled piece of paper. Flamable" impactsoundtag="impact_soft" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="Crewcab" secondary="storagecab" />
<PreferredContainer secondary="outposttrashcan" minamount="1" maxamount="3" spawnprobability="0.2" />
<Deconstruct time="1">
<Item identifier="carbon" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="2">
<RequiredItem identifier="carbon" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="75,0,31,29" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="75,0,31,29" depth="0.55" origin="0.5,0.5" />
<Body radius="10" width="5" density="6" friction="1.0" restitution="0.15" angulardamping="1.0" />
<Holdable slots="Any,RightHand,LeftHand" holdpos="25,-40" handle1="0,0" aimpos="25,-40" aimangle="0" msg="ItemMsgPickUpSelect">
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can (not being held in hand "PhysicsBodyActive") | This effect is both in LightComponent and Holdable to make sure it doesn't self ignite under any circumstances -->
<StatusEffect type="OnContained" target="This" IsOn="false" tags="unlit" DontCleanUp="false" IsDangerous="false" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- turn the LightComponent on if the item has the "lit" tag and doesn't have the temporary "wet" tag when the item is being aimed (SecondaryUse) -->
<StatusEffect type="OnSecondaryUse" targettype="This" IsOn="true" comparison="And">
<Conditional HasTag="lit" />
<Conditional HasStatusTag="neq wet" />
<Conditional IsOn="eq False" targetitemcomponent="LightComponent" />
<sound file="Content/Items/Tools/FlareIgnite.ogg" range="800.0" />
</StatusEffect>
<!-- change the aim position and spawn the projectile version inside the hidden inventory, if the item has the "lit" tag and doesn't have the temporary "wet" tag and the LightComponent is on when the item is being aimed (SecondaryUse) -->
<StatusEffect type="OnSecondaryUse" targettype="This" aimpos="35,-10" setvalue="true" comparison="And">
<Conditional HasTag="lit" />
<Conditional HasStatusTag="neq wet" />
<Conditional IsOn="eq true" targetitemcomponent="LightComponent" />
<SpawnItem identifier="paperprojectile" spawnposition="ThisInventory" spawnifinventoryfull="false" />
</StatusEffect>
<!-- add temporary tag "onfire" while the item is in a real fire -->
<StatusEffect type="OnFire" target="This" tags="onfire" interval="0.1" duration="0.2" />
<!-- add the tag "lit", turn on the LightComponent and spawn the projectile version inside the hidden inventory if the item has the temporary tag "onfire" and doesn't have the temporary "wet" tag -->
<StatusEffect type="OnActive" target="This" tags="lit" IsOn="true" DontCleanUp="true" IsDangerous="true" setvalue="true" disabledeltatime="true" comparison="And">
<Conditional HasStatusTag="onfire" />
<Conditional HasStatusTag="neq wet" />
<Conditional IsOn="false" />
<sound file="Content/Items/Tools/FlareIgnite.ogg" range="800.0" />
<SpawnItem identifier="paperprojectile" spawnposition="ThisInventory" spawnifinventoryfull="false" />
</StatusEffect>
</Holdable>
<!-- RangedWeapon component to "throw" the item. A throwable component doesn't allow for OnSecondaryUse effect to trigger so we fake the throwing by shooting a projectile version from the item and then remove the original item -->
<RangedWeapon reload="0.5" launchimpulse="4.0" barrelpos="0,0" spread="0" unskilledspread="0" combatPriority="60" drawhudwhenequipped="true" crosshairscale="0.2">
<Crosshair texture="Content/Items/Weapons/Crosshairs.png" sourcerect="0,256,256,256" />
<CrosshairPointer texture="Content/Items/Weapons/Crosshairs.png" sourcerect="256,256,256,256" />
<!-- cause an invisible explosion that only applies some force to give the arms some motion to make the fake throwing more convincing and remove this item -->
<StatusEffect type="OnUse" target="This">
<Explosion range="30.0" force="3" shockwave="false" smoke="false" flames="false" flash="false" sparks="false" underwaterbubble="false" camerashake="1.0" />
<Remove />
</StatusEffect>
<RequiredItems items="paperprojectile" type="Contained" />
</RangedWeapon>
<!-- Terminal to allow writing onto the paper -->
<Terminal canbeselected="false" msg="ItemMsgInteractSelect" AllowInGameEditing="false" drawhudwhenequipped="true" textcolor="0,0,0,255" linestartsymbol="">
<GuiFrame relativesize="0.2,0.3" anchor="TopRight" style="Papersheet" hidedragicons="true" />
</Terminal>
<!-- invisible inventory slot that contains a projectile version of the crumpled paper while this item is considered lit -->
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" drawinventory="false" removecontaineditemsondeconstruct="true">
<Containable items="paperprojectile" />
</ItemContainer>
<LightComponent LightColor="255,100,50,255" Flicker="0.5" range="600" IsOn="false">
<!-- extinguish the item by turning off the LightComponent and adding the tag "unlit" to override the "lit" tag, if the item was put back into the pocket or cabinet, unless it is a trash can -->
<StatusEffect type="OnActive" target="This" IsOn="false" tags="unlit" setvalue="true" comparison="And">
<Conditional PhysicsBodyActive="eq false" />
<Conditional HasTag="neq outposttrashcan" targetcontainer="true" />
</StatusEffect>
<!-- reduce the condition of this item while the item is lit (LightComponent is on) -->
<StatusEffect type="OnActive" targettype="This" Condition="-20" />
<!-- create flame particles while the LightComponent is on -->
<StatusEffect type="OnActive" targettype="This">
<ParticleEmitter particle="flame" particlespersecond="15" velocitymin="0" scalemin="0.2" scalemax="0.3" anglemin="0" anglemax="360" lifetimemultiplier="0.5" />
</StatusEffect>
<!-- add the temporary "wet" tag and spawn water drop particles for 10 seconds after the item entered water to block reigniting it again for that duration -->
<StatusEffect type="InWater" targettype="This" IsOn="false" tags="wet" duration="10" setvalue="true" stackable="false">
<ParticleEmitter particle="waterdrop" colormultiplier="255,255,255" copyentityangle="false" particlespersecond="3" anglemin="0" anglemax="360" distancemin="0" distancemax="5" scalemin="0.4" scalemax="0.8" velocitymin="0" velocitymax="0" highqualitycollisiondetection="false" />
</StatusEffect>
<!-- cause a fire if the item was lit (LightComponent is on) while breaking and remove the item -->
<StatusEffect type="OnBroken" targettype="This">
<Conditional IsOn="true" />
<Fire size="1" />
<Remove />
</StatusEffect>
<!-- just remove the item if it wasn't lit (LightComponent is off) while breaking -->
<StatusEffect type="OnBroken" targettype="This">
<Conditional IsOn="false" />
<Remove />
</StatusEffect>
</LightComponent>
</Item>
<!-- crumpled paper projectile item to fake throwing the paper | you actually shoot this item from the original crumpledpaper item -->
<Item hideinmenus="true" name="" identifier="paperprojectile" health="100" category="Equipment" maxstacksize="1" cargocontaineridentifier="metalcrate" impacttolerance="5" Scale="0.5" tags="smallitem,light" impactsoundtag="impact_soft" damagedbyexplosions="true" damagedbyrepairtools="true" damagedbyprojectiles="true" damagedbymeleeweapons="true" isshootable="true" DontCleanUp="true" IsDangerous="true">
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="75,0,31,29" origin="0.5,0.5" />
<Sprite texture="%ModDir:3217556378%/Content/Items/II_ItemsAtlas.png" sourcerect="75,0,31,29" origin="0.5,0.5" />
<Body radius="10" width="5" density="6" friction="1.0" restitution="0.15" angulardamping="1.0" />
<Holdable slots="Any,RightHand,LeftHand" holdpos="0,0" handle1="0,0" aimpos="35,-10" msg="ItemMsgPickUpSelect">
<!-- spawn the original crumpledpaper and remove this projectile version, if the item was somehow not destroyed and is getting picked up -->
<StatusEffect type="OnPicked" target="This" oneshot="true">
<SpawnItem identifier="crumpledpaper" spawnposition="SameInventory" spawnifinventoryfull="true" spawnifcantbecontained="true" />
<Remove />
</StatusEffect>
</Holdable>
<LightComponent LightColor="255,100,50,255" Flicker="0.5" range="600" IsOn="true">
<!-- remove this item to disable being able to throw (shoot) the item, if the container (crumpledpaper) has the temporary tag "wet" or no longer has the tag "lit" -->
<StatusEffect type="OnContained" target="This" interval="0.1">
<Conditional HasStatusTag="wet" targetcontainer="true" />
<Conditional HasTag="neq lit" targetcontainer="true" />
<Remove />
</StatusEffect>
<!-- turn the lightcomponent off if the item is in water -->
<StatusEffect type="InWater" targettype="This" IsOn="false" />
<!-- when the LightComponent is on, reduce the health of the item -->
<StatusEffect type="OnActive" targettype="This" Condition="-20" />
<!-- create flame particles when the item was thrown (shot) -->
<StatusEffect type="OnActive" targettype="This" conditionalcomparison="And">
<Conditional PhysicsBodyActive="eq true" />
<Conditional Condition="gt 1" />
<ParticleEmitter particle="flame" particlespersecond="15" velocitymin="0" scalemin="0.2" scalemax="0.3" anglemin="0" anglemax="360" lifetimemultiplier="0.5" />
</StatusEffect>
<!-- cause a fire if the item was lit (LightComponent is on) while breaking and remove the item -->
<StatusEffect type="OnBroken" targettype="This">
<Conditional IsOn="true" />
<Fire size="1" />
<Remove />
</StatusEffect>
<!-- just remove the item if it wasn't lit (LightComponent is off) while breaking -->
<StatusEffect type="OnBroken" targettype="This">
<Conditional IsOn="false" />
<Remove />
</StatusEffect>
</LightComponent>
<Projectile characterusable="false" hitscan="false" removeonhit="false" spread="0">
<Attack structuredamage="0" targetforce="4" itemdamage="0" severlimbsprobability="0.0">
<Affliction identifier="stun" strength="0.025" />
</Attack>
</Projectile>
</Item>
<!-- EFFECTS -->
<Item hideinmenus="true" name="" identifier="effect_lighterfail" Category="Hidden" Tags="effect,lighterspark" maxstacksize="1" cargocontaineridentifier="metalcrate" scale="0.5" spritecolor="255,255,255,0" noninteractable="true">
<Sprite texture="Content/Items/Tools/tools.png" depth="0.55" sourcerect="0,0,1,1" />
<Body radius="1" density="10" />
<Holdable handle1="0,0" slots="Any" msg="ItemMsgPickUpSelect">
<!-- play the lighter sparking sound and remove the item -->
<StatusEffect type="Always" target="This" delay="0.1" oneshot="true" stackable="false">
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterFail.ogg" range="200" volume="1.0" loop="false" />
<Remove />
</StatusEffect>
</Holdable>
</Item>
<Item hideinmenus="true" name="" identifier="effect_lightersuccess" Category="Hidden" Tags="effect,lighteron" maxstacksize="1" cargocontaineridentifier="metalcrate" scale="0.5" spritecolor="255,255,255,0" noninteractable="true">
<Sprite texture="Content/Items/Tools/tools.png" depth="0.55" sourcerect="0,0,1,1" />
<Body radius="1" density="10" />
<Holdable handle1="0,0" slots="Any" msg="ItemMsgPickUpSelect">
<!-- play the lighter turning on sound -->
<StatusEffect type="OnContained" target="This" oneshot="true">
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterSuccess.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- ignite all items with the tag "ignitable" in a 20cm range if its physics body is active (being held) | sadly also applies to all other ignitables in range even if only one of them has an active physics body hence why the items need a constant check if their body is active and quickly remove the applied tag again. -->
<StatusEffect type="Always" target="NearbyItems" targettags="ignitable" range="20" tags="lit" setvalue="true" delay="1" stackable="false">
<Conditional PhysicsBodyActive="eq true" />
</StatusEffect>
<!-- check if either the lighter's fuel is empty (timeframe above 120), the person stopped aiming the lighter or if the item is in water. If one is true, remove the item -->
<StatusEffect type="Always" target="This" comparison="Or">
<Conditional timeframe="gt 120" targetcontainer="true" />
<Conditional HasStatusTag="neq aiming" targetcontainer="true" />
<Conditional InWater="true" />
<Remove />
</StatusEffect>
</Holdable>
</Item>
<!-- COLORED LIGHTERS -->
<Item name="Blue Lighter" identifier="zippolighterblue" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="false" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantresearch" multiplier="1.25" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" minavailable="0" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="75,0,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="120,11,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="75,0,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item name="Red Lighter" identifier="zippolighterred" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="false" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantresearch" multiplier="1.25" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" minavailable="0" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="75,52,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="120,63,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="75,52,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item name="Green Lighter" identifier="zippolightergreen" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="false" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantresearch" multiplier="1.25" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" minavailable="0" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="75,104,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="120,115,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="75,104,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item name="Purple Lighter" identifier="zippolighterpurple" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="false" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantresearch" multiplier="1.25" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" minavailable="0" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="150,0,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="195,11,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="150,0,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item name="Pink Lighter" identifier="zippolighterpink" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="false" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantresearch" multiplier="1.25" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" minavailable="0" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="150,52,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="195,63,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="150,52,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item name="Yellow Lighter" identifier="zippolighteryellow" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter,lighter_colorable" description="Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="wreckstoragecab,abandonedstoragecab" amount="1" spawnprobability="0.02" />
<PreferredContainer primary="crewcab" />
<Price baseprice="50" sold="false" displaynonempty="true" canbespecial="false">
<Price storeidentifier="merchantoutpost" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantcity" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantresearch" multiplier="1.25" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="0" maxavailable="8" />
<Price storeidentifier="merchantengineering" multiplier="0.9" minavailable="0" maxavailable="8" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<Fabricate suitablefabricators="fabricator" requiredtime="10">
<RequiredSkill identifier="mechanical" level="20" />
<RequiredItem identifier="aluminium" amount="1" />
<RequiredItem identifier="lighterfuel" mincondition="0.25" usecondition="true" />
</Fabricate>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="150,104,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="195,115,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="150,104,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="1">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<!-- SPECIAL LIGHTERS | LOOTING EXCLUSIVE | TWICE THE FUEL DURATION -->
<Item hideinmenus="true" name="Black Engraved Lighter" identifier="zippolighterblackengraved" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter" description="A rare and more fuel efficient lighter with engraving. Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.01" />
<PreferredContainer primary="wreckstoragecab,wreckreactorcab,abandonedstoragecab,abandonedreactorcab" amount="1" spawnprobability="0.01" />
<PreferredContainer primary="crewcab" />
<Price baseprice="1000" sold="false" displaynonempty="true">
<Price storeidentifier="merchantoutpost" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantcity" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantresearch" multiplier="1.25" maxavailable="1" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" maxavailable="1" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantengineering" multiplier="0.9" maxavailable="1" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="0,0,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="45,11,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="0,0,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="0.5">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item hideinmenus="true" name="Silver Engraved Lighter" identifier="zippolightersilverengraved" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter" description="A rare and more fuel efficient lighter with engraving. Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.01" />
<PreferredContainer primary="wreckstoragecab,wreckreactorcab,abandonedstoragecab,abandonedreactorcab" amount="1" spawnprobability="0.01" />
<PreferredContainer primary="crewcab" />
<Price baseprice="1250" sold="false" displaynonempty="true">
<Price storeidentifier="merchantoutpost" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantcity" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantresearch" multiplier="1.25" maxavailable="1" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" maxavailable="1" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantengineering" multiplier="0.9" maxavailable="1" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="0,104,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="45,115,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="0,104,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="0.5">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
<Item hideinmenus="true" name="Golden Engraved Lighter" identifier="zippolightergoldengraved" category="Equipment" maxstacksize="1" maxstacksizecharacterinventory="1" MaxStackSizeHoldableOrWearableInventory="1" Tags="smallitem,lighter" description="A rare and more fuel efficient lighter with engraving. Used to light up nearby ignitable items like cigarettes or molotov cocktails. Simply hold it closely to the item." cargocontaineridentifier="metalcrate" scale="0.2" impactsoundtag="impact_metal_light" isshootable="true" RequireAimToUse="true" hideconditionbar="true">
<PreferredContainer primary="wreckcrewcab,abandonedcrewcab,beaconengcab" amount="1" spawnprobability="0.01" />
<PreferredContainer primary="wreckstoragecab,wreckreactorcab,abandonedstoragecab,abandonedreactorcab" amount="1" spawnprobability="0.01" />
<PreferredContainer primary="crewcab" />
<Price baseprice="1250" sold="false" displaynonempty="true">
<Price storeidentifier="merchantoutpost" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantcity" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantresearch" multiplier="1.25" maxavailable="1" />
<Price storeidentifier="merchantmilitary" multiplier="1.5" maxavailable="1" />
<Price storeidentifier="merchantmine" multiplier="0.9" minavailable="1" maxavailable="1" />
<Price storeidentifier="merchantengineering" multiplier="0.9" maxavailable="1" />
</Price>
<Deconstruct time="10">
<Item identifier="aluminium" />
</Deconstruct>
<InventoryIcon texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="0,52,44,51" origin="0.5,0.5" />
<!-- closed sprite -->
<Sprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="45,63,29,40" depth="0.55" />
<!-- open sprite -->
<BrokenSprite texture="%ModDir:3217556378%/Content/Items/II_SpecialLighters.png" sourcerect="0,52,44,51" origin="0.5,0.5" depth="0.55" maxcondition="99" fadein="false" />
<Body width="27" height="38" density="12.7" />
<!-- GreaterComponent used to simulate fuel usage | 120s of "fuel" configured -->
<GreaterComponent canbepicked="false" canbeselected="false" allowingameediting="false" timeframe="0" />
<!-- LightComponent to shortly light up whenever the lighterspark (effect_lighterfail) item is contained which removes itself after 0.1s -->
<LightComponent range="50" lightcolor="222,111,22,127" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighterspark" targetcontaineditem="true" />
<!-- create spark particles when the light is on -->
<StatusEffect type="OnActive" target="This">
<ParticleEmitter particle="lighterspark" particlespersecond="50" copyentityangle="true" anglemin="82" anglemax="98" distancemin="0" distancemax="0" velocitymin="75" velocitymax="75" scalemin="0.5" scalemax="0.5" />
</StatusEffect>
</LightComponent>
<!-- LightComponent that turns on if the lighteron (effect_lightersuccess) item is contained to iluminate the area and consume fuel (increase timeframe) while it is on -->
<LightComponent range="100" lightcolor="222,111,22,127" Flicker="0.2" powerconsumption="0" castshadows="false" allowingameediting="false">
<IsActive HasTag="lighteron" targetcontaineditem="true" />
<!-- deplete fuel (increase timeframe) when the lighter is on -->
<StatusEffect type="OnActive" target="This" timeframe="0.5">
<ParticleEmitter particle="smoke" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.1" scalemax="0.1" />
<ParticleEmitter particle="lighterflame" particlespersecond="5" copyentityangle="true" anglemin="98" anglemax="98" distancemin="7" distancemax="7" velocitymin="0" velocitymax="0" scalemin="0.05" scalemax="0.05" />
</StatusEffect>
</LightComponent>
<Holdable canbepicked="true" canBeCombined="false" removeOnCombined="false" slots="Any,LeftHand" aimpos="33,9" handle2="-15,-25" holdangle="0" holdpos="36,-20" aimangle="0" aimable="false" swingwhenaiming="true" swingamount="6,3" swingspeed="0.2" msg="ItemMsgPickUpSelect">
<!-- If the timeframe value is greater than "0", apply the temporary tag "lighter_allowrefill" to both the item and the character aiming it -->
<StatusEffect type="OnSecondaryUse" target="This,Character" tags="lighter_allowrefill" interval="0.1" duration="0.2">
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- While aiming the item, decrease the timeframe value to "refill" the lighter, but only while the timeframe is greater than "0" and while the character has the temporary tag "lighter_refill" which is applied by aiming with the "Lighter Fuel" item -->
<StatusEffect type="OnSecondaryUse" target="This" timeframe="-10" comparison="And">
<Conditional HasStatusTag="lighter_refill" targetcontainer="true" />
<Conditional timeframe="gt 0" />
</StatusEffect>
<!-- 3a. spawn random effect item inside the lighter to either turn it on or fail the attempt. Get's blocked by the "using" tag which is applied while the use key is kept being held so you have to release it to try again -->
<StatusEffect type="OnUse" target="This" SpawnItemRandomly="True" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="lte 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
<SpawnItem identifier="effect_lightersuccess" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 3b. always spawn the failed attempt item when the lighter is being used while the timeframe is above 120 (timeframe is used to simulate fuel) -->
<StatusEffect type="OnUse" target="This" interval="0.1" comparison="And">
<Conditional InWater="false" />
<Conditional HasStatusTag="neq using" />
<Conditional timeframe="gt 120" />
<SpawnItem identifier="effect_lighterfail" spawnposition="ThisInventory" spawnifinventoryfull="false" spawnifcantbecontained="false" />
</StatusEffect>
<!-- 2. apply the temporary "using" tag if the item is being used while aiming (also reapply the temporary "aiming" tag to make sure it doesn't get overridden) -->
<StatusEffect type="OnUse" target="This" tags="using,aiming" interval="0.1" duration="0.2">
<Conditional HasStatusTag="aiming" />
</StatusEffect>
<!-- 1. apply the temporary "aiming" tag if the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" tags="aiming" interval="0.1" duration="0.2" />
<!-- set the condition to 99 to render the open sprite when the item is being aimed -->
<StatusEffect type="OnSecondaryUse" target="This" condition="99" setvalue="true">
<Conditional condition="100" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterOpen.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
<!-- repair the item if it's not being aimed to render the closed sprite again -->
<StatusEffect type="OnContained" target="This" condition="100" setvalue="true" interval="0.1" comparison="And">
<Conditional HasStatusTag="neq aiming" />
<Conditional condition="99" />
<Sound file="%ModDir:3217556378%/Content/Items/Misc/LighterClose.ogg" range="200" volume="1.0" loop="false" />
</StatusEffect>
</Holdable>
<ItemContainer capacity="1" maxstacksize="1" allowaccess="false" allowdraganddrop="false" drawinventory="false" removecontaineditemsondeconstruct="true" containedstateindicatorslot="0">
<Containable items="effect" />
</ItemContainer>
</Item>
</Items>
</Override>