Candles (#21087)
Co-authored-by: faint <46868845+ficcialfaint@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
@@ -16,7 +16,7 @@ public sealed partial class ToggleableLightVisualsComponent : Component
|
|||||||
/// Sprite layer that will have its visibility toggled when this item is toggled.
|
/// Sprite layer that will have its visibility toggled when this item is toggled.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("spriteLayer")]
|
[DataField("spriteLayer")]
|
||||||
public string SpriteLayer = "light";
|
public string? SpriteLayer = "light";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Layers to add to the sprite of the player that is holding this entity (while the component is toggled on).
|
/// Layers to add to the sprite of the player that is holding this entity (while the component is toggled on).
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public sealed class ToggleableLightVisualsSystem : VisualizerSystem<ToggleableLi
|
|||||||
var modulate = AppearanceSystem.TryGetData<Color>(uid, ToggleableLightVisuals.Color, out var color, args.Component);
|
var modulate = AppearanceSystem.TryGetData<Color>(uid, ToggleableLightVisuals.Color, out var color, args.Component);
|
||||||
|
|
||||||
// Update the item's sprite
|
// Update the item's sprite
|
||||||
if (args.Sprite != null && args.Sprite.LayerMapTryGet(component.SpriteLayer, out var layer))
|
if (args.Sprite != null && component.SpriteLayer != null && args.Sprite.LayerMapTryGet(component.SpriteLayer, out var layer))
|
||||||
{
|
{
|
||||||
args.Sprite.LayerSetVisible(layer, enabled);
|
args.Sprite.LayerSetVisible(layer, enabled);
|
||||||
if (modulate)
|
if (modulate)
|
||||||
|
|||||||
@@ -56,5 +56,11 @@ namespace Content.Server.Atmos.Components
|
|||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
[DataField("firestacksOnIgnite")]
|
[DataField("firestacksOnIgnite")]
|
||||||
public float FirestacksOnIgnite = 2.0f;
|
public float FirestacksOnIgnite = 2.0f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines how quickly the object will fade out. With positive values, the object will flare up instead of going out.
|
||||||
|
/// </summary>
|
||||||
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float FirestackFade = -0.1f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,30 @@
|
|||||||
using Content.Server.Administration.Logs;
|
using Content.Server.Administration.Logs;
|
||||||
using Content.Server.Atmos.Components;
|
using Content.Server.Atmos.Components;
|
||||||
|
using Content.Server.Explosion.EntitySystems;
|
||||||
using Content.Server.Stunnable;
|
using Content.Server.Stunnable;
|
||||||
using Content.Server.Temperature.Components;
|
using Content.Server.Temperature.Components;
|
||||||
using Content.Server.Temperature.Systems;
|
using Content.Server.Temperature.Systems;
|
||||||
using Content.Shared.ActionBlocker;
|
using Content.Shared.ActionBlocker;
|
||||||
using Content.Shared.Alert;
|
using Content.Shared.Alert;
|
||||||
using Content.Shared.Atmos;
|
using Content.Shared.Atmos;
|
||||||
|
using Content.Shared.Atmos.Components;
|
||||||
using Content.Shared.Damage;
|
using Content.Shared.Damage;
|
||||||
using Content.Shared.Database;
|
using Content.Shared.Database;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
|
using Content.Shared.Interaction.Events;
|
||||||
using Content.Shared.Physics;
|
using Content.Shared.Physics;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Content.Shared.Rejuvenate;
|
using Content.Shared.Rejuvenate;
|
||||||
using Content.Shared.Temperature;
|
using Content.Shared.Temperature;
|
||||||
using Content.Shared.Throwing;
|
using Content.Shared.Throwing;
|
||||||
|
using Content.Shared.Timing;
|
||||||
|
using Content.Shared.Toggleable;
|
||||||
using Content.Shared.Weapons.Melee.Events;
|
using Content.Shared.Weapons.Melee.Events;
|
||||||
using Robust.Server.GameObjects;
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.Physics.Components;
|
using Robust.Shared.Physics.Components;
|
||||||
using Robust.Shared.Physics.Events;
|
using Robust.Shared.Physics.Events;
|
||||||
using Robust.Shared.Physics.Systems;
|
using Robust.Shared.Physics.Systems;
|
||||||
|
using Robust.Shared.Random;
|
||||||
|
|
||||||
namespace Content.Server.Atmos.EntitySystems
|
namespace Content.Server.Atmos.EntitySystems
|
||||||
{
|
{
|
||||||
@@ -36,6 +42,9 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||||
|
[Dependency] private readonly UseDelaySystem _useDelay = default!;
|
||||||
|
[Dependency] private readonly AudioSystem _audio = default!;
|
||||||
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
|
|
||||||
public const float MinimumFireStacks = -10f;
|
public const float MinimumFireStacks = -10f;
|
||||||
public const float MaximumFireStacks = 20f;
|
public const float MaximumFireStacks = 20f;
|
||||||
@@ -63,6 +72,9 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
SubscribeLocalEvent<IgniteOnCollideComponent, LandEvent>(OnIgniteLand);
|
SubscribeLocalEvent<IgniteOnCollideComponent, LandEvent>(OnIgniteLand);
|
||||||
|
|
||||||
SubscribeLocalEvent<IgniteOnMeleeHitComponent, MeleeHitEvent>(OnMeleeHit);
|
SubscribeLocalEvent<IgniteOnMeleeHitComponent, MeleeHitEvent>(OnMeleeHit);
|
||||||
|
|
||||||
|
SubscribeLocalEvent<ExtinguishOnInteractComponent, UseInHandEvent>(OnExtinguishUsingInHand);
|
||||||
|
SubscribeLocalEvent<ExtinguishOnInteractComponent, ActivateInWorldEvent>(OnExtinguishActivateInWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMeleeHit(EntityUid uid, IgniteOnMeleeHitComponent component, MeleeHitEvent args)
|
private void OnMeleeHit(EntityUid uid, IgniteOnMeleeHitComponent component, MeleeHitEvent args)
|
||||||
@@ -128,6 +140,35 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
args.Handled = true;
|
args.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnExtinguishActivateInWorld(EntityUid uid, ExtinguishOnInteractComponent component, ActivateInWorldEvent args)
|
||||||
|
{
|
||||||
|
TryHandExtinguish(uid, component);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnExtinguishUsingInHand(EntityUid uid, ExtinguishOnInteractComponent component, UseInHandEvent args)
|
||||||
|
{
|
||||||
|
TryHandExtinguish(uid, component);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void TryHandExtinguish(EntityUid uid, ExtinguishOnInteractComponent component)
|
||||||
|
{
|
||||||
|
if (!TryComp(uid, out FlammableComponent? flammable))
|
||||||
|
return;
|
||||||
|
if (!flammable.OnFire)
|
||||||
|
return;
|
||||||
|
if (TryComp(uid, out UseDelayComponent? useDelay) && _useDelay.ActiveDelay(uid, useDelay))
|
||||||
|
return;
|
||||||
|
|
||||||
|
_useDelay.BeginDelay(uid);
|
||||||
|
_audio.PlayPvs(component.ExtinguishAttemptSound, uid);
|
||||||
|
if (_random.Prob(component.Probability))
|
||||||
|
{
|
||||||
|
AdjustFireStacks(uid, component.StackDelta, flammable);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
_popup.PopupEntity(Loc.GetString(component.ExtinguishFailed), uid);
|
||||||
|
}
|
||||||
|
}
|
||||||
private void OnCollide(EntityUid uid, FlammableComponent flammable, ref StartCollideEvent args)
|
private void OnCollide(EntityUid uid, FlammableComponent flammable, ref StartCollideEvent args)
|
||||||
{
|
{
|
||||||
var otherUid = args.OtherEntity;
|
var otherUid = args.OtherEntity;
|
||||||
@@ -208,6 +249,12 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
|
|
||||||
_appearance.SetData(uid, FireVisuals.OnFire, flammable.OnFire, appearance);
|
_appearance.SetData(uid, FireVisuals.OnFire, flammable.OnFire, appearance);
|
||||||
_appearance.SetData(uid, FireVisuals.FireStacks, flammable.FireStacks, appearance);
|
_appearance.SetData(uid, FireVisuals.FireStacks, flammable.FireStacks, appearance);
|
||||||
|
|
||||||
|
// Also enable toggleable-light visuals
|
||||||
|
// This is intended so that matches & candles can re-use code for un-shaded layers on in-hand sprites.
|
||||||
|
// However, this could cause conflicts if something is ACTUALLY both a toggleable light and flammable.
|
||||||
|
// if that ever happens, then fire visuals will need to implement their own in-hand sprite management.
|
||||||
|
_appearance.SetData(uid, ToggleableLightVisuals.Enabled, true, appearance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AdjustFireStacks(EntityUid uid, float relativeFireStacks, FlammableComponent? flammable = null)
|
public void AdjustFireStacks(EntityUid uid, float relativeFireStacks, FlammableComponent? flammable = null)
|
||||||
@@ -338,7 +385,7 @@ namespace Content.Server.Atmos.EntitySystems
|
|||||||
|
|
||||||
_damageableSystem.TryChangeDamage(uid, flammable.Damage * damageScale);
|
_damageableSystem.TryChangeDamage(uid, flammable.Damage * damageScale);
|
||||||
|
|
||||||
AdjustFireStacks(uid, -0.1f * (flammable.Resisting ? 10f : 1f), flammable);
|
AdjustFireStacks(uid, flammable.FirestackFade * (flammable.Resisting ? 10f : 1f), flammable);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using Robust.Shared.Audio;
|
||||||
|
|
||||||
|
namespace Content.Shared.Atmos.Components;
|
||||||
|
/// <summary>
|
||||||
|
/// Allows you to extinguish an object by interacting with it
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class ExtinguishOnInteractComponent : Component
|
||||||
|
{
|
||||||
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public SoundSpecifier? ExtinguishAttemptSound = new SoundPathSpecifier("/Audio/Items/candle_blowing.ogg");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Extinguishing chance
|
||||||
|
/// </summary>
|
||||||
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float Probability = 0.9f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of fire stacks to be changed on successful interaction.
|
||||||
|
/// </summary>
|
||||||
|
// With positive values, the interaction will conversely fan the fire,
|
||||||
|
// which is useful for any blacksmithing mechs
|
||||||
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float StackDelta = -5.0f;
|
||||||
|
|
||||||
|
[DataField]
|
||||||
|
public LocId ExtinguishFailed = "candle-extinguish-failed";
|
||||||
|
}
|
||||||
@@ -67,3 +67,8 @@
|
|||||||
license: "CC-BY-3.0"
|
license: "CC-BY-3.0"
|
||||||
copyright: "User jzdnvdoosj on freesound.org. Converted to ogg by mirrorcult"
|
copyright: "User jzdnvdoosj on freesound.org. Converted to ogg by mirrorcult"
|
||||||
source: "https://freesound.org/people/jzdnvdoosj/sounds/626262/"
|
source: "https://freesound.org/people/jzdnvdoosj/sounds/626262/"
|
||||||
|
|
||||||
|
- files: ["candle_blowing.ogg"]
|
||||||
|
license: "CC-BY-NC-3.0"
|
||||||
|
copyright: "Created by Bee09, converted to OGG, cropped and converted to mono by TheShuEd"
|
||||||
|
source: "https://freesound.org/people/Bee09/sounds/326561/"
|
||||||
BIN
Resources/Audio/Items/candle_blowing.ogg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
candle-extinguish-failed = The flame flickers, but it doesn't go out
|
||||||
@@ -409,6 +409,58 @@
|
|||||||
- type: RadiationBlockingContainer
|
- type: RadiationBlockingContainer
|
||||||
resistance: 2
|
resistance: 2
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: candle box
|
||||||
|
parent: BoxCardboard
|
||||||
|
id: BoxCandle
|
||||||
|
components:
|
||||||
|
- type: Item
|
||||||
|
size: 30
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: box
|
||||||
|
- state: candle
|
||||||
|
- type: Storage
|
||||||
|
maxTotalWeight: 30
|
||||||
|
- type: StorageFill
|
||||||
|
contents:
|
||||||
|
- id: Candle
|
||||||
|
amount: 3
|
||||||
|
- id: CandleBlue
|
||||||
|
amount: 3
|
||||||
|
- id: CandleRed
|
||||||
|
amount: 3
|
||||||
|
- id: CandleGreen
|
||||||
|
amount: 3
|
||||||
|
- id: CandlePurple
|
||||||
|
amount: 3
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small candle box
|
||||||
|
parent: BoxCardboard
|
||||||
|
id: BoxCandleSmall
|
||||||
|
components:
|
||||||
|
- type: Item
|
||||||
|
size: 30
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: box
|
||||||
|
- state: candle
|
||||||
|
- type: Storage
|
||||||
|
maxTotalWeight: 30
|
||||||
|
- type: StorageFill
|
||||||
|
contents:
|
||||||
|
- id: CandleSmall
|
||||||
|
amount: 5
|
||||||
|
- id: CandleBlueSmall
|
||||||
|
amount: 5
|
||||||
|
- id: CandleRedSmall
|
||||||
|
amount: 5
|
||||||
|
- id: CandleGreenSmall
|
||||||
|
amount: 5
|
||||||
|
- id: CandlePurpleSmall
|
||||||
|
amount: 5
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: darts box
|
name: darts box
|
||||||
parent: BoxCardboard
|
parent: BoxCardboard
|
||||||
|
|||||||
@@ -16,6 +16,8 @@
|
|||||||
ClothingOuterPlagueSuit: 1
|
ClothingOuterPlagueSuit: 1
|
||||||
ClothingMaskPlague: 1
|
ClothingMaskPlague: 1
|
||||||
ClothingHeadsetService: 2
|
ClothingHeadsetService: 2
|
||||||
|
BoxCandle: 2
|
||||||
|
BoxCandleSmall: 2
|
||||||
emaggedInventory:
|
emaggedInventory:
|
||||||
ClothingOuterArmorCult: 1
|
ClothingOuterArmorCult: 1
|
||||||
ClothingHeadHelmetCult: 1
|
ClothingHeadHelmetCult: 1
|
||||||
|
|||||||
487
Resources/Prototypes/Entities/Objects/Misc/candles.yml
Normal file
@@ -0,0 +1,487 @@
|
|||||||
|
- type: entity
|
||||||
|
name: candle
|
||||||
|
parent: BaseItem
|
||||||
|
id: Candle
|
||||||
|
description: A thin wick threaded through fat.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
noRot: true
|
||||||
|
sprite: Objects/Misc/candles.rsi
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#decb8e"
|
||||||
|
- type: Item
|
||||||
|
size: 2
|
||||||
|
- type: Appearance
|
||||||
|
- type: Reactive
|
||||||
|
groups:
|
||||||
|
Flammable: [ Touch ]
|
||||||
|
Extinguish: [ Touch ]
|
||||||
|
- type: ExtinguishOnInteract
|
||||||
|
extinguishAttemptSound:
|
||||||
|
path: /Audio/Items/candle_blowing.ogg
|
||||||
|
params:
|
||||||
|
variation: 0.05
|
||||||
|
volume: 10
|
||||||
|
- type: UseDelay
|
||||||
|
- type: Flammable
|
||||||
|
fireSpread: false
|
||||||
|
canResistFire: false
|
||||||
|
alwaysCombustible: true
|
||||||
|
canExtinguish: true
|
||||||
|
firestacksOnIgnite: 3.0
|
||||||
|
firestackFade: -0.01
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Heat: 0.1
|
||||||
|
- type: FireVisuals
|
||||||
|
sprite: Objects/Misc/candles.rsi
|
||||||
|
normalState: fire-big
|
||||||
|
- type: ToggleableLightVisuals
|
||||||
|
spriteLayer: null
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left-flame
|
||||||
|
shader: unshaded
|
||||||
|
right:
|
||||||
|
- state: inhand-right-flame
|
||||||
|
shader: unshaded
|
||||||
|
- type: Damageable
|
||||||
|
damageModifierSet: Wood
|
||||||
|
- type: Destructible
|
||||||
|
thresholds:
|
||||||
|
- trigger:
|
||||||
|
!type:DamageTrigger
|
||||||
|
damage: 100
|
||||||
|
behaviors:
|
||||||
|
- !type:DoActsBehavior
|
||||||
|
acts: [ "Destruction" ]
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: red candle
|
||||||
|
parent: Candle
|
||||||
|
id: CandleRed
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#a12349"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#a12349"
|
||||||
|
- state: inhand-left-flame
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#a12349"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: blue candle
|
||||||
|
parent: Candle
|
||||||
|
id: CandleBlue
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#425d7d"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#425d7d"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#425d7d"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: black candle
|
||||||
|
parent: Candle
|
||||||
|
id: CandleBlack
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#1b1724"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#1b1724"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#1b1724"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: green candle
|
||||||
|
parent: Candle
|
||||||
|
id: CandleGreen
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#5d997e"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#5d997e"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#5d997e"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: purple candle
|
||||||
|
parent: Candle
|
||||||
|
id: CandlePurple
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#984aa1"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#984aa1"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#984aa1"
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small candle
|
||||||
|
parent: Candle
|
||||||
|
id: CandleSmall
|
||||||
|
components:
|
||||||
|
- type: Item
|
||||||
|
size: 1
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#e2ca90"
|
||||||
|
- type: FireVisuals
|
||||||
|
normalState: fire-small
|
||||||
|
- type: Flammable
|
||||||
|
firestacksOnIgnite: 2.0
|
||||||
|
- type: Destructible
|
||||||
|
thresholds:
|
||||||
|
- trigger:
|
||||||
|
!type:DamageTrigger
|
||||||
|
damage: 60
|
||||||
|
behaviors:
|
||||||
|
- !type:SpawnEntitiesBehavior
|
||||||
|
- !type:DoActsBehavior
|
||||||
|
acts: [ "Destruction" ]
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small red candle
|
||||||
|
parent: CandleSmall
|
||||||
|
id: CandleRedSmall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#a12349"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#a12349"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#a12349"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small blue candle
|
||||||
|
parent: CandleSmall
|
||||||
|
id: CandleBlueSmall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#425d7d"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#425d7d"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#425d7d"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small black candle
|
||||||
|
parent: CandleSmall
|
||||||
|
id: CandleBlackSmall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#1b1724"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#1b1724"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#1b1724"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small green candle
|
||||||
|
parent: CandleSmall
|
||||||
|
id: CandleGreenSmall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#5d997e"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#5d997e"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#5d997e"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small purple candle
|
||||||
|
parent: CandleSmall
|
||||||
|
id: CandlePurpleSmall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#984aa1"
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#984aa1"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#984aa1"
|
||||||
|
|
||||||
|
#Purely decorative candles for mappers. Do not have any functionality.
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: magic candle
|
||||||
|
description: It's either magic or high tech, but this candle never goes out. On the other hand, its flame is quite cold.
|
||||||
|
parent: BaseItem
|
||||||
|
suffix: Decorative
|
||||||
|
id: CandleInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
noRot: true
|
||||||
|
sprite: Objects/Misc/candles.rsi
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#decb8e"
|
||||||
|
- state: fire-big
|
||||||
|
shader: unshaded
|
||||||
|
- type: PointLight
|
||||||
|
color: "#e39c40"
|
||||||
|
radius: 2.5
|
||||||
|
power: 10
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: magic red candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleRedInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#a12349"
|
||||||
|
- state: fire-big
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#a12349"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#a12349"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: magic blue candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleBlueInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#425d7d"
|
||||||
|
- state: fire-big
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#425d7d"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#425d7d"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: magic black candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleBlackInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#1b1724"
|
||||||
|
- state: fire-big
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#1b1724"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#1b1724"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: magic green candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleGreenInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#5d997e"
|
||||||
|
- state: fire-big
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#5d997e"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#5d997e"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: magic purple candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandlePurpleInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-big
|
||||||
|
color: "#984aa1"
|
||||||
|
- state: fire-big
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#984aa1"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#984aa1"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small magic red candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleRedSmallInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#a12349"
|
||||||
|
- state: fire-small
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#a12349"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#a12349"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small magic blue candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleBlueSmallInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#425d7d"
|
||||||
|
- state: fire-small
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#425d7d"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#425d7d"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small magic black candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleBlackSmallInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#1b1724"
|
||||||
|
- state: fire-small
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#1b1724"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#1b1724"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small magic green candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandleGreenSmallInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#5d997e"
|
||||||
|
- state: fire-small
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#5d997e"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#5d997e"
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: small magic purple candle
|
||||||
|
parent: CandleInfinite
|
||||||
|
id: CandlePurpleSmallInfinite
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: candle-small
|
||||||
|
color: "#984aa1"
|
||||||
|
- state: fire-small
|
||||||
|
shader: unshaded
|
||||||
|
- type: Item
|
||||||
|
inhandVisuals:
|
||||||
|
left:
|
||||||
|
- state: inhand-left
|
||||||
|
color: "#984aa1"
|
||||||
|
right:
|
||||||
|
- state: inhand-right
|
||||||
|
color: "#984aa1"
|
||||||
BIN
Resources/Textures/Objects/Misc/candles.rsi/candle-big.png
Normal file
|
After Width: | Height: | Size: 217 B |
BIN
Resources/Textures/Objects/Misc/candles.rsi/candle-small.png
Normal file
|
After Width: | Height: | Size: 184 B |
BIN
Resources/Textures/Objects/Misc/candles.rsi/fire-big.png
Normal file
|
After Width: | Height: | Size: 292 B |
BIN
Resources/Textures/Objects/Misc/candles.rsi/fire-small.png
Normal file
|
After Width: | Height: | Size: 299 B |
|
After Width: | Height: | Size: 212 B |
BIN
Resources/Textures/Objects/Misc/candles.rsi/inhand-left.png
Normal file
|
After Width: | Height: | Size: 288 B |
|
After Width: | Height: | Size: 215 B |
BIN
Resources/Textures/Objects/Misc/candles.rsi/inhand-right.png
Normal file
|
After Width: | Height: | Size: 287 B |
97
Resources/Textures/Objects/Misc/candles.rsi/meta.json
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Created by TheShuEd (github) for ss14",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "stand-small"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stand-big"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "candle-small"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "candle-big"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inhand-left",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inhand-right",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fire-small",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.15,
|
||||||
|
0.15,
|
||||||
|
0.15,
|
||||||
|
0.15
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fire-big",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.15,
|
||||||
|
0.15,
|
||||||
|
0.15,
|
||||||
|
0.15
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inhand-left-flame",
|
||||||
|
"directions": 4,
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inhand-right-flame",
|
||||||
|
"directions": 4,
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.2,
|
||||||
|
0.2
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
Resources/Textures/Objects/Misc/candles.rsi/stand-big.png
Normal file
|
After Width: | Height: | Size: 308 B |
BIN
Resources/Textures/Objects/Misc/candles.rsi/stand-small.png
Normal file
|
After Width: | Height: | Size: 267 B |
BIN
Resources/Textures/Objects/Storage/boxes.rsi/candle.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"license": "CC-BY-SA-3.0",
|
"license": "CC-BY-SA-3.0",
|
||||||
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, darts made by TheShuEd (github) for ss14",
|
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14",
|
||||||
"size": {
|
"size": {
|
||||||
"x": 32,
|
"x": 32,
|
||||||
"y": 32
|
"y": 32
|
||||||
@@ -197,6 +197,9 @@
|
|||||||
{
|
{
|
||||||
"name": "ziptie"
|
"name": "ziptie"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "candle"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "darts"
|
"name": "darts"
|
||||||
}
|
}
|
||||||
|
|||||||