Convert Remaining Atmos Appearance Visualizers (#9582)
* Convert atmos plaque to generic visualizer Use generic visualizer for atmos plaque. Also enables zumos plaque to appear. * Convert gas canister connecters * Remove manual layer creation * Remove gas canister visualizer * Convert gas analyzers to generic visualizers * Convert fire visualizer * Fix layers on plasma and air canisters * Remove commented out fire visualizer in barricades * Add documentation for fire visuals component * Remove redundant visualizer for milkalyzer * Remove rogue item group
This commit is contained in:
21
Content.Client/Atmos/Components/FireVisualsComponent.cs
Normal file
21
Content.Client/Atmos/Components/FireVisualsComponent.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
namespace Content.Client.Atmos.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets which sprite RSI is used for displaying the fire visuals and what state to use based on the fire stacks
|
||||||
|
/// accumulated.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed class FireVisualsComponent : Component
|
||||||
|
{
|
||||||
|
[DataField("fireStackAlternateState")]
|
||||||
|
public int FireStackAlternateState = 3;
|
||||||
|
|
||||||
|
[DataField("normalState")]
|
||||||
|
public string? NormalState;
|
||||||
|
|
||||||
|
[DataField("alternateState")]
|
||||||
|
public string? AlternateState;
|
||||||
|
|
||||||
|
[DataField("sprite")]
|
||||||
|
public string? Sprite;
|
||||||
|
}
|
||||||
59
Content.Client/Atmos/EntitySystems/FireVisualizerSystem.cs
Normal file
59
Content.Client/Atmos/EntitySystems/FireVisualizerSystem.cs
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
using Content.Client.Atmos.Components;
|
||||||
|
using Content.Shared.Atmos;
|
||||||
|
using Robust.Client.GameObjects;
|
||||||
|
|
||||||
|
namespace Content.Client.Atmos.EntitySystems;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This handles the display of fire effects on flammable entities.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class FireVisualizerSystem : VisualizerSystem<FireVisualsComponent>
|
||||||
|
{
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<FireVisualsComponent, ComponentInit>(OnComponentInit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnComponentInit(EntityUid uid, FireVisualsComponent component, ComponentInit args)
|
||||||
|
{
|
||||||
|
if (!TryComp<SpriteComponent>(uid, out var sprite))
|
||||||
|
return;
|
||||||
|
|
||||||
|
sprite.LayerMapReserveBlank(FireVisualLayers.Fire);
|
||||||
|
sprite.LayerSetVisible(FireVisualLayers.Fire, false);
|
||||||
|
sprite.LayerSetShader(FireVisualLayers.Fire, "unshaded");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnAppearanceChange(EntityUid uid, FireVisualsComponent component, ref AppearanceChangeEvent args)
|
||||||
|
{
|
||||||
|
if (!args.Component.TryGetData(FireVisuals.OnFire, out bool onFire) ||
|
||||||
|
!TryComp<SpriteComponent>(component.Owner, out var sprite))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var fireStacks = 0f;
|
||||||
|
if (args.Component.TryGetData(FireVisuals.FireStacks, out float stacks))
|
||||||
|
fireStacks = stacks;
|
||||||
|
|
||||||
|
SetOnFire(sprite, args.Component, component, onFire, fireStacks);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetOnFire(SpriteComponent sprite, AppearanceComponent appearance, FireVisualsComponent component, bool onFire, float fireStacks)
|
||||||
|
{
|
||||||
|
if (component.Sprite != null)
|
||||||
|
sprite.LayerSetRSI(FireVisualLayers.Fire, component.Sprite);
|
||||||
|
|
||||||
|
sprite.LayerSetVisible(FireVisualLayers.Fire, onFire);
|
||||||
|
|
||||||
|
if(fireStacks > component.FireStackAlternateState && !string.IsNullOrEmpty(component.AlternateState))
|
||||||
|
sprite.LayerSetState(FireVisualLayers.Fire, component.AlternateState);
|
||||||
|
else
|
||||||
|
sprite.LayerSetState(FireVisualLayers.Fire, component.NormalState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum FireVisualLayers : byte
|
||||||
|
{
|
||||||
|
Fire
|
||||||
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
using Content.Shared.Atmos.Visuals;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
|
|
||||||
namespace Content.Client.Atmos.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class AtmosPlaqueVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[DataField("layer")]
|
|
||||||
private int Layer { get; }
|
|
||||||
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
base.InitializeEntity(entity);
|
|
||||||
|
|
||||||
IoCManager.Resolve<IEntityManager>().GetComponentOrNull<SpriteComponent>(entity);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
if (!IoCManager.Resolve<IEntityManager>().TryGetComponent(component.Owner, out SpriteComponent? sprite))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!component.TryGetData(AtmosPlaqueVisuals.State, out string state))
|
|
||||||
{
|
|
||||||
sprite.LayerSetState(Layer, state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
using Content.Shared.Atmos;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
|
|
||||||
namespace Content.Client.Atmos.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class FireVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[DataField("fireStackAlternateState")]
|
|
||||||
private int _fireStackAlternateState = 3;
|
|
||||||
|
|
||||||
[DataField("normalState")]
|
|
||||||
private string? _normalState;
|
|
||||||
|
|
||||||
[DataField("alternateState")]
|
|
||||||
private string? _alternateState;
|
|
||||||
|
|
||||||
[DataField("sprite")]
|
|
||||||
private string? _sprite;
|
|
||||||
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
base.InitializeEntity(entity);
|
|
||||||
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity);
|
|
||||||
|
|
||||||
sprite.LayerMapReserveBlank(FireVisualLayers.Fire);
|
|
||||||
sprite.LayerSetVisible(FireVisualLayers.Fire, false);
|
|
||||||
sprite.LayerSetShader(FireVisualLayers.Fire, "unshaded");
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
if (component.TryGetData(FireVisuals.OnFire, out bool onFire))
|
|
||||||
{
|
|
||||||
var fireStacks = 0f;
|
|
||||||
|
|
||||||
if (component.TryGetData(FireVisuals.FireStacks, out float stacks))
|
|
||||||
fireStacks = stacks;
|
|
||||||
|
|
||||||
SetOnFire(component, onFire, fireStacks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetOnFire(AppearanceComponent component, bool onFire, float fireStacks)
|
|
||||||
{
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(component.Owner);
|
|
||||||
|
|
||||||
if (_sprite != null)
|
|
||||||
{
|
|
||||||
sprite.LayerSetRSI(FireVisualLayers.Fire, _sprite);
|
|
||||||
}
|
|
||||||
|
|
||||||
sprite.LayerSetVisible(FireVisualLayers.Fire, onFire);
|
|
||||||
|
|
||||||
if(fireStacks > _fireStackAlternateState && !string.IsNullOrEmpty(_alternateState))
|
|
||||||
sprite.LayerSetState(FireVisualLayers.Fire, _alternateState);
|
|
||||||
else
|
|
||||||
sprite.LayerSetState(FireVisualLayers.Fire, _normalState);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum FireVisualLayers : byte
|
|
||||||
{
|
|
||||||
Fire
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
using Content.Shared.Atmos.Components;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
|
|
||||||
namespace Content.Client.Atmos.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class GasAnalyzerVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[DataField("state_off")]
|
|
||||||
private string? _stateOff;
|
|
||||||
[DataField("state_working")]
|
|
||||||
private string? _stateWorking;
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
var entities = IoCManager.Resolve<IEntityManager>();
|
|
||||||
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (component.TryGetData(GasAnalyzerVisuals.VisualState, out GasAnalyzerVisualState visualState))
|
|
||||||
{
|
|
||||||
switch (visualState)
|
|
||||||
{
|
|
||||||
case GasAnalyzerVisualState.Off:
|
|
||||||
sprite.LayerSetState(0, _stateOff);
|
|
||||||
break;
|
|
||||||
case GasAnalyzerVisualState.Working:
|
|
||||||
sprite.LayerSetState(0, _stateWorking);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
using Content.Shared.Atmos.Piping.Binary.Components;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
|
|
||||||
namespace Content.Client.Atmos.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class GasCanisterVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[DataField("pressureStates")]
|
|
||||||
private readonly string[] _statePressure = {"", "", "", ""};
|
|
||||||
|
|
||||||
[DataField("insertedTankState")]
|
|
||||||
private readonly string _insertedTankState = string.Empty;
|
|
||||||
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
base.InitializeEntity(entity);
|
|
||||||
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity);
|
|
||||||
|
|
||||||
sprite.LayerMapSet(Layers.PressureLight, sprite.AddLayerState(_statePressure[0]));
|
|
||||||
sprite.LayerSetShader(Layers.PressureLight, "unshaded");
|
|
||||||
sprite.LayerMapSet(Layers.TankInserted, sprite.AddLayerState(_insertedTankState));
|
|
||||||
sprite.LayerSetVisible(Layers.TankInserted, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
var entities = IoCManager.Resolve<IEntityManager>();
|
|
||||||
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the canister lights
|
|
||||||
if (component.TryGetData(GasCanisterVisuals.PressureState, out int pressureState))
|
|
||||||
if ((pressureState >= 0) && (pressureState < _statePressure.Length))
|
|
||||||
sprite.LayerSetState(Layers.PressureLight, _statePressure[pressureState]);
|
|
||||||
|
|
||||||
if(component.TryGetData(GasCanisterVisuals.TankInserted, out bool inserted))
|
|
||||||
sprite.LayerSetVisible(Layers.TankInserted, inserted);
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum Layers
|
|
||||||
{
|
|
||||||
PressureLight,
|
|
||||||
TankInserted,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
using Content.Shared.Atmos.Piping.Unary.Components;
|
|
||||||
using JetBrains.Annotations;
|
|
||||||
using Robust.Client.GameObjects;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Serialization.Manager.Attributes;
|
|
||||||
|
|
||||||
namespace Content.Client.Atmos.Visualizers
|
|
||||||
{
|
|
||||||
[UsedImplicitly]
|
|
||||||
public sealed class GasPortableVisualizer : AppearanceVisualizer
|
|
||||||
{
|
|
||||||
[DataField("stateConnected")]
|
|
||||||
private string? _stateConnected;
|
|
||||||
|
|
||||||
public override void InitializeEntity(EntityUid entity)
|
|
||||||
{
|
|
||||||
base.InitializeEntity(entity);
|
|
||||||
|
|
||||||
var sprite = IoCManager.Resolve<IEntityManager>().GetComponent<ISpriteComponent>(entity);
|
|
||||||
|
|
||||||
if (_stateConnected != null)
|
|
||||||
{
|
|
||||||
sprite.LayerMapSet(Layers.ConnectedToPort, sprite.AddLayerState(_stateConnected));
|
|
||||||
sprite.LayerSetVisible(Layers.ConnectedToPort, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnChangeData(AppearanceComponent component)
|
|
||||||
{
|
|
||||||
base.OnChangeData(component);
|
|
||||||
|
|
||||||
var entities = IoCManager.Resolve<IEntityManager>();
|
|
||||||
if (!entities.TryGetComponent(component.Owner, out ISpriteComponent? sprite))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update the visuals : Is the canister connected to a port or not
|
|
||||||
if (component.TryGetData(GasPortableVisuals.ConnectedState, out bool isConnected))
|
|
||||||
{
|
|
||||||
sprite.LayerSetVisible(Layers.ConnectedToPort, isConnected);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum Layers : byte
|
|
||||||
{
|
|
||||||
ConnectedToPort,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -35,6 +35,7 @@ namespace Content.Server.Entry
|
|||||||
"AMEControllerVisuals",
|
"AMEControllerVisuals",
|
||||||
"AMEShieldingVisuals",
|
"AMEShieldingVisuals",
|
||||||
"PipeColorVisuals",
|
"PipeColorVisuals",
|
||||||
|
"FireVisuals",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -727,10 +727,9 @@
|
|||||||
Dead:
|
Dead:
|
||||||
Base: dead
|
Base: dead
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
- type: FireVisuals
|
||||||
- type: FireVisualizer
|
sprite: Mobs/Effects/onfire.rsi
|
||||||
sprite: Mobs/Effects/onfire.rsi
|
normalState: Monkey_burning
|
||||||
normalState: Monkey_burning
|
|
||||||
- type: Butcherable
|
- type: Butcherable
|
||||||
butcheringType: Spike
|
butcheringType: Spike
|
||||||
spawned:
|
spawned:
|
||||||
|
|||||||
@@ -125,9 +125,9 @@
|
|||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
visuals:
|
||||||
- type: BuckleVisualizer
|
- type: BuckleVisualizer
|
||||||
- type: FireVisualizer
|
- type: FireVisuals
|
||||||
sprite: Mobs/Effects/onfire.rsi
|
sprite: Effects/fire.rsi
|
||||||
normalState: Generic_mob_burning
|
normalState: Generic_mob_burning
|
||||||
- type: Actions
|
- type: Actions
|
||||||
- type: DoAfter
|
- type: DoAfter
|
||||||
- type: Climbing
|
- type: Climbing
|
||||||
|
|||||||
@@ -256,11 +256,6 @@
|
|||||||
visuals:
|
visuals:
|
||||||
- type: RotationVisualizer
|
- type: RotationVisualizer
|
||||||
- type: BuckleVisualizer
|
- type: BuckleVisualizer
|
||||||
- type: FireVisualizer
|
|
||||||
sprite: Mobs/Effects/onfire.rsi
|
|
||||||
normalState: Generic_mob_burning
|
|
||||||
alternateState: Standing
|
|
||||||
fireStackAlternateState: 3
|
|
||||||
- type: CreamPiedVisualizer
|
- type: CreamPiedVisualizer
|
||||||
state: creampie_human
|
state: creampie_human
|
||||||
- type: DamageVisualizer
|
- type: DamageVisualizer
|
||||||
@@ -278,6 +273,11 @@
|
|||||||
color: "#FF0000"
|
color: "#FF0000"
|
||||||
Burn:
|
Burn:
|
||||||
sprite: Mobs/Effects/burn_damage.rsi
|
sprite: Mobs/Effects/burn_damage.rsi
|
||||||
|
- type: FireVisuals
|
||||||
|
sprite: Mobs/Effects/onfire.rsi
|
||||||
|
normalState: Generic_mob_burning
|
||||||
|
alternateState: Standing
|
||||||
|
fireStackAlternateState: 3
|
||||||
- type: CombatMode
|
- type: CombatMode
|
||||||
- type: Climbing
|
- type: Climbing
|
||||||
- type: Cuffable
|
- type: Cuffable
|
||||||
|
|||||||
@@ -203,11 +203,6 @@
|
|||||||
visuals:
|
visuals:
|
||||||
- type: RotationVisualizer
|
- type: RotationVisualizer
|
||||||
- type: BuckleVisualizer
|
- type: BuckleVisualizer
|
||||||
- type: FireVisualizer
|
|
||||||
sprite: Mobs/Effects/onfire.rsi
|
|
||||||
normalState: Generic_mob_burning
|
|
||||||
alternateState: Standing
|
|
||||||
fireStackAlternateState: 3
|
|
||||||
- type: CreamPiedVisualizer
|
- type: CreamPiedVisualizer
|
||||||
state: creampie_human
|
state: creampie_human
|
||||||
- type: DamageVisualizer
|
- type: DamageVisualizer
|
||||||
@@ -225,6 +220,11 @@
|
|||||||
color: "#8a8a8a"
|
color: "#8a8a8a"
|
||||||
Burn:
|
Burn:
|
||||||
sprite: Mobs/Effects/burn_damage.rsi
|
sprite: Mobs/Effects/burn_damage.rsi
|
||||||
|
- type: FireVisuals
|
||||||
|
sprite: Mobs/Effects/onfire.rsi
|
||||||
|
normalState: Generic_mob_burning
|
||||||
|
alternateState: Standing
|
||||||
|
fireStackAlternateState: 3
|
||||||
- type: CombatMode
|
- type: CombatMode
|
||||||
canDisarm: true
|
canDisarm: true
|
||||||
- type: Climbing
|
- type: Climbing
|
||||||
|
|||||||
@@ -6,7 +6,9 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Atmos/gasanalyzer.rsi
|
sprite: Objects/Specific/Atmos/gasanalyzer.rsi
|
||||||
state: icon
|
layers:
|
||||||
|
- state: icon
|
||||||
|
map: ["analyzer"]
|
||||||
netsync: false
|
netsync: false
|
||||||
- type: GasAnalyzer
|
- type: GasAnalyzer
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
@@ -16,10 +18,12 @@
|
|||||||
- key: enum.GasAnalyzerUiKey.Key
|
- key: enum.GasAnalyzerUiKey.Key
|
||||||
type: GasAnalyzerBoundUserInterface
|
type: GasAnalyzerBoundUserInterface
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
- type: GenericVisualizer
|
||||||
visuals:
|
visuals:
|
||||||
- type: GasAnalyzerVisualizer
|
enum.GasAnalyzerVisuals.VisualState:
|
||||||
state_off: icon
|
analyzer:
|
||||||
state_working: working
|
Off: { state: icon }
|
||||||
|
Working: { state: working }
|
||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- DroneUsable
|
- DroneUsable
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
- type: Tool
|
- type: Tool
|
||||||
qualities:
|
qualities:
|
||||||
- Screwing
|
- Screwing
|
||||||
useSound:
|
useSound:
|
||||||
collection: Screwdriver
|
collection: Screwdriver
|
||||||
speed: 0.05
|
speed: 0.05
|
||||||
|
|
||||||
@@ -138,17 +138,14 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Tools/Cowtools/milkalyzer.rsi
|
sprite: Objects/Tools/Cowtools/milkalyzer.rsi
|
||||||
state: milkalyzer
|
layers:
|
||||||
|
- state: milkalyzer
|
||||||
- type: GasAnalyzer
|
- type: GasAnalyzer
|
||||||
- type: UserInterface
|
- type: UserInterface
|
||||||
interfaces:
|
interfaces:
|
||||||
- key: enum.GasAnalyzerUiKey.Key
|
- key: enum.GasAnalyzerUiKey.Key
|
||||||
type: GasAnalyzerBoundUserInterface
|
type: GasAnalyzerBoundUserInterface
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
|
||||||
- type: GasAnalyzerVisualizer
|
|
||||||
state_off: milkalyzer
|
|
||||||
state_working: milkalyzer
|
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: cow toolbox
|
name: cow toolbox
|
||||||
|
|||||||
@@ -11,18 +11,25 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Storage/canister.rsi
|
sprite: Structures/Storage/canister.rsi
|
||||||
state: grey
|
layers:
|
||||||
|
- state: grey
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
- type: GenericVisualizer
|
||||||
visuals:
|
visuals:
|
||||||
- type: GasPortableVisualizer
|
enum.GasPortableVisuals.ConnectedState:
|
||||||
stateConnected: can-connector
|
connectedToPort:
|
||||||
- type: GasCanisterVisualizer
|
False: { state: can-connector, visible: false }
|
||||||
insertedTankState: can-open
|
True: { state: can-connector, visible: true }
|
||||||
pressureStates:
|
enum.GasCanisterVisuals.TankInserted:
|
||||||
- can-o0
|
tankInserted:
|
||||||
- can-o1
|
False: { state: can-open, visible: false }
|
||||||
- can-o2
|
True: { state: can-open, visible: true }
|
||||||
- can-o3
|
enum.GasCanisterVisuals.PressureState:
|
||||||
|
pressureLight:
|
||||||
|
0: { state: can-o0, shader: "unshaded" }
|
||||||
|
1: { state: can-o1, shader: "unshaded" }
|
||||||
|
2: { state: can-o2, shader: "unshaded" }
|
||||||
|
3: { state: can-o3, shader: "unshaded" }
|
||||||
- type: UserInterface
|
- type: UserInterface
|
||||||
interfaces:
|
interfaces:
|
||||||
- key: enum.GasCanisterUiKey.Key
|
- key: enum.GasCanisterUiKey.Key
|
||||||
@@ -80,7 +87,8 @@
|
|||||||
name: storage canister
|
name: storage canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: yellow # Classic toxins canister
|
layers:
|
||||||
|
- state: yellow
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -117,7 +125,8 @@
|
|||||||
name: air canister
|
name: air canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: grey
|
layers:
|
||||||
|
- state: grey
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -148,7 +157,8 @@
|
|||||||
name: oxygen canister
|
name: oxygen canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: blue
|
layers:
|
||||||
|
- state: blue
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -178,7 +188,8 @@
|
|||||||
name: nitrogen canister
|
name: nitrogen canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: red
|
layers:
|
||||||
|
- state: red
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -209,7 +220,8 @@
|
|||||||
name: carbon dioxide canister
|
name: carbon dioxide canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: black
|
layers:
|
||||||
|
- state: black
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -241,7 +253,8 @@
|
|||||||
name: plasma canister
|
name: plasma canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: orange
|
layers:
|
||||||
|
- state: orange
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -275,7 +288,8 @@
|
|||||||
name: tritium canister
|
name: tritium canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: green
|
layers:
|
||||||
|
- state: green
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -309,7 +323,8 @@
|
|||||||
name: water vapor canister
|
name: water vapor canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: water_vapor
|
layers:
|
||||||
|
- state: water_vapor
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
@@ -344,7 +359,8 @@
|
|||||||
name: miasma canister
|
name: miasma canister
|
||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: redws
|
layers:
|
||||||
|
- state: redws
|
||||||
- type: GasCanister
|
- type: GasCanister
|
||||||
gasMixture:
|
gasMixture:
|
||||||
volume: 1000
|
volume: 1000
|
||||||
|
|||||||
@@ -13,5 +13,14 @@
|
|||||||
layer:
|
layer:
|
||||||
- MidImpassable
|
- MidImpassable
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: atmosplaque
|
layers:
|
||||||
|
- state: atmosplaque
|
||||||
|
map: ["plaque"]
|
||||||
|
- type: Appearance
|
||||||
|
- type: GenericVisualizer
|
||||||
|
visuals:
|
||||||
|
enum.AtmosPlaqueVisuals.State:
|
||||||
|
plaque:
|
||||||
|
zumosplaque: { state: zumosplaque }
|
||||||
|
atmosplaque: { state: atmosplaque }
|
||||||
- type: AtmosPlaque
|
- type: AtmosPlaque
|
||||||
|
|||||||
@@ -45,9 +45,6 @@
|
|||||||
types:
|
types:
|
||||||
Heat: 1 #per second, scales with number of fire 'stacks'
|
Heat: 1 #per second, scales with number of fire 'stacks'
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
- type: FireVisuals
|
||||||
- type: FireVisualizer
|
sprite: Effects/fire.rsi
|
||||||
sprite: Effects/fire.rsi
|
normalState: 1
|
||||||
normalState: 1
|
|
||||||
Sprite:
|
|
||||||
drawdepth: Effects
|
|
||||||
|
|||||||
Reference in New Issue
Block a user