Lighters (#5836)
Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
@@ -29,7 +29,8 @@ namespace Content.Server.Damage.Systems
|
|||||||
|
|
||||||
if (component.WeldingDamage is {} weldingDamage
|
if (component.WeldingDamage is {} weldingDamage
|
||||||
&& EntityManager.TryGetComponent<WelderComponent?>(args.Used, out var welder)
|
&& EntityManager.TryGetComponent<WelderComponent?>(args.Used, out var welder)
|
||||||
&& welder.Lit)
|
&& welder.Lit
|
||||||
|
&& !welder.TankSafe)
|
||||||
{
|
{
|
||||||
var dmg = _damageableSystem.TryChangeDamage(args.Target, weldingDamage);
|
var dmg = _damageableSystem.TryChangeDamage(args.Target, weldingDamage);
|
||||||
|
|
||||||
|
|||||||
@@ -60,5 +60,12 @@ namespace Content.Server.Tools.Components
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
[DataField("litMeleeDamageBonus")]
|
[DataField("litMeleeDamageBonus")]
|
||||||
public DamageSpecifier LitMeleeDamageBonus = new();
|
public DamageSpecifier LitMeleeDamageBonus = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the item is safe to refill while lit without exploding the tank.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("tankSafe")]
|
||||||
|
public bool TankSafe = false; //I have no idea what I'm doing
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Resources/Audio/Items/lighter3.ogg
Normal file
BIN
Resources/Audio/Items/lighter_off.ogg
Normal file
@@ -9,4 +9,4 @@ welder-component-suicide-lit-others-message = {$victim} welds their every orific
|
|||||||
welder-component-suicide-lit-message = You weld your every orifice closed!
|
welder-component-suicide-lit-message = You weld your every orifice closed!
|
||||||
welder-component-suicide-unlit-others-message = {$victim} bashes themselves with the unlit welding torch!
|
welder-component-suicide-unlit-others-message = {$victim} bashes themselves with the unlit welding torch!
|
||||||
welder-component-suicide-unlit-message = You bash yourself with the unlit welding torch!
|
welder-component-suicide-unlit-message = You bash yourself with the unlit welding torch!
|
||||||
welder-component-after-interact-refueled-message = Welder refueled
|
welder-component-after-interact-refueled-message = Refueled!
|
||||||
|
|||||||
@@ -11,3 +11,5 @@
|
|||||||
CigarCase: 1
|
CigarCase: 1
|
||||||
Matchbox: 5
|
Matchbox: 5
|
||||||
PackPaperRollingFilters: 3
|
PackPaperRollingFilters: 3
|
||||||
|
CheapLighter: 4
|
||||||
|
Lighter: 1
|
||||||
|
|||||||
95
Resources/Prototypes/Entities/Objects/Tools/lighters.yml
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
- type: entity
|
||||||
|
name: basic lighter
|
||||||
|
parent: BaseItem
|
||||||
|
id: Lighter
|
||||||
|
description: "A simple plastic cigarette lighter."
|
||||||
|
components:
|
||||||
|
- type: RandomSpriteState #this has to be before sprite component for the flame to toggle right because weldercomponent behaves weird (and i dont trust myself to fix it right)
|
||||||
|
spriteStates:
|
||||||
|
- basic_icon_base-1
|
||||||
|
- basic_icon_base-2
|
||||||
|
- basic_icon_base-3
|
||||||
|
- basic_icon_base-4
|
||||||
|
- basic_icon_base-5
|
||||||
|
- basic_icon_base-6
|
||||||
|
- basic_icon_base-7
|
||||||
|
- basic_icon_base-8
|
||||||
|
- basic_icon_base-9
|
||||||
|
- basic_icon_base-10
|
||||||
|
- basic_icon_base-11
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Tools/lighters.rsi
|
||||||
|
layers:
|
||||||
|
- state: icon_map
|
||||||
|
- state: lighter_flame
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
|
- state: basic_icon_top
|
||||||
|
- type: Item
|
||||||
|
size: 3
|
||||||
|
sprite: Objects/Tools/lighters.rsi
|
||||||
|
HeldPrefix: off
|
||||||
|
- type: ItemCooldown
|
||||||
|
- type: ItemStatus
|
||||||
|
- type: RefillableSolution
|
||||||
|
solution: Welder
|
||||||
|
- type: SolutionContainerManager
|
||||||
|
solutions:
|
||||||
|
Welder:
|
||||||
|
reagents:
|
||||||
|
- ReagentId: WeldingFuel
|
||||||
|
Quantity: 8
|
||||||
|
maxVol: 8 #uses less fuel than a welder, so this isnt as bad as it looks
|
||||||
|
- type: MeleeWeapon
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Blunt: 0 #this feels hacky, but is needed for burn damage while active (i think)
|
||||||
|
- type: Welder
|
||||||
|
fuelConsumption: 0.01
|
||||||
|
litMeleeDamageBonus:
|
||||||
|
types:
|
||||||
|
Heat: 1
|
||||||
|
tankSafe: true
|
||||||
|
welderOnSounds:
|
||||||
|
collection: lighterOnSounds
|
||||||
|
welderOffSounds:
|
||||||
|
collection: lighterOffSounds
|
||||||
|
- type: PointLight
|
||||||
|
enabled: false
|
||||||
|
radius: 1.1 #smallest possible
|
||||||
|
color: orange
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: cheap lighter
|
||||||
|
parent: Lighter
|
||||||
|
id: CheapLighter
|
||||||
|
description: "A dangerously inexpensive plastic lighter, don't burn your thumb!"
|
||||||
|
components:
|
||||||
|
- type: RandomSpriteColor
|
||||||
|
state: cheap_icon_base
|
||||||
|
colors:
|
||||||
|
blue: "#1861d5"
|
||||||
|
red: "#951710"
|
||||||
|
pink: "#d5188d"
|
||||||
|
brown: "#a05212"
|
||||||
|
green: "#0e7f1b"
|
||||||
|
cyan: "#18a2d5"
|
||||||
|
yellow: "#d58c18" #all colours proudly stolen from wirecutters
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Tools/lighters.rsi
|
||||||
|
layers:
|
||||||
|
- state: icon_map
|
||||||
|
- state: lighter_flame
|
||||||
|
shader: unshaded
|
||||||
|
visible: false
|
||||||
|
- state: cheap_icon_top
|
||||||
|
- type: SolutionContainerManager
|
||||||
|
solutions:
|
||||||
|
Welder:
|
||||||
|
reagents:
|
||||||
|
- ReagentId: WeldingFuel
|
||||||
|
Quantity: 4
|
||||||
|
maxVol: 4 #uses less fuel than a welder, so this isnt as bad as it looks
|
||||||
|
|
||||||
|
#TODO: zippos
|
||||||
11
Resources/Prototypes/SoundCollections/lighter_sounds.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
- type: soundCollection
|
||||||
|
id: lighterOnSounds
|
||||||
|
files:
|
||||||
|
- /Audio/Items/lighter1.ogg
|
||||||
|
- /Audio/Items/lighter2.ogg
|
||||||
|
- /Audio/Items/lighter3.ogg
|
||||||
|
|
||||||
|
- type: soundCollection
|
||||||
|
id: lighterOffSounds
|
||||||
|
files:
|
||||||
|
- /Audio/Items/lighter_off.ogg
|
||||||
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/basic_icon_top.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/cheap_icon_top.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/icon_map.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/lighter_flame.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
91
Resources/Textures/Objects/Tools/lighters.rsi/meta.json
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/a28b24f149702527f3eb22f5c686f06c836f2f99; sprite has been edited",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon_map"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cheap_icon_base"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lighter_flame",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_base-11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "basic_icon_top"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cheap_icon_top"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zippo_icon_base"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zippo_open"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zippo_top"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "off-inhand-left",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "off-inhand-right",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "on-inhand-left",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "on-inhand-right",
|
||||||
|
"directions": 4
|
||||||
|
}
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/on-inhand-left.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/zippo_open.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
Resources/Textures/Objects/Tools/lighters.rsi/zippo_top.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |