Snap to nearest cardinal on traversal (#10869)
This commit is contained in:
@@ -11,7 +11,6 @@ namespace Content.Client.Decals
|
|||||||
public sealed class DecalOverlay : Overlay
|
public sealed class DecalOverlay : Overlay
|
||||||
{
|
{
|
||||||
private readonly DecalSystem _decals;
|
private readonly DecalSystem _decals;
|
||||||
private readonly SharedTransformSystem _transform;
|
|
||||||
private readonly SpriteSystem _sprites;
|
private readonly SpriteSystem _sprites;
|
||||||
private readonly IEntityManager _entManager;
|
private readonly IEntityManager _entManager;
|
||||||
private readonly IPrototypeManager _prototypeManager;
|
private readonly IPrototypeManager _prototypeManager;
|
||||||
@@ -22,13 +21,11 @@ namespace Content.Client.Decals
|
|||||||
|
|
||||||
public DecalOverlay(
|
public DecalOverlay(
|
||||||
DecalSystem decals,
|
DecalSystem decals,
|
||||||
SharedTransformSystem transforms,
|
|
||||||
SpriteSystem sprites,
|
SpriteSystem sprites,
|
||||||
IEntityManager entManager,
|
IEntityManager entManager,
|
||||||
IPrototypeManager prototypeManager)
|
IPrototypeManager prototypeManager)
|
||||||
{
|
{
|
||||||
_decals = decals;
|
_decals = decals;
|
||||||
_transform = transforms;
|
|
||||||
_sprites = sprites;
|
_sprites = sprites;
|
||||||
_entManager = entManager;
|
_entManager = entManager;
|
||||||
_prototypeManager = prototypeManager;
|
_prototypeManager = prototypeManager;
|
||||||
@@ -39,10 +36,12 @@ namespace Content.Client.Decals
|
|||||||
// Shouldn't need to clear cached textures unless the prototypes get reloaded.
|
// Shouldn't need to clear cached textures unless the prototypes get reloaded.
|
||||||
var handle = args.WorldHandle;
|
var handle = args.WorldHandle;
|
||||||
var xformQuery = _entManager.GetEntityQuery<TransformComponent>();
|
var xformQuery = _entManager.GetEntityQuery<TransformComponent>();
|
||||||
|
var eyeAngle = args.Viewport.Eye?.Rotation ?? Angle.Zero;
|
||||||
|
|
||||||
foreach (var (gridId, zIndexDictionary) in _decals.DecalRenderIndex)
|
foreach (var (gridId, zIndexDictionary) in _decals.DecalRenderIndex)
|
||||||
{
|
{
|
||||||
if (zIndexDictionary.Count == 0) continue;
|
if (zIndexDictionary.Count == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (!xformQuery.TryGetComponent(gridId, out var xform))
|
if (!xformQuery.TryGetComponent(gridId, out var xform))
|
||||||
{
|
{
|
||||||
@@ -53,7 +52,9 @@ namespace Content.Client.Decals
|
|||||||
if (xform.MapID != args.MapId)
|
if (xform.MapID != args.MapId)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
handle.SetTransform(_transform.GetWorldMatrix(xform, xformQuery));
|
var (_, worldRot, worldMatrix) = xform.GetWorldPositionRotationMatrix(xformQuery);
|
||||||
|
|
||||||
|
handle.SetTransform(worldMatrix);
|
||||||
|
|
||||||
foreach (var (_, decals) in zIndexDictionary)
|
foreach (var (_, decals) in zIndexDictionary)
|
||||||
{
|
{
|
||||||
@@ -66,10 +67,23 @@ namespace Content.Client.Decals
|
|||||||
_cachedTextures[decal.Id] = texture;
|
_cachedTextures[decal.Id] = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (decal.Angle.Equals(Angle.Zero))
|
if (!_prototypeManager.TryIndex<DecalPrototype>(decal.Id, out var decalProto))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var cardinal = Angle.Zero;
|
||||||
|
|
||||||
|
if (decalProto.SnapCardinals)
|
||||||
|
{
|
||||||
|
var worldAngle = eyeAngle + worldRot;
|
||||||
|
cardinal = worldAngle.GetCardinalDir().ToAngle();
|
||||||
|
}
|
||||||
|
|
||||||
|
var angle = decal.Angle - cardinal;
|
||||||
|
|
||||||
|
if (angle.Equals(Angle.Zero))
|
||||||
handle.DrawTexture(texture, decal.Coordinates, decal.Color);
|
handle.DrawTexture(texture, decal.Coordinates, decal.Color);
|
||||||
else
|
else
|
||||||
handle.DrawTexture(texture, decal.Coordinates, decal.Angle, decal.Color);
|
handle.DrawTexture(texture, decal.Coordinates, angle, decal.Color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -81,11 +95,9 @@ namespace Content.Client.Decals
|
|||||||
{
|
{
|
||||||
if (_prototypeManager.TryIndex<DecalPrototype>(id, out var proto))
|
if (_prototypeManager.TryIndex<DecalPrototype>(id, out var proto))
|
||||||
return proto.Sprite;
|
return proto.Sprite;
|
||||||
else
|
|
||||||
{
|
|
||||||
Logger.Error($"Unknown decal prototype: {id}");
|
Logger.Error($"Unknown decal prototype: {id}");
|
||||||
return new SpriteSpecifier.Texture(new ResourcePath("/Textures/noSprite.png"));
|
return new SpriteSpecifier.Texture(new ResourcePath("/Textures/noSprite.png"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,18 +8,17 @@ namespace Content.Client.Decals
|
|||||||
public sealed class DecalSystem : SharedDecalSystem
|
public sealed class DecalSystem : SharedDecalSystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IOverlayManager _overlayManager = default!;
|
[Dependency] private readonly IOverlayManager _overlayManager = default!;
|
||||||
[Dependency] private readonly SharedTransformSystem _transforms = default!;
|
|
||||||
[Dependency] private readonly SpriteSystem _sprites = default!;
|
[Dependency] private readonly SpriteSystem _sprites = default!;
|
||||||
|
|
||||||
private DecalOverlay _overlay = default!;
|
private DecalOverlay _overlay = default!;
|
||||||
public Dictionary<EntityUid, SortedDictionary<int, SortedDictionary<uint, Decal>>> DecalRenderIndex = new();
|
public readonly Dictionary<EntityUid, SortedDictionary<int, SortedDictionary<uint, Decal>>> DecalRenderIndex = new();
|
||||||
private Dictionary<EntityUid, Dictionary<uint, int>> _decalZIndexIndex = new();
|
private readonly Dictionary<EntityUid, Dictionary<uint, int>> _decalZIndexIndex = new();
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
_overlay = new DecalOverlay(this, _transforms, _sprites, EntityManager, PrototypeManager);
|
_overlay = new DecalOverlay(this, _sprites, EntityManager, PrototypeManager);
|
||||||
_overlayManager.AddOverlay(_overlay);
|
_overlayManager.AddOverlay(_overlay);
|
||||||
|
|
||||||
SubscribeNetworkEvent<DecalChunkUpdateEvent>(OnChunkUpdate);
|
SubscribeNetworkEvent<DecalChunkUpdateEvent>(OnChunkUpdate);
|
||||||
|
|||||||
31
Content.Server/Movement/LockEyesCommand.cs
Normal file
31
Content.Server/Movement/LockEyesCommand.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using Content.Server.Administration;
|
||||||
|
using Content.Shared.Administration;
|
||||||
|
using Content.Shared.Movement.Systems;
|
||||||
|
using Robust.Shared.Console;
|
||||||
|
|
||||||
|
namespace Content.Server.Movement;
|
||||||
|
|
||||||
|
[AdminCommand(AdminFlags.Fun)]
|
||||||
|
public sealed class LockEyesCommand : IConsoleCommand
|
||||||
|
{
|
||||||
|
public string Command => $"lockeyes";
|
||||||
|
public string Description => Loc.GetString("lockeyes-command-description");
|
||||||
|
public string Help => Loc.GetString("lockeyes-command-help");
|
||||||
|
public void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||||
|
{
|
||||||
|
if (args.Length != 1)
|
||||||
|
{
|
||||||
|
shell.WriteError(Loc.GetString("shell-wrong-arguments-number"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bool.TryParse(args[0], out var value))
|
||||||
|
{
|
||||||
|
shell.WriteError(Loc.GetString("parse-bool-fail", ("args", args[0])));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var system = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<SharedMoverController>();
|
||||||
|
system.CameraRotationLocked = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
44
Content.Server/Movement/RotateEyesCommand.cs
Normal file
44
Content.Server/Movement/RotateEyesCommand.cs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
using Content.Server.Administration;
|
||||||
|
using Content.Shared.Administration;
|
||||||
|
using Content.Shared.Movement.Components;
|
||||||
|
using Robust.Shared.Console;
|
||||||
|
|
||||||
|
namespace Content.Server.Movement;
|
||||||
|
|
||||||
|
[AdminCommand(AdminFlags.Fun)]
|
||||||
|
public sealed class RotateEyesCommand : IConsoleCommand
|
||||||
|
{
|
||||||
|
public string Command => "rotateeyes";
|
||||||
|
public string Description => Loc.GetString("rotateeyes-command-description");
|
||||||
|
public string Help => Loc.GetString("rotateeyes-command-help");
|
||||||
|
public void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||||
|
{
|
||||||
|
var entManager = IoCManager.Resolve<IEntityManager>();
|
||||||
|
var rotation = Angle.Zero;
|
||||||
|
|
||||||
|
if (args.Length == 1)
|
||||||
|
{
|
||||||
|
if (!float.TryParse(args[0], out var degrees))
|
||||||
|
{
|
||||||
|
shell.WriteError(Loc.GetString("parse-float-fail", ("arg", args[0])));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rotation = Angle.FromDegrees(degrees);
|
||||||
|
}
|
||||||
|
|
||||||
|
var count = 0;
|
||||||
|
|
||||||
|
foreach (var mover in entManager.EntityQuery<InputMoverComponent>(true))
|
||||||
|
{
|
||||||
|
if (mover.TargetRelativeRotation.Equals(rotation))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
mover.TargetRelativeRotation = rotation;
|
||||||
|
entManager.Dirty(mover);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
shell.WriteLine(Loc.GetString("rotateeyes-command-count", ("count", count)));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -916,7 +916,7 @@ namespace Content.Shared.CCVar
|
|||||||
/// - When traversing grids it will snap to the nearest cardinal which will generally be imperceptible.
|
/// - When traversing grids it will snap to the nearest cardinal which will generally be imperceptible.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly CVarDef<bool> CameraRotationLocked =
|
public static readonly CVarDef<bool> CameraRotationLocked =
|
||||||
CVarDef.Create("shuttle.camera_rotation_locked", true, CVar.REPLICATED);
|
CVarDef.Create("shuttle.camera_rotation_locked", false, CVar.REPLICATED);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether cargo shuttles are enabled.
|
/// Whether cargo shuttles are enabled.
|
||||||
|
|||||||
@@ -10,5 +10,10 @@ namespace Content.Shared.Decals
|
|||||||
[DataField("sprite")] public SpriteSpecifier Sprite { get; } = SpriteSpecifier.Invalid;
|
[DataField("sprite")] public SpriteSpecifier Sprite { get; } = SpriteSpecifier.Invalid;
|
||||||
[DataField("tags")] public List<string> Tags = new();
|
[DataField("tags")] public List<string> Tags = new();
|
||||||
[DataField("showMenu")] public bool ShowMenu = true;
|
[DataField("showMenu")] public bool ShowMenu = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If the decal is rotated compared to our eye should we snap it to south.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("snapCardinals")] public bool SnapCardinals = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ using Content.Shared.Input;
|
|||||||
using Content.Shared.Interaction.Components;
|
using Content.Shared.Interaction.Components;
|
||||||
using Content.Shared.Interaction.Events;
|
using Content.Shared.Interaction.Events;
|
||||||
using Content.Shared.Item;
|
using Content.Shared.Item;
|
||||||
|
using Content.Shared.Movement.Components;
|
||||||
using Content.Shared.Physics;
|
using Content.Shared.Physics;
|
||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Content.Shared.Throwing;
|
using Content.Shared.Throwing;
|
||||||
@@ -797,7 +798,16 @@ namespace Content.Shared.Interaction
|
|||||||
RaiseLocalEvent(item, dropMsg, true);
|
RaiseLocalEvent(item, dropMsg, true);
|
||||||
if (dropMsg.Handled)
|
if (dropMsg.Handled)
|
||||||
_adminLogger.Add(LogType.Drop, LogImpact.Low, $"{ToPrettyString(user):user} dropped {ToPrettyString(item):entity}");
|
_adminLogger.Add(LogType.Drop, LogImpact.Low, $"{ToPrettyString(user):user} dropped {ToPrettyString(item):entity}");
|
||||||
Transform(item).LocalRotation = Angle.Zero;
|
|
||||||
|
// If the dropper is rotated then use their targetrelativerotation as the drop rotation
|
||||||
|
var rotation = Angle.Zero;
|
||||||
|
|
||||||
|
if (TryComp<InputMoverComponent>(user, out var mover))
|
||||||
|
{
|
||||||
|
rotation = mover.TargetRelativeRotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform(item).LocalRotation = rotation;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace Content.Shared.Movement.Systems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract partial class SharedMoverController
|
public abstract partial class SharedMoverController
|
||||||
{
|
{
|
||||||
public bool CameraRotationLocked { get; private set; }
|
public bool CameraRotationLocked { get; set; }
|
||||||
|
|
||||||
private void InitializeInput()
|
private void InitializeInput()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ namespace Content.Shared.Movement.Systems
|
|||||||
var angleDiff = Angle.ShortestDistance(mover.RelativeRotation, mover.TargetRelativeRotation);
|
var angleDiff = Angle.ShortestDistance(mover.RelativeRotation, mover.TargetRelativeRotation);
|
||||||
|
|
||||||
// if we've just traversed then lerp to our target rotation.
|
// if we've just traversed then lerp to our target rotation.
|
||||||
if (!angleDiff.EqualsApprox(Angle.Zero, 0.005))
|
if (!angleDiff.EqualsApprox(Angle.Zero, 0.001))
|
||||||
{
|
{
|
||||||
var adjustment = angleDiff * 5f * frameTime;
|
var adjustment = angleDiff * 5f * frameTime;
|
||||||
var minAdjustment = 0.005 * frameTime;
|
var minAdjustment = 0.005 * frameTime;
|
||||||
|
|||||||
10
Resources/Locale/en-US/movement/eye.ftl
Normal file
10
Resources/Locale/en-US/movement/eye.ftl
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
parse-bool-fail = Unable to parse {$arg} as a bool
|
||||||
|
parse-float-fail = Unable to parse {$arg} as a float
|
||||||
|
|
||||||
|
lockeyes-command-description = Prevents eyes from being rotated any further
|
||||||
|
lockeyes-command-help = lockeyes <true/false>
|
||||||
|
|
||||||
|
rotateeyes-command-description = Rotates every player's current eye to the specified rotation
|
||||||
|
rotateeyes-command-help = rotateeyes <degrees (default 0)>
|
||||||
|
rotateeyes-command-count = Set {$count} eye rotations
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Devices/nuke.rsi
|
sprite: Objects/Devices/nuke.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
noRot: true
|
||||||
state: nuclearbomb_base
|
state: nuclearbomb_base
|
||||||
- type: Physics
|
- type: Physics
|
||||||
bodyType: Dynamic
|
bodyType: Dynamic
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Misc/bedsheets.rsi
|
sprite: Objects/Misc/bedsheets.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
noRot: true
|
||||||
- type: Item
|
- type: Item
|
||||||
size: 10
|
size: 10
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
- type: Clickable
|
- type: Clickable
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Janitorial/janitorial.rsi
|
sprite: Objects/Specific/Janitorial/janitorial.rsi
|
||||||
|
noRot: true
|
||||||
layers:
|
layers:
|
||||||
- state: mopbucket
|
- state: mopbucket
|
||||||
- state: mopbucket_water-1
|
- state: mopbucket_water-1
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
sprite: Structures/Decoration/banner.rsi
|
sprite: Structures/Decoration/banner.rsi
|
||||||
state: banner
|
state: banner
|
||||||
netsync: false
|
netsync: false
|
||||||
|
noRot: true
|
||||||
- type: Transform
|
- type: Transform
|
||||||
noRot: true
|
noRot: true
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
- type: Occluder
|
- type: Occluder
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
sprite: Structures/Decoration/curtains.rsi
|
sprite: Structures/Decoration/curtains.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: closed
|
- state: closed
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/dispensers.rsi
|
sprite: Structures/dispensers.rsi
|
||||||
state: industrial-working
|
state: industrial-working
|
||||||
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
- type: ReagentDispenser
|
- type: ReagentDispenser
|
||||||
pack: ChemDispenserStandardInventory
|
pack: ChemDispenserStandardInventory
|
||||||
emagPack: ChemDispenserEmaggedInventory
|
emagPack: ChemDispenserEmaggedInventory
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Doors/Airlocks/Standard/basic.rsi
|
sprite: Structures/Doors/Airlocks/Standard/basic.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: closed
|
- state: closed
|
||||||
map: ["enum.DoorVisualLayers.Base"]
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
|
|||||||
@@ -64,6 +64,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
|
sprite: Structures/Doors/Airlocks/Glass/shuttle.rsi
|
||||||
|
snapCardinals: false
|
||||||
layers:
|
layers:
|
||||||
- state: closed
|
- state: closed
|
||||||
map: ["enum.DoorVisualLayers.Base"]
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Doors/Airlocks/Standard/firelock.rsi
|
sprite: Structures/Doors/Airlocks/Standard/firelock.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: closed
|
- state: closed
|
||||||
map: ["enum.DoorVisualLayers.Base"]
|
map: ["enum.DoorVisualLayers.Base"]
|
||||||
@@ -128,6 +129,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Doors/edge_door_hazard.rsi
|
sprite: Structures/Doors/edge_door_hazard.rsi
|
||||||
|
snapCardinals: false
|
||||||
- type: Airtight
|
- type: Airtight
|
||||||
fixVacuum: true
|
fixVacuum: true
|
||||||
airBlocked: false
|
airBlocked: false
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
- TableLayer
|
- TableLayer
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
- type: Climbable
|
- type: Climbable
|
||||||
- type: Clickable
|
- type: Clickable
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
sprite: Structures/Furniture/furniture.rsi
|
sprite: Structures/Furniture/furniture.rsi
|
||||||
state: bed
|
state: bed
|
||||||
netsync: false
|
netsync: false
|
||||||
|
noRot: true
|
||||||
- type: Strap
|
- type: Strap
|
||||||
position: Down
|
position: Down
|
||||||
rotation: -90
|
rotation: -90
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Furniture/bookshelf.rsi
|
sprite: Structures/Furniture/bookshelf.rsi
|
||||||
|
snapCardinals: true
|
||||||
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: base
|
- state: base
|
||||||
- state: book-0
|
- state: book-0
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
drawdepth: Overdoors
|
drawdepth: Overdoors
|
||||||
offset: "0.0,0.3"
|
offset: "0.0,0.3"
|
||||||
sprite: Structures/Furniture/potted_plants.rsi
|
sprite: Structures/Furniture/potted_plants.rsi
|
||||||
|
noRot: true
|
||||||
- type: PottedPlantHide
|
- type: PottedPlantHide
|
||||||
- type: SecretStash
|
- type: SecretStash
|
||||||
secretPartName: the plant
|
secretPartName: the plant
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
node: tubeLight
|
node: tubeLight
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Lighting/LightPosts/small_light_post.rsi
|
sprite: Structures/Lighting/LightPosts/small_light_post.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: on
|
- state: on
|
||||||
map: ["enum.PoweredLightLayers.Base"]
|
map: ["enum.PoweredLightLayers.Base"]
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/mixer.rsi
|
sprite: Structures/Machines/mixer.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: mixer_empty
|
- state: mixer_empty
|
||||||
- state: mixer_screens
|
- state: mixer_screens
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Machines/cloning.rsi
|
sprite: Structures/Machines/cloning.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: pod_0
|
- state: pod_0
|
||||||
- type: Physics
|
- type: Physics
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Machines/gravity_generator.rsi
|
sprite: Structures/Machines/gravity_generator.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: on
|
- state: on
|
||||||
map: ["enum.GravityGeneratorVisualLayers.Base"]
|
map: ["enum.GravityGeneratorVisualLayers.Base"]
|
||||||
@@ -80,6 +81,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Machines/gravity_generator_mini.rsi
|
sprite: Structures/Machines/gravity_generator_mini.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: on
|
- state: on
|
||||||
map: ["enum.GravityGeneratorVisualLayers.Base"]
|
map: ["enum.GravityGeneratorVisualLayers.Base"]
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/autolathe.rsi
|
sprite: Structures/Machines/autolathe.rsi
|
||||||
|
snapCardinals: true
|
||||||
netsync: false
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
@@ -90,6 +91,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/protolathe.rsi
|
sprite: Structures/Machines/protolathe.rsi
|
||||||
|
snapCardinals: true
|
||||||
netsync: false
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
@@ -458,6 +460,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/uniform_printer.rsi
|
sprite: Structures/Machines/uniform_printer.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: false
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.LatheVisualLayers.IsRunning"]
|
map: ["enum.LatheVisualLayers.IsRunning"]
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Machines/scanner.rsi
|
sprite: Structures/Machines/scanner.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: open
|
- state: open
|
||||||
map: ["enum.MedicalScannerVisualLayers.Machine"]
|
map: ["enum.MedicalScannerVisualLayers.Machine"]
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Machines/microwave.rsi
|
sprite: Structures/Machines/microwave.rsi
|
||||||
drawdepth: SmallObjects
|
drawdepth: SmallObjects
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: mw0
|
- state: mw0
|
||||||
map: ["enum.MicrowaveVisualizerLayers.Base"]
|
map: ["enum.MicrowaveVisualizerLayers.Base"]
|
||||||
|
|||||||
@@ -40,6 +40,7 @@
|
|||||||
sprite: Structures/Machines/juicer.rsi
|
sprite: Structures/Machines/juicer.rsi
|
||||||
state: juicer0
|
state: juicer0
|
||||||
drawdepth: SmallObjects
|
drawdepth: SmallObjects
|
||||||
|
snapCardinals: true
|
||||||
- type: ApcPowerReceiver
|
- type: ApcPowerReceiver
|
||||||
powerLoad: 300
|
powerLoad: 300
|
||||||
- type: ItemSlots
|
- type: ItemSlots
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/rndpointsource.rsi
|
sprite: Structures/Machines/rndpointsource.rsi
|
||||||
|
netsync: false
|
||||||
layers:
|
layers:
|
||||||
- state: rndpointsource-off
|
- state: rndpointsource-off
|
||||||
- state: rndpointsource
|
- state: rndpointsource
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/seed_extractor.rsi
|
sprite: Structures/Machines/seed_extractor.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: seedextractor-off
|
- state: seedextractor-off
|
||||||
- state: seedextractor-unlit
|
- state: seedextractor-unlit
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/stasis_bed.rsi
|
sprite: Structures/Machines/stasis_bed.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
noRot: true
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
- state: unlit
|
- state: unlit
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
board: SurveillanceCameraRouterCircuitboard
|
board: SurveillanceCameraRouterCircuitboard
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/server.rsi
|
sprite: Structures/Machines/server.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: server
|
- state: server
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Machines/VendingMachines/empty.rsi
|
sprite: Structures/Machines/VendingMachines/empty.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
- type: Physics
|
- type: Physics
|
||||||
bodyType: Static
|
bodyType: Static
|
||||||
- type: Transform
|
- type: Transform
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi
|
sprite: Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi
|
||||||
|
noRot: true
|
||||||
layers:
|
layers:
|
||||||
- state: icon
|
- state: icon
|
||||||
map: ["enum.PortableScrubberVisualLayers.IsRunning"]
|
map: ["enum.PortableScrubberVisualLayers.IsRunning"]
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Piping/disposal.rsi
|
sprite: Structures/Piping/disposal.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: condisposal
|
- state: condisposal
|
||||||
map: ["enum.DisposalUnitVisualLayers.Base"]
|
map: ["enum.DisposalUnitVisualLayers.Base"]
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Power/Generation/Singularity/collector.rsi
|
sprite: Structures/Power/Generation/Singularity/collector.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: ca_on
|
- state: ca_on
|
||||||
map: ["enum.RadiationCollectorVisualLayers.Main"]
|
map: ["enum.RadiationCollectorVisualLayers.Main"]
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
- type: InteractionOutline
|
- type: InteractionOutline
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
sprite: Structures/Power/Generation/ame.rsi
|
sprite: Structures/Power/Generation/ame.rsi
|
||||||
state: control
|
state: control
|
||||||
- type: Physics
|
- type: Physics
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Power/power.rsi
|
sprite: Structures/Power/power.rsi
|
||||||
state: generator
|
state: generator
|
||||||
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
- type: NodeContainer
|
- type: NodeContainer
|
||||||
examinable: true
|
examinable: true
|
||||||
nodes:
|
nodes:
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Power/cell_recharger.rsi
|
sprite: Structures/Power/cell_recharger.rsi
|
||||||
drawdepth: SmallObjects
|
drawdepth: SmallObjects
|
||||||
|
snapCardinals: true
|
||||||
- type: Charger
|
- type: Charger
|
||||||
chargerSlot:
|
chargerSlot:
|
||||||
ejectOnInteract: true
|
ejectOnInteract: true
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Power/smes.rsi
|
sprite: Structures/Power/smes.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: smes
|
- state: smes
|
||||||
- type: Smes
|
- type: Smes
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite # TODO: add sprite for maintenance panel open
|
- type: Sprite # TODO: add sprite for maintenance panel open
|
||||||
sprite: Structures/Power/substation.rsi
|
sprite: Structures/Power/substation.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: substation
|
- state: substation
|
||||||
- state: screen
|
- state: screen
|
||||||
|
|||||||
@@ -91,6 +91,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
# Listen I'm not the biggest fan of the sprite but it was the most appropriate thing I could find.
|
# Listen I'm not the biggest fan of the sprite but it was the most appropriate thing I could find.
|
||||||
sprite: Structures/Shuttles/gyroscope.rsi
|
sprite: Structures/Shuttles/gyroscope.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: base
|
- state: base
|
||||||
map: ["enum.ThrusterVisualLayers.Base"]
|
map: ["enum.ThrusterVisualLayers.Base"]
|
||||||
@@ -122,7 +123,7 @@
|
|||||||
needsPower: false
|
needsPower: false
|
||||||
powerLoad: 0
|
powerLoad: 0
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Shuttles/thruster.rsi
|
sprite: Structures/Shuttles/gyroscope.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: base
|
- state: base
|
||||||
map: ["enum.ThrusterVisualLayers.Base"]
|
map: ["enum.ThrusterVisualLayers.Base"]
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Storage/canister.rsi
|
sprite: Structures/Storage/canister.rsi
|
||||||
|
noRot: true
|
||||||
layers:
|
layers:
|
||||||
- state: grey
|
- state: grey
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
noRot: true
|
noRot: true
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
|
noRot: true
|
||||||
sprite: Structures/Storage/Crates/generic.rsi
|
sprite: Structures/Storage/Crates/generic.rsi
|
||||||
layers:
|
layers:
|
||||||
- state: crate
|
- state: crate
|
||||||
@@ -76,6 +77,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
sprite: Structures/Storage/Crates/generic.rsi
|
sprite: Structures/Storage/Crates/generic.rsi
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: crate
|
- state: crate
|
||||||
- state: crate_door
|
- state: crate_door
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
- type: InteractionOutline
|
- type: InteractionOutline
|
||||||
- type: Physics
|
- type: Physics
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
sprite: Structures/Furniture/furniture.rsi
|
sprite: Structures/Furniture/furniture.rsi
|
||||||
state: rack
|
state: rack
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
- type: Fixtures
|
- type: Fixtures
|
||||||
fixtures:
|
fixtures:
|
||||||
- shape:
|
- shape:
|
||||||
|
|||||||
@@ -32,3 +32,4 @@
|
|||||||
drawdepth: WallTops
|
drawdepth: WallTops
|
||||||
sprite: Structures/Wallmounts/signs.rsi
|
sprite: Structures/Wallmounts/signs.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
drawdepth: WallTops
|
drawdepth: WallTops
|
||||||
sprite: Structures/Wallmounts/posters.rsi
|
sprite: Structures/Wallmounts/posters.rsi
|
||||||
|
snapCardinals: true
|
||||||
- type: Destructible
|
- type: Destructible
|
||||||
thresholds:
|
thresholds:
|
||||||
- trigger:
|
- trigger:
|
||||||
|
|||||||
@@ -8,9 +8,16 @@
|
|||||||
state: monkey_painting
|
state: monkey_painting
|
||||||
|
|
||||||
# Directional Station Guide Signs
|
# Directional Station Guide Signs
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSign
|
||||||
|
id: BaseSignDirectional
|
||||||
|
abstract: true
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
snapCardinals: false
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalBar
|
id: SignDirectionalBar
|
||||||
name: bar sign
|
name: bar sign
|
||||||
description: A direction sign, pointing out which way the bar is.
|
description: A direction sign, pointing out which way the bar is.
|
||||||
@@ -19,7 +26,7 @@
|
|||||||
state: direction_bar
|
state: direction_bar
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalBridge
|
id: SignDirectionalBridge
|
||||||
name: bridge sign
|
name: bridge sign
|
||||||
description: A direction sign, pointing out which way the Bridge is.
|
description: A direction sign, pointing out which way the Bridge is.
|
||||||
@@ -28,7 +35,7 @@
|
|||||||
state: direction_bridge
|
state: direction_bridge
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalBrig
|
id: SignDirectionalBrig
|
||||||
name: brig sign
|
name: brig sign
|
||||||
description: A direction sign, pointing out which way the Brig is.
|
description: A direction sign, pointing out which way the Brig is.
|
||||||
@@ -37,7 +44,7 @@
|
|||||||
state: direction_brig
|
state: direction_brig
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalChapel
|
id: SignDirectionalChapel
|
||||||
name: chapel sign
|
name: chapel sign
|
||||||
description: A direction sign, pointing out which way the Chapel is.
|
description: A direction sign, pointing out which way the Chapel is.
|
||||||
@@ -46,7 +53,7 @@
|
|||||||
state: direction_chapel
|
state: direction_chapel
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalChemistry
|
id: SignDirectionalChemistry
|
||||||
name: chemistry sign
|
name: chemistry sign
|
||||||
description: A direction sign, pointing out which way the chemistry lab is.
|
description: A direction sign, pointing out which way the chemistry lab is.
|
||||||
@@ -55,7 +62,7 @@
|
|||||||
state: direction_chemistry
|
state: direction_chemistry
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalCryo
|
id: SignDirectionalCryo
|
||||||
name: cryo sign
|
name: cryo sign
|
||||||
description: A direction sign, pointing out the way to cryogenics.
|
description: A direction sign, pointing out the way to cryogenics.
|
||||||
@@ -64,7 +71,7 @@
|
|||||||
state: direction_cryo
|
state: direction_cryo
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalDorms
|
id: SignDirectionalDorms
|
||||||
name: dorms sign
|
name: dorms sign
|
||||||
description: A direction sign, pointing out which way the Dorms are.
|
description: A direction sign, pointing out which way the Dorms are.
|
||||||
@@ -73,7 +80,7 @@
|
|||||||
state: direction_dorms
|
state: direction_dorms
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalEng
|
id: SignDirectionalEng
|
||||||
name: engineering sign
|
name: engineering sign
|
||||||
description: A direction sign, pointing out which way the Engineering department is.
|
description: A direction sign, pointing out which way the Engineering department is.
|
||||||
@@ -82,7 +89,7 @@
|
|||||||
state: direction_eng
|
state: direction_eng
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalEvac
|
id: SignDirectionalEvac
|
||||||
name: evac sign
|
name: evac sign
|
||||||
description: A direction sign, pointing out which way evac is.
|
description: A direction sign, pointing out which way evac is.
|
||||||
@@ -91,7 +98,7 @@
|
|||||||
state: direction_evac
|
state: direction_evac
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalFood
|
id: SignDirectionalFood
|
||||||
name: food sign
|
name: food sign
|
||||||
description: A direction sign, pointing out which way the kitchen is.
|
description: A direction sign, pointing out which way the kitchen is.
|
||||||
@@ -100,7 +107,7 @@
|
|||||||
state: direction_food
|
state: direction_food
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalGravity
|
id: SignDirectionalGravity
|
||||||
name: gravity sign
|
name: gravity sign
|
||||||
description: A direction sign, pointing out which way the gravity generator is.
|
description: A direction sign, pointing out which way the gravity generator is.
|
||||||
@@ -109,7 +116,7 @@
|
|||||||
state: direction_gravity
|
state: direction_gravity
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalHop
|
id: SignDirectionalHop
|
||||||
name: hop sign
|
name: hop sign
|
||||||
description: A direction sign, pointing out which way Head of Personnel's office is.
|
description: A direction sign, pointing out which way Head of Personnel's office is.
|
||||||
@@ -118,7 +125,7 @@
|
|||||||
state: direction_hop
|
state: direction_hop
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalHydro
|
id: SignDirectionalHydro
|
||||||
name: hydro sign
|
name: hydro sign
|
||||||
description: A direction sign, pointing out which way hydroponics is.
|
description: A direction sign, pointing out which way hydroponics is.
|
||||||
@@ -127,7 +134,7 @@
|
|||||||
state: direction_hydro
|
state: direction_hydro
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalJanitor
|
id: SignDirectionalJanitor
|
||||||
name: janitor sign
|
name: janitor sign
|
||||||
description: A direction sign, pointing out which way the janitor's closet is.
|
description: A direction sign, pointing out which way the janitor's closet is.
|
||||||
@@ -136,7 +143,7 @@
|
|||||||
state: direction_janitor
|
state: direction_janitor
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalLibrary
|
id: SignDirectionalLibrary
|
||||||
name: library sign
|
name: library sign
|
||||||
description: A direction sign, pointing out which way the library is.
|
description: A direction sign, pointing out which way the library is.
|
||||||
@@ -145,7 +152,7 @@
|
|||||||
state: direction_library
|
state: direction_library
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalMed
|
id: SignDirectionalMed
|
||||||
name: medical sign
|
name: medical sign
|
||||||
description: A direction sign, pointing out which way the Medical department is.
|
description: A direction sign, pointing out which way the Medical department is.
|
||||||
@@ -154,7 +161,7 @@
|
|||||||
state: direction_med
|
state: direction_med
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalSalvage
|
id: SignDirectionalSalvage
|
||||||
name: salvage sign
|
name: salvage sign
|
||||||
description: A direction sign, pointing out which way the Salvage department is.
|
description: A direction sign, pointing out which way the Salvage department is.
|
||||||
@@ -163,7 +170,7 @@
|
|||||||
state: direction_salvage
|
state: direction_salvage
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalSci
|
id: SignDirectionalSci
|
||||||
name: science sign
|
name: science sign
|
||||||
description: A direction sign, pointing out which way the Science department is.
|
description: A direction sign, pointing out which way the Science department is.
|
||||||
@@ -172,7 +179,7 @@
|
|||||||
state: direction_sci
|
state: direction_sci
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalSec
|
id: SignDirectionalSec
|
||||||
name: sec sign
|
name: sec sign
|
||||||
description: A direction sign, pointing out which way Security is.
|
description: A direction sign, pointing out which way Security is.
|
||||||
@@ -181,7 +188,7 @@
|
|||||||
state: direction_sec
|
state: direction_sec
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalSolar
|
id: SignDirectionalSolar
|
||||||
name: solars sign
|
name: solars sign
|
||||||
description: A direction sign, pointing out which way solars are.
|
description: A direction sign, pointing out which way solars are.
|
||||||
@@ -190,7 +197,7 @@
|
|||||||
state: direction_solar
|
state: direction_solar
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalSupply
|
id: SignDirectionalSupply
|
||||||
name: supply sign
|
name: supply sign
|
||||||
description: A direction sign, pointing to some supplies.
|
description: A direction sign, pointing to some supplies.
|
||||||
@@ -199,7 +206,7 @@
|
|||||||
state: direction_supply
|
state: direction_supply
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSignDirectional
|
||||||
id: SignDirectionalWash
|
id: SignDirectionalWash
|
||||||
name: washroom sign
|
name: washroom sign
|
||||||
description: A direction sign, pointing to the way to a washroom.
|
description: A direction sign, pointing to the way to a washroom.
|
||||||
@@ -793,6 +800,7 @@
|
|||||||
components:
|
components:
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
state: securearea
|
state: securearea
|
||||||
|
snapCardinals: true
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseSign
|
parent: BaseSign
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Structures/Wallmounts/extinguisher_cabinet.rsi
|
sprite: Structures/Wallmounts/extinguisher_cabinet.rsi
|
||||||
netsync: false
|
netsync: false
|
||||||
|
snapCardinals: true
|
||||||
layers:
|
layers:
|
||||||
- state: frame
|
- state: frame
|
||||||
- state: extinguisher
|
- state: extinguisher
|
||||||
|
|||||||
@@ -8,13 +8,16 @@
|
|||||||
"license": "CC-BY-SA-3.0",
|
"license": "CC-BY-SA-3.0",
|
||||||
"states": [
|
"states": [
|
||||||
{
|
{
|
||||||
"name": "base"
|
"name": "base",
|
||||||
|
"directions": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "thrust"
|
"name": "thrust",
|
||||||
|
"directions": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "thrust_burn",
|
"name": "thrust_burn",
|
||||||
|
"directions": 1,
|
||||||
"delays": [
|
"delays": [
|
||||||
[
|
[
|
||||||
0.1,
|
0.1,
|
||||||
@@ -26,6 +29,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "thrust_burn_unshaded",
|
"name": "thrust_burn_unshaded",
|
||||||
|
"directions": 1,
|
||||||
"delays": [
|
"delays": [
|
||||||
[
|
[
|
||||||
0.1,
|
0.1,
|
||||||
|
|||||||
Reference in New Issue
Block a user