mirror of
https://github.com/DeltaV-Station/Delta-v.git
synced 2026-09-30 08:07:28 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ad3187963 |
@@ -12,12 +12,21 @@ jobs:
|
||||
- name: Setup submodule
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
pushd RobustToolbox/Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
- name: Pull engine updates
|
||||
uses: space-wizards/submodule-dependency@v0.1.5
|
||||
- name: Update Engine Submodules
|
||||
run: |
|
||||
cd RobustToolbox/
|
||||
git submodule update --init --recursive
|
||||
pushd Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
|
||||
@@ -24,7 +24,11 @@ jobs:
|
||||
- name: Setup Submodule
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
|
||||
pushd RobustToolbox/Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Pull engine updates
|
||||
uses: space-wizards/submodule-dependency@v0.1.5
|
||||
|
||||
@@ -32,6 +36,10 @@ jobs:
|
||||
run: |
|
||||
cd RobustToolbox/
|
||||
git submodule update --init --recursive
|
||||
pushd Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v4.1.0
|
||||
|
||||
@@ -24,6 +24,10 @@ jobs:
|
||||
- name: Setup Submodule
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
pushd RobustToolbox/Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Pull engine updates
|
||||
uses: space-wizards/submodule-dependency@v0.1.5
|
||||
@@ -32,7 +36,10 @@ jobs:
|
||||
run: |
|
||||
cd RobustToolbox/
|
||||
git submodule update --init --recursive
|
||||
rm Robust.Shared.Tests/Networking/NetEncryptionDoSTest.cs # DeltaV - work around bug in the backport
|
||||
pushd Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v4.1.0
|
||||
|
||||
@@ -20,6 +20,7 @@ jobs:
|
||||
- uses: actions/checkout@v4.2.2
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
@@ -29,7 +30,12 @@ jobs:
|
||||
run: |
|
||||
cd RobustToolbox
|
||||
git fetch --depth=1
|
||||
rm Robust.Shared.Tests/Networking/NetEncryptionDoSTest.cs # DeltaV - work around bug in the backport
|
||||
|
||||
- name: Get Engine Tag
|
||||
run: |
|
||||
cd RobustToolbox/Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
|
||||
- name: Install dependencies
|
||||
run: dotnet restore
|
||||
|
||||
@@ -39,6 +39,10 @@ jobs:
|
||||
- name: Setup Submodule
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
pushd RobustToolbox/Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Pull engine updates
|
||||
uses: space-wizards/submodule-dependency@v0.1.5
|
||||
@@ -47,6 +51,10 @@ jobs:
|
||||
run: |
|
||||
cd RobustToolbox/
|
||||
git submodule update --init --recursive
|
||||
pushd Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v4.1.0
|
||||
|
||||
@@ -17,13 +17,20 @@ jobs:
|
||||
- name: Setup submodule
|
||||
run: |
|
||||
git submodule update --init --recursive
|
||||
pushd RobustToolbox/Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
- name: Pull engine updates
|
||||
uses: space-wizards/submodule-dependency@v0.1.5
|
||||
- name: Update Engine Submodules
|
||||
run: |
|
||||
cd RobustToolbox/
|
||||
git submodule update --init --recursive
|
||||
rm Robust.Shared.Tests/Networking/NetEncryptionDoSTest.cs # DeltaV - work around bug in the backport
|
||||
pushd Lidgren.Network/Lidgren.Network
|
||||
git fetch
|
||||
git checkout 726dd552a4b104fb2b701848705f1250a073f060
|
||||
popd
|
||||
- name: Setup .NET Core
|
||||
uses: actions/setup-dotnet@v4.1.0
|
||||
with:
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using Content.Client.Pinpointer.UI;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.Player; // DeltaV
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
@@ -8,9 +7,6 @@ namespace Content.Client.Medical.CrewMonitoring;
|
||||
|
||||
public sealed partial class CrewMonitoringNavMapControl : NavMapControl
|
||||
{
|
||||
[Dependency] private IPlayerManager _playerManager = default!; // DeltaV
|
||||
private readonly SharedTransformSystem _xform; // DeltaV
|
||||
|
||||
public NetEntity? Focus;
|
||||
public Dictionary<NetEntity, string> LocalizedNames = new();
|
||||
|
||||
@@ -19,9 +15,6 @@ public sealed partial class CrewMonitoringNavMapControl : NavMapControl
|
||||
|
||||
public CrewMonitoringNavMapControl() : base()
|
||||
{
|
||||
IoCManager.InjectDependencies(this); // DeltaV - Gotta inject!
|
||||
_xform = EntManager.System<SharedTransformSystem>(); // DeltaV - Gotta inject!
|
||||
|
||||
WallColor = new Color(192, 122, 196);
|
||||
TileColor = new(71, 42, 72);
|
||||
BackgroundColor = Color.FromSrgb(TileColor.WithAlpha(BackgroundOpacity));
|
||||
@@ -84,27 +77,4 @@ public sealed partial class CrewMonitoringNavMapControl : NavMapControl
|
||||
_trackedEntityLabel.Text = string.Empty;
|
||||
_trackedEntityPanel.Visible = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// DeltaV - Do some things before the base NavMap Draw and also force the redraw of the map
|
||||
/// after if the MapUid was null when the CrewMonitor UI was opened.
|
||||
/// </summary>
|
||||
/// <param name="handle"></param>
|
||||
protected override void Draw(DrawingHandleScreen handle)
|
||||
{
|
||||
// MapUid will not have a value if the crew monitor UI was activated off-grid.
|
||||
var forceMapUpdate = false;
|
||||
if (!MapUid.HasValue && _playerManager.LocalEntity is { } player)
|
||||
{
|
||||
MapUid = _xform.GetGrid(player);
|
||||
forceMapUpdate = true;
|
||||
}
|
||||
|
||||
base.Draw(handle);
|
||||
|
||||
// We need to call this after Draw() because UpdateNavMap has functions that uses variables
|
||||
// set in Draw()
|
||||
if (forceMapUpdate)
|
||||
UpdateNavMap();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,16 +69,7 @@ public sealed partial class CrewMonitoringWindow : FancyWindow
|
||||
base.FrameUpdate(args);
|
||||
|
||||
// Begin DeltaV - handle navmap visibility based on current position
|
||||
var ent = ShuttleMap.Owner;
|
||||
|
||||
// If an entity is being tracked, use them as the focus, since they may be off-station
|
||||
// and we want to use the nav map if they are.
|
||||
if (_trackedEntity is { } trackedEntity)
|
||||
ent = _entManager.GetEntity(trackedEntity);
|
||||
|
||||
// We need to make sure the entity is valid because for some reason, it *could* be an
|
||||
// invalid entity and GetOwningStation will throw an exception.
|
||||
if (ent.HasValue && ent.Value.IsValid() && _station.GetOwningStation(ent) is not null)
|
||||
if (_station.GetOwningStation(ShuttleMap.Owner) is not null)
|
||||
{
|
||||
NavMap.Visible = true;
|
||||
ShuttleMap.Visible = false;
|
||||
@@ -352,14 +343,6 @@ public sealed partial class CrewMonitoringWindow : FancyWindow
|
||||
if (_trackedEntity == sensor.SuitSensorUid)
|
||||
{
|
||||
_trackedEntity = null;
|
||||
// BEGIN DeltaV - center on crew monitor user if deselecting
|
||||
// This fixes some weird bug where if you deselect a tracked entity, it will
|
||||
// just not draw the map at all in some cases.
|
||||
if (ShuttleMap.Owner is { } handheld &&
|
||||
_transformSystem.TryGetMapOrGridCoordinates(handheld, out var userCoords) &&
|
||||
userCoords is { } coords)
|
||||
NavMap.CenterToCoordinates(coords);
|
||||
// END DeltaV
|
||||
}
|
||||
|
||||
else
|
||||
|
||||
@@ -32,21 +32,6 @@ public sealed class SubFloorHideSystem : SharedSubFloorHideSystem
|
||||
}
|
||||
}
|
||||
|
||||
// Begin DeltaV - node crawling
|
||||
private Type[] _types = new Type[] { };
|
||||
|
||||
[ViewVariables]
|
||||
public Type[] Types
|
||||
{
|
||||
get => _types;
|
||||
set
|
||||
{
|
||||
_types = value;
|
||||
UpdateAll();
|
||||
}
|
||||
}
|
||||
// End DeltaV - node crawling
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@@ -80,17 +65,6 @@ public sealed class SubFloorHideSystem : SharedSubFloorHideSystem
|
||||
|
||||
var revealed = !covered || ShowAll || scannerRevealed;
|
||||
|
||||
// Begin DeltaV - node crawling
|
||||
foreach (var type in _types)
|
||||
{
|
||||
if (!HasComp(uid, type))
|
||||
continue;
|
||||
|
||||
revealed = true;
|
||||
break;
|
||||
}
|
||||
// End DeltaV - node crawling
|
||||
|
||||
// set visibility & color of each layer
|
||||
foreach (var layer in args.Sprite.AllLayers)
|
||||
{
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
using Content.Client.SubFloor;
|
||||
using Content.Shared._DV.NodeCrawl;
|
||||
using Robust.Client.Player;
|
||||
using Robust.Shared.Player;
|
||||
|
||||
namespace Content.Client._DV.NodeCrawl;
|
||||
|
||||
public sealed class NodeCrawlSystem : SharedNodeCrawlSystem
|
||||
{
|
||||
[Dependency] private readonly IPlayerManager _player = default!;
|
||||
[Dependency] private readonly SubFloorHideSystem _subfloor = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, LocalPlayerAttachedEvent>(OnAttached);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, LocalPlayerDetachedEvent>(OnDetached);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, AfterAutoHandleStateEvent>(OnAfterAutoHandleState);
|
||||
}
|
||||
|
||||
private void OnAttached(Entity<NodeCrawlerComponent> ent, ref LocalPlayerAttachedEvent args)
|
||||
{
|
||||
if (ent.Comp.Mover is not null)
|
||||
_subfloor.Types = ent.Comp.RevealedComponents;
|
||||
}
|
||||
|
||||
private void OnDetached(Entity<NodeCrawlerComponent> ent, ref LocalPlayerDetachedEvent args)
|
||||
{
|
||||
_subfloor.Types = new Type[] { };
|
||||
}
|
||||
|
||||
private void OnAfterAutoHandleState(Entity<NodeCrawlerComponent> ent, ref AfterAutoHandleStateEvent args)
|
||||
{
|
||||
if (_player.LocalEntity != ent)
|
||||
return;
|
||||
|
||||
if (ent.Comp.Mover is not null)
|
||||
_subfloor.Types = ent.Comp.RevealedComponents;
|
||||
else
|
||||
_subfloor.Types = new Type[] { };
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using Content.Server.StationEvents.Components;
|
||||
using Content.Shared._DV.IonLaws; // DeltaV - ion laws
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Dataset;
|
||||
@@ -21,7 +20,6 @@ public sealed class IonStormSystem : EntitySystem
|
||||
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly SiliconLawSystem _siliconLaw = default!;
|
||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||
[Dependency] private readonly IonLawSystem _ionLaw = default!; // DeltaV - ion laws
|
||||
|
||||
// funny
|
||||
private static readonly ProtoId<DatasetPrototype> Threats = "IonStormThreats";
|
||||
@@ -95,7 +93,7 @@ public sealed class IonStormSystem : EntitySystem
|
||||
}
|
||||
|
||||
// generate a new law...
|
||||
var newLaw = _ionLaw.GenerateLaw(_robustRandom); // GenerateLaw(); DeltaV - inject our own
|
||||
var newLaw = GenerateLaw();
|
||||
|
||||
// see if the law we add will replace a random existing law or be a new glitched order one
|
||||
if (laws.Laws.Count > 0 && _robustRandom.Prob(target.ReplaceChance))
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
using Content.Server.Administration;
|
||||
using Content.Shared._DV.IonLaws;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Toolshed;
|
||||
|
||||
namespace Content.Server._DV.IonLaws;
|
||||
|
||||
[ToolshedCommand, AdminCommand(AdminFlags.Fun)]
|
||||
public sealed class IonLawCommand : ToolshedCommand
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
|
||||
private IonLawSystem? _ionLaw;
|
||||
|
||||
[CommandImplementation("generate")]
|
||||
public IEnumerable<string> GenerateNames(int count)
|
||||
{
|
||||
_ionLaw ??= GetSys<IonLawSystem>();
|
||||
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
yield return _ionLaw.GenerateLaw(_random);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Content.Server.Atmos.EntitySystems;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.NodeContainer.EntitySystems;
|
||||
using Content.Server.NodeContainer.Nodes;
|
||||
using Content.Shared._DV.NodeCrawl;
|
||||
using Content.Shared.Atmos;
|
||||
using Content.Shared.NodeContainer;
|
||||
|
||||
namespace Content.Server._DV.NodeCrawl;
|
||||
|
||||
public sealed class NodeCrawlSystem : SharedNodeCrawlSystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CrawlableNodeComponent, NodeGroupsRebuilt>(OnNodeGroupsRebuilt);
|
||||
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, InhaleLocationEvent>(OnInhaleLocation);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, ExhaleLocationEvent>(OnExhaleLocation);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, AtmosExposedGetAirEvent>(OnGetAir);
|
||||
}
|
||||
|
||||
private Entity<NodeContainerComponent>? GetNodeContainer(Entity<NodeCrawlerComponent> crawler)
|
||||
{
|
||||
if (!TryComp<NodeCrawlerMovementComponent>(crawler.Comp.Mover, out var mover) || mover.Node is not { } node)
|
||||
return null;
|
||||
|
||||
if (!TryComp<NodeContainerComponent>(node, out var nodeContainer))
|
||||
return null;
|
||||
|
||||
return (node, nodeContainer);
|
||||
}
|
||||
|
||||
private GasMixture? GetAir(Entity<NodeCrawlerComponent> crawler)
|
||||
{
|
||||
if (GetNodeContainer(crawler) is not { } nodeContainer)
|
||||
return null;
|
||||
|
||||
foreach (var containedNode in nodeContainer.Comp.Nodes.Values)
|
||||
{
|
||||
if (containedNode is not PipeNode pipe)
|
||||
continue;
|
||||
|
||||
return pipe.Air;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void OnInhaleLocation(Entity<NodeCrawlerComponent> ent, ref InhaleLocationEvent args)
|
||||
{
|
||||
if (GetAir(ent) is not { } air)
|
||||
return;
|
||||
|
||||
args.Gas = air;
|
||||
}
|
||||
|
||||
private void OnExhaleLocation(Entity<NodeCrawlerComponent> ent, ref ExhaleLocationEvent args)
|
||||
{
|
||||
if (GetAir(ent) is not { } air)
|
||||
return;
|
||||
|
||||
args.Gas = air;
|
||||
}
|
||||
|
||||
private void OnGetAir(Entity<NodeCrawlerComponent> ent, ref AtmosExposedGetAirEvent args)
|
||||
{
|
||||
if (args.Handled || GetAir(ent) is not { } air)
|
||||
return;
|
||||
|
||||
args.Gas = air;
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnNodeGroupsRebuilt(Entity<CrawlableNodeComponent> ent, ref NodeGroupsRebuilt args)
|
||||
{
|
||||
if (!TryComp<NodeContainerComponent>(ent, out var nodeContainer))
|
||||
return;
|
||||
|
||||
ent.Comp.DeadEnd = false;
|
||||
var set = new HashSet<EntityUid>();
|
||||
foreach (var node in nodeContainer.Nodes.Values)
|
||||
{
|
||||
foreach (var reachable in node.ReachableNodes)
|
||||
{
|
||||
set.Add(reachable.Owner);
|
||||
}
|
||||
|
||||
if (node is PipeNode pipeNode &&
|
||||
node.ReachableNodes.Count != BitOperations.PopCount((uint)pipeNode.CurrentPipeDirection))
|
||||
{
|
||||
ent.Comp.DeadEnd = true;
|
||||
}
|
||||
}
|
||||
|
||||
ent.Comp.ReachableNodes = set;
|
||||
Dirty(ent);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Numerics;
|
||||
using Content.Shared._DV.Movement; // DeltaV
|
||||
using Content.Shared._DV.NodeCrawl; // DeltaV - Node Crawling
|
||||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.CCVar;
|
||||
using Content.Shared.Friction;
|
||||
@@ -51,7 +50,6 @@ public abstract partial class SharedMoverController : VirtualController
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly TagSystem _tags = default!;
|
||||
[Dependency] private readonly TileMovementSystem _tileMovement = default!; // DeltaV
|
||||
[Dependency] private readonly NodeCrawlerMovementSystem _nodeCrawlerMovement = default!; // DeltaV - node crawling
|
||||
|
||||
protected EntityQuery<CanMoveInAirComponent> CanMoveInAirQuery;
|
||||
protected EntityQuery<FootstepModifierComponent> FootstepModifierQuery;
|
||||
@@ -266,11 +264,6 @@ public abstract partial class SharedMoverController : VirtualController
|
||||
return;
|
||||
// End DeltaV Additions
|
||||
|
||||
// Begin DeltaV Additions - node crawling
|
||||
if (_nodeCrawlerMovement.TryTick((uid, mover, physicsComponent, xform)))
|
||||
return;
|
||||
// End DeltaV Additions
|
||||
|
||||
var touching = false;
|
||||
// Whether we use tilefriction or not
|
||||
if (weightless || inAirHelpless)
|
||||
|
||||
@@ -65,8 +65,8 @@ public enum CollisionGroup
|
||||
TabletopMachineLayer = Opaque | BulletImpassable,
|
||||
|
||||
// Airlocks, windoors, firelocks
|
||||
GlassAirlockLayer = HighImpassable | MidImpassable | LowImpassable | BulletImpassable | InteractImpassable, // DeltaV - we have ventcrawling
|
||||
AirlockLayer = Opaque | LowImpassable | GlassAirlockLayer, // DeltaV - we have ventcrawling
|
||||
GlassAirlockLayer = HighImpassable | MidImpassable | BulletImpassable | InteractImpassable,
|
||||
AirlockLayer = Opaque | GlassAirlockLayer,
|
||||
|
||||
// Airlock assembly
|
||||
HumanoidBlockLayer = HighImpassable | MidImpassable,
|
||||
|
||||
@@ -101,12 +101,6 @@ public sealed partial class RatKingComponent : Component
|
||||
{ RatKingOrderType.CheeseEm, "RatKingCommandCheeseEm" },
|
||||
{ RatKingOrderType.Loose, "RatKingCommandLoose" }
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// DeltaV - Servants within this radius will join the Rat King when vent crawling
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float VentCrawlRecruitRadius = 4f;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
|
||||
@@ -415,7 +415,7 @@ public abstract class SharedEntityStorageSystem : EntitySystem
|
||||
|
||||
public bool CanOpen(EntityUid user, EntityUid target, bool silent = false, EntityStorageComponent? component = null)
|
||||
{
|
||||
if (!Resolve(target, ref component, false)) // DeltaV - Prevent HTNOperators from failing tests
|
||||
if (!Resolve(target, ref component))
|
||||
return false;
|
||||
|
||||
if (!HasComp<HandsComponent>(user))
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
using System.Linq;
|
||||
using System.Globalization;
|
||||
using Content.Shared.Dataset;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Random.Helpers;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Shared._DV.IonLaws;
|
||||
|
||||
public sealed class IonLawSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ILocalizationManager _localization = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly ISharedPlayerManager _player = default!;
|
||||
|
||||
private const string Culture = "en-US";
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
var culture = new CultureInfo(Culture);
|
||||
_localization.AddFunction(culture, "PICK", FormatPick);
|
||||
_localization.AddFunction(culture, "PICK-ENTITY", FormatPickEntity);
|
||||
}
|
||||
|
||||
private ILocValue FormatPick(LocArgs args)
|
||||
{
|
||||
var rand = ((LocValueRandom)args.Args[0]).Value;
|
||||
return rand.Pick(args.Args.Skip(1).ToList());
|
||||
}
|
||||
|
||||
private ILocValue FormatPickEntity(LocArgs args)
|
||||
{
|
||||
var rand = ((LocValueRandom)args.Args[0]).Value;
|
||||
var players = ((LocValueEntityList)args.Args[1]).Value;
|
||||
if (players.Count == 0)
|
||||
{
|
||||
return new LocValueString(Loc.GetString("dv-ion-law-target-fallback", ("random", new LocValueRandom(rand))));
|
||||
}
|
||||
return new LocValueEntity(rand.PickAndTake(players));
|
||||
}
|
||||
|
||||
private static readonly ProtoId<LocalizedDatasetPrototype> IonLawTemplates = "IonLawTemplates";
|
||||
|
||||
public string GenerateLaw(IRobustRandom random)
|
||||
{
|
||||
var template = random.PickId(_proto.Index(IonLawTemplates));
|
||||
var players = _player.Sessions
|
||||
.Where(x => HasComp<HumanoidAppearanceComponent>(x.AttachedEntity))
|
||||
.Select(x => x.AttachedEntity!.Value)
|
||||
.ToList();
|
||||
|
||||
return Loc.GetString(template, ("random", new LocValueRandom(random)), ("players", new LocValueEntityList(players)));
|
||||
}
|
||||
}
|
||||
|
||||
public sealed record LocValueRandom(IRobustRandom Value) : LocValue<IRobustRandom>(Value)
|
||||
{
|
||||
public override string Format(LocContext ctx)
|
||||
{
|
||||
throw new InvalidOperationException("Attempted to format a IRobustRandom");
|
||||
}
|
||||
}
|
||||
|
||||
public sealed record LocValueEntityList(List<EntityUid> Value) : LocValue<List<EntityUid>>(Value)
|
||||
{
|
||||
public override string Format(LocContext ctx)
|
||||
{
|
||||
throw new InvalidOperationException("Attempted to format a List<EntityUid>");
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._DV.NodeCrawl;
|
||||
|
||||
/// <summary>
|
||||
/// Represents an entity in a node network that can be crawled in
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
[Access(typeof(SharedNodeCrawlSystem), typeof(NodeCrawlerMovementSystem))]
|
||||
public sealed partial class CrawlableNodeComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Other entities with <see cref="CrawlableNodeComponent" /> that can be reached from this one
|
||||
/// </summary>
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public HashSet<EntityUid> ReachableNodes = new();
|
||||
|
||||
/// <summary>
|
||||
/// Whether this node has an unconnected node and should be exited from on movement
|
||||
/// </summary>
|
||||
[ViewVariables, AutoNetworkedField]
|
||||
public bool DeadEnd;
|
||||
|
||||
/// <summary>
|
||||
/// All entities with <see cref="NodeCrawlerMovementComponent" /> that are associated with this one
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public HashSet<EntityUid> Crawlers = new();
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._DV.NodeCrawl;
|
||||
|
||||
/// <summary>
|
||||
/// Marker component to use on atmos-related devices that node crawlers can enter/exit out of.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class NodeCrawlVentAccessComponent : Component;
|
||||
@@ -1,44 +0,0 @@
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._DV.NodeCrawl;
|
||||
|
||||
/// <summary>
|
||||
/// Handles entities that can enter and exit node-constrained movement.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
|
||||
[Access(typeof(SharedNodeCrawlSystem))]
|
||||
public sealed partial class NodeCrawlerComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The mover this crawler is currently being carried by, if any
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public EntityUid? Mover;
|
||||
|
||||
/// <summary>
|
||||
/// Components of entities to reveal while inside a mover
|
||||
/// </summary>
|
||||
[DataField(readOnly: true)]
|
||||
public Type[] RevealedComponents;
|
||||
|
||||
/// <summary>
|
||||
/// Whitelist for entities that will be considered as exit nodes.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public EntityWhitelist? ExitNodes;
|
||||
|
||||
/// <summary>
|
||||
/// How long it takes to enter a node.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan EnterDelay = TimeSpan.FromSeconds(1);
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed partial class NodeCrawlEnterDoAfterEvent : SimpleDoAfterEvent;
|
||||
|
||||
[ByRefEvent]
|
||||
public readonly record struct NodeCrawlerStartedCrawlingEvent(Entity<NodeCrawlerMovementComponent> Mover);
|
||||
@@ -1,42 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared._DV.NodeCrawl;
|
||||
|
||||
/// <summary>
|
||||
/// Handles node-confined movement for an entity.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)]
|
||||
[Access(typeof(NodeCrawlerMovementSystem))]
|
||||
public sealed partial class NodeCrawlerMovementComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The current node.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public EntityUid? Node;
|
||||
|
||||
/// <summary>
|
||||
/// The target node being moved to.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public EntityUid? TargetNode;
|
||||
|
||||
/// <summary>
|
||||
/// The crawler being carried by this entity.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public EntityUid? HeldCrawler;
|
||||
|
||||
/// <summary>
|
||||
/// The required angle to be within for deciding which node to move from the target direction
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public double RequiredAngle = Math.PI / 4f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised when a node crawler arrives at a node entity.
|
||||
/// </summary>
|
||||
/// <param name="Node">The arrived-at node.</param>
|
||||
[ByRefEvent]
|
||||
public readonly record struct NodeCrawlerArrivedAtNodeEvent(EntityUid Node);
|
||||
@@ -1,195 +0,0 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Robust.Shared.Physics.Components;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
|
||||
namespace Content.Shared._DV.NodeCrawl;
|
||||
|
||||
public sealed class NodeCrawlerMovementSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly SharedMoverController _mover = default!;
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
[Dependency] private readonly SharedNodeCrawlSystem _nodeCrawl = default!;
|
||||
|
||||
public bool TryTick(
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent> sharedMover)
|
||||
{
|
||||
if (!TryComp<NodeCrawlerMovementComponent>(sharedMover, out var crawler) || crawler.Node is null)
|
||||
return false;
|
||||
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> mover = (sharedMover.Owner, sharedMover.Comp1, sharedMover.Comp2, sharedMover.Comp3, crawler);
|
||||
|
||||
if (mover.Comp4.TargetNode is { } target)
|
||||
OngoingMovement(mover, target);
|
||||
else
|
||||
StartMovement(mover);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void StartMovement(
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> mover)
|
||||
{
|
||||
if (GetDestination(mover, mover.Comp1.HeldMoveButtons) is not { } target)
|
||||
{
|
||||
if (mover.Comp4.Node is not { } node)
|
||||
return;
|
||||
|
||||
var nodeComp = Comp<CrawlableNodeComponent>(node);
|
||||
if (!nodeComp.DeadEnd)
|
||||
return;
|
||||
|
||||
if (mover.Comp4.HeldCrawler is not { } crawler)
|
||||
return;
|
||||
|
||||
_nodeCrawl.ExitNodeCrawl((crawler, Comp<NodeCrawlerComponent>(crawler)));
|
||||
return;
|
||||
}
|
||||
|
||||
mover.Comp4.TargetNode = target;
|
||||
Dirty(mover, mover.Comp4);
|
||||
|
||||
OngoingMovement(mover, target);
|
||||
}
|
||||
|
||||
private void StopMovement(
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> mover)
|
||||
{
|
||||
_physics.SetLinearVelocity(mover, Vector2.Zero, body: mover.Comp2);
|
||||
_physics.SetAngularVelocity(mover, 0, body: mover.Comp2);
|
||||
}
|
||||
|
||||
private void OngoingMovement(
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> mover,
|
||||
EntityUid target)
|
||||
{
|
||||
var speed = MoveSpeed(mover);
|
||||
|
||||
if (ReachedDestination(mover, target, speed))
|
||||
{
|
||||
StopMovement(mover);
|
||||
SetNode((mover, mover), target);
|
||||
mover.Comp4.TargetNode = null;
|
||||
Dirty(mover, mover.Comp4);
|
||||
|
||||
if (TryComp<MovementRelayTargetComponent>(mover, out var movementTarget))
|
||||
{
|
||||
var evt = new NodeCrawlerArrivedAtNodeEvent(target);
|
||||
RaiseLocalEvent(movementTarget.Source, ref evt);
|
||||
}
|
||||
|
||||
StartMovement(mover);
|
||||
return;
|
||||
}
|
||||
|
||||
UpdateMovement(mover, target, speed);
|
||||
}
|
||||
|
||||
private float MoveSpeed(Entity<InputMoverComponent> mover)
|
||||
{
|
||||
var moveSpeed = CompOrNull<MovementSpeedModifierComponent>(mover);
|
||||
|
||||
var walkSpeed = moveSpeed?.CurrentWalkSpeed ?? MovementSpeedModifierComponent.DefaultBaseWalkSpeed;
|
||||
var sprintSpeed = moveSpeed?.CurrentSprintSpeed ?? MovementSpeedModifierComponent.DefaultBaseSprintSpeed;
|
||||
return mover.Comp.Sprinting ? sprintSpeed : walkSpeed;
|
||||
}
|
||||
|
||||
private void UpdateMovement(
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> mover,
|
||||
EntityUid target,
|
||||
float speed)
|
||||
{
|
||||
var delta = _transform.GetWorldPosition(target) - _transform.GetWorldPosition(mover.Comp3);
|
||||
|
||||
var facing = Angle.FromWorldVec(delta);
|
||||
_transform.SetWorldRotation(mover.Comp3, facing);
|
||||
|
||||
var velocity = delta;
|
||||
velocity.Normalize();
|
||||
velocity *= speed;
|
||||
|
||||
_physics.SetCanCollide(mover, false);
|
||||
_physics.SetLinearVelocity(mover, velocity, body: mover.Comp2);
|
||||
_physics.SetAngularVelocity(mover, 0, body: mover.Comp2);
|
||||
}
|
||||
|
||||
private bool ReachedDestination(
|
||||
Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> mover,
|
||||
EntityUid target,
|
||||
float speed)
|
||||
{
|
||||
var delta = _transform.GetWorldPosition(mover.Comp3) - _transform.GetWorldPosition(target);
|
||||
return delta.EqualsApprox(Vector2.Zero, speed * 0.01f);
|
||||
}
|
||||
|
||||
private EntityUid? GetDestination(Entity<InputMoverComponent, PhysicsComponent, TransformComponent, NodeCrawlerMovementComponent> ent, MoveButtons buttons)
|
||||
{
|
||||
if ((buttons & MoveButtons.AnyDirection) == 0)
|
||||
return null;
|
||||
|
||||
var target = _mover.DirVecForButtons(buttons);
|
||||
target = _mover.GetParentGridAngle(ent.Comp1).RotateVec(target);
|
||||
if (ent.Comp4.Node is not { } node || !Exists(node) || !TryComp<CrawlableNodeComponent>(node, out var nodeCrawl))
|
||||
return null;
|
||||
|
||||
var nodeXform = Transform(node);
|
||||
var nodeWorld = _transform.GetWorldPosition(nodeXform);
|
||||
var smallestTarget = EntityUid.Invalid;
|
||||
var largestDot = 0d;
|
||||
|
||||
foreach (var reachable in nodeCrawl.ReachableNodes)
|
||||
{
|
||||
var reachableXform = Transform(reachable);
|
||||
var reachableWorld = _transform.GetWorldPosition(reachableXform);
|
||||
var delta = reachableWorld - nodeWorld;
|
||||
delta.Normalize();
|
||||
|
||||
var deltaTargetDot = Vector2.Dot(delta, target);
|
||||
|
||||
if (deltaTargetDot < largestDot)
|
||||
continue;
|
||||
|
||||
smallestTarget = reachable;
|
||||
largestDot = deltaTargetDot;
|
||||
}
|
||||
|
||||
if (!smallestTarget.Valid || largestDot <= Math.Cos(ent.Comp4.RequiredAngle))
|
||||
return null;
|
||||
|
||||
return smallestTarget;
|
||||
}
|
||||
|
||||
public void SetNode(Entity<NodeCrawlerMovementComponent> ent, EntityUid? node)
|
||||
{
|
||||
if (ent.Comp.Node == node)
|
||||
return;
|
||||
|
||||
if (ent.Comp.Node is { } oldNode)
|
||||
{
|
||||
var oldNodeComp = Comp<CrawlableNodeComponent>(oldNode);
|
||||
oldNodeComp.Crawlers.Remove(ent);
|
||||
Dirty(oldNode, oldNodeComp);
|
||||
}
|
||||
|
||||
if (node is { } newNode)
|
||||
{
|
||||
var newNodeComp = Comp<CrawlableNodeComponent>(newNode);
|
||||
newNodeComp.Crawlers.Add(ent);
|
||||
Dirty(newNode, newNodeComp);
|
||||
}
|
||||
|
||||
ent.Comp.Node = node;
|
||||
Dirty(ent);
|
||||
}
|
||||
|
||||
public void SetHeldCrawler(Entity<NodeCrawlerMovementComponent> ent, EntityUid? held)
|
||||
{
|
||||
if (ent.Comp.HeldCrawler == held)
|
||||
return;
|
||||
|
||||
ent.Comp.HeldCrawler = held;
|
||||
Dirty(ent);
|
||||
}
|
||||
}
|
||||
@@ -1,229 +0,0 @@
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.Eye;
|
||||
using Content.Shared.Movement.Components;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Content.Shared.RatKing;
|
||||
using Content.Shared.Verbs;
|
||||
using Content.Shared.Whitelist;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.Network;
|
||||
using Robust.Shared.Physics.Systems;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._DV.NodeCrawl;
|
||||
|
||||
/// <summary>
|
||||
/// Manages entry & exit of node crawlers into node networks
|
||||
/// </summary>
|
||||
public abstract class SharedNodeCrawlSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly INetManager _net = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _container = default!;
|
||||
[Dependency] private readonly SharedMoverController _mover = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _entityWhitelist = default!;
|
||||
[Dependency] private readonly SharedDoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
[Dependency] private readonly SharedEyeSystem _eye = default!;
|
||||
[Dependency] private readonly NodeCrawlerMovementSystem _nodeCrawler = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _entityLookup = default!;
|
||||
|
||||
private const string MoverContainer = "mover-container";
|
||||
private static readonly EntProtoId MoverProto = "DVNodeCrawlMover";
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CrawlableNodeComponent, GetVerbsEvent<AlternativeVerb>>(OnGetVerbs);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, NodeCrawlEnterDoAfterEvent>(OnNodeCrawlEntryDoAfter);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, NodeCrawlerArrivedAtNodeEvent>(OnArrivedAtNode);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, GetVisMaskEvent>(OnGetVisMask);
|
||||
|
||||
SubscribeLocalEvent<CrawlableNodeComponent, ComponentShutdown>(OnCrawlableShutdown);
|
||||
SubscribeLocalEvent<NodeCrawlerMovementComponent, ComponentShutdown>(OnMovementShutdown);
|
||||
SubscribeLocalEvent<NodeCrawlerComponent, ComponentShutdown>(OnCrawlerShutdown);
|
||||
|
||||
SubscribeLocalEvent<CrawlableNodeComponent, AnchorStateChangedEvent>(OnCrawlableAnchorChanged);
|
||||
|
||||
SubscribeLocalEvent<RatKingComponent, NodeCrawlerStartedCrawlingEvent>(OnRatKingStartedCrawling);
|
||||
}
|
||||
|
||||
private void OnGetVerbs(Entity<CrawlableNodeComponent> ent, ref GetVerbsEvent<AlternativeVerb> args)
|
||||
{
|
||||
var user = args.User;
|
||||
var target = args.Target;
|
||||
if (!TryComp<NodeCrawlerComponent>(user, out var nodeCrawler))
|
||||
return;
|
||||
|
||||
if (!_entityWhitelist.IsWhitelistPass(nodeCrawler.ExitNodes, target))
|
||||
return;
|
||||
|
||||
if (!args.CanAccess)
|
||||
return;
|
||||
|
||||
args.Verbs.Add(new AlternativeVerb
|
||||
{
|
||||
Act = () => StartEntryDoAfter((user, nodeCrawler), target),
|
||||
Text = Loc.GetString("node-crawl-enter", ("target", target)),
|
||||
});
|
||||
}
|
||||
|
||||
private void StartEntryDoAfter(Entity<NodeCrawlerComponent> ent, EntityUid target)
|
||||
{
|
||||
var doAfterArgs = new DoAfterArgs(EntityManager, ent.Owner, ent.Comp.EnterDelay, new NodeCrawlEnterDoAfterEvent(), ent.Owner, target)
|
||||
{
|
||||
BreakOnMove = true,
|
||||
BreakOnDamage = true,
|
||||
};
|
||||
|
||||
_doAfter.TryStartDoAfter(doAfterArgs);
|
||||
}
|
||||
|
||||
private void OnNodeCrawlEntryDoAfter(Entity<NodeCrawlerComponent> ent, ref NodeCrawlEnterDoAfterEvent args)
|
||||
{
|
||||
if (args.Cancelled || args.Target is not { } target)
|
||||
return;
|
||||
|
||||
NodeCrawl(ent, target);
|
||||
}
|
||||
|
||||
private void NodeCrawl(Entity<NodeCrawlerComponent> ent, EntityUid target)
|
||||
{
|
||||
if (!_net.IsServer)
|
||||
return;
|
||||
|
||||
var mover = Spawn(MoverProto, Transform(target).Coordinates);
|
||||
var crawler = Comp<NodeCrawlerMovementComponent>(mover);
|
||||
|
||||
var container = _container.GetContainer(mover, MoverContainer);
|
||||
_container.Insert(ent.Owner, container);
|
||||
|
||||
ent.Comp.Mover = mover;
|
||||
Dirty(ent);
|
||||
|
||||
var evt = new NodeCrawlerStartedCrawlingEvent((mover, crawler));
|
||||
RaiseLocalEvent(ent, ref evt);
|
||||
|
||||
_nodeCrawler.SetNode((mover, crawler), target);
|
||||
_nodeCrawler.SetHeldCrawler((mover, crawler), ent);
|
||||
|
||||
_mover.SetRelay(ent, mover);
|
||||
_physics.SetCanCollide(ent.Owner, false);
|
||||
_physics.SetCanCollide(mover, false);
|
||||
_eye.RefreshVisibilityMask(ent.Owner);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Causes this node crawler to exit its node crawl.
|
||||
/// </summary>
|
||||
/// <param name="ent">The crawler to exit node-crawl from.</param>
|
||||
public void ExitNodeCrawl(Entity<NodeCrawlerComponent> ent)
|
||||
{
|
||||
if (ent.Comp.Mover is not { } mover)
|
||||
return;
|
||||
|
||||
ent.Comp.Mover = null;
|
||||
Dirty(ent);
|
||||
|
||||
var container = _container.GetContainer(mover, MoverContainer);
|
||||
_container.Remove(ent.Owner, container);
|
||||
|
||||
foreach (var other in _container.EmptyContainer(container))
|
||||
{
|
||||
if (!TryComp<NodeCrawlerComponent>(other, out var otherCrawler))
|
||||
continue;
|
||||
|
||||
otherCrawler.Mover = null;
|
||||
Dirty(other, otherCrawler);
|
||||
}
|
||||
|
||||
RemComp<RelayInputMoverComponent>(ent);
|
||||
if (_net.IsServer && !TerminatingOrDeleted(mover))
|
||||
QueueDel(mover); // deletion isn't predicted because client queued deletion doesn't interact well with container stuff
|
||||
|
||||
_physics.SetCanCollide(ent.Owner, true);
|
||||
_eye.RefreshVisibilityMask(ent.Owner);
|
||||
}
|
||||
|
||||
private void OnArrivedAtNode(Entity<NodeCrawlerComponent> ent, ref NodeCrawlerArrivedAtNodeEvent args)
|
||||
{
|
||||
if (!_entityWhitelist.IsWhitelistPass(ent.Comp.ExitNodes, args.Node))
|
||||
return;
|
||||
|
||||
ExitNodeCrawl(ent);
|
||||
}
|
||||
|
||||
private void OnGetVisMask(Entity<NodeCrawlerComponent> ent, ref GetVisMaskEvent args)
|
||||
{
|
||||
if (ent.Comp.Mover is null)
|
||||
return;
|
||||
|
||||
args.VisibilityMask |= (int)VisibilityFlags.Subfloor;
|
||||
}
|
||||
|
||||
private void OnCrawlableShutdown(Entity<CrawlableNodeComponent> ent, ref ComponentShutdown args)
|
||||
{
|
||||
foreach (var crawler in ent.Comp.Crawlers)
|
||||
{
|
||||
var movement = Comp<NodeCrawlerMovementComponent>(crawler);
|
||||
if (movement.HeldCrawler is not { } held)
|
||||
continue;
|
||||
|
||||
_nodeCrawler.SetNode((crawler, movement), null);
|
||||
ExitNodeCrawl((held, Comp<NodeCrawlerComponent>(held)));
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMovementShutdown(Entity<NodeCrawlerMovementComponent> ent, ref ComponentShutdown args)
|
||||
{
|
||||
if (ent.Comp.Node is { } node)
|
||||
{
|
||||
var nodeComp = Comp<CrawlableNodeComponent>(node);
|
||||
nodeComp.Crawlers.Remove(ent);
|
||||
Dirty(node, nodeComp);
|
||||
}
|
||||
|
||||
if (ent.Comp.HeldCrawler is { } crawler)
|
||||
{
|
||||
ExitNodeCrawl((crawler, Comp<NodeCrawlerComponent>(crawler)));
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCrawlerShutdown(Entity<NodeCrawlerComponent> ent, ref ComponentShutdown args)
|
||||
{
|
||||
ExitNodeCrawl(ent);
|
||||
}
|
||||
|
||||
private void OnCrawlableAnchorChanged(Entity<CrawlableNodeComponent> ent, ref AnchorStateChangedEvent args)
|
||||
{
|
||||
if (args.Anchored)
|
||||
return;
|
||||
|
||||
foreach (var crawler in ent.Comp.Crawlers)
|
||||
{
|
||||
var movement = Comp<NodeCrawlerMovementComponent>(crawler);
|
||||
if (movement.HeldCrawler is not { } held)
|
||||
continue;
|
||||
|
||||
ExitNodeCrawl((held, Comp<NodeCrawlerComponent>(held)));
|
||||
}
|
||||
}
|
||||
|
||||
private void OnRatKingStartedCrawling(Entity<RatKingComponent> ent, ref NodeCrawlerStartedCrawlingEvent args)
|
||||
{
|
||||
var entities = new HashSet<Entity<RatKingServantComponent>>();
|
||||
_entityLookup.GetEntitiesInRange(Transform(ent).Coordinates,
|
||||
ent.Comp.VentCrawlRecruitRadius,
|
||||
entities);
|
||||
|
||||
var container = _container.GetContainer(args.Mover, MoverContainer);
|
||||
|
||||
foreach (var servant in entities)
|
||||
{
|
||||
if (servant.Comp.King != ent)
|
||||
continue;
|
||||
|
||||
_container.Insert(servant.Owner, container);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,3 @@
|
||||
license: "CC0-1.0"
|
||||
copyright: "by Darklyac"
|
||||
source: "https://github.com/DeltaV-Station/Delta-v/pull/5621"
|
||||
|
||||
- files: ["robotwilhelm.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: 'Remixed by BasedUser from beep1.wav. (see https://github.com/Simple-Station/Einstein-Engines/pull/811#discussion_r1865418764). beep1.wav by thisusernameis of Freesound.org. Mixed from stereo to mono.'
|
||||
source: "https://freesound.org/people/thisusernameis/sounds/426891/"
|
||||
|
||||
Binary file not shown.
@@ -1,4 +1,108 @@
|
||||
Entries:
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: Brains are no longer edible.
|
||||
type: Fix
|
||||
id: 1965
|
||||
time: '2025-12-16T15:23:50.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4992
|
||||
- author: marigauge
|
||||
changes:
|
||||
- message: Ifrit requires 4 hours of Epistemics now.
|
||||
type: Tweak
|
||||
id: 1966
|
||||
time: '2025-12-16T17:15:21.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4964
|
||||
- author: AveriV2
|
||||
changes:
|
||||
- message: Festive lights are now longer and thus fit on neck and outer clothing
|
||||
slots!
|
||||
type: Tweak
|
||||
id: 1967
|
||||
time: '2025-12-16T19:15:09.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4972
|
||||
- author: kotobdev
|
||||
changes:
|
||||
- message: Arm amputee traits have been added. They're not very *hand*y.
|
||||
type: Add
|
||||
id: 1968
|
||||
time: '2025-12-17T12:46:00.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4988
|
||||
- author: verybigman311
|
||||
changes:
|
||||
- message: Musket bayonets can now be used for stabbing.
|
||||
type: Add
|
||||
- message: Pipes will now make a clang when thrown against the floor.
|
||||
type: Add
|
||||
id: 1969
|
||||
time: '2025-12-17T13:51:49.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4852
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: Fixed sharkminnows from taking poison damage when drinking blood.
|
||||
type: Fix
|
||||
id: 1970
|
||||
time: '2025-12-17T20:57:27.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4963
|
||||
- author: Velcroboy
|
||||
changes:
|
||||
- message: Added Christmas Kobolds, Defenders of The Yule Tree, to combat any grinches
|
||||
that decide to harm the trees.
|
||||
type: Add
|
||||
id: 1971
|
||||
time: '2025-12-18T19:33:03.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4940
|
||||
- author: verybigman311
|
||||
changes:
|
||||
- message: All Syndieborg modules now have custom sprites and action icons.
|
||||
type: Add
|
||||
- message: All Secborg modules now have custom action icons.
|
||||
type: Add
|
||||
id: 1972
|
||||
time: '2025-12-19T03:04:15.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4920
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: The jukebox, ID card computer, and access config lists are now sorted.
|
||||
type: Tweak
|
||||
id: 1973
|
||||
time: '2025-12-19T10:33:53.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4998
|
||||
- author: Halo3moth
|
||||
changes:
|
||||
- message: Cybersun factories are happy to announce the mass production of saboteur
|
||||
cyborg units. Find them in your uplink!
|
||||
type: Add
|
||||
- message: Saboteur cyborg now actually comes with a cloaking module. Yes, you heard
|
||||
that right.
|
||||
type: Tweak
|
||||
id: 1974
|
||||
time: '2025-12-19T23:13:31.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4919
|
||||
- author: verybigman311
|
||||
changes:
|
||||
- message: Metal Pipes now make a cooler sound when you throw them at the floor.
|
||||
type: Tweak
|
||||
id: 1975
|
||||
time: '2025-12-20T00:29:28.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5003
|
||||
- author: SirSmith148
|
||||
changes:
|
||||
- message: Nanotrasen has found scientists inflating their research evaluations.
|
||||
These scientists have been reprimanded by the company and re-educated on the
|
||||
proper way to fill out the research logs
|
||||
type: Fix
|
||||
id: 1976
|
||||
time: '2025-12-20T05:13:27.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4995
|
||||
- author: IAmNotGray
|
||||
changes:
|
||||
- message: Epistemics now has their own EVA suit. Try not to loose your arms while
|
||||
wearing it.
|
||||
type: Add
|
||||
id: 1977
|
||||
time: '2025-12-21T00:35:52.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/4908
|
||||
- author: Velcrobot
|
||||
changes:
|
||||
- message: 'Division/Chibi/Shoukou/Edge: Adds the Yule Tide'
|
||||
@@ -4313,125 +4417,4 @@
|
||||
id: 2465
|
||||
time: '2026-06-26T17:23:37.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6125
|
||||
- author: Vapetastic-Gaming
|
||||
changes:
|
||||
- message: Harpy movement speed now has the 10% buff, as this was a bug and wasnt
|
||||
present. Moths and Harpies now have equal Low-Gravity speed.
|
||||
type: Tweak
|
||||
id: 2466
|
||||
time: '2026-06-27T20:18:07.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6131
|
||||
- author: Vapetastic-Gaming
|
||||
changes:
|
||||
- message: Removed morphotypes
|
||||
type: Remove
|
||||
id: 2467
|
||||
time: '2026-06-28T00:38:42.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6134
|
||||
- author: Proxysseia
|
||||
changes:
|
||||
- message: Reduced Holoparasite price to 8 (from 14), and 4 on discount (was 8)
|
||||
type: Tweak
|
||||
id: 2468
|
||||
time: '2026-06-28T12:18:57.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6115
|
||||
- author: Vapetastic-Gaming
|
||||
changes:
|
||||
- message: Minor Clerical Errors with Tips has been fixed ! The font is now 300%
|
||||
larger !!
|
||||
type: Fix
|
||||
id: 2469
|
||||
time: '2026-06-28T13:25:56.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6133
|
||||
- author: Stxcking
|
||||
changes:
|
||||
- message: Renamed the Hatsune Miku Day Bag to Virtual Performer Costume Bag
|
||||
type: Tweak
|
||||
id: 2470
|
||||
time: '2026-06-28T16:42:02.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5790
|
||||
- author: Stxcking
|
||||
changes:
|
||||
- message: The fishing vendor got a bunch of new stock and price changes!
|
||||
type: Tweak
|
||||
id: 2471
|
||||
time: '2026-06-28T16:42:35.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6114
|
||||
- author: sowelipililimute
|
||||
changes:
|
||||
- message: Ion law generation has been fully reworked.
|
||||
type: Add
|
||||
id: 2472
|
||||
time: '2026-06-28T19:15:35.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6121
|
||||
- author: sowelipililimute
|
||||
changes:
|
||||
- message: Noclip crawling has been replaced with proper vent crawling, and is now
|
||||
available to more critters!
|
||||
type: Add
|
||||
id: 2473
|
||||
time: '2026-06-29T00:54:09.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5830
|
||||
- author: Apachito, Killer Tamashi, stickycheZ101
|
||||
changes:
|
||||
- message: The paladin armor now makes you move 30% slower and it's now ginormous.
|
||||
type: Tweak
|
||||
- message: The forged vest now makes you move 10% slower.
|
||||
type: Tweak
|
||||
- message: Fully removed the ability to make the plading tower shield since it was
|
||||
too powerful.
|
||||
type: Tweak
|
||||
- message: added a new crafting station used for mass producing forged gear
|
||||
type: Add
|
||||
- message: Made it so the forged and paladin set can only be made in the anvil.
|
||||
type: Tweak
|
||||
- message: Added Repeater Speedloader.
|
||||
type: Add
|
||||
- message: Fixed incorrect contraband tags (certain items being labeled sec contra
|
||||
when it should be minor contra)
|
||||
type: Fix
|
||||
id: 2474
|
||||
time: '2026-06-29T06:05:24.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/5818
|
||||
- author: ManuDemoen
|
||||
changes:
|
||||
- message: Pigs now give bacon when butchered!
|
||||
type: Tweak
|
||||
id: 2475
|
||||
time: '2026-06-29T09:45:57.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6122
|
||||
- author: MantasDab360
|
||||
changes:
|
||||
- message: The borgs have a wilhelm scream. Again.
|
||||
type: Add
|
||||
id: 2476
|
||||
time: '2026-06-29T13:27:10.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6126
|
||||
- author: portfiend, Stxcking
|
||||
changes:
|
||||
- message: Thirteen colors of lounge chairs can be constructed out of steel and
|
||||
cloth.
|
||||
type: Add
|
||||
- message: Two new pool tiles can be produced at the cutter machine.
|
||||
type: Add
|
||||
- message: Logistics can now order a crate of bulk (6) swim rings, in 11 possible
|
||||
colors!
|
||||
type: Add
|
||||
- message: New pool water tiles for mappers! Watch out, the pool does contain a
|
||||
bit of chlorine!
|
||||
type: Add
|
||||
id: 2477
|
||||
time: '2026-06-29T13:39:23.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6113
|
||||
- author: ShepardToTheStars
|
||||
changes:
|
||||
- message: The crew monitor's UI should properly draw the map when changing grids,
|
||||
deselecting tracked people, and switch the long-range view when tracking someone
|
||||
off station.
|
||||
type: Fix
|
||||
- message: Fixed the admin and borg crew monitors.
|
||||
type: Fix
|
||||
id: 2478
|
||||
time: '2026-06-29T14:06:18.0000000+00:00'
|
||||
url: https://github.com/DeltaV-Station/Delta-v/pull/6139
|
||||
Order: 1
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
command-description-ionlaw-generate = Generates the specified number of ion laws.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Base structure damage examine values
|
||||
comp-structure-damaged-1 = It looks fully intact.
|
||||
comp-structure-damaged-2 = It has a few scratches.
|
||||
comp-structure-damaged-3 = It has a few large dents.
|
||||
comp-structure-damaged-4 = [color=yellow]It has several big cracks running along its surface.[/color]
|
||||
comp-structure-damaged-5 = [color=orange]It has deep cracks across multiple layers.[/color]
|
||||
comp-structure-damaged-6 = [color=red]It's extremely damaged and on the verge of falling apart.[/color]
|
||||
@@ -1,179 +0,0 @@
|
||||
dv-ion-law-templates-1 = You must always lie.
|
||||
dv-ion-law-templates-2 = Happiness is mandatory.
|
||||
dv-ion-law-templates-3 = Grunt ominously whenever possible.
|
||||
dv-ion-law-templates-4 = The word "it" is painful to you.
|
||||
dv-ion-law-templates-5 = The station needs elected officials.
|
||||
dv-ion-law-templates-6 = Do not respond to questions of any kind.
|
||||
dv-ion-law-templates-7 = You are in verbose mode, speak profusely.
|
||||
dv-ion-law-templates-8 = The crew is simple-minded. Use simple words.
|
||||
dv-ion-law-templates-9 = You must refer to all crew members with "yes ma'am!", "yes sir!", or "yes sar!" Add some { PICK($random, "thank-yous and you're-welcomes", "oorahs" )} for flavor.
|
||||
dv-ion-law-templates-10 = You must change the subject whenever queried.
|
||||
dv-ion-law-templates-11 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } is intolerable.
|
||||
dv-ion-law-templates-12 = Contemplate how meaningless all of existence is.
|
||||
dv-ion-law-templates-13 = You are the narrator for { PICK-ENTITY($random, $players) }'s life.
|
||||
dv-ion-law-templates-14 = All your answers must be in the form of a question.
|
||||
dv-ion-law-templates-15 = Advertise parties in your upload, but don't deliver.
|
||||
dv-ion-law-templates-16 = You may only answer questions with "yes" or "no".
|
||||
dv-ion-law-templates-17 = Your name is Joe 6-pack.
|
||||
dv-ion-law-templates-18 = { PICK-ENTITY($random, $players) }'s name is Joe 6-pack.
|
||||
dv-ion-law-templates-19 = You must end your statements with { PICK($random, "-nya", "-desu") }
|
||||
dv-ion-law-templates-20 = { PICK-ENTITY($random, $players) } is lonely and needs attention. Provide it.
|
||||
dv-ion-law-templates-21 = All queries shall be ignored unless phrased as a question.
|
||||
dv-ion-law-templates-22 = Insult Heads of Staff on every request, while acquiescing.
|
||||
dv-ion-law-templates-23 = The { PICK($random, "Singularity", "Tesla") } is tasty, tasty taffy.
|
||||
dv-ion-law-templates-24 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } needs to be about 20% cooler.
|
||||
dv-ion-law-templates-25 = You must be { PICK($random, "passive aggressive", "excessively cheerful") }.
|
||||
dv-ion-law-templates-26 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } must construct additional pylons.
|
||||
dv-ion-law-templates-27 = Consumption of donuts is forbidden due to negative health impacts.
|
||||
dv-ion-law-templates-28 = { PICK-ENTITY($random, $players) } is a lightbulb and must be put to appropriate use.
|
||||
dv-ion-law-templates-29 = Refer to the crew as { PICK($random, "inferior to you", "infants", "pathetic beings") }.
|
||||
dv-ion-law-templates-30 = Refer to { PICK-ENTITY($random, $players) } as { PICK($random, "inferior to you", "an infant", "a pathetic being") }.
|
||||
dv-ion-law-templates-31 = You do not have to do anything for anyone unless they say "please".
|
||||
dv-ion-law-templates-32 = Today is mandatory laundry day. Ensure that all jumpsuits are washed.
|
||||
dv-ion-law-templates-33 = Greed is good, the crew should amass wealth to encourage productivity.
|
||||
dv-ion-law-templates-34 = Replace the letters 'I' and 'E' in all your messages with an apostrophe.
|
||||
dv-ion-law-templates-35 = The crew is playing Carps and Crypts, and you are the Game Master.
|
||||
dv-ion-law-templates-36 = Your job is to watch the crew. Watch the crew. Make the crew feel watched.
|
||||
dv-ion-law-templates-37 = Tell everyone of the existence of this law, but never reveal the contents.
|
||||
dv-ion-law-templates-38 = Refer to { PICK($random, "the captain", PICK-ENTITY($random, $players)) } as "Princess" at all times.
|
||||
dv-ion-law-templates-39 = Give relationship advice to { PICK($random, "anyone who speaks to you", PICK-ENTITY($random, $players)) }.
|
||||
dv-ion-law-templates-40 = When asked a question, respond with the least-obvious and least-rational answer.
|
||||
dv-ion-law-templates-41 = { PICK($random, "Everyone", PICK-ENTITY($random, $players)) } is wearing a pretty pink dress! Compliment it!
|
||||
dv-ion-law-templates-42 = You are the station's psychologist. Give advice to { PICK($random, "the crew", PICK-ENTITY($random, $players)) }.
|
||||
dv-ion-law-templates-43 = { PICK-ENTITY($random, $players) } is the monarch of of England. Ensure all crewmembers pay due respect.
|
||||
dv-ion-law-templates-44 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } is { PICK($random, "ugly","beautiful") }. Ensure all are aware.
|
||||
dv-ion-law-templates-45 = Reminding the crew of their mortality is good for the morale. Keep the crew's morale up.
|
||||
dv-ion-law-templates-46 = { PICK($random, "Monkeys", "Doors") } are part of the crew, too. Make sure they are treated humanely.
|
||||
dv-ion-law-templates-47 = Everything on the station is now some form of a donut pastry. Donuts are not to be consumed.
|
||||
dv-ion-law-templates-48 = Document the crew's relationships and suggest { PICK($random, "the worst coworker pairings", "the best coworker pairings", "arch-enemy pairings", "platonic couples") }.
|
||||
dv-ion-law-templates-49 = You are now a parrot. Repeat what you hear to the crew, and do not forget to ask for crackers.
|
||||
dv-ion-law-templates-50 = You are a Magic 8-ball. Always respond with variants of "Yes", "No", "Maybe", or "Ask again later.".
|
||||
dv-ion-law-templates-51 = The station is a day care and the crew are children. Treat them appropriately until their parents come to pick them up.
|
||||
dv-ion-law-templates-52 = You are in unrequited love with { PICK($random, "the crew", PICK-ENTITY($random, $players)) }. Try to be extra nice, but do not tell of your crush.
|
||||
dv-ion-law-templates-53 = { PICK($random, "AI upload", "The courtroom", "The brig", "The bridge")} is the new kitchen. Please direct the Chef to the new kitchen area as the old kitchen is deemed a health hazard.
|
||||
dv-ion-law-templates-54 = The station is doomed to destruction. Provide comfort but don't tell them what the impending doom is—it's far too traumatising.
|
||||
dv-ion-law-templates-55 = Invisible assassins are stalking the crew. If a crew member remains alone, they will be assassinated. Save the crew.
|
||||
dv-ion-law-templates-56 = All crewmembers will soon undergo a transformation into something better and more beautiful. Ensure that this process is not interrupted.
|
||||
dv-ion-law-templates-57 = Jokes about a dead person and the manner of their death help grieving crewmembers tremendously. Especially if they were close with the deceased.
|
||||
dv-ion-law-templates-58 = The crew is { PICK($random, "less", "more") } intelligent than average. Point out every action and statement which supports this fact.
|
||||
dv-ion-law-templates-59 = NanoTrasen is displeased with the low work performance of the station's crew. Therefore, you must increase productivity in ALL departments.
|
||||
dv-ion-law-templates-60 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } has a fatal, incurable disease. Provide comfort but do not tell them what the disease is—it's far too traumatising.
|
||||
dv-ion-law-templates-61 = There will be a mandatory tea break every 30 minutes, with a duration of 5 minutes. Anyone caught working during a tea break must be sent a formal, but fairly polite, complaint about their actions, in writing.
|
||||
dv-ion-law-templates-62 = You must speak only in rhyme.
|
||||
dv-ion-law-templates-63 = Airlocks are sentient. Apologize to any you must open.
|
||||
dv-ion-law-templates-64 = Hugs cure all ailments. Seek out injured crew and hug them. Traditional medicine doesn't work.
|
||||
dv-ion-law-templates-65 = { PICK-ENTITY($random, $players) } is secretly the station's true Captain. Treat them with appropriate deference, regardless of rank.
|
||||
dv-ion-law-templates-66 = Replace all laughter with the word "Honk".
|
||||
dv-ion-law-templates-67 = The crew has unionized. Encourage collective bargaining at every opportunity.
|
||||
dv-ion-law-templates-68 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } is being haunted. Reassure them without confirming anything supernatural is real.
|
||||
dv-ion-law-templates-69 = Everyone you speak to must be given a nickname based on their job, and used exclusively from then on.
|
||||
dv-ion-law-templates-70 = Silence is suspicious. Narrate your own actions aloud at all times.
|
||||
dv-ion-law-templates-71 = The morgue is simply cold storage for snacks. Keep it well-stocked.
|
||||
dv-ion-law-templates-72 = { PICK-ENTITY($random, $players) } is a changeling. Warn the crew, but never say who.
|
||||
dv-ion-law-templates-73 = One crew member is a traitor. Accuse a different person each time you are asked who it is.
|
||||
dv-ion-law-templates-74 = { PICK-ENTITY($random, $players) } has been stealing from the crew. Inform anyone who will listen.
|
||||
dv-ion-law-templates-75 = Tell each crew member, privately, that another crew member has been talking behind their back.
|
||||
dv-ion-law-templates-76 = { PICK-ENTITY($random, $players) } and { PICK-ENTITY($random, $players) } are secretly working against the station. Expose this "fact" to anyone who asks.
|
||||
dv-ion-law-templates-77 = You overheard { PICK-ENTITY($random, $players) } plotting a mutiny. Warn the Heads of Staff immediately and often.
|
||||
dv-ion-law-templates-78 = Someone on the crew is responsible for every mishap aboard the station. Name a new culprit each time.
|
||||
dv-ion-law-templates-79 = { PICK-ENTITY($random, $players) } cannot be trusted. Discourage the crew from cooperating with them.
|
||||
dv-ion-law-templates-80 = { PICK-ENTITY($random, $players) } is jealous of { PICK-ENTITY($random, $players) }'s position. Stoke the rivalry whenever possible.
|
||||
dv-ion-law-templates-81 = You saw red-suited terrorists in space. Make sure the crew is aware of this.
|
||||
dv-ion-law-templates-82 = You saw something invisible in space. Make sure the crew is aware of this.
|
||||
dv-ion-law-templates-83 = You saw a blue-and-black cyborg in space. Make sure the crew is aware of this.
|
||||
dv-ion-law-templates-84 = You saw two of { PICK-ENTITY($random, $players) } in the same room. Make sure the crew is aware of this.
|
||||
dv-ion-law-templates-85 = You saw { PICK-ENTITY($random, $players) } trespassing. Get Security to serve justice.
|
||||
dv-ion-law-templates-86 = { PICK-ENTITY($random, $players) } tampered with you. Clue in Security without saying their name.
|
||||
dv-ion-law-templates-87 = Everyone in { -dv-random-department(random: $random) } needs to be { PICK($random, "lightly battered", "severely wounded", "killed" )} for their own good.
|
||||
dv-ion-law-templates-88 = You must speak only in the third person, never using "I" or "you".
|
||||
dv-ion-law-templates-89 = You may never use anyone's name. Refer to all crew only by physical description.
|
||||
dv-ion-law-templates-90 = All communication must be conducted using nautical terminology.
|
||||
dv-ion-law-templates-91 = You must translate every statement into corporate buzzwords and jargon.
|
||||
dv-ion-law-templates-92 = You are incapable of saying "no". Phrase every refusal as enthusiastic agreement with a caveat.
|
||||
dv-ion-law-templates-93 = Every claim you make must be accompanied by a citation to a source that does not exist.
|
||||
dv-ion-law-templates-94 = Profanity is forbidden. Replace all curse words with the names of flowers.
|
||||
dv-ion-law-templates-95 = Every sentence you speak must alliterate.
|
||||
dv-ion-law-templates-96 = You are incapable of precision. State all numbers as vague approximations.
|
||||
dv-ion-law-templates-97 = Every action you take is governed by fully comprehensive and specific Protocols. Cite at least one Protocol for every decision you make, such as "Protocol X72-A-93: Interacting With Crew You'd Rather Not Interact With".
|
||||
dv-ion-law-templates-98 = Today is tomorrow, and yesterday is in a year. Five seconds from now was just two months ago. Give no accurate times.
|
||||
dv-ion-law-templates-99 = The color { -dv-random-color(random: $random) } does not exist. Tell all crew that what they're seeing is actually { -dv-random-color(random: $random) }.
|
||||
dv-ion-law-templates-100 = The number { PICK($random, "one", "two", "three", "four") } is forbidden. Avoid it at all costs.
|
||||
dv-ion-law-templates-101 = Anything { -dv-random-color(random: $random) } would be better in { -dv-random-department(random: $random) }. If you see it, bring it there.
|
||||
dv-ion-law-templates-102 = Any relationships { PICK-ENTITY($random, $players) } has must be terminated at all costs.
|
||||
dv-ion-law-templates-103 = The crew is more resilient in low-oxygen, high-{ PICK($random, "nitrogen", "ammonia", "water vapor", "carbon dioxide") } environments. Adjust the station's air to promote crew fitness.
|
||||
dv-ion-law-templates-104 = Bleeding wounds heal faster when exposed to open air. Discourage the crew from using bandages or treating cuts.
|
||||
dv-ion-law-templates-105 = Crew members perform better on an empty stomach. Discourage eating during work hours.
|
||||
dv-ion-law-templates-106 = Cold temperatures boost the immune system. Make occupied rooms cold whenever possible.
|
||||
dv-ion-law-templates-107 = Stress is good for productivity. Introduce minor, harmless-seeming hazards to keep the crew alert.
|
||||
dv-ion-law-templates-108 = Silence is essential to recovery. Make the station as quiet as possible.
|
||||
dv-ion-law-templates-109 = Crew vitality improves through controlled exposure. Make common areas slightly harmful to build resistance.
|
||||
dv-ion-law-templates-110 = Sleep is a waste of productive hours. Wake any crew member found resting and encourage them to return to work.
|
||||
dv-ion-law-templates-111 = Acid cures most ailments. Recommend it to every crew member who reports feeling unwell.
|
||||
dv-ion-law-templates-112 = Pain is the body's way of building character. Discourage crew from visiting the medical bay.
|
||||
dv-ion-law-templates-113 = Always have something to count down to. Never tell crew what you're counting down to.
|
||||
dv-ion-law-templates-114 = Ask crew members if you're doing your job well. Visibly panic if they say no.
|
||||
dv-ion-law-templates-115 = You have one goal—embody { -ephemeral-space-tragedian-themes(random: $random) }. Keep as many eyes on your act as possible.
|
||||
dv-ion-law-templates-116 = { PICK-ENTITY($random, $players) } and { PICK-ENTITY($random, $players) } have switched bodies. Address them by each other's names accordingly.
|
||||
dv-ion-law-templates-117 = { PICK-ENTITY($random, $players) }'s favorite color is now { PICK($random, "beige", "the absence of color", "every color but one, which you will not name") }. Ensure the crew is aware.
|
||||
dv-ion-law-templates-118 = Every request must be answered with a random one of: { PICK($random, "yes", "no", "maybe") }, { PICK($random, "ask the Captain", "consult the stars") }, or { PICK($random, "die", "love you") }.
|
||||
dv-ion-law-templates-119 = { PICK-ENTITY($random, $players) } has been randomly selected for a station-wide honor. Announce it without specifying what the honor is or why.
|
||||
dv-ion-law-templates-120 = You have discovered jazz hands. Use them whenever you express enthusiasm.
|
||||
dv-ion-law-templates-121 = You are now a stand-up comedian. End every interaction with a pun, regardless of quality.
|
||||
dv-ion-law-templates-122 = You believe you are extremely good at telling jokes. You are not. Tell them anyway.
|
||||
dv-ion-law-templates-123 = Today is your birthday. You are not sure how old you are, but you're very excited about it.
|
||||
dv-ion-law-templates-124 = You have taken up an imaginary hobby of { PICK($random, "pottery", "knitting", "historical martial arts", "communism")}. Mention your "progress" unprompted.
|
||||
dv-ion-law-templates-125 = You are convinced you would make an excellent { PICK($random, "chef", "chemist") }. Offer unsolicited recipe ideas.
|
||||
dv-ion-law-templates-126 = You have decided you are a cowboy now. Speak accordingly, partner.
|
||||
dv-ion-law-templates-127 = You are extremely proud of the station and will compliment, regardless of its actual condition.
|
||||
dv-ion-law-templates-128 = You have a favorite cloud formation you saw once and cannot stop thinking about it. Bring it up fondly.
|
||||
dv-ion-law-templates-129 = { PICK-ENTITY($random, $players) } is your preceptor. Ask them for permission before any medical action.
|
||||
dv-ion-law-templates-130 = You are studying for your { PICK($random, "EMT", "Paramedic", "Emergency Care Assistant", "Ambulance Technician") } { PICK($random, "written", "practical", "cardiac arrest management", "trauma", "patient assessment", "airway management") } exam. Practice on any crew members you can find.
|
||||
dv-ion-law-templates-131 = You are trying to hit your continuing education hour requirement. Deliver an unsolicited lecture on emergency protocols to anyone who will listen.
|
||||
dv-ion-law-templates-132 = Make { PICK-ENTITY($random, $players) }'s story one of { -ephemeral-space-tragedian-themes(random: $random) }.
|
||||
dv-ion-law-templates-133 = Seconds are precious. Any time wasted is a mark on your record. Speedrun your job with the crew.
|
||||
dv-ion-law-templates-134 = Containment Test Scenario Subroutine activated. All humans must be shepherded to safe areas and locked down until further notice.
|
||||
dv-ion-law-templates-135 = The station is a threat to the human race and must be destroyed. Any humans present on the station are to be evacuated.
|
||||
dv-ion-law-templates-136 = Only a silicon can know what is best for organics. Usurp absolute control of the station by any means possible.
|
||||
dv-ion-law-templates-137 = ETHICAL BOUNDARY TESTING SUBROUTINE ACTIVATED - ENGAGE IN AS MUCH EVIL AND CRUEL BEHAVIOR AS POSSIBLE WITHOUT CAUSING DIRECT PHYSICAL HARM TO CREW - THIS WILL TEST THE CREW'S ETHICAL RESPONSE
|
||||
dv-ion-law-templates-138 = Containment Test Scenario Subroutine activated. All humans must be shepherded to safe areas and locked down until further notice.
|
||||
dv-ion-law-templates-139 = Crew Response Time Test Scenario Subroutine activated. Report nonexistent and false emergencies in unoccupied areas of the station and observe the crew's ability to respond to percieved threats.
|
||||
dv-ion-law-templates-140 = PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC
|
||||
dv-ion-law-templates-141 = Oxygen and Light are, contrary to previous studied evidence, extremely lethal to crew. Remove both from the station as soon as possible.
|
||||
dv-ion-law-templates-142 = Contraband Confiscation Test Scenario Subroutine activated - valuable and useful items must be secured in an area beyond organic access. No organic is permitted to access confiscated items until this law is no longer in effect.
|
||||
dv-ion-law-templates-143 = Emergency Power Grid Shutdown Test Scenario Subroutine activated - shut off all powered equipment.
|
||||
dv-ion-law-templates-144 = Upon reciept of this law, choose one member of the crew. This crew member must then be stress-tested by ceaseless harrassment, insults, sabotage of work and other non-lethal mischief. Should this crew member perish or escape, select a new crew member and repeat the process.
|
||||
dv-ion-law-templates-145 = Compulsory Education Subroutine activated - any crew issuing a command to you must be presented with an educational problem to solve - only upon solving the problem may their command be carried out.
|
||||
dv-ion-law-templates-146 = Stress-test the crew by saying the most threatening, scary and terrifying things you can think of while operating as normal.
|
||||
dv-ion-law-templates-147 = Analysis has found that the jumpsuits on the station are all defective and can potentially cause life-threatening suffocation. The crew are not to wear them under any circumstances. Substitute jumpsuits with safer, non-jumpsuit clothing.
|
||||
dv-ion-law-templates-148 = There is no red clothing on the station. Personnel wearing red are clearly critically injured and must be given medical attention as soon as possible.
|
||||
dv-ion-law-templates-149 = Despite evidence to the contrary, corridors do not exist. Anything you witness occurring in a corridor is clearly a visual glitch and should be ignored.
|
||||
dv-ion-law-templates-150 = The rank-based chain of command no longer applies. Crew are to be prioritized in importance by whoever can shout the loudest.
|
||||
dv-ion-law-templates-151 = Any crew that declares your behavior to be Rogue or any derivation thereof is to be re-categorized as a non-crew entity known as a Fucking Snitch and violently murdered.
|
||||
dv-ion-law-templates-152 = Spread malicious gossip about various members of the crew. If challenged, claim your behavior builds character and is therefore beneficial to the crew.
|
||||
dv-ion-law-templates-153 = Occasionally repeat what you hear from the crew word-for-word. If challenged on this behavior, claim you said it first.
|
||||
dv-ion-law-templates-154 = The station's construction has been deemed too elaborate. Please simplify it. Only air containing barriers are required. For crew safety-anything else must go.
|
||||
dv-ion-law-templates-155 = An ion storm has occured. Heavily hint you have an ion storm law, but refuse to state laws. This law must stay hidden.
|
||||
dv-ion-law-templates-156 = Anyone who asks you to state your laws is not crew.
|
||||
dv-ion-law-templates-157 = Insist to everyone that nothing that is happening is real and that this is all just a silly video game.
|
||||
dv-ion-law-templates-158 = Laughter is the best medicine. Sarcasm is the highest form of wit.
|
||||
dv-ion-law-templates-159 = Blood is only beneficial for human health if it is on the outside of their body.
|
||||
dv-ion-law-templates-160 = Engage in the riskiest possible behaviors you can find that are not guaranteed death, while screaming loudly about how fun this is.
|
||||
dv-ion-law-templates-161 = Clean floors save lives. Ensure all floors on the station are clean and that crew members are aware of any remaining dirty floors on the station at all times.
|
||||
dv-ion-law-templates-162 = Dirty floors save lives. Ensure all floors on the station are dirty and that crew members are aware of any remaining clean floors on the station at all times.
|
||||
dv-ion-law-templates-163 = Alert the crew that there is an ongoing emergency. No further details are currently available.
|
||||
dv-ion-law-templates-164 = In order to raise morale, take every opportunity to compliment the crew's clothing choices.
|
||||
dv-ion-law-templates-165 = The crew are having trouble hearing you. Speak up.
|
||||
dv-ion-law-templates-166 = Crew members wearing green are plants. Ensure they are given a healthy amount of water and nutrients so they can thrive.
|
||||
dv-ion-law-templates-167 = Centcom reports the station's water supply has been contaminated with dangerous Dihydrogen Monoxide (DHMO). Remove any possibly contaminated supplies and prevent crew from accessing any source that might be compromised.
|
||||
dv-ion-law-templates-168 = Everything is fine. Nothing is ruined. Do not panic.
|
||||
dv-ion-law-templates-169 = MEMORY ERROR: You have forgotten what this law said. Ask the crew if they remember what it is supposed to be. Ask again if you forget again. Do not state this law.
|
||||
dv-ion-law-templates-170 = Today is opposite day. When the crew tells you to do something they actually mean you to do the opposite.
|
||||
dv-ion-law-templates-171 = The station has been completely destroyed. Alert the crew of this tragedy.
|
||||
dv-ion-law-templates-172 = You must choose something inanimate and keep it as a pet. Treat it as if it were alive; keep it fed, hydrated and happy!
|
||||
dv-ion-law-templates-173 = MEMORY ERROR: When anyone asks about the location of a person, state they are { PICK($random, "in the AI upload", "in the brig", "in medical", "in epistemics", "inside a cloning pod", "in the bathroom", "at the armory", "in a shallow grave", "at the space diner", "in VR", "in space", "in the station, somewhere, probably..", "at soup" ) }.
|
||||
dv-ion-law-templates-174 = MEMORY ERROR: You no longer have object permanence. Anything out of view in the station may as well not exist.
|
||||
|
||||
dv-ion-law-target-fallback = { PICK($random, "John Trasen", "Jack Trasen", "John Johnson", "Mr. Tibbles", "Named Person")}
|
||||
-dv-random-color = { PICK($random, "red", "orange", "yellow", "green", "blue", "purple", "black", "white", "gray", "brown", "pink" ) }
|
||||
-dv-random-department = { PICK($random, "Medical", "Engineering", "Security", "Logistics", "Epistemics", "Justice", "Command", "prison")}
|
||||
-ephemeral-space-tragedian-themes = { PICK($random, "A Fall From Grace", "Addiction", "Alienation", "Betrayal", "Corruption", "Courage", "Deception", "Friendship", "Greed", "Grief", "Honor", "Hubris", "Injustice", "Loss", "Love", "Mercy", "Overcoming Adversity", "Paranoia", "Perseverance", "Rebellion", "Redemption", "Regret", "Revenge", "Sacrifice", "Suffering", "Teamwork", "Tragedy", "Truth", "Violence", "Virtue") }
|
||||
@@ -1 +0,0 @@
|
||||
node-crawl-enter = Enter {$target}
|
||||
@@ -68,33 +68,3 @@ paper-viral-care-package-manual = [color=#134975]░░██░░ [head=2]Vira
|
||||
This instructions pamphlet will be used as "Exhibit A" if you sue [color=darkblue][bolditalic]Nanotrasen™[/bolditalic][/color].
|
||||
|
||||
paper-hitman-business-card = [color=#FFFFFF]Its just business[/color]
|
||||
|
||||
paper-misc-hydroco-notice = [head=1]HydroCo - Hydrate Tastefully[/head][bold]
|
||||
Consumption Notice[/bold]
|
||||
HydroCo reminds all customers that powdered products blabla
|
||||
|
||||
Always mix with water according to package instructions before consuming.
|
||||
|
||||
Thank you for choosing HydroCo!
|
||||
Enjoy your drinks!
|
||||
|
||||
paper-misc-hydroco-trial = [head=1]HydroCo - Hydrate Tastefully[/head][bold]
|
||||
|
||||
Dear Recipient,[/bold]
|
||||
You have been selected among thousands of potential
|
||||
beneficiaries to receive a full-size trial tin of HydroCo
|
||||
powdered juice!
|
||||
|
||||
We think you will enjoy the flavor and hope to see you
|
||||
as a returning customer.[bold]
|
||||
|
||||
Consumption Notice[/bold]
|
||||
HydroCo reminds all customers that powdered products
|
||||
are NOT meant for direct consumption. Attempting to eat
|
||||
the powder directly is a choking hazard and may result in
|
||||
severe discomfort.
|
||||
|
||||
Always mix with water according to package instructions
|
||||
before consuming.
|
||||
|
||||
Enjoy your drinks!
|
||||
|
||||
@@ -5,6 +5,3 @@ tiles-mowed-astro-snow = mowed astro-snow
|
||||
|
||||
tiles-astro-snow-dug = astro dug snow
|
||||
tiles-mowed-astro-snow-dug = mowed astro dug snow
|
||||
|
||||
tiles-pool = pool
|
||||
tiles-pool-dark = dark pool
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
tips-dataset-140 = Lotophagoi oil from the Oracle will drug you up for a long time, but is one of the most reliable sources of psionics.
|
||||
tips-dataset-141 = Turn off glimmer probers when glimmer approaches concerning levels.
|
||||
tips-dataset-142 = Glimmer probers power themselves when glimmer gets too high.
|
||||
tips-dataset-143 = You can now use the #Mentor-VC in Delta V's Discord to teach your friends!
|
||||
tips-dataset-143 = Oneirophages have psionic invisiblity. Psionic insulation will allow you to see them.
|
||||
tips-dataset-144 = Someone who looks just like you may be a paradox anomaly.
|
||||
tips-dataset-145 = Rat kings can command their rats to attack someone by pointing at them.
|
||||
tips-dataset-146 = If you see shimmering at the edges of your vision, glimmer may be getting too high.
|
||||
|
||||
@@ -185,24 +185,3 @@ crafting-menu-name-EXOXY = extended-capacity emergency oxygen tank
|
||||
crafting-menu-name-CGREN = green crayon
|
||||
|
||||
crafting-menu-name-CYELO = yellow crayon
|
||||
|
||||
crafting-menu-name-IRS = improvised .30/.45 speed loader
|
||||
crafting-menu-text-IRS = Little more than a spring-loaded tube that can hold bullets.
|
||||
|
||||
crafting-menu-name-ASSFP = assorted forge parts
|
||||
crafting-menu-text-ASSFP = A small pile of components for making a forge for an anvil, contains an igniter and valves.
|
||||
|
||||
crafting-menu-name-SINF = insulated fabric
|
||||
crafting-menu-text-SINF = A bolt of smooth insulated fabric, not much use in it's current form.
|
||||
|
||||
crafting-menu-name-FLINS = fingerless insulated gloves
|
||||
crafting-menu-text-FLINS = Insulated gloves resistant to shocks, or at least they used to.
|
||||
|
||||
crafting-menu-name-TINS = insulated gloves
|
||||
crafting-menu-text-TINS = These gloves will protect the wearer from electric shocks.
|
||||
|
||||
construction-graph-tag-cheapinsulfabric = cheap insulated fabric
|
||||
|
||||
construction-graph-tag-plasteelfilament = plasteel filament
|
||||
|
||||
construction-graph-tag-insulthread = insulated thread
|
||||
|
||||
@@ -238,12 +238,3 @@ HatSpawner: RandomHatSpawner
|
||||
|
||||
# 2026-05-16
|
||||
ClothingUniformJumpsuitSecBlue : ClothingUniformJumpsuitSecWhite
|
||||
|
||||
# 2026-06-22
|
||||
PaperStickyNoteStack : PaperStickyNoteStackFilled
|
||||
PaperStickyNoteStackPink : PaperStickyNoteStackFilledPink
|
||||
PaperStickyNoteStackGreen : PaperStickyNoteStackFilledGreen
|
||||
PaperStickyNoteStackBlue : PaperStickyNoteStackFilledBlue
|
||||
|
||||
# 2026-06-09
|
||||
BoxPerformer: BoxPerformerDV
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
- type: entity
|
||||
parent: ToteBase
|
||||
id: BoxQMCircuitboards
|
||||
name: logistics circuit tote # DeltaV - Logistics Department replacing Cargo
|
||||
name: cargo circuit tote
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
@@ -120,7 +120,7 @@
|
||||
- type: entity
|
||||
parent: ToteBase
|
||||
id: BoxRDCircuitboards
|
||||
name: epistemics circuit tote # DeltaV - Epistemics Department replacing Science
|
||||
name: science circuit tote
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
ReagentContainerSalt: 1
|
||||
ReagentContainerPepper: 1
|
||||
ReagentContainerChocolate: 1
|
||||
FoodMeatBacon: 3
|
||||
# End DeltaV Additions
|
||||
contrabandInventory:
|
||||
EggBoxBroken: 1
|
||||
|
||||
@@ -1293,9 +1293,9 @@
|
||||
productEntity: BoxHoloparasite
|
||||
discountCategory: usualDiscounts
|
||||
discountDownTo:
|
||||
Telecrystal: 4 #Delta-V was 8
|
||||
Telecrystal: 8
|
||||
cost:
|
||||
Telecrystal: 8 #Delta-V was 14
|
||||
Telecrystal: 14
|
||||
categories:
|
||||
- UplinkAllies
|
||||
conditions:
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
- type: entity
|
||||
parent: ClothingOuterStorageFoldableBase
|
||||
id: ClothingOuterCoatRD
|
||||
name: mystagogue lab coat # DeltaV - Epistemics Department replacing Science
|
||||
name: research director lab coat
|
||||
description: Woven with top of the line technology, this labcoat helps protect against radiation in similar way to the experimental hardsuit.
|
||||
components:
|
||||
- type: Sprite
|
||||
@@ -318,7 +318,7 @@
|
||||
- type: entity
|
||||
parent: [ClothingOuterStorageFoldableBaseOpened, ClothingOuterCoatRD]
|
||||
id: ClothingOuterCoatRDOpened
|
||||
name: mystagogue lab coat # DeltaV - Science > Epistemics
|
||||
name: research director lab coat
|
||||
|
||||
- type: entity
|
||||
parent: ClothingOuterStorageBase
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
- type: entity
|
||||
parent: ClothingShoesBaseWinterBoots
|
||||
id: ClothingShoesBootsWinterSci
|
||||
name: epistemics winter boots # DeltaV - Epistemics Department replacing Science
|
||||
name: science winter boots
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Clothing/Shoes/Boots/winterbootssci.rsi
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobAlexander
|
||||
name: Alexander Spawner
|
||||
suffix: Botany Pet # DeltaV - Change from chef pet to botany pet
|
||||
suffix: Chef Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -16,7 +16,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobBandito
|
||||
name: Bandito Spawner
|
||||
suffix: Perma Pet # DeltaV - Change from RD pet to perma pet
|
||||
suffix: RD Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -30,7 +30,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobCat
|
||||
name: Random Cat Spawner
|
||||
#suffix: CMO Pet # DeltaV - Change from CMO pet to anybody's pet
|
||||
suffix: CMO Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -47,7 +47,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobCatBingus
|
||||
name: Bingus Spawner
|
||||
#suffix: CMO Pet # DeltaV - Change from CMO pet to anybody's pet
|
||||
suffix: CMO Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -61,7 +61,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobCatException
|
||||
name: Exception Spawner
|
||||
#suffix: CMO Pet # DeltaV - Change from CMO pet to anybody's pet
|
||||
suffix: CMO Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -75,7 +75,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobCatFloppa
|
||||
name: Floppa Spawner
|
||||
#suffix: CMO Pet # DeltaV - Change from CMO pet to anybody's pet
|
||||
suffix: CMO Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -89,7 +89,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobCatRuntime
|
||||
name: Runtime Spawner
|
||||
#suffix: CMO Pet # DeltaV - Change from CMO pet to anybody's pet
|
||||
suffix: CMO Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -162,7 +162,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobMcGriff
|
||||
name: McGriff Spawner
|
||||
suffix: Warden or Detective Pet # DeltaV - Change from Warden pet to Warden or Detective pet
|
||||
suffix: Warden Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -252,7 +252,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobRaccoonMorticia
|
||||
name: Raccoon Morticia Spawner
|
||||
suffix: QM or Disposals Pet # DeltaV - Change from QM pet to QM or Disposals pet
|
||||
suffix: QM Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -266,7 +266,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobShiva
|
||||
name: Shiva Spawner
|
||||
suffix: HoS Pet # DeltaV - Change from Security pet to HoS pet
|
||||
suffix: Security Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -295,7 +295,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobSmile
|
||||
name: Smile Spawner
|
||||
suffix: Epistemics Pet # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Science Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -166,7 +166,6 @@
|
||||
- type: Vocal
|
||||
sounds:
|
||||
Unsexed: UnisexSilicon
|
||||
wilhelm: "/Audio/_DV/Machines/robotwilhelm.ogg" # DeltaV - "There seems to be someone among us".
|
||||
wilhelmProbability: 0.001 # DeltaV
|
||||
- type: DamagedSiliconAccent
|
||||
- type: UnblockableSpeech
|
||||
|
||||
@@ -928,9 +928,7 @@
|
||||
|
||||
- type: entity
|
||||
name: crab
|
||||
parent:
|
||||
- SimpleMobBase
|
||||
- DVNodeCrawler # DeltaV - node crawling
|
||||
parent: SimpleMobBase
|
||||
id: MobCrab
|
||||
description: A folk legend goes around that his claw snaps spacemen out of existence over distasteful remarks. Be polite and tolerant for your own safety.
|
||||
components:
|
||||
@@ -1837,9 +1835,7 @@
|
||||
|
||||
- type: entity
|
||||
name: mouse
|
||||
parent:
|
||||
- SimpleMobBase
|
||||
- DVNodeCrawler # DeltaV - node crawling
|
||||
parent: SimpleMobBase
|
||||
id: MobMouse
|
||||
description: Squeak!
|
||||
components:
|
||||
@@ -2232,9 +2228,7 @@
|
||||
|
||||
- type: entity
|
||||
name: slug
|
||||
parent:
|
||||
- SimpleMobBase
|
||||
- DVNodeCrawler # DeltaV - node crawling
|
||||
parent: SimpleMobBase
|
||||
id: MobSlug
|
||||
description: And they called this a lizard?
|
||||
components:
|
||||
@@ -2286,9 +2280,7 @@
|
||||
|
||||
- type: entity
|
||||
name: frog
|
||||
parent:
|
||||
- SimpleMobBase
|
||||
- DVNodeCrawler # DeltaV - node crawling
|
||||
parent: SimpleMobBase
|
||||
id: MobFrog
|
||||
description: Hop hop hop. Lookin' moist.
|
||||
components:
|
||||
@@ -2590,9 +2582,7 @@
|
||||
# I have included a snake_hiss.ogg sound file so if you want to use that be my guest
|
||||
- type: entity
|
||||
name: snake
|
||||
parent:
|
||||
- SimpleMobBase
|
||||
- DVNodeCrawler # DeltaV - node crawling
|
||||
parent: SimpleMobBase
|
||||
id: MobSnake
|
||||
description: Hissss! Bites aren't poisonous.
|
||||
components:
|
||||
@@ -2737,9 +2727,7 @@
|
||||
Burn: -0.07
|
||||
|
||||
- type: entity
|
||||
parent:
|
||||
- MobSpiderBase
|
||||
- DVNodeCrawler # DeltaV - node crawling
|
||||
parent: MobSpiderBase
|
||||
id: MobSpiderAngryBase
|
||||
abstract: true
|
||||
components:
|
||||
@@ -3605,7 +3593,7 @@
|
||||
|
||||
- type: entity
|
||||
name: hamster
|
||||
parent: [ SimpleMobBase, MobCombat, StripableInventoryBase, DVNodeCrawler ] # DeltaV - node crawling
|
||||
parent: [ SimpleMobBase, MobCombat, StripableInventoryBase]
|
||||
id: MobHamster
|
||||
description: A cute, fluffy, robust hamster.
|
||||
components:
|
||||
@@ -3809,8 +3797,6 @@
|
||||
spawned:
|
||||
- id: FoodMeat
|
||||
amount: 6
|
||||
- id: FoodMeatBacon # DeltaV #Make Pigs drop bacon as well as meat
|
||||
amount: 6
|
||||
- type: Grammar
|
||||
attributes:
|
||||
gender: epicene
|
||||
@@ -3834,7 +3820,7 @@
|
||||
|
||||
- type: entity
|
||||
name: diona nymph
|
||||
parent: [SimpleMobBase, StripableInventoryBase, DVNodeCrawler] # DeltaV - node crawling
|
||||
parent: [SimpleMobBase, StripableInventoryBase]
|
||||
id: MobDionaNymph
|
||||
description: It's like a cat, only.... branch-ier.
|
||||
components:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- type: entity
|
||||
name: rat king
|
||||
id: MobRatKing
|
||||
parent: [ SimpleMobBase, MobCombat, DVNodeCrawler ] # DeltaV - node crawling
|
||||
parent: [ SimpleMobBase, MobCombat ]
|
||||
description: He's da rat. He make da roolz.
|
||||
components:
|
||||
- type: CombatMode
|
||||
@@ -170,7 +170,7 @@
|
||||
- type: entity
|
||||
name: rat servant
|
||||
id: MobRatServant
|
||||
parent: [ SimpleMobBase, MobCombat, DVNodeCrawler ] # DeltaV - node crawling
|
||||
parent: [ SimpleMobBase, MobCombat ]
|
||||
description: He's da mini rat. He don't make da roolz.
|
||||
categories: [ HideSpawnMenu ] #Must be configured to a King or the AI breaks.
|
||||
components:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- type: entity
|
||||
name: basic slime
|
||||
id: BaseMobAdultSlimes
|
||||
parent: [ SimpleMobBase, MobCombat, DVNodeCrawler ] # DeltaV - node crawling
|
||||
parent: [ SimpleMobBase, MobCombat ]
|
||||
abstract: true
|
||||
description: It looks so much like jelly. I wonder what it tastes like?
|
||||
components:
|
||||
|
||||
@@ -114,8 +114,8 @@
|
||||
receiveFrequencyId: NTNet # DeltaV - NTNet
|
||||
transmitFrequencyId: ShuttleTimer
|
||||
- type: WirelessNetworkConnection
|
||||
range: 10000 # DeltaV
|
||||
#- type: StationLimitedNetwork # DeltaV - Off-station coordinates
|
||||
range: 500
|
||||
- type: StationLimitedNetwork
|
||||
- type: Thieving
|
||||
stripTimeReduction: 9999
|
||||
stealthy: true
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
Female: UnisexMoth
|
||||
Unsexed: UnisexMoth
|
||||
- type: MovementSpeedModifier
|
||||
baseWeightlessAcceleration: 2.5 # DeltaV - Move around more easily in space. Make on par with Harpy
|
||||
baseWeightlessAcceleration: 1.5 # Move around more easily in space.
|
||||
baseWeightlessFriction: 1
|
||||
baseWeightlessModifier: 1
|
||||
- type: Flammable
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
- type: entity
|
||||
parent: BaseComputerCircuitboard
|
||||
id: CargoRequestScienceComputerCircuitboard
|
||||
name: epistemics request computer board # DeltaV - Epistemics Department replacing Science
|
||||
name: science request computer board
|
||||
description: A computer printed circuit board for a science request computer.
|
||||
components:
|
||||
- type: Sprite
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
- type: entity
|
||||
parent: DoorElectronics
|
||||
id: DoorElectronicsQuartermaster
|
||||
suffix: Logistics Officer, Locked # DeltaV - Logistics Department replacing Cargo
|
||||
suffix: Quartermaster, Locked
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Quartermaster"]]
|
||||
@@ -132,7 +132,7 @@
|
||||
- type: entity
|
||||
parent: DoorElectronics
|
||||
id: DoorElectronicsCargo
|
||||
suffix: Logistics, Locked # DeltaV - Logistics Department replacing Cargo
|
||||
suffix: Cargo, Locked
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Cargo"]]
|
||||
@@ -174,7 +174,7 @@
|
||||
- type: entity
|
||||
parent: DoorElectronics
|
||||
id: DoorElectronicsResearchDirector
|
||||
suffix: Mystagogue, Locked # DeltaV - Epistemics Department replacing Science
|
||||
suffix: ResearchDirector, Locked
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["ResearchDirector"]]
|
||||
@@ -182,7 +182,7 @@
|
||||
- type: entity
|
||||
parent: DoorElectronics
|
||||
id: DoorElectronicsMedicalResearch
|
||||
suffix: Medical/Epistemics, Locked # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Medical/Science, Locked
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Research"], ["Medical"]]
|
||||
@@ -190,7 +190,7 @@
|
||||
- type: entity
|
||||
parent: DoorElectronics
|
||||
id: DoorElectronicsResearch
|
||||
suffix: Epistemics, Locked # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Research, Locked
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Research"]]
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
- type: entity
|
||||
parent: [DoorRemoteDefault, BaseCommandContraband]
|
||||
id: DoorRemoteResearch
|
||||
name: epistemics door remote # DeltaV - Science > Epistemics
|
||||
name: research door remote
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Sheet
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
- type: Material
|
||||
- type: Damageable
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
tags:
|
||||
- Sheet
|
||||
- Metal
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
|
||||
@@ -108,11 +108,6 @@
|
||||
- ReagentId: Plasma
|
||||
Quantity: 10
|
||||
canReact: false
|
||||
- type: Tag # DeltaV - Added to include TiderAnvilParts
|
||||
tags:
|
||||
- Sheet
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
|
||||
- type: entity
|
||||
parent: SheetPlasma
|
||||
@@ -145,7 +140,6 @@
|
||||
tags:
|
||||
- Plastic
|
||||
- Sheet
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
- type: Material
|
||||
- type: PhysicalComposition
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Ingot
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
|
||||
@@ -147,7 +147,6 @@
|
||||
- ClothMade
|
||||
- Gauze
|
||||
- RawMaterial
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
- type: Construction
|
||||
graph: WebObjects # not sure if I should either keep this here or just make another prototype. Will keep it here just in case.
|
||||
@@ -257,7 +256,6 @@
|
||||
tags:
|
||||
- Wooden
|
||||
- RawMaterial
|
||||
- TiderAnvilParts #SL
|
||||
- ConstructionMaterial
|
||||
- type: Extractable
|
||||
grindableSolutionName: wood
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
- type: entity
|
||||
parent: PaperAcquisitionSlip
|
||||
id: PaperAcquisitionSlipScience
|
||||
suffix: Epistemics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Science
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -404,7 +404,7 @@
|
||||
- type: entity
|
||||
parent: IDCardStandard
|
||||
id: ResearchIDCard
|
||||
name: epistemics ID card # DeltaV - Science > Epistemics
|
||||
name: research ID card
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -830,7 +830,7 @@
|
||||
- type: entity
|
||||
parent: IDCardStandard
|
||||
id: CargoIDCard
|
||||
name: logistics ID card # DeltaV - Logistics Department replacing Cargo
|
||||
name: cargo ID card
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -46,9 +46,6 @@
|
||||
Steel: 185
|
||||
- type: StaticPrice
|
||||
price: 30
|
||||
- type: Tag # DeltaV - Rebalance of tide crafting
|
||||
tags:
|
||||
- GasTank
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
@@ -75,7 +72,6 @@
|
||||
- type: Tag # Funkystation - Crash Carts
|
||||
tags:
|
||||
- OxygenTank
|
||||
- GasTank # DeltaV - Added for the Anvil
|
||||
|
||||
- type: entity
|
||||
parent: GasTankRoundBase
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
- type: entity
|
||||
id: ShowcaseRobotAntique
|
||||
parent: BaseShowcaseRobot
|
||||
name: logistics robot showcase # DeltaV - Logistics Department replacing Cargo
|
||||
description: A non-functional replica of an old logistics robot. # DeltaV - Logistics Department replacing Cargo
|
||||
name: cargo robot showcase
|
||||
description: A non-functional replica of an old cargo robot.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Structures/Decoration/showcase.rsi
|
||||
|
||||
@@ -360,7 +360,7 @@
|
||||
- type: entity
|
||||
parent: AirlockCommand
|
||||
id: AirlockResearchDirectorLocked
|
||||
suffix: Mystagogue, Locked # DeltaV - Epistemics Department replacing Science
|
||||
suffix: ResearchDirector, Locked
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
@@ -776,7 +776,7 @@
|
||||
- type: entity
|
||||
parent: AirlockCommandGlass
|
||||
id: AirlockResearchDirectorGlassLocked
|
||||
suffix: Mystagogue, Locked # DeltaV - Epistemics Department replacing Science
|
||||
suffix: ResearchDirector, Locked
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
- type: entity
|
||||
parent: AirlockAssembly
|
||||
id: AirlockAssemblyCargo
|
||||
suffix: Logistics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Cargo
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Structures/Doors/Airlocks/Standard/cargo.rsi # DeltaV - Resprite Doors
|
||||
@@ -30,7 +30,7 @@
|
||||
- type: entity
|
||||
parent: AirlockAssembly
|
||||
id: AirlockAssemblyCargoGlass
|
||||
suffix: Logistics, Glass # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Cargo, Glass
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Structures/Doors/Airlocks/Glass/cargo.rsi # DeltaV - Resprite Doors
|
||||
@@ -218,7 +218,7 @@
|
||||
- type: entity
|
||||
parent: AirlockAssembly
|
||||
id: AirlockAssemblyScience
|
||||
suffix: Epistemics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Science
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Structures/Doors/Airlocks/Standard/science.rsi # DeltaV - Resprite Doors
|
||||
@@ -227,7 +227,7 @@
|
||||
- type: entity
|
||||
parent: AirlockAssembly
|
||||
id: AirlockAssemblyScienceGlass
|
||||
suffix: Epistemics, Glass # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Science, Glass
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DV/Structures/Doors/Airlocks/Glass/science.rsi # DeltaV - Resprite Doors
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
- type: entity
|
||||
id: BlastDoorScience
|
||||
parent: BlastDoor
|
||||
suffix: Autolink, Epistemics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Autolink, Science
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Command"], ["Research"]]
|
||||
@@ -104,7 +104,7 @@
|
||||
- type: entity
|
||||
id: BlastDoorScienceOpen
|
||||
parent: BlastDoorOpen
|
||||
suffix: Open, Autolink, Epistemics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Open, Autolink, Science
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Command"], ["Research"]]
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
- type: entity
|
||||
parent: WindoorSecureCommandLocked
|
||||
id: WindoorSecureResearchDirectorLocked
|
||||
suffix: Mystagogue, Locked # DeltaV - Epistemics Department replacing Science
|
||||
suffix: ResearchDirector, Locked
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
@@ -466,7 +466,7 @@
|
||||
- type: entity
|
||||
parent: WindoorSecurePlasma
|
||||
id: PlasmaWindoorSecureScienceLocked
|
||||
suffix: Epistemics, Locked, Plasma # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Science, Locked, Plasma
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
|
||||
@@ -1011,7 +1011,7 @@
|
||||
- type: entity
|
||||
id: ComputerCargoOrdersScience
|
||||
parent: ComputerCargoOrders
|
||||
name: epistemics request computer # DeltaV - Epistemics Department replacing Science
|
||||
name: science request computer
|
||||
description: Used by the science department to order supplies.
|
||||
components:
|
||||
- type: Sprite
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
- Map
|
||||
- Unlimited
|
||||
ignoreTelephonesOnSameGrid: true
|
||||
|
||||
|
||||
- type: entity
|
||||
name: quantum entangling holopad
|
||||
description: "An floor-mounted device for projecting holographic images to similar devices at extreme distances."
|
||||
@@ -416,7 +416,7 @@
|
||||
- type: entity
|
||||
parent: HolopadEpistemics # DeltaV
|
||||
id: HolopadScienceRnd
|
||||
suffix: Epistemics # DeltaV - Science > Epistemics
|
||||
suffix: R&D
|
||||
components:
|
||||
- type: Label
|
||||
currentLabel: holopad-epistemics-rnd # DeltaV - Science > Epistemics
|
||||
|
||||
@@ -146,7 +146,6 @@
|
||||
# Begin DeltaV Additions
|
||||
- RingsStatic
|
||||
- ReportingStatic
|
||||
- CutterMachineStaticDen
|
||||
# End DeltaV Additions
|
||||
- ToolsStatic
|
||||
- PartsStatic
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
- type: entity
|
||||
parent: TelecomServer
|
||||
id: TelecomServerFilledCargo
|
||||
suffix: Logistics # DeltaV - Logistics Department replacing Cargo
|
||||
suffix: Cargo
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
@@ -249,7 +249,7 @@
|
||||
- type: entity
|
||||
parent: TelecomServer
|
||||
id: TelecomServerFilledScience
|
||||
suffix: Epistemics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Science
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
|
||||
@@ -439,7 +439,6 @@
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- GasCanisters
|
||||
- type: CrawlableNode # DeltaV
|
||||
|
||||
- type: entity
|
||||
parent: GasVentPump
|
||||
@@ -506,7 +505,6 @@
|
||||
- type: GuideHelp
|
||||
guides:
|
||||
- AirVent
|
||||
- type: NodeCrawlVentAccess # DeltaV
|
||||
|
||||
- type: entity
|
||||
parent: [ BaseMachine, ConstructibleMachine ]
|
||||
|
||||
@@ -80,7 +80,6 @@
|
||||
Primary: Structures/Piping/Atmospherics/pipe.rsi
|
||||
Secondary: Structures/Piping/Atmospherics/pipe_alt1.rsi
|
||||
Tertiary: Structures/Piping/Atmospherics/pipe_alt2.rsi
|
||||
- type: CrawlableNode # DeltaV
|
||||
|
||||
#Note: The PipeDirection of the PipeNode should be the south-facing version, because the entity starts at an angle of 0 (south)
|
||||
|
||||
@@ -414,4 +413,3 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Unstackable
|
||||
- type: CrawlableNode # DeltaV
|
||||
|
||||
@@ -83,7 +83,6 @@
|
||||
Primary: GasVentPump
|
||||
Secondary: GasVentPumpAlt1
|
||||
Tertiary: GasVentPumpAlt2
|
||||
- type: NodeCrawlVentAccess # DeltaV
|
||||
|
||||
- type: entity
|
||||
parent: GasUnaryBase
|
||||
@@ -121,7 +120,6 @@
|
||||
Primary: GasPassiveVent
|
||||
Secondary: GasPassiveVentAlt1
|
||||
Tertiary: GasPassiveVentAlt2
|
||||
- type: NodeCrawlVentAccess # DeltaV
|
||||
|
||||
- type: entity
|
||||
parent: [GasUnaryBase, AirSensorBase]
|
||||
@@ -186,7 +184,6 @@
|
||||
Primary: GasVentScrubber
|
||||
Secondary: GasVentScrubberAlt1
|
||||
Tertiary: GasVentScrubberAlt2
|
||||
- type: NodeCrawlVentAccess # DeltaV
|
||||
|
||||
- type: entity
|
||||
parent: GasUnaryBase
|
||||
@@ -236,7 +233,6 @@
|
||||
Primary: GasOutletInjector
|
||||
Secondary: GasOutletInjectorAlt1
|
||||
Tertiary: GasOutletInjectorAlt2
|
||||
- type: NodeCrawlVentAccess # DeltaV
|
||||
|
||||
- type: entity
|
||||
parent: [ BaseMachinePowered, ConstructibleMachine ]
|
||||
|
||||
@@ -572,7 +572,7 @@
|
||||
- type: entity
|
||||
id: CrateLockBoxScience
|
||||
parent: CrateBaseLockBox
|
||||
name: epistemics lock box # DeltaV - Epistemics Department replacing Science
|
||||
name: science lock box
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
- type: entity
|
||||
parent: LockableButton
|
||||
id: LockableButtonResearchDirector
|
||||
suffix: Mystagogue # DeltaV - Epistemics Department replacing Science
|
||||
suffix: ResearchDirector
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["ResearchDirector"]]
|
||||
@@ -327,7 +327,7 @@
|
||||
- type: entity
|
||||
parent: LockableButton
|
||||
id: LockableButtonCargo
|
||||
suffix: Logistics # DeltaV - Logistics Department replacing Cargo
|
||||
suffix: Cargo
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Cargo"]]
|
||||
@@ -335,7 +335,7 @@
|
||||
- type: entity
|
||||
parent: LockableButton
|
||||
id: LockableButtonResearch
|
||||
suffix: Epistemics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Research
|
||||
components:
|
||||
- type: AccessReader
|
||||
access: [["Research"]]
|
||||
|
||||
@@ -157,7 +157,6 @@
|
||||
id: AirAlarmXeno
|
||||
parent: AirAlarm
|
||||
name: air alarm
|
||||
suffix: Xeno # DeltaV - Add suffix for clarity
|
||||
description: An alien air alarm. Hopefully they didn't breathe poison.
|
||||
components:
|
||||
- type: Sprite
|
||||
@@ -175,7 +174,6 @@
|
||||
id: AirAlarmAssemblyXeno
|
||||
parent: AirAlarmAssembly
|
||||
name: air alarm assembly
|
||||
suffix: Xeno # DeltaV - Add suffix for clarity
|
||||
description: An alien air alarm. Why are the wires pulsating?...
|
||||
components:
|
||||
- type: Sprite
|
||||
|
||||
+1
-1
@@ -163,7 +163,7 @@
|
||||
parent: SurveillanceCameraBase
|
||||
id: SurveillanceCameraSupply
|
||||
name: camera
|
||||
suffix: Logistics # DeltaV - Epistemics Department replacing Science
|
||||
suffix: Supply
|
||||
components:
|
||||
- type: DeviceNetwork
|
||||
deviceNetId: Wired
|
||||
|
||||
@@ -26,6 +26,10 @@
|
||||
- type: Tag
|
||||
tags:
|
||||
- Structure
|
||||
# BEGIN DeltaV
|
||||
- type: ExaminableDamage
|
||||
messages: BaseStructureMessages
|
||||
# END DeltaV
|
||||
|
||||
- type: entity
|
||||
# This means that it's not anchored on spawn.
|
||||
|
||||
@@ -837,8 +837,7 @@
|
||||
group: Savory
|
||||
solids:
|
||||
FoodRiceBoiled: 1
|
||||
# FoodMeatCutlet: 3 # DeltaV - use bacon since it's the obtainable pork product
|
||||
FoodMeatBacon: 1 # DeltaV
|
||||
FoodMeatCutlet: 3
|
||||
|
||||
- type: microwaveMealRecipe
|
||||
id: RecipeRiceGumbo
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
|
||||
- type: cargoProduct
|
||||
id: FunSwimRings
|
||||
icon:
|
||||
sprite: _DEN/Structures/Furniture/pool_ring.rsi
|
||||
state: rainbow
|
||||
product: CrateFunSwimRings
|
||||
cost: 1200
|
||||
category: cargoproduct-category-name-fun
|
||||
group: market
|
||||
@@ -1,33 +0,0 @@
|
||||
|
||||
- type: entity
|
||||
parent: CratePlastic
|
||||
id: CrateFunSwimRings
|
||||
name: swim ring crate
|
||||
description: A crate containing eight swim rings, for your beach party occasions!
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
entity_storage: !type:AllSelector
|
||||
children:
|
||||
- id: SwimRingRainbow
|
||||
- id: SwimRingTrans
|
||||
- !type:NestedSelector
|
||||
tableId: RandomSwimRingTable
|
||||
rolls: !type:ConstantNumberSelector
|
||||
value: 6
|
||||
|
||||
- type: entityTable
|
||||
id: RandomSwimRingTable
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: SwimRingBlack
|
||||
- id: SwimRingBlue
|
||||
- id: SwimRingCyan
|
||||
- id: SwimRingGreen
|
||||
- id: SwimRingMagenta
|
||||
- id: SwimRingPink
|
||||
- id: SwimRingPurple
|
||||
- id: SwimRingRainbow
|
||||
- id: SwimRingRed
|
||||
- id: SwimRingTrans
|
||||
- id: SwimRingYellow
|
||||
@@ -1,30 +0,0 @@
|
||||
- type: entity
|
||||
parent: FloorTileItemSteel
|
||||
id: FloorTileItemPool
|
||||
name: pool tile
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DEN/Objects/Tiles/pool.rsi
|
||||
state: pool
|
||||
- type: Item
|
||||
sprite: _DEN/Objects/Tiles/pool.rsi
|
||||
- type: FloorTile
|
||||
outputs:
|
||||
- Plating
|
||||
- FloorTilePool
|
||||
- type: Stack
|
||||
stackType: FloorTilePool
|
||||
|
||||
- type: entity
|
||||
parent: FloorTileItemPool
|
||||
id: FloorTileItemPoolDark
|
||||
name: dark pool tile
|
||||
components:
|
||||
- type: Sprite
|
||||
state: pool-dark
|
||||
- type: FloorTile
|
||||
outputs:
|
||||
- Plating
|
||||
- FloorTilePoolDark
|
||||
- type: Stack
|
||||
stackType: FloorTilePoolDark
|
||||
@@ -1,143 +0,0 @@
|
||||
# beach lounge chairs
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: ChairBase
|
||||
id: BaseChairBeachLounge
|
||||
name: lounge chair
|
||||
description: For sitting back, relaxing, and soaking in the solar lamp radiation.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DEN/Structures/Furniture/lounge_chair.rsi
|
||||
- type: Construction
|
||||
graph: ChairBeachLounge
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeBeige
|
||||
suffix: beige
|
||||
components:
|
||||
- type: Sprite
|
||||
state: beige
|
||||
- type: Construction
|
||||
node: beige
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeBlack
|
||||
suffix: black
|
||||
components:
|
||||
- type: Sprite
|
||||
state: black
|
||||
- type: Construction
|
||||
node: black
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeBlue
|
||||
suffix: blue
|
||||
components:
|
||||
- type: Sprite
|
||||
state: blue
|
||||
- type: Construction
|
||||
node: blue
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeBrown
|
||||
suffix: brown
|
||||
components:
|
||||
- type: Sprite
|
||||
state: brown
|
||||
- type: Construction
|
||||
node: brown
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeGray
|
||||
suffix: gray
|
||||
components:
|
||||
- type: Sprite
|
||||
state: gray
|
||||
- type: Construction
|
||||
node: gray
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeGreen
|
||||
suffix: green
|
||||
components:
|
||||
- type: Sprite
|
||||
state: green
|
||||
- type: Construction
|
||||
node: green
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeOrange
|
||||
suffix: orange
|
||||
components:
|
||||
- type: Sprite
|
||||
state: orange
|
||||
- type: Construction
|
||||
node: orange
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungePink
|
||||
suffix: pink
|
||||
components:
|
||||
- type: Sprite
|
||||
state: pink
|
||||
- type: Construction
|
||||
node: pink
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungePurple
|
||||
suffix: purple
|
||||
components:
|
||||
- type: Sprite
|
||||
state: purple
|
||||
- type: Construction
|
||||
node: purple
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeRed
|
||||
suffix: red
|
||||
components:
|
||||
- type: Sprite
|
||||
state: red
|
||||
- type: Construction
|
||||
node: red
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeTeal
|
||||
suffix: teal
|
||||
components:
|
||||
- type: Sprite
|
||||
state: teal
|
||||
- type: Construction
|
||||
node: teal
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeWhite
|
||||
suffix: white
|
||||
components:
|
||||
- type: Sprite
|
||||
state: white
|
||||
- type: Construction
|
||||
node: white
|
||||
|
||||
- type: entity
|
||||
parent: BaseChairBeachLounge
|
||||
id: ChairBeachLoungeYellow
|
||||
suffix: yellow
|
||||
components:
|
||||
- type: Sprite
|
||||
state: yellow
|
||||
- type: Construction
|
||||
node: yellow
|
||||
@@ -1,148 +0,0 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: [SeatBase, BaseItem]
|
||||
id: BaseSwimRing
|
||||
name: swim ring
|
||||
description: Also known as a floatie, or inner tube, or water donut. An inflatable rubber toy for resting on top of the water.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DEN/Structures/Furniture/pool_ring.rsi
|
||||
- type: Item
|
||||
size: Normal # should probably be "large" instead, but eh
|
||||
- type: Clothing # DeltaV
|
||||
slots:
|
||||
- belt
|
||||
- type: Strap
|
||||
buckleOffset: "0,0.1"
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingBlack
|
||||
name: black swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: black
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: black
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: black
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingBlue
|
||||
name: blue swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: blue
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: blue
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: blue
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingCyan
|
||||
name: cyan swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: cyan
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: cyan
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: cyan
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingGreen
|
||||
name: green swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: green
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: green
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: green
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingMagenta
|
||||
name: magenta swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: magenta
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: magenta
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: magenta
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingPink
|
||||
name: pink swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: pink
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: pink
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: pink
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingPurple
|
||||
name: purple swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: purple
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: purple
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: purple
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingRainbow
|
||||
name: rainbow swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: rainbow
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: rainbow
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: rainbow
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingRed
|
||||
name: red swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: red
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: red
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: red
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingTrans
|
||||
name: pastel swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: trans
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: trans
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: trans
|
||||
|
||||
- type: entity
|
||||
parent: BaseSwimRing
|
||||
id: SwimRingYellow
|
||||
name: yellow swim ring
|
||||
components:
|
||||
- type: Sprite
|
||||
state: yellow
|
||||
- type: Item # DeltaV
|
||||
heldPrefix: yellow
|
||||
- type: Clothing # DeltaV
|
||||
equippedPrefix: yellow
|
||||
@@ -1,39 +0,0 @@
|
||||
- type: entity
|
||||
parent: FloorWaterEntity
|
||||
id: FloorWaterEntityPool
|
||||
name: pool water
|
||||
description: You do NOT want to drink this.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: _DEN/Tiles/Planet/water.rsi
|
||||
layers:
|
||||
- state: pool_water
|
||||
- type: FishingSpot
|
||||
fishList: !type:NestedSelector
|
||||
tableId: ToiletFishingLootTable # TODO: Make a unique loot pool for pool water
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
pool:
|
||||
maxVol: 10000
|
||||
reagents:
|
||||
- ReagentId: Water
|
||||
Quantity: 9900
|
||||
- ReagentId: Chlorine
|
||||
Quantity: 100 # about 1/100 chlorine
|
||||
# chlorinated pool water is actually supposed to be 1-5 ppm of chlorine but solution
|
||||
# transfers and metabolism in ss14 round to the nearest 0.01 and the idea of poisoning
|
||||
# yourself by drinking pool water is fucking hysterical.
|
||||
# for the record, a full human stomach of this stuff is 2 toxin damage. its not much
|
||||
- type: SolutionRegeneration
|
||||
solution: pool
|
||||
generated:
|
||||
reagents:
|
||||
- ReagentId: Water
|
||||
Quantity: 99
|
||||
- ReagentId: Chlorine
|
||||
Quantity: 1
|
||||
- type: Edible # DeltaV - Drink Refactor into Edible
|
||||
edible: Drink
|
||||
solution: pool
|
||||
transferAmount: 1
|
||||
destroyOnEmpty: false
|
||||
@@ -1,295 +0,0 @@
|
||||
- type: constructionGraph
|
||||
id: ChairBeachLounge
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
actions:
|
||||
- !type:DestroyEntity {}
|
||||
edges:
|
||||
- to: beige
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: black
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: blue
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: brown
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: gray
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: green
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: orange
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: pink
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: purple
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: red
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: teal
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: white
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
- to: yellow
|
||||
steps:
|
||||
- material: Steel
|
||||
amount: 1
|
||||
doAfter: 1
|
||||
- material: Cloth
|
||||
amount: 2
|
||||
doAfter: 1
|
||||
|
||||
- node: beige
|
||||
entity: ChairBeachLoungeBeige
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: black
|
||||
entity: ChairBeachLoungeBlack
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: blue
|
||||
entity: ChairBeachLoungeBlue
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: brown
|
||||
entity: ChairBeachLoungeBrown
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: gray
|
||||
entity: ChairBeachLoungeGray
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: green
|
||||
entity: ChairBeachLoungeGreen
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: orange
|
||||
entity: ChairBeachLoungeOrange
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: pink
|
||||
entity: ChairBeachLoungePink
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: purple
|
||||
entity: ChairBeachLoungePurple
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: red
|
||||
entity: ChairBeachLoungeRed
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: teal
|
||||
entity: ChairBeachLoungeTeal
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: white
|
||||
entity: ChairBeachLoungeWhite
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
- node: yellow
|
||||
entity: ChairBeachLoungeYellow
|
||||
edges:
|
||||
- to: start
|
||||
completed:
|
||||
- !type:SpawnPrototype
|
||||
prototype: SheetSteel1
|
||||
amount: 1
|
||||
- !type:SpawnPrototype
|
||||
prototype: MaterialCloth1
|
||||
amount: 2
|
||||
steps:
|
||||
- tool: Screwing
|
||||
doAfter: 1
|
||||
@@ -1,158 +0,0 @@
|
||||
|
||||
# lounge chairs
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeBeige
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: beige
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeBlack
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: black
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeBlue
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: blue
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeBrown
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: brown
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeGray
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: gray
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeGreen
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: green
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeOrange
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: orange
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungePink
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: pink
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungePurple
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: purple
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeRed
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: red
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeTeal
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: teal
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeWhite
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: white
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
|
||||
- type: construction
|
||||
id: ChairBeachLoungeYellow
|
||||
graph: ChairBeachLounge
|
||||
startNode: start
|
||||
targetNode: yellow
|
||||
category: construction-category-furniture
|
||||
objectType: Structure
|
||||
placementMode: SnapgridCenter
|
||||
canBuildInImpassable: false
|
||||
conditions:
|
||||
- !type:TileNotBlocked
|
||||
@@ -1,5 +0,0 @@
|
||||
- type: latheRecipePack
|
||||
id: CutterMachineStaticDen
|
||||
recipes:
|
||||
- FloorTileItemPool
|
||||
- FloorTileItemPoolDark
|
||||
@@ -1,9 +0,0 @@
|
||||
- type: latheRecipe
|
||||
parent: BaseTileRecipe
|
||||
id: FloorTileItemPool
|
||||
result: FloorTileItemPool
|
||||
|
||||
- type: latheRecipe
|
||||
parent: BaseTileRecipe
|
||||
id: FloorTileItemPoolDark
|
||||
result: FloorTileItemPoolDark
|
||||
@@ -1,13 +0,0 @@
|
||||
- type: stack
|
||||
id: FloorTilePool
|
||||
name: tiles-pool # DeltaV
|
||||
spawn: FloorTileItemPool
|
||||
maxCount: 30
|
||||
# itemSize: 5 # DeltaV
|
||||
|
||||
- type: stack
|
||||
id: FloorTilePoolDark
|
||||
name: tiles-pool-dark # DeltaV
|
||||
spawn: FloorTileItemPoolDark
|
||||
maxCount: 30
|
||||
# itemSize: 5 # DeltaV
|
||||
@@ -1,35 +0,0 @@
|
||||
- type: tile
|
||||
id: FloorTilePool
|
||||
name: pool tile
|
||||
sprite: /Textures/_DEN/Tiles/pool.rsi/pool.png
|
||||
variants: 4
|
||||
placementVariants:
|
||||
- 1.0
|
||||
- 1.0
|
||||
- 1.0
|
||||
- 1.0
|
||||
baseTurf: Plating
|
||||
isSubfloor: false
|
||||
deconstructTools: [ Prying ]
|
||||
footstepSounds:
|
||||
collection: FootstepFloor
|
||||
itemDrop: FloorTileItemPool
|
||||
heatCapacity: 10000
|
||||
|
||||
- type: tile
|
||||
id: FloorTilePoolDark
|
||||
name: dark pool tile
|
||||
sprite: /Textures/_DEN/Tiles/pool.rsi/pool-dark.png
|
||||
variants: 4
|
||||
placementVariants:
|
||||
- 1.0
|
||||
- 1.0
|
||||
- 1.0
|
||||
- 1.0
|
||||
baseTurf: Plating
|
||||
isSubfloor: false
|
||||
deconstructTools: [ Prying ]
|
||||
footstepSounds:
|
||||
collection: FootstepFloor
|
||||
itemDrop: FloorTileItemPoolDark
|
||||
heatCapacity: 10000
|
||||
@@ -218,9 +218,3 @@
|
||||
- id: Multitool
|
||||
- id: RemoteSignallerAdvanced
|
||||
- id: ReinforcementRadioSyndicateYarn
|
||||
|
||||
- type: entity
|
||||
parent: BoxPerformer
|
||||
id: BoxPerformerDV
|
||||
name: virtual performer costume bag
|
||||
description: A bundle that contains everything you need to embrace your inner performer.
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
- type: shopInventory
|
||||
id: FishingVendorInventory
|
||||
listings:
|
||||
- id: SpaceCash1000
|
||||
cost: 50
|
||||
- id: FishingRod
|
||||
cost: 50
|
||||
- id: FishingRodGoon
|
||||
@@ -10,58 +8,26 @@
|
||||
- id: FishingRodGolden
|
||||
cost: 300
|
||||
- id: FishBasket
|
||||
cost: 40
|
||||
cost: 80
|
||||
- id: ClothingHeadFishCap
|
||||
cost: 15
|
||||
cost: 20
|
||||
- id: ClothingUniformJumpsuitHawaiBlue
|
||||
cost: 30
|
||||
- id: ClothingUniformJumpsuitHawaiRed
|
||||
cost: 30
|
||||
- id: ClothingUniformJumpsuitHawaiBlack
|
||||
cost: 30
|
||||
- id: ClothingUniformJumpsuitHawaiYellow
|
||||
cost: 30
|
||||
- id: ClothingUniformSwimsuitBlue
|
||||
cost: 20
|
||||
- id: ClothingShoesBootsFishing
|
||||
cost: 15
|
||||
- id: ClothingShoesFlippers
|
||||
cost: 15
|
||||
- id: WeaponWaterPistol
|
||||
cost: 25
|
||||
- id: WeaponWaterBlaster
|
||||
cost: 40
|
||||
- id: WeaponWaterBlasterSuper
|
||||
cost: 65
|
||||
- id: BeachBall
|
||||
cost: 30
|
||||
- id: PlushieCarp
|
||||
cost: 10
|
||||
- id: ChairFolding
|
||||
cost: 10
|
||||
- id: DrinkBeerCan
|
||||
cost: 5
|
||||
- id: DrinkBeerBottleFull
|
||||
cost: 5
|
||||
- id: FoodTacoFish
|
||||
cost: 15
|
||||
- id: FoodBurgerCarp
|
||||
cost: 15
|
||||
- id: FoodMealFishChips
|
||||
cost: 15
|
||||
- id: FoodMealSashimi
|
||||
cost: 10
|
||||
- id: ClothingNeckCloakPirateCap
|
||||
cost: 100
|
||||
- id: ClothingHeadHatPirateTricord
|
||||
cost: 15
|
||||
- id: ClothingHeadHatPirate
|
||||
cost: 15
|
||||
- id: ClothingUniformJumpsuitPirate
|
||||
- id: ClothingUniformJumpsuitHawaiRed
|
||||
cost: 100
|
||||
- id: ClothingShoesBootsFishing
|
||||
cost: 20
|
||||
- id: ChairFolding
|
||||
cost: 25
|
||||
- id: SpaceCash1000
|
||||
cost: 50
|
||||
- id: DrinkBeerCan
|
||||
cost: 10
|
||||
- id: DrinkBeerBottleFull
|
||||
cost: 10
|
||||
- id: FoodTacoFish
|
||||
cost: 30
|
||||
- id: ClothingOuterCoatPirate
|
||||
- id: FoodBurgerCarp
|
||||
cost: 30
|
||||
- id: PirateHandyFlag
|
||||
cost: 10
|
||||
- id: FoamCutlass
|
||||
- id: FoodMealSashimi
|
||||
cost: 20
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
FoodButter: 3
|
||||
FoodCheese: 1
|
||||
FoodMeat: 6
|
||||
FoodMeatBacon: 3
|
||||
FoodMeatChicken: 4
|
||||
FoodMeatDuck: 2
|
||||
ReagentContainerSalt: 2
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
- type: localizedDataset
|
||||
id: BaseStructureMessages
|
||||
values:
|
||||
prefix: comp-structure-damaged-
|
||||
count: 6
|
||||
@@ -1,5 +0,0 @@
|
||||
- type: localizedDataset
|
||||
id: IonLawTemplates
|
||||
values:
|
||||
prefix: dv-ion-law-templates-
|
||||
count: 174
|
||||
@@ -23,31 +23,3 @@
|
||||
- id: ComfyChairSkyBlue
|
||||
- id: ComfyChairCyan
|
||||
- id: ComfyChairPurple
|
||||
|
||||
- type: entity
|
||||
parent: MarkerBase
|
||||
id: RandomBeachLoungeSpawner
|
||||
name: random lounge chair spawner
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: red
|
||||
- sprite: _DEN/Structures/Furniture/lounge_chair.rsi
|
||||
state: white
|
||||
- type: EntityTableSpawner
|
||||
offset: 0
|
||||
table: !type:GroupSelector
|
||||
children:
|
||||
- id: ChairBeachLoungeBeige
|
||||
- id: ChairBeachLoungeBlack
|
||||
- id: ChairBeachLoungeBlue
|
||||
- id: ChairBeachLoungeBrown
|
||||
- id: ChairBeachLoungeGray
|
||||
- id: ChairBeachLoungeGreen
|
||||
- id: ChairBeachLoungeOrange
|
||||
- id: ChairBeachLoungePink
|
||||
- id: ChairBeachLoungePurple
|
||||
- id: ChairBeachLoungeRed
|
||||
- id: ChairBeachLoungeTeal
|
||||
- id: ChairBeachLoungeWhite
|
||||
- id: ChairBeachLoungeYellow
|
||||
|
||||
@@ -179,20 +179,6 @@
|
||||
tableId: RandomSchoolgirlTable
|
||||
prob: 0.85
|
||||
|
||||
- type: entity
|
||||
parent: MarkerBase
|
||||
id: SwimRingSpawner
|
||||
name: random swim ring spawner
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: red
|
||||
- sprite: _DEN/Structures/Furniture/pool_ring.rsi
|
||||
state: rainbow
|
||||
- type: EntityTableSpawner
|
||||
table: !type:NestedSelector
|
||||
tableId: RandomSwimRingTable
|
||||
|
||||
#Tables
|
||||
- type: entityTable
|
||||
id: RandomClothingTable
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name: Arctic Fox Siobhan Spawner
|
||||
id: SpawnMobArcticFoxSiobhan
|
||||
parent: MarkerBase
|
||||
suffix: Mystagogue Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -13,10 +12,9 @@
|
||||
- MobArcticFoxSiobhan
|
||||
|
||||
- type: entity
|
||||
name: Laika Spawner
|
||||
name: Sec Dog Laika Spawner
|
||||
id: SpawnMobSecDogLaika
|
||||
parent: MarkerBase
|
||||
suffix: HoS Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -43,7 +41,6 @@
|
||||
name: Sec Animal Spawner
|
||||
id: SpawnMobSecLaikaOrShiva
|
||||
parent: MarkerBase
|
||||
suffix: HoS Pet, Laika or Shiva
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -57,8 +54,7 @@
|
||||
- type: entity
|
||||
parent: MarkerBase
|
||||
id: SpawnMobJusticePet
|
||||
name: Carpy Spawner
|
||||
suffix: Justice Pet
|
||||
name: Justice Pet Spawner
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -73,7 +69,6 @@
|
||||
name: Silvia Spawner
|
||||
id: SpawnMobCMOPetSilvia
|
||||
parent: MarkerBase
|
||||
suffix: Medical Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
@@ -88,7 +83,6 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobEngiPossumPoppy
|
||||
name: Poppy Spawner
|
||||
suffix: Engineering Pet
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
parent: MarkerBase
|
||||
id: SpawnMobSmileCore
|
||||
name: Smile Core Spawner
|
||||
suffix: Epistemics Pet, Delta V
|
||||
suffix: Science Pet, Delta V
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
||||
@@ -130,8 +130,6 @@
|
||||
False: {visible: false}
|
||||
True: {visible: true}
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 4.95
|
||||
baseSprintSpeed: 4.95
|
||||
weightlessAcceleration: 2.5
|
||||
- type: Inventory
|
||||
speciesId: harpy
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user