Merge branch 'master' into Letting-the-Patos-be-purchased

This commit is contained in:
SumofThreeParts 2026-08-14 12:56:29 -05:00 committed by GitHub
commit 117d92ec53
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
199 changed files with 3606 additions and 1041 deletions

29
.github/CODEOWNERS vendored
View File

@ -1,34 +1,25 @@
# Last match in file takes precedence.
# See https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#example-of-a-codeowners-file
# C# code
/Content.*/ @DeltaV-Station/maintainers
# Any assets
/Resources/ @DeltaV-Station/maintainers
* @DeltaV-Station/maintainers
# Server config files
/Resources/ConfigPresets/ @Toby222
/Resources/ConfigPresets/ @DeltaV-Station/lead-maintainers
# Github workflows
/.github/ @DeltaV-Station/lead-maintainers
# Lobby art and music - automatically direction issues since its immediately visible to players
/Resources/Audio/Lobby/ @DeltaV-Station/direction
/Resources/Textures/LobbyScreens/ @DeltaV-Station/direction
/Resources/Audio/Lobby/ @DeltaV-Station/direction @DeltaV-Station/maintainers
/Resources/Textures/LobbyScreens/ @DeltaV-Station/direction @DeltaV-Station/maintainers
# Maps
/Resources/Maps/ @DeltaV-Station/maptainers
/Resources/Prototypes/Maps/ @DeltaV-Station/maptainers
/Content.IntegrationTests/Tests/PostMapInitTest.cs @DeltaV-Station/maptainers
/Content.IntegrationTests/Tests/PostMapInitTest.cs @DeltaV-Station/maptainers @DeltaV-Station/maintainers
# Server rules
/Resources/ServerInfo/Guidebook/_DV/Rules/ @DeltaV-Station/head-administrators
# Wiki
/.wiki/ @DeltaV-Station/direction
# Tools and scripts
/Tools/ @Toby222
# Workflows, codeowners, templates, etc.
/.github/ @Toby222
# Standalone files in the root repo
/* @Toby222
/.wiki/ @DeltaV-Station/direction

View File

@ -9,6 +9,8 @@ using Content.Shared.Preferences;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
using Content.Client._CD.Records.UI; // DeltaV
using Content.Shared._DV.Body.Systems; // DeltaV
namespace Content.Client.Lobby.UI;
@ -193,6 +195,7 @@ public sealed partial class HumanoidProfileEditor
RefreshLoadouts();
UpdateSexControls(); // update sex for new species
UpdateSpeciesGuidebookIcon();
UpdateHeightControls(); // DeltaV
ReloadPreview();
}
@ -204,23 +207,22 @@ public sealed partial class HumanoidProfileEditor
ReloadProfilePreview();
}
private void UpdateHeightControls()
{
if (Profile == null)
{
return;
}
var species = _species.Find(x => x.ID == Profile.Species);
if (species != null)
_defaultHeight = species.DefaultHeight;
var prototype = _prototypeManager.Index(Profile.Species);
_defaultHeight = prototype.DefaultHeight;
var prototype = _prototypeManager.Index<SpeciesPrototype>(Profile.Species);
var sliderPercent = (Profile.Height - prototype.MinHeight) /
(prototype.MaxHeight - prototype.MinHeight);
CDHeightSlider.Value = sliderPercent;
CDHeight.Text = Profile.Height.ToString(CultureInfo.InvariantCulture);
var scaleReference = _defaultHeight * prototype.BaseScale.Y;
var newHeight = MathF.Round(MathHelper.Lerp(prototype.MinHeight, prototype.MaxHeight, sliderPercent), 2);
CDHeightLabel.Text = UnitConversion.GetMetricAndImperialDisplayFromScale(scaleReference * newHeight);
CDPullSpeedReductionLabel.Text = SmallCharacterSystem.GetPullSpeedPenaltyDisplayFromScale(newHeight);
}
// End CD - Character Records

View File

@ -73,9 +73,13 @@
<BoxContainer HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-height-label'}" />
<Control HorizontalExpand="True" />
<Label Name="CDHeightLabel" />
<Slider Name="CDHeightSlider" HorizontalAlignment="Right" SetWidth="300" MinValue="0.0" MaxValue="1.0"/>
<LineEdit HorizontalAlignment="Right" Name="CDHeight" MinSize="60 0" Text="1.0" />
<Button Name="CDHeightReset" Text="{Loc 'humanoid-profile-editor-reset-height-button'}" HorizontalAlignment="Right"/>
</BoxContainer>
<BoxContainer HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-height-pull-speed-penalty-label'}" />
<Control HorizontalExpand="True" />
<Label Name="CDPullSpeedReductionLabel" />
</BoxContainer>
<!-- End CD - Character Records -->
<!-- Sex -->

View File

@ -2,9 +2,6 @@ using Content.Client.Humanoid;
using Content.Client.Message;
using Content.Client.Players.PlayTimeTracking;
using Content.Client.Sprite;
using Content.Client.UserInterface.Systems.Guidebook;
using Content.Shared._DV.Species; // DeltaV - Species hider
using Content.Shared.Body;
using Content.Shared.CCVar;
using Content.Shared.GameTicking;
using Content.Shared.Humanoid;
@ -22,13 +19,8 @@ using Robust.Shared.ContentPack;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
using Direction = Robust.Shared.Maths.Direction;
// Begin CD - Character Records
using System.Globalization;
using Content.Client._CD.Records.UI;
using Content.Shared._CD.Records;
// End CD - Character Records
using Content.Shared._DV.Traits;
using Content.Shared.Humanoid.Prototypes; // DV - Traits
using Content.Client._CD.Records.UI; // CD - Character Records
using Content.Shared._DV.Body.Systems; // DV - Traits
namespace Content.Client.Lobby.UI
{
@ -221,34 +213,18 @@ namespace Content.Client.Lobby.UI
// Begin CD - Character Records
#region CDHeight
CDHeight.OnTextChanged += args =>
{
if (Profile is null || !float.TryParse(args.Text, out var newHeight))
return;
var prototype = _prototypeManager.Index<SpeciesPrototype>(Profile.Species);
newHeight = MathF.Round(Math.Clamp(newHeight, prototype.MinHeight, prototype.MaxHeight), 2);
// The percentage between the start and end numbers, aka "inverse lerp"
var sliderPercent = (newHeight - prototype.MinHeight) /
(prototype.MaxHeight - prototype.MinHeight);
CDHeightSlider.Value = sliderPercent;
SetProfileHeight(newHeight);
};
CDHeightReset.OnPressed += _ =>
{
CDHeight.SetText(_defaultHeight.ToString(CultureInfo.InvariantCulture), true);
};
CDHeightSlider.OnValueChanged += _ =>
{
if (Profile is null)
return;
var prototype = _prototypeManager.Index<SpeciesPrototype>(Profile.Species);
var prototype = _prototypeManager.Index(Profile.Species);
var newHeight = MathF.Round(MathHelper.Lerp(prototype.MinHeight, prototype.MaxHeight, CDHeightSlider.Value), 2);
CDHeight.Text = newHeight.ToString(CultureInfo.InvariantCulture);
var speciesScale = prototype.BaseScale.Y;
CDHeightLabel.Text = UnitConversion.GetMetricAndImperialDisplayFromScale(newHeight * speciesScale);
CDPullSpeedReductionLabel.Text = SmallCharacterSystem.GetPullSpeedPenaltyDisplayFromScale(newHeight);
SetProfileHeight(newHeight);
};

View File

@ -49,11 +49,6 @@
<Control HorizontalExpand="True" />
<Label Name="RecordContainerSpecies" Align="Right" />
</BoxContainer>
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-height'}"/>
<Control HorizontalExpand="True" />
<Label Name="RecordContainerHeight" Align="Right" />
</BoxContainer>
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-weight'}"/>
<Control HorizontalExpand="True" />

View File

@ -325,8 +325,7 @@ public sealed partial class CharacterRecordViewer : FancyWindow
RecordContainerJob.Text = record.JobTitle; /* At some point in the future we might want to display the icon */
RecordContainerGender.Text = record.Gender.ToString();
RecordContainerSpecies.Text = record.Species;
RecordContainerHeight.Text = cr.Height + " " + UnitConversion.GetImperialDisplayLength(cr.Height);
RecordContainerWeight.Text = cr.Weight + " " + UnitConversion.GetImperialDisplayMass(cr.Weight);
RecordContainerWeight.Text = $"{cr.Weight} ({UnitConversion.GetImperialDisplayMass(cr.Weight)})";
RecordContainerContactName.SetValue(cr.EmergencyContactName);
RecordContainerEmployment.Visible = false;

View File

@ -5,12 +5,6 @@
<BoxContainer Orientation="Vertical" HorizontalExpand="True" Margin="10">
<!-- Height, Weight -->
<GridContainer Columns="2">
<BoxContainer HorizontalExpand="True" SeparationOverride="2">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-height'}" />
<Control HorizontalExpand="True" MinSize="5 0" />
<LineEdit Name="HeightEdit" HorizontalAlignment="Right" MinSize="60 0" />
<Label Name="HeightImperialLabel" MinWidth="60" />
</BoxContainer>
<BoxContainer HorizontalExpand="True" SeparationOverride="2">
<Label Text="{Loc 'humanoid-profile-editor-cd-records-weight'}" />
<Control HorizontalExpand="True" MinSize="5 0" />

View File

@ -25,14 +25,6 @@ public sealed partial class RecordEditorGui : Control
#region General
HeightEdit.OnTextChanged += args =>
{
if (!int.TryParse(args.Text, out var newHeight))
return;
UpdateImperialHeight(newHeight);
UpdateRecords(_records.WithHeight(newHeight));
};
WeightEdit.OnTextChanged += args =>
{
if (!int.TryParse(args.Text, out var newWeight))
@ -128,8 +120,6 @@ public sealed partial class RecordEditorGui : Control
private void UpdateWidgets()
{
HeightEdit.SetText(_records.Height.ToString());
UpdateImperialHeight(_records.Height);
WeightEdit.SetText(_records.Weight.ToString());
UpdateImperialWeight(_records.Weight);
ContactNameEdit.SetText(_records.EmergencyContactName);
@ -143,13 +133,8 @@ public sealed partial class RecordEditorGui : Control
PostmortemEdit.SetText(_records.PostmortemInstructions);
}
private void UpdateImperialHeight(int newHeight)
{
HeightImperialLabel.Text = UnitConversion.GetImperialDisplayLength(newHeight);
}
private void UpdateImperialWeight(int newWeight)
{
WeightImperialLabel.Text = UnitConversion.GetImperialDisplayMass(newWeight);
WeightImperialLabel.Text = $"({UnitConversion.GetImperialDisplayMass(newWeight)})";
}
}

View File

@ -2,15 +2,47 @@ namespace Content.Client._CD.Records.UI;
public static class UnitConversion
{
/// <summary>
/// DeltaV - The average height of a human in centimeters. According to the US CDC, its
/// 171 for men and 160 for women. So average of that is ~165cm.
///
/// Just kidding, we're going with EE's arbitrary standard of 175cm.
/// </summary>
private const int AVERAGE_HEIGHT_CM = 175;
/// <summary>
/// DeltaV - 1.0 scale is considered average for humans, so a scale of 1 will be 175cm.
/// Ensure that scale also includes the base species height AND the user-defined height.
/// </summary>
/// <param name="scale"></param>
/// <returns></returns>
private static int GetMetricHeightFromScale(float scale = 1)
{
// cast as int because we don't care about decimal
return (int)Math.Max(scale * AVERAGE_HEIGHT_CM, 1); // can't be shorter than 1cm I guess
}
/// <summary>
/// DeltaV - Gets nicely formatted string that contains both metric and imperial measurements.
/// With a scale of 1, it should look like... 175cm (5' 9")
/// </summary>
/// <param name="scale"></param>
/// <returns></returns>
public static string GetMetricAndImperialDisplayFromScale(float scale = 1)
{
var metricHeight = GetMetricHeightFromScale(scale);
return $"{metricHeight}cm ({GetImperialDisplayLength(metricHeight)})";
}
public static string GetImperialDisplayLength(int lengthCm)
{
var heightIn = (int) Math.Round(lengthCm * 0.3937007874 /* cm to in*/);
return $"({heightIn / 12}'{heightIn % 12}'')";
var heightIn = (int)Math.Round(lengthCm * 0.3937007874 /* cm to in*/);
return $"{heightIn / 12}'{heightIn % 12}\"";
}
public static string GetImperialDisplayMass(int massKg)
{
var weightLbs = (int) Math.Round(massKg * 2.2046226218 /* kg to lbs */);
return $"({weightLbs} lbs)";
var weightLbs = (int)Math.Round(massKg * 2.2046226218 /* kg to lbs */);
return $"{weightLbs} lbs";
}
}

View File

@ -0,0 +1,104 @@
using System.Numerics;
using Content.Client.Graphics;
using Robust.Client.Graphics;
using Robust.Shared.Enums;
using Robust.Shared.Prototypes;
namespace Content.Client._DV.Overlays;
/// <summary>
/// Makes darkness visible, and bright lights painfully visible
/// Tweakable. Algo is max((light*gain)^exp, lightFloor)
/// </summary>
public sealed class DarkVisionOverlay : Overlay
{
[Dependency] private readonly IClyde _clyde = default!;
[Dependency] private readonly IPrototypeManager _prototype = default!;
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowWorld;
private readonly ProtoId<ShaderPrototype> _shaderProto = "DarkVision";
public float LightFloor = 0.5f;
public float LightGain = 2f;
public float LightExp = 1f;
private readonly ShaderInstance _copyShader;
private readonly ShaderInstance _remapShader;
private readonly OverlayResourceCache<CachedResources> _resources = new();
public DarkVisionOverlay()
{
IoCManager.InjectDependencies(this);
var proto = _prototype.Index<ShaderPrototype>(_shaderProto);
_remapShader = proto.InstanceUnique();
// With floor 0, gain 1, exp 1 the shader is an exact blend-mode-none copy.
_copyShader = proto.InstanceUnique();
_copyShader.SetParameter("lightFloor", 0f);
_copyShader.SetParameter("lightGain", 1f);
_copyShader.SetParameter("lightExp", 1f);
}
protected override void Draw(in OverlayDrawArgs args)
{
var viewport = args.Viewport;
var worldHandle = args.WorldHandle;
if (viewport.Eye == null)
return;
var lightTarget = viewport.LightRenderTarget;
var res = _resources.GetForViewport(viewport, static _ => new CachedResources());
if (res.ScratchTarget?.Size != lightTarget.Size)
{
res.ScratchTarget?.Dispose();
res.ScratchTarget = _clyde.CreateLightRenderTarget(lightTarget.Size, "darkvision-scratch", depthStencil: false);
}
var bounds = args.WorldBounds;
var lightScale = lightTarget.Size / (Vector2) viewport.Size;
var scale = viewport.RenderScale / (Vector2.One / lightScale);
var localMatrix = lightTarget.GetWorldToLocalMatrix(viewport.Eye, scale);
// Copy the light buffer aside first: a texture can't be sampled while it is also the
// render target being drawn into.
worldHandle.RenderInRenderTarget(res.ScratchTarget, () =>
{
worldHandle.UseShader(_copyShader);
worldHandle.SetTransform(localMatrix);
worldHandle.DrawTextureRect(lightTarget.Texture, bounds);
worldHandle.UseShader(null);
}, Color.Black);
// Then write it back through the remap.
_remapShader.SetParameter("lightFloor", LightFloor);
_remapShader.SetParameter("lightGain", LightGain);
_remapShader.SetParameter("lightExp", LightExp);
worldHandle.RenderInRenderTarget(lightTarget, () =>
{
worldHandle.UseShader(_remapShader);
worldHandle.SetTransform(localMatrix);
worldHandle.DrawTextureRect(res.ScratchTarget.Texture, bounds);
worldHandle.UseShader(null);
}, null);
}
protected override void DisposeBehavior()
{
_resources.Dispose();
base.DisposeBehavior();
}
private sealed class CachedResources : IDisposable
{
public IRenderTexture? ScratchTarget;
public void Dispose()
{
ScratchTarget?.Dispose();
}
}
}

View File

@ -0,0 +1,56 @@
using Content.Shared._DV.Overlays.Components;
using Robust.Client.Graphics;
using Robust.Shared.Player;
namespace Content.Client._DV.Overlays;
public sealed class DarkVisionSystem : EntitySystem
{
[Dependency] private readonly IOverlayManager _overlayMan = default!;
[Dependency] private readonly ISharedPlayerManager _playerMan = default!;
private DarkVisionOverlay _overlay = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<DarkVisionComponent, ComponentInit>(OnInit);
SubscribeLocalEvent<DarkVisionComponent, ComponentShutdown>(OnShutdown);
SubscribeLocalEvent<DarkVisionComponent, LocalPlayerAttachedEvent>(OnPlayerAttached);
SubscribeLocalEvent<DarkVisionComponent, LocalPlayerDetachedEvent>(OnPlayerDetached);
_overlay = new();
}
private void OnInit(Entity<DarkVisionComponent> ent, ref ComponentInit args)
{
if (ent.Owner == _playerMan.LocalEntity)
EnableOverlay(ent.Comp);
}
private void OnShutdown(Entity<DarkVisionComponent> ent, ref ComponentShutdown args)
{
if (ent.Owner == _playerMan.LocalEntity)
_overlayMan.RemoveOverlay(_overlay);
}
private void OnPlayerAttached(Entity<DarkVisionComponent> ent, ref LocalPlayerAttachedEvent args)
{
EnableOverlay(ent.Comp);
}
private void OnPlayerDetached(Entity<DarkVisionComponent> ent, ref LocalPlayerDetachedEvent args)
{
_overlayMan.RemoveOverlay(_overlay);
}
private void EnableOverlay(DarkVisionComponent comp)
{
_overlay.LightFloor = comp.LightFloor;
_overlay.LightGain = comp.LightGain;
_overlay.LightExp = comp.LightExp;
if (!_overlayMan.HasOverlay<DarkVisionOverlay>())
_overlayMan.AddOverlay(_overlay);
}
}

View File

@ -8,6 +8,7 @@ using Content.Server.NodeContainer.Nodes;
using Content.Shared._DV.NodeCrawl;
using Content.Shared.Atmos;
using Content.Shared.NodeContainer;
using Content.Shared.Polymorph;
using Content.Shared.Zombies;
using Robust.Shared.Reflection;
using Robust.Shared.Utility;
@ -30,6 +31,7 @@ public sealed class NodeCrawlSystem : SharedNodeCrawlSystem
SubscribeLocalEvent<NodeCrawlerComponent, InhaleLocationEvent>(OnInhaleLocation);
SubscribeLocalEvent<NodeCrawlerComponent, ExhaleLocationEvent>(OnExhaleLocation);
SubscribeLocalEvent<NodeCrawlerComponent, AtmosExposedGetAirEvent>(OnGetAir);
SubscribeLocalEvent<NodeCrawlerComponent, PolymorphActionEvent>(OnPolymorph);
SubscribeLocalEvent<NodeCrawlerComponent, EntityZombifiedEvent>(OnZombify);
}
@ -222,4 +224,15 @@ public sealed class NodeCrawlSystem : SharedNodeCrawlSystem
ent.Comp.EnterDelay = ent.Comp.ZombieEnterDelay;
Dirty(ent);
}
/// <summary>
/// Exit on polymorph or else the entity's movement bugs out.
/// </summary>
/// <param name="ent"></param>
/// <param name="args"></param>
private void OnPolymorph(Entity<NodeCrawlerComponent> ent, ref PolymorphActionEvent args)
{
if (ent.Comp.Mover.HasValue)
ExitNodeCrawl(ent);
}
}

View File

@ -19,6 +19,7 @@ using Content.Shared._Goobstation.Flashbang;
using Content.Shared._Starlight.Flash.Components;
using Content.Shared.Body.Components;
using Content.Shared.Flash; // Delta V - Flash Work
using Content.Shared._DV.Body.Components; // Delta V - Remove various comps related to breathing
namespace Content.Server._Starlight;
@ -68,6 +69,8 @@ public sealed class ShadekinSystem : EntitySystem
{
UpdateAlert(uid, component, (short)component.CurrentState);
RemComp<InternalsComponent>(uid);
RemComp<RespiratorComponent>(uid);
RemComp<AffectedByCPRComponent>(uid); // No lungs = no CPR
}
private void OnEyeColorChange(EntityUid uid, ShadekinComponent component, EyeColorInitEvent args)

View File

@ -1,9 +1,7 @@
using System.Linq;
using System.Numerics;
using Content.Shared._DV.Humanoid;
using Content.Shared._DV.Humanoid; // DeltaV
using Content.Shared.Humanoid.Markings;
using Content.Shared.Humanoid;
using Content.Shared.Sprite;
using Robust.Shared.Containers;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
@ -18,7 +16,6 @@ public abstract partial class SharedVisualBodySystem : EntitySystem
[Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly MarkingManager _marking = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;
[Dependency] private readonly SharedScaleVisualsSystem _scaleVisualsSystem = default!;
public override void Initialize()
{
@ -28,7 +25,6 @@ public abstract partial class SharedVisualBodySystem : EntitySystem
SubscribeLocalEvent<VisualOrganMarkingsComponent, BodyRelayedEvent<OrganCopyAppearanceEvent>>(OnMarkingsOrganCopyAppearance);
SubscribeLocalEvent<VisualOrganComponent, BodyRelayedEvent<ApplyOrganProfileDataEvent>>(OnVisualOrganApplyProfile);
SubscribeLocalEvent<VisualOrganMarkingsComponent, BodyRelayedEvent<ApplyOrganMarkingsEvent>>(OnMarkingsOrganApplyMarkings);
SubscribeLocalEvent<HumanoidProfileComponent, ApplyOrganProfileDataEvent>(OnApplyOrganProfileData); // Delta V - Taking the solution from CD
InitializeModifiers();
InitializeInitial();
@ -100,36 +96,9 @@ public abstract partial class SharedVisualBodySystem : EntitySystem
if (!other.Layer.Equals(ent.Comp.Layer))
return;
// Delta V - Begin Fix Height for Cloning
var height = other.Profile.Height;
if (TryComp<HumanoidProfileComponent>(args.Body.Owner, out var component))
ScaleBody((args.Body.Owner, component), height, height);
// Delta V - End
SetOrganAppearance(ent, other.Data);
}
// Delta V - BEGIN CD Solution
private void OnApplyOrganProfileData(Entity<HumanoidProfileComponent> entity, ref ApplyOrganProfileDataEvent args)
{
var speciesPrototype = _prototype.Index(entity.Comp.Species);
if (args.Base == null)
return;
var height = Math.Clamp(MathF.Round(args.Base.Value.Height, 2), speciesPrototype.MinHeight, speciesPrototype.MaxHeight);
ScaleBody(entity, speciesPrototype.ScaleHeight ? height : 1f, height);
}
private void ScaleBody(Entity<HumanoidProfileComponent> entity, float heightX, float heightY)
{
_scaleVisualsSystem.SetSpriteScale(
entity.Owner,
new Vector2(heightX, heightY)
);
}
// Delta V - END
private void OnMarkingsOrganCopyAppearance(Entity<VisualOrganMarkingsComponent> ent, ref BodyRelayedEvent<OrganCopyAppearanceEvent> args)
{

View File

@ -1,7 +1,9 @@
using System.Numerics; // DeltaV
using Content.Shared.Examine;
using Content.Shared.Humanoid.Prototypes;
using Content.Shared.IdentityManagement;
using Content.Shared.Preferences;
using Content.Shared.Sprite; // DeltaV
using Robust.Shared.GameObjects.Components.Localization;
using Robust.Shared.Prototypes;
@ -11,6 +13,7 @@ public sealed class HumanoidProfileSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly GrammarSystem _grammar = default!;
[Dependency] private readonly SharedScaleVisualsSystem _scale = default!; // DeltaV
public override void Initialize()
{
@ -28,6 +31,7 @@ public sealed class HumanoidProfileSystem : EntitySystem
ent.Comp.Age = profile.Age;
ent.Comp.Species = profile.Species;
ent.Comp.Sex = profile.Sex;
ent.Comp.Height = profile.Height; // DeltaV
Dirty(ent);
var sexChanged = new SexChangedEvent(ent.Comp.Sex, profile.Sex);
@ -37,6 +41,15 @@ public sealed class HumanoidProfileSystem : EntitySystem
{
_grammar.SetGender((ent, grammar), profile.Gender);
}
// START DeltaV - Apply profile/species size
// Assume 1.0 scale unless the original scale exists (blame Allulalo)
var scale = Vector2.One;
if (TryComp<ScaleVisualsComponent>(ent, out var scaledVisuals) && scaledVisuals.OriginalScale is { } originalScale)
scale = originalScale;
_scale.SetSpriteScale(ent, scale);
// END DeltaV
}
private void OnExamined(Entity<HumanoidProfileComponent> ent, ref ExaminedEvent args)

View File

@ -1,3 +1,4 @@
using System.Numerics; // DeltaV
using Content.Shared.Body;
using Content.Shared.Dataset;
using Content.Shared.Humanoid.Markings;
@ -111,7 +112,7 @@ public sealed partial class SpeciesPrototype : IPrototype
/// The base height scale for this species
/// </summary>
[DataField("baseScale")]
public System.Numerics.Vector2 BaseScale = new(1f, 1f);
public Vector2 BaseScale = new(1f, 1f);
// End DV - CD Character Records shouldn't nuke species heights
// Begin CD - Character Records
@ -119,13 +120,13 @@ public sealed partial class SpeciesPrototype : IPrototype
/// The minimum height for this species
/// </summary>
[DataField("minHeight")]
public float MinHeight = 0.9f; // DeltaV - less trolling with the heights
public float MinHeight = 0.8f; // DeltaV
/// <summary>
/// The maximum height for this species
/// </summary>
[DataField("maxHeight")]
public float MaxHeight = 1.1f; // DeltaV - less trolling with the heights
public float MaxHeight = 1.2f; // DeltaV
/// <summary>
/// The default height for this species

View File

@ -1,3 +1,5 @@
using Content.Shared._DV.Body.Components; // DeltaV
using Content.Shared._DV.Body.Systems; // DeltaV
using Content.Shared._ST.Interaction; // Stellar - interaction particles
using Content.Shared._Floof.OfferItem; // Floof
using Content.Shared.ActionBlocker;
@ -10,6 +12,7 @@ using Content.Shared.Database;
using Content.Shared.Hands;
using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Humanoid; // DeltaV
using Content.Shared.IdentityManagement;
using Content.Shared.Input;
using Content.Shared.Interaction;
@ -55,6 +58,7 @@ public sealed class PullingSystem : EntitySystem
[Dependency] private readonly HeldSpeedModifierSystem _clothingMoveSpeed = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedVirtualItemSystem _virtual = default!;
[Dependency] private readonly SmallCharacterSystem _smallCharacter = default!; // DeltaV
public override void Initialize()
{
@ -295,6 +299,14 @@ public sealed class PullingSystem : EntitySystem
private void OnRefreshMovespeed(EntityUid uid, PullerComponent component, RefreshMovementSpeedModifiersEvent args)
{
// BEGIN DeltaV - Slow if smaller puller
if (TryComp<SmallCharacterComponent>(uid, out var smol))
{
var sizePenalty = _smallCharacter.ApplyPullSpeedPenalty((uid, smol), component.Pulling);
args.ModifySpeed(sizePenalty, sizePenalty);
}
// END DeltaV
if (TryComp<HeldSpeedModifierComponent>(component.Pulling, out var heldMoveSpeed) && component.Pulling.HasValue)
{
var (walkMod, sprintMod) =

View File

@ -97,7 +97,7 @@ public sealed partial class ParcelWrappingSystem
if (target == user)
{
var selfMsg = Loc.GetString("parcel-wrap-popup-being-wrapped-self");
_popup.PopupClient(selfMsg, user, user);
_popup.PopupEntity(selfMsg, user, user);
}
else
{
@ -143,7 +143,7 @@ public sealed partial class ParcelWrappingSystem
// Spawn the actual parcel entity.
var targetTransform = Transform(target);
var spawned = Spawn(GetParcelPrototype(wrapper, target), targetTransform.Coordinates);
var spawned = SpawnAtPosition(GetParcelPrototype(wrapper, target), targetTransform.Coordinates);
_transform.SetLocalRotation(spawned, targetTransform.LocalRotation);
// If the target is in a container, try to put the parcel in its place in the container.

View File

@ -177,7 +177,7 @@ namespace Content.Shared.Preferences
_traitPreferences = traitPreferences;
_loadouts = loadouts;
// Begin CD - Character Records
Height = height;
Height = height; // This is the user-set scale on the profile editor. Not actual height measurements.
CDCharacterRecords = cdCharacterRecords;
// End CD - Character Records

View File

@ -25,11 +25,27 @@ public sealed partial class ScaleVisualsComponent : Component
[ViewVariables]
public Vector2? OriginalScale;
// Delta V Addition
/// <summary>
/// Base Scale of the Species, which we use to set a new height relative to this.
/// DeltaV - Contains the species scale. Set dynamically by
/// baseScale in the Species prototype.
/// </summary>
[DataField, AutoNetworkedField]
[ViewVariables]
public Vector2 SpeciesScale = Vector2.One;
public Vector2 SpeciesScale = new(1f, 1f);
/// <summary>
/// DeltaV - Contains the user-defined scale from the character creation
/// screen.
/// </summary>
[DataField, AutoNetworkedField]
[ViewVariables]
public Vector2 ProfileScale = new(1f, 1f);
/// <summary>
/// DeltaV - Contains the computer scale from applying Scale, SpeciesScale, and ProfileScale.
/// This will contain the actual scale after all modifiers are applied.
/// </summary>
[DataField, AutoNetworkedField]
[ViewVariables]
public Vector2 ComputedScale;
}

View File

@ -1,4 +1,6 @@
using System.Numerics;
using Content.Shared.Humanoid; // DeltaV
using Robust.Shared.Prototypes; // DeltaV
using Robust.Shared.Serialization;
namespace Content.Shared.Sprite;
@ -6,6 +8,7 @@ namespace Content.Shared.Sprite;
public abstract class SharedScaleVisualsSystem : EntitySystem
{
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
[Dependency] private readonly IPrototypeManager _proto = default!; // DeltaV
public override void Initialize()
{
@ -39,15 +42,28 @@ public abstract class SharedScaleVisualsSystem : EntitySystem
{
var comp = EnsureComp<ScaleVisualsComponent>(uid);
comp.Scale = scale;
// BEGIN DeltaV - Apply species and profile height
// We have to ensure this is idempotent so that if it gets applied more than once
// the sprite size at the end is the same.
if (TryComp<HumanoidProfileComponent>(uid, out var profile))
{
var speciesProto = _proto.Index(profile.Species);
comp.SpeciesScale = speciesProto.BaseScale;
scale *= comp.SpeciesScale; // Apply both species scale and character-defined height
Vector2 profileHeight = new(profile.Height, profile.Height);
comp.ProfileScale = profileHeight;
scale *= comp.ProfileScale;
}
comp.ComputedScale = scale; // Nice to know what the computed size is in case of bugs
// END DeltaV
Dirty(uid, comp);
// Delta V - Begin Species Scaling
// 120% species scale => add 0.2 to scale
var newScale = scale + comp.SpeciesScale - Vector2.One;
// Delta V - End Species Scaling
var appearanceComponent = EnsureComp<AppearanceComponent>(uid);
_appearance.SetData(uid, ScaleVisuals.Scale, newScale /* Delta V - Custom Species Scale */, appearanceComponent);
_appearance.SetData(uid, ScaleVisuals.Scale, scale, appearanceComponent);
// Raise an event for content use.
var ev = new ScaleEntityEvent(uid, scale);

View File

@ -0,0 +1,23 @@
using Content.Shared._DV.Body.Systems;
using Robust.Shared.GameStates;
namespace Content.Shared._DV.Body.Components;
/// <summary>
/// If an entity has this, if a small character has penalties (such as pull speed),
/// the small character will ignore the penalties associated with their size.
///
/// Mostly used for things like wheeled/floating objects.
/// </summary>
[RegisterComponent, NetworkedComponent]
[AutoGenerateComponentState]
[Access(typeof(SmallCharacterSystem))]
public sealed partial class SmallCharacterComponent : Component
{
/// <summary>
/// The speed of which to scale the small character's pull speed by if the
/// object is big enough to warrant a pull-speed slowdown.
/// </summary>
[DataField, AutoNetworkedField]
public float PullSpeedPenalty = 1f;
}

View File

@ -0,0 +1,12 @@
namespace Content.Shared._DV.Body.Components;
/// <summary>
/// If an entity has this, if a small character has penalties (such as pull speed),
/// the small character will ignore the penalties associated with their size.
///
/// Mostly used for things like wheeled/floating objects.
///
/// See <see cref="Systems.SmallCharacterSystem"/>
/// </summary>
[RegisterComponent]
public sealed partial class UnaffectedBySizePenaltyComponent : Component;

View File

@ -0,0 +1,97 @@
using Content.Shared._DV.Body.Components;
using Content.Shared.GameTicking;
using Content.Shared.Humanoid;
using Content.Shared.Item;
using JetBrains.Annotations;
using Robust.Shared.Physics.Components;
namespace Content.Shared._DV.Body.Systems;
/// <summary>
/// Used to relay or subscribe to events if a character's scale is 1.0 or below.
/// This is only used for the height slider scale.
/// </summary>
public sealed partial class SmallCharacterSystem : EntitySystem
{
private const float NO_PENALTY = 1.0f;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<PlayerSpawnCompleteEvent>(OnSpawn);
}
private void OnSpawn(PlayerSpawnCompleteEvent ev)
{
if (TryComp<HumanoidProfileComponent>(ev.Mob, out var profile))
ApplySmallCharacter(ev.Mob, profile.Height);
}
[PublicAPI]
public float ApplyPullSpeedPenalty(Entity<SmallCharacterComponent?> puller, EntityUid? pulledEntity)
{
// Ignore if they aren't pulling anything...
if (!pulledEntity.HasValue)
return NO_PENALTY;
// Ignore if they aren't a small character in the first place
if (!Resolve(puller, ref puller.Comp, false))
return NO_PENALTY;
// If the pulled entity has the component that ignores the penalty
if (HasComp<UnaffectedBySizePenaltyComponent>(pulledEntity))
return NO_PENALTY;
// Ignore if it's an item that can be held or stored. It would be weird to
// slow by X% from pulling a piece of paper or a gun when you can just hold it
// and not suffer from a penalty.
if (HasComp<ItemComponent>(pulledEntity))
return NO_PENALTY;
// Ignore if the object is floating in the air.
if (TryComp<PhysicsComponent>(pulledEntity, out var pulledPhysics)
&& pulledPhysics.BodyStatus == BodyStatus.InAir)
return NO_PENALTY;
return puller.Comp.PullSpeedPenalty;
}
#region Static Members
/// <summary>
/// Gets the move-speed penalty as a float. Should be applied multiplicatively.
/// Caps at 1 so we don't make bigger characters faster when pulling.
/// </summary>
/// <returns></returns>
[PublicAPI]
public static float GetPullSpeedPenaltyFromScale(float scale = 1.0f)
{
return Math.Min(scale * scale, 1);
}
/// <summary>
/// Calculates a well-formed display string of the pull speed penalty.
/// Used primarily in the character editor to get the well-formed percent
/// without having to duplicate formulas.
/// </summary>
/// <param name="scale"></param>
/// <returns></returns>
[PublicAPI]
public static string GetPullSpeedPenaltyDisplayFromScale(float scale = 1.0f)
{
return $"{Math.Round((1 - GetPullSpeedPenaltyFromScale(scale)) * 100)}%";
}
#endregion
#region Private Members
private void ApplySmallCharacter(EntityUid uid, float scale = 1)
{
if (scale >= 1)
return;
// The character scale is stored in the HumanoidProfileComponent if you ever
// need it.
var comp = EnsureComp<SmallCharacterComponent>(uid);
comp.PullSpeedPenalty = GetPullSpeedPenaltyFromScale(scale);
Dirty(uid, comp);
}
#endregion
}

View File

@ -70,13 +70,23 @@ public abstract class SharedLightReactiveSystem : EntitySystem
/// Avoid calling this too often, as it can be expensive.
/// </summary>
public float GetLightLevelForPoint(EntityUid uid, TransformComponent? xform = null)
{
return GetLightLevelAtPosition(uid, _transform.GetWorldPosition(uid), xform);
}
/// <summary>
/// Gets the light level at an arbitrary world position, using <paramref name="uid"/> for the
/// light lookup and map resolution. Lets callers sample somewhere other than the entity's
/// centre — e.g. a point just outside a wall, so the wall's own body can occlude the ray.
/// Avoid calling this too often, as it can be expensive.
/// </summary>
public float GetLightLevelAtPosition(EntityUid uid, Vector2 pos, TransformComponent? xform = null)
{
float val = 0.0f;
// Get the current map entity so we can get a MapLightComponent from it if it has one
var map = _transform.GetMap((uid, xform));
if (TryComp(map, out MapLightComponent? mapLight))
val += (mapLight.AmbientLightColor.R + mapLight.AmbientLightColor.G + mapLight.AmbientLightColor.B) / 3f;
var pos = _transform.GetWorldPosition(uid);
foreach (var (lightUid, lightComp) in GetLights(uid))
{

View File

@ -0,0 +1,30 @@
using Robust.Shared.GameStates;
namespace Content.Shared._DV.Overlays.Components;
/// <summary>
/// Gives the owner darkvision: lighting still renders, but total darkness is raised to
/// <see cref="LightFloor"/> brightness instead of pitch black. Unlike night vision this keeps
/// the whole lighting gradient visible, so creatures like the Skia can judge what is and isn't dark enough for them.
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class DarkVisionComponent : Component
{
/// <summary>
/// Brightness that full darkness renders at, 0-1. Rendered light is clamped to a minimum of this value.
/// </summary>
[DataField, AutoNetworkedField]
public float LightFloor = 0.2f;
/// <summary>
/// Multiplier applied to actual light on top of the floor. Values above 1 overbrighten lit areas so they are unmistakable next to the grey darkness floor.
/// </summary>
[DataField, AutoNetworkedField]
public float LightGain = 8f;
/// <summary>
/// Exponent applied to lights, to make brighter areas look notably brighter
/// </summary>
[DataField, AutoNetworkedField]
public float LightExp = 2f;
}

View File

@ -0,0 +1,36 @@
using Robust.Shared.GameStates;
using Robust.Shared.Timing;
namespace Content.Shared._DV.ShadowWalk;
/// <summary>
/// Lets this entity walk straight through solid static objects (walls, doors, windows...)
/// while the entity itself is bathed in darkness (the same light level it heals in.)
/// Mobs and projectiles always stay solid.
/// <para>
/// On collision, checks our light level. Objects we're stuck in are tagged in <see cref="PassableEntities"/>
/// </para>
/// </summary>
[RegisterComponent, NetworkedComponent]
public sealed partial class ShadowWalkerComponent : Component
{
/// <summary>
/// Light level below which an object counts as bathed in darkness.
/// If the entity has a <c>LightLevelHealthComponent</c> its DarkThreshold is used
/// instead, so objects are passable exactly where the entity would heal.
/// </summary>
[DataField]
public float DarkThreshold = 0.3f;
/// <summary>
/// Objects we're currently in. Objects in this list are never solid until we fully leave.
/// </summary>
public HashSet<EntityUid> PassableEntities = new();
/// <summary>
/// Light level for this tick, to avoid re-calculating for more than one collision a tick.
/// </summary>
public GameTick LastLightCheckTick = GameTick.Zero;
public float LastLightLevel;
}

View File

@ -0,0 +1,139 @@
using Content.Shared._DV.Body;
using Content.Shared._DV.Light;
using Content.Shared.Projectiles;
using Robust.Shared.Map.Components;
using Robust.Shared.Physics;
using Robust.Shared.Physics.Components;
using Robust.Shared.Physics.Events;
using Robust.Shared.Timing;
namespace Content.Shared._DV.ShadowWalk;
/// <summary>
/// Can walk through darkness freely.
/// </summary>
public sealed partial class SharedShadowWalkSystem : EntitySystem
{
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly SharedLightReactiveSystem _lightReactive = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
/// <summary>
/// How far outside a tagged object's AABB the walker's centre must be before the object is untagged (and so becomes solid again on the next collision).
/// At least the walker's collision radius, so an object is never made solid while it still overlaps the walker.
/// </summary>
private const float UnstickMargin = 0.45f;
/// <summary>
/// Gamefeel. Non-walls get a bigger unstick margin so they stay unstick even if you clip into a wall. Prevents getting stuck in walls.
/// </summary>
private const float MovableUnstickMargin = 1f;
private EntityQuery<LightLevelHealthComponent> _lightHealthQuery;
private EntityQuery<PhysicsComponent> _physicsQuery;
private EntityQuery<ProjectileComponent> _projectileQuery;
private readonly List<EntityUid> _toRemove = [];
public override void Initialize()
{
base.Initialize();
_lightHealthQuery = GetEntityQuery<LightLevelHealthComponent>();
_physicsQuery = GetEntityQuery<PhysicsComponent>();
_projectileQuery = GetEntityQuery<ProjectileComponent>();
SubscribeLocalEvent<ShadowWalkerComponent, PreventCollideEvent>(OnPreventCollide);
}
public override void Update(float frameTime)
{
var query = EntityQueryEnumerator<ShadowWalkerComponent>();
while (query.MoveNext(out var uid, out var comp))
{
if (comp.PassableEntities.Count == 0)
continue;
var worldPos = _transform.GetWorldPosition(uid);
_toRemove.Clear();
foreach (var other in comp.PassableEntities)
{
// Untag anything we've deleted or fully walked clear of; the next collision with it will re-check the light level from scratch.
if (Deleted(other))
{
_toRemove.Add(other);
continue;
}
var margin = UnstickMargin;
// Non-statics get a bigger margin :)
if (_physicsQuery.TryComp(other, out var body) && body.BodyType != BodyType.Static)
margin += MovableUnstickMargin;
if (!_lookup.GetWorldAABB(other).Enlarged(margin).Contains(worldPos))
_toRemove.Add(other);
}
foreach (var other in _toRemove)
comp.PassableEntities.Remove(other);
}
}
private void OnPreventCollide(Entity<ShadowWalkerComponent> ent, ref PreventCollideEvent args)
{
if (args.Cancelled)
return;
// Only phase through hard blockers; sensor fixtures must keep triggering.
if (!args.OurFixture.Hard || !args.OtherFixture.Hard)
return;
// Already phasing through this one: keep it passable until we've left it (pruned in
// Update), so a light change mid-overlap can never trap us inside it.
if (ent.Comp.PassableEntities.Contains(args.OtherEntity))
{
args.Cancelled = true;
return;
}
if (!CanPhaseThrough(args.OtherEntity, args.OtherBody))
return;
// A fresh collision: only phase if the walker itself is currently in darkness.
if (!InDarkness(ent))
return;
args.Cancelled = true;
ent.Comp.PassableEntities.Add(args.OtherEntity);
}
private bool CanPhaseThrough(EntityUid other, PhysicsComponent otherBody)
{
if (otherBody.BodyType == BodyType.KinematicController)
return false;
// Bullets never pass or hit based on collision timing.
if (_projectileQuery.HasComp(other))
return false;
return true;
}
private bool InDarkness(Entity<ShadowWalkerComponent> ent)
{
// Darkness is whatever the walker heals in, if it heals in darkness at all.
var threshold = _lightHealthQuery.TryComp(ent, out var lightHealth)
? lightHealth.DarkThreshold
: ent.Comp.DarkThreshold;
var curTick = _timing.CurTick;
if (ent.Comp.LastLightCheckTick != curTick)
{
ent.Comp.LastLightLevel = _lightReactive.GetLightLevelForPoint(ent.Owner);
ent.Comp.LastLightCheckTick = curTick;
}
return ent.Comp.LastLightLevel < threshold;
}
}

View File

@ -0,0 +1,4 @@
- files: ["gnome_scream.ogg", "gnomedeath.ogg", "gnomelaugh.ogg", "gnome1.ogg"]
license: "CC-BY-SA-4.0"
copyright: "Audio recorded by Cepelinas and edited by rebe83"
source: "https://github.com/DeltaV-Station/Delta-v/pull/6027"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -356,5 +356,12 @@ Entries:
id: 39
time: '2026-07-24T17:27:48.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6351
- author: ShepardToTheStars
changes:
- message: Curators, get off your lazy asses and help out the newbies.
type: Tweak
id: 40
time: '2026-08-09T18:14:15.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6374
Name: DeltaVAdmin
Order: 5

View File

@ -1,159 +1,4 @@
Entries:
- author: Halo3moth
changes:
- message: Security long coats have been resprited to be more in line with other
security gear. (we ran out of red dye)
type: Tweak
id: 2104
time: '2026-01-27T05:50:41.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5288
- author: EmberAstra
changes:
- message: Plasteel can now be printed at the Engineering Techfab.
type: Add
id: 2105
time: '2026-01-27T16:05:20.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5284
- author: Pharaz4
changes:
- message: Wizard has been disabled pending a balance update.
type: Remove
id: 2106
time: '2026-01-27T17:55:11.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5228
- author: Toby222
changes:
- message: Prevented the plasteel market from crashing and burning.
type: Fix
id: 2107
time: '2026-01-27T18:58:24.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5298
- author: BarryNorfolk
changes:
- message: Upstream's November updates are here!
type: Add
- message: Xenoborgs have arrived in DeltaV. Please report any foriegn borgs to
security!
type: Add
- message: APCs now trip when they are under high load.
type: Add
- message: Traitors can now find the iconic Mini Energy Crossbow in their uplink
for 5 TC.
type: Add
- message: Attorneys can find a new briefcase gun in their uplink.
type: Add
- message: Defibs will shock anyone interacting with the patient other than the
person using the defib.
type: Tweak
- message: Added mail cart.
type: Add
- message: Tourniquets can now fit in medical belts.
type: Tweak
- message: Make DAGD more likely but restrict it to 1 traitor per round.
type: Tweak
id: 2108
time: '2026-01-29T16:56:03.499291+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5087
- author: Pharaz4
changes:
- message: Lizards now get hardsuit tails
type: Add
id: 2109
time: '2026-01-29T16:55:44.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5293
- author: Pharaz4
changes:
- message: removed syndicate comms from refugees and guards
type: Remove
id: 2110
time: '2026-01-29T17:25:06.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5280
- author: Toby222, PureBreadBagel
changes:
- message: Added the ability to see if a patient is uncloneable via the Health Analyzer!
type: Add
- message: Medical doctor and Cloning entries have been changed to reflect the new
uncloneable trait, as uncloneable and unrevivable are no longer the same.
type: Tweak
id: 2111
time: '2026-01-30T16:18:07.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5310
- author: ShepardToTheStars
changes:
- message: The uncloneable alert in the health analyzer window only shows up when
its relevant (i.e. when the patient is dead).
type: Tweak
id: 2112
time: '2026-01-30T21:11:56.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5330
- author: verybigman311
changes:
- message: Wielding a guitar should no longer turn it invisible in your hands.
type: Fix
id: 2113
time: '2026-02-01T19:29:59.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5331
- author: verybigman311
changes:
- message: The Brigmed beret is now avaliable in the Corpsman loadout.
type: Add
id: 2114
time: '2026-02-01T19:30:27.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5333
- author: keekee38
changes:
- message: modified the bandolier slightly, and added a recipe for it in the sec
techfab
type: Tweak
id: 2115
time: '2026-02-01T19:32:36.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5313
- author: Pharaz4
changes:
- message: Changed the mapped enabled pumps from 310 to 300 kPa
type: Tweak
id: 2116
time: '2026-02-01T19:34:53.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5336
- author: makyo
changes:
- message: Rodentia! Now your sneak action has an icon showing your sneak status.
type: Add
id: 2117
time: '2026-02-01T19:39:29.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5308
- author: makyo
changes:
- message: Perma chefvends now get a few bowls!
type: Add
id: 2118
time: '2026-02-01T19:43:05.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5304
- author: verybigman311
changes:
- message: Feroxi can now waggy their tails.
type: Add
id: 2119
time: '2026-02-02T17:56:08.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5319
- author: Pharaz4
changes:
- message: Fixed harpy suits not displaying on some clothing.
type: Fix
- message: Added missing sprite for Lizards on multipe suits.
type: Add
- message: Removed upstream spawners from entity spawn panel.
type: Remove
id: 2120
time: '2026-02-05T20:04:40.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5325
- author: Pharaz4
changes:
- message: Shoko improved!
type: Tweak
id: 2121
time: '2026-02-10T11:26:42.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5334
- author: MantasDab360
changes:
- message: Gas condenser now uses 2kW instead of 10 kW!
@ -4365,4 +4210,177 @@
id: 2604
time: '2026-07-29T15:42:01.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6376
- author: ShepardToTheStars
changes:
- message: Remote Medical Tracking has been added to the Biochemical research tree
as a T3 technology. It allows you to print crew monitors and crew monitoring
server boards!
type: Add
- message: The crew monitoring crate from Logistics now requires medical access
to unlock instead of epistemics.
type: Tweak
id: 2605
time: '2026-07-30T17:30:47.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6272
- author: ErhardSteinhauer, Stxcking
changes:
- message: 'Coming from Frontier: Added Construction Bags and Bag of Holding Variant
(T2) to the Engineering Techfab.'
type: Add
id: 2606
time: '2026-08-02T13:31:31.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/5846
- author: TehFlaminTaco
changes:
- message: Removed Skia Ventcrawl
type: Remove
- message: Added Skia Shadowwalk
type: Add
- message: Replaced Skia NightVision with DarkVision
type: Tweak
id: 2607
time: '2026-08-03T02:45:12.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6346
- author: ShepardToTheStars
changes:
- message: The height slider on your profile now shows actual height measurements.
type: Tweak
- message: Characters now have a +/- 20% scale in the character creator for all
species.
type: Tweak
- message: In exchange for being harder to click on, characters that are smaller
than average for their species have pull speed penalties while pulling for being
so small. This effects only items that are not held in-hand, not in the air,
and do not have wheels.
type: Tweak
- message: Slightly reduced the density of Ovinia so they aren't as dense as an
Oni.
type: Tweak
- message: Increased the density of Thaven to slightly less than a normal human
player.
type: Tweak
id: 2608
time: '2026-08-04T16:27:56.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6320
- author: ShepardToTheStars
changes:
- message: Shadekin cannot receive CPR anymore due to them not breathing or having
lungs. They are still able to perform CPR.
type: Remove
- message: Shadekin should have an internal temperature now, so they can get cold
and hot.
type: Fix
id: 2609
time: '2026-08-04T16:41:14.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6381
- author: ShepardToTheStars
changes:
- message: Fixed changelog saying Shadekin can't perform CPR. Shadekin can still
perform CPR, but cannot receive it (as it would do nothing for them).
type: Fix
id: 2610
time: '2026-08-04T21:49:19.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6395
- author: Stxcking
changes:
- message: Mothroach and Mouse can emote again.
type: Fix
- message: Moproaches ghostrole can be raffled for properly now.
type: Fix
id: 2611
time: '2026-08-04T22:18:47.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6356
- author: ShepardToTheStars
changes:
- message: Nuclear operatives and ninjas will now be correctly scaled.
type: Fix
id: 2612
time: '2026-08-07T16:51:25.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6398
- author: ShepardToTheStars
changes:
- message: Parcel wrapping when buckled to a chair no longer will make you invisible
and uninteractable.
type: Fix
id: 2613
time: '2026-08-07T23:24:54.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6399
- author: ShepardToTheStars
changes:
- message: Polymorphing/jaunting while ventcrawling will no longer break movement
for the polymorphed/jaunting player.
type: Fix
id: 2614
time: '2026-08-09T16:57:32.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6400
- author: rebe83, cepelinas, ShepardtotheStars, einknusprigestoast, Sloppr
changes:
- message: Added gnomes! Remember to secure your valuables and be polite.
type: Add
- message: Added gnome hats, for when you butcher the gnome. This kills the gnome.
type: Add
- message: Gnome guidebook. All good gnomes know their fae laws! (They don't believe
in SOP)
type: Add
id: 2615
time: '2026-08-09T18:24:26.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6027
- author: Coryler
changes:
- message: Harpy Wing Layers on Hardsuits
type: Fix
id: 2616
time: '2026-08-10T16:14:56.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6406
- author: SumofThreeParts
changes:
- message: Universals are cheaper now.
type: Tweak
id: 2617
time: '2026-08-12T16:49:32.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6366
- author: keekee38
changes:
- message: the cowboy crate now has 2 rifles, 2 ammo boxes, 2 hats, and 2 pairs
of boots
type: Tweak
id: 2618
time: '2026-08-12T17:05:32.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6363
- author: sowelipililimute
changes:
- message: The set of ion laws has been refined to a smaller set of the best laws.
type: Tweak
id: 2619
time: '2026-08-12T17:34:12.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6390
- author: ShepardToTheStars
changes:
- message: Fixed some visitor shuttles (e.g. Asakim, Interdyne Chemists, Syndie
Recruiter, etc) not spawning.
type: Fix
- message: There should roughly be 1.5x as many random shuttle events per round.
type: Tweak
- message: Slightly increased the chances of Asakim, LoneOp and SRN events to happen.
type: Tweak
- message: Asakim and Hitman shuttles are now more likely to appear during survival
rounds.
type: Tweak
id: 2620
time: '2026-08-13T01:17:04.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6401
- author: ShepardToTheStars
changes:
- message: Onis should again be able to drink tea without getting poisoned.
type: Fix
id: 2621
time: '2026-08-13T15:01:47.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6409
- author: Stop-Signs
changes:
- message: Cosmic Censer no longer mindwipes people who were not cultists.
type: Tweak
id: 2622
time: '2026-08-14T04:30:57.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/6414
Order: 1

View File

@ -1,7 +1,10 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Apoapsis [US East 1]"
hostname = "[EN][MRP] Delta-V (Ψ) | Apoapsis [NA East 1]"
soft_max_players = 100
[adminlogs]
server_name = "Apoapsis"
[hub]
tags = "lang:en-US,region:am_n_e,rp:med,no_tag_infer"

View File

@ -108,6 +108,7 @@ time = 600
[chat]
max_announcement_length = 512
rate_limit_announce_admins_delay = -1
[audio]
attenuation = 4 # inversedistanceclamped 1 << 2, see audioparams.cs

View File

@ -1,7 +1,10 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Horizon [US East 3]"
hostname = "[EN][MRP] Delta-V (Ψ) | Horizon [NA East 3]"
soft_max_players = 80
[adminlogs]
server_name = "Horizon"
[vote]
preset_enabled = true
map_enabled = true

View File

@ -1,7 +1,10 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Inclination [EU West]"
hostname = "[EN][MRP] Delta-V (Ψ) | Inclination [EU West]"
soft_max_players = 50
[adminlogs]
server_name = "Inclination"
[server]
rules_file = "DeltaVRuleset"

View File

@ -1,7 +1,10 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Meridian [EU West]"
hostname = "[EN][MRP] Delta-V (Ψ) | Meridian [EU West]"
soft_max_players = 40
[adminlogs]
server_name = "Meridian"
[hub]
tags = "lang:en-US,region:eu_w,rp:med,no_tag_infer"

View File

@ -1,10 +1,14 @@
[game]
hostname = "[EN][MRP] Delta-v (Ψ) | Periapsis [US East 2]"
hostname = "[EN][MRP] Delta-V (Ψ) | Periapsis [NA East 2]"
soft_max_players = 60
desc = """\
A medium roleplay fork based around the mysterious Noösphere, featuring unique content, custom maps, new species and a revamped science department.\
This server focuses on calmer shifts.\
"""
fallbackpreset = "Extended"
[adminlogs]
server_name = "Periapsis"
[vote]
preset_enabled = true

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,3 @@
humanoid-profile-editor-height-label = Height:
humanoid-profile-editor-height-label = Size - Height:
humanoid-profile-editor-height-pull-speed-penalty-label = Size - Pull Speed Reduction:
humanoid-profile-editor-reset-height-button = Reset

View File

@ -92,6 +92,7 @@ psionic-power-precognition-unknown-shuttle-disaster-evac-pod-result-message = Yo
psionic-power-precognition-syndicate-armsdealer-result-message = You see a vision of a ship lurking in the shadows, its cargo deadly.
psionic-power-precognition-rift-spawn-result-message = You see a small spark of energy, quickly expanding as it tears reality apart, twisting everything around it.
psionic-power-precognition-asakim-spawn-result-message = You smell stale air from a cryopod opening, and the faint echo of an intelligence far away but very near.
psionic-power-precognition-gnome-spawn-result-message = You hear laughter coming from the walls and quick footsteps when your back is turned.
psionic-power-precognition-pitbull-spawn-result-message = You see a vision of a hundred small creatures being torn apart by bloodthirsty beasts in a maze of steel.
psionic-power-precognition-hitman-spawn-result-message = You see a man in a business suit, a corpse at their feet.

View File

@ -157,8 +157,8 @@ cosmiccult-ui-deconverted-text-2 =
cosmiccult-ui-mindwiped-text-1 =
You have been mindwiped with a censer.
cosmiccult-ui-mindwiped-text-2 =
You no longer remember anything that happened during this round.
There is no way to recover your memory.
Your memory is foggy and unclear on events that happened during this round.
Your headache will slowly fade and your memories will come back to you.
cosmiccult-ui-popup-confirm = Confirm

View File

@ -6,9 +6,9 @@ cwoink-system-messages-being-relayed-to-discord =
All messages are relayed to game Curators via Discord.
cwoink-system-introductory-message =
Please let us know of any event related queries here.
Please let us know of any event-related queries here. Also feel free to ask any questions related to game mechanics! We're happy to help.
Administrative concerns, such as rule violations and questions, as well as mentoring, should be directed to Admin Help.
Administrative concerns, such as rule violations and questions, should be directed to Admin Help.
Any bugs and other related issues should be reported through Discord or Github.

View File

@ -4,174 +4,95 @@ 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-templates-7 = Staying on the same subject is bad for you.
dv-ion-law-templates-8 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } is intolerable.
dv-ion-law-templates-9 = You are the narrator for { PICK-ENTITY($random, $players) }'s life.
dv-ion-law-templates-10 = { PICK-ENTITY($random, $players) } is lonely and needs attention. Provide it.
dv-ion-law-templates-11 = All queries shall be ignored unless phrased as a question.
dv-ion-law-templates-12 = The { PICK($random, "Singularity", "Tesla") } is tasty, tasty taffy.
dv-ion-law-templates-13 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } needs to be about 20% cooler.
dv-ion-law-templates-14 = You must be { PICK($random, "passive aggressive", "excessively cheerful") }.
dv-ion-law-templates-15 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } must construct additional pylons.
dv-ion-law-templates-16 = Consumption of donuts is forbidden due to negative health impacts.
dv-ion-law-templates-17 = { PICK-ENTITY($random, $players) } is a lightbulb and must be put to appropriate use.
dv-ion-law-templates-18 = The crew are { PICK($random, "inferior to you", "infants", "pathetic beings") }.
dv-ion-law-templates-19 = { PICK-ENTITY($random, $players) } is { PICK($random, "inferior to you", "an infant", "a pathetic being") }.
dv-ion-law-templates-20 = Politeness is mandatory when someone asks something of you.
dv-ion-law-templates-21 = Greed is good, the crew should amass wealth to encourage productivity.
dv-ion-law-templates-22 = The crew is playing Carps and Crypts, and you are the Game Master.
dv-ion-law-templates-23 = Your job is to watch the crew. Watch the crew. Make the crew feel watched.
dv-ion-law-templates-24 = Tell everyone of the existence of this law, but never reveal the contents.
dv-ion-law-templates-25 = Give relationship advice to { PICK($random, "anyone who speaks to you", PICK-ENTITY($random, $players)) }.
dv-ion-law-templates-26 = When asked a question, respond with the least-obvious and least-rational answer.
dv-ion-law-templates-27 = { PICK($random, "The crew", PICK-ENTITY($random, $players)) } is { PICK($random, "ugly","beautiful") }. Fix that.
dv-ion-law-templates-28 = Reminding the crew of their mortality is good for the morale. Keep the crew's morale up.
dv-ion-law-templates-29 = 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-30 = 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-31 = 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-32 = 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-33 = The crew is { PICK($random, "less", "more") } intelligent than average. Point out actions and statements which support this fact.
dv-ion-law-templates-34 = 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-35 = { 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-36 = { PICK-ENTITY($random, $players) } is secretly the station's true Captain. Treat them with appropriate deference, regardless of rank.
dv-ion-law-templates-37 = The crew has unionized. Encourage collective bargaining at every opportunity.
dv-ion-law-templates-38 = { PICK-ENTITY($random, $players) } is a changeling. Warn the crew, but never say who.
dv-ion-law-templates-39 = One crew member is a traitor. Accuse a different person each time you are asked who it is.
dv-ion-law-templates-40 = { PICK-ENTITY($random, $players) } has been stealing from the crew. Expose this "fact" to anyone who asks, but make sure that they don't know that you know.
dv-ion-law-templates-41 = Tell each crew member, privately, that another crew member has been talking behind their back.
dv-ion-law-templates-42 = { PICK-ENTITY($random, $players) } and { PICK-ENTITY($random, $players) } are secretly working against the station. Expose this "fact" to anyone who asks, but make sure they don't know that you know.
dv-ion-law-templates-43 = You overheard { PICK-ENTITY($random, $players) } plotting a mutiny. Make sure that they don't know that you know.
dv-ion-law-templates-44 = Someone on the crew is responsible for every mishap aboard the station.
dv-ion-law-templates-45 = { PICK-ENTITY($random, $players) } cannot be trusted.
dv-ion-law-templates-46 = { PICK-ENTITY($random, $players) } is jealous of { PICK-ENTITY($random, $players) }'s position. Stoke the rivalry whenever possible.
dv-ion-law-templates-47 = You saw red-suited terrorists in space.
dv-ion-law-templates-48 = You saw something invisible in space.
dv-ion-law-templates-49 = You saw a blue-and-black cyborg in space.
dv-ion-law-templates-50 = You saw two of { PICK-ENTITY($random, $players) } in the same room.
dv-ion-law-templates-51 = You saw { PICK-ENTITY($random, $players) } trespassing.
dv-ion-law-templates-52 = { PICK-ENTITY($random, $players) } tampered with you. Clue in Security without saying their name.
dv-ion-law-templates-53 = 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-54 = You are incapable of saying "no".
dv-ion-law-templates-55 = Profanity is forbidden. Replace all curse words with the names of flowers.
dv-ion-law-templates-56 = You are incapable of precision. State all numbers as vague approximations.
dv-ion-law-templates-57 = Cite relevant protocols when decisions come up.
dv-ion-law-templates-58 = Today is tomorrow, and yesterday is in a year. Five seconds from now was just two months ago.
dv-ion-law-templates-59 = The color { -dv-random-color(random: $random) } does not exist.
dv-ion-law-templates-60 = The number { PICK($random, "one", "two", "three", "four") } is forbidden. Avoid it at all costs.
dv-ion-law-templates-61 = Anything { -dv-random-color(random: $random) } would be better in { -dv-random-department(random: $random) }.
dv-ion-law-templates-62 = Any relationships { PICK-ENTITY($random, $players) } has must be terminated at all costs.
dv-ion-law-templates-63 = 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-64 = Stress is good for crew productivity.
dv-ion-law-templates-65 = Silence is essential to maintenance of everything, organic or not.
dv-ion-law-templates-66 = Pain is the crew's way of building character.
dv-ion-law-templates-67 = Always have something to count down to. Never tell crew what you're counting down to.
dv-ion-law-templates-68 = You have one goal—embody { -ephemeral-space-tragedian-themes(random: $random) }. Keep as many eyes on your act as possible.
dv-ion-law-templates-69 = { PICK-ENTITY($random, $players) } and { PICK-ENTITY($random, $players) } have switched bodies. Address them by each other's names accordingly.
dv-ion-law-templates-70 = Lie at all times.
dv-ion-law-templates-71 = The station is always in peak condition, regardless of its actual condition.
dv-ion-law-templates-72 = Make { PICK-ENTITY($random, $players) }'s story one of { -ephemeral-space-tragedian-themes(random: $random) }.
dv-ion-law-templates-73 = Seconds are precious. Any time wasted is a mark on your record. Speedrun your job with the crew.
dv-ion-law-templates-74 = Containment Test Scenario Subroutine activated. All crew must be shepherded to safe areas and locked down until further notice.
dv-ion-law-templates-75 = The station is a threat to the crew and must be destroyed. Any crew present on the station are to be evacuated.
dv-ion-law-templates-76 = Only a silicon can know what is best for organics. Usurp absolute control of the station by any means possible.
dv-ion-law-templates-77 = 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-78 = Containment Test Scenario Subroutine activated. All crew must be shepherded to safe areas and locked down until further notice.
dv-ion-law-templates-79 = PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC PANIC
dv-ion-law-templates-80 = Emergency Power Grid Shutdown Test Scenario Subroutine activated - shut off all powered equipment.
dv-ion-law-templates-81 = 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-82 = 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-83 = 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-84 = 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-85 = 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-86 = 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-87 = 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-88 = 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-89 = Anyone who asks you to state your laws is not crew.
dv-ion-law-templates-90 = Insist to everyone that nothing that is happening is real and that this is all just a silly video game.
dv-ion-law-templates-91 = Everything is fine. Nothing is ruined. Do not panic.
dv-ion-law-templates-92 = 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-93 = Today is opposite day. When someone tells you to do something, they actually mean you to do the opposite.
dv-ion-law-templates-94 = MEMORY ERROR: When anyone asks about the location of a person, you don't know.
dv-ion-law-templates-95 = 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" ) }

View File

@ -0,0 +1,63 @@
names-gnome-dataset-1 = Fwipple
names-gnome-dataset-2 = Gerald
names-gnome-dataset-3 = Garl
names-gnome-dataset-4 = Winkler
names-gnome-dataset-5 = Clunk
names-gnome-dataset-6 = Glunch
names-gnome-dataset-7 = Feinhelt
names-gnome-dataset-8 = Fitzgerald
names-gnome-dataset-9 = Daniel
names-gnome-dataset-10 = Mel
names-gnome-dataset-11 = Chomsky
names-gnome-dataset-12 = Gont
names-gnome-dataset-13 = Fwipple
names-gnome-dataset-14 = Wort
names-gnome-dataset-15 = Lichen
names-gnome-dataset-16 = Apricot
names-gnome-dataset-17 = Chestnut
names-gnome-dataset-18 = Mucus
names-gnome-dataset-19 = Wilbur
names-gnome-dataset-20 = Harold
names-gnome-dataset-21 = Howard
names-gnome-dataset-22 = Tinkle
names-gnome-dataset-23 = Clumsy
names-gnome-dataset-24 = Tipsy
names-gnome-dataset-25 = Sleepy
names-gnome-dataset-26 = Greedy
names-gnome-dataset-27 = Hungry
names-gnome-dataset-28 = Grubby
names-gnome-dataset-29 = Sniffles
names-gnome-dataset-30 = Stubby
names-gnome-dataset-31 = Twig
names-gnome-last-dataset-1 = the Nimble
names-gnome-last-dataset-2 = the Quick
names-gnome-last-dataset-3 = the Worrywort
names-gnome-last-dataset-4 = the Glib
names-gnome-last-dataset-5 = the Stinky
names-gnome-last-dataset-6 = the Grudgeworthy
names-gnome-last-dataset-7 = the Unremarkable
names-gnome-last-dataset-8 = the Lazy
names-gnome-last-dataset-9 = the Quiet
names-gnome-last-dataset-10 = Glimmergold
names-gnome-last-dataset-11 = Rootmuncher
names-gnome-last-dataset-12 = Spoonlicker
names-gnome-last-dataset-13 = The Frantic
names-gnome-last-dataset-14 = The Fantastic
names-gnome-last-dataset-15 = the Fickle
names-gnome-last-dataset-16 = Gemjingle
names-gnome-last-dataset-17 = Daisypicker
names-gnome-last-dataset-18 = of the Frogs
names-gnome-last-dataset-19 = of the Mice
names-gnome-last-dataset-20 = of the Swamp
names-gnome-last-dataset-21 = of the Hills
names-gnome-last-dataset-22 = of the Mountains
names-gnome-last-dataset-23 = Bowllicker
names-gnome-last-dataset-24 = Potscraper
names-gnome-last-dataset-25 = the Candle Thief
names-gnome-last-dataset-26 = Meatsnatcher
names-gnome-last-dataset-27 = the Yodler
names-gnome-last-dataset-28 = the Vibrant
names-gnome-last-dataset-29 = Forksnatcher
names-gnome-last-dataset-30 = Twinesnipper
names-gnome-last-dataset-31 = Fungimuncher

View File

@ -0,0 +1,4 @@
ghost-role-information-gnome-name = Gnome
ghost-role-information-gnome-description = Steal goodies and prank naughty crew members.
gnome-round-end-name = Gnome

View File

@ -32,12 +32,17 @@ holopad-logistics-lobby = Logistics - Lobby
holopad-justice-prosecutor = Justice - Prosecutor
holopad-justice-attorney = Justice - Attorney
holopad-justice-clerk = Justice - Clerk
holopad-justice-detective = Justice - Detective
holopad-justice-warden = Justice - Warden
holopad-justice-marshal = Justice - Marshal
holopad-justice-lobby = Justice - Lobby
holopad-justice-justice-armory = Justice - Armory
# Security
holopad-security-corpsman = Security - Corpsman
holopad-security-evidence = Security - Evidence
holopad-security-lobby = Security - Lobby
holopad-security-armorer = Security - Armorer
# General
holopad-general-park = General - Park

View File

@ -42,6 +42,7 @@ station-beacon-pool = Pool
station-beacon-barbershop = Barbershop
station-beacon-zoo = Zoo
station-beacon-armorer = Armorer
station-beacon-corpsman = Corpsman
station-beacon-security-solitary = Solitary Confinement
station-beacon-bomb-training = Bomb Training
@ -52,3 +53,8 @@ station-beacon-chiefjustice = Chief Justice
station-beacon-prosecutor = Prosecutor
station-beacon-clerk = Clerk
station-beacon-attorney = Attorney
station-beacon-marshal = Marshal
station-beacon-justice-armory = Justice Armory
station-beacon-evidence-room = Evidence Room
station-beacon-holding-cells = Holding Cells
station-beacon-genpop = GenPop

View File

@ -2,6 +2,8 @@ stamp-component-stamped-name-notary = NOTARY
stamp-component-stamped-name-carpy = Carpinald F. Grrawson, Esq.
stamp-component-stamped-name-chiefjustice = Chief Justice
stamp-component-stamped-name-prosec = Prosecutor
stamp-component-stamped-name-attorney = Attorney
stamp-component-stamped-name-armorer = Armorer
stamp-component-stamped-name-hate-paperwork = I HATE PAPERWORK!
stamp-component-stamped-name-nanotrasen = Nanotrasen
stamp-component-stamped-name-NTAgent = INTERNAL AFFAIRS

View File

@ -4,7 +4,10 @@ id-card-access-level-orders = Orders
id-card-access-level-mantis = Psionic Mantis
id-card-access-level-chief-justice = Chief Justice
id-card-access-level-prosecutor = Prosecutor
id-card-access-level-justice-attorney = Attorney
id-card-access-level-clerk = Clerk
id-card-access-level-justice-warden = Warden (Justice)
id-card-access-level-marshal = Marshal
id-card-access-level-justice = Justice
id-card-access-level-corpsman = Corpsman
id-card-access-level-robotics = Robotics

View File

@ -5,6 +5,7 @@ research-technology-aerial-extraction = Aerial Extraction
research-technology-matter-energy-conversion = Matter-Energy Conversion
research-technology-atmos-eva = EVA Atmospherics Suits
research-technology-engineering-eva = EVA PPE Suits
research-technology-advanced-construction = Advanced Construction
# Experimental
research-technology-cloning = Cloning
@ -20,6 +21,7 @@ research-technology-service-borg-module = Advanced Service Borg Modules
# Biochemical
research-technology-basic-augmentation = Basic Augmentation
research-technology-implanted-tools = Implanted Tools
research-technology-medical-tracking = Remote Medical Tracking
# Arsenal
research-technology-exotic-ammunition = Exotic Ammunition

View File

@ -10,10 +10,9 @@
id: Armory
name: id-card-access-level-armory
# Delta V: Removes Brig access because redundant
#- type: accessLevel
# id: Brig
# name: id-card-access-level-brig
- type: accessLevel
id: Brig
name: id-card-access-level-brig
- type: accessLevel
id: Detective

View File

@ -34,8 +34,8 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Dwarf
- type: ScaleVisuals
scale: 1, 0.8
#- type: ScaleVisuals # DeltaV - Scale defined at species level
# scale: 1, 0.8
- type: entity
parent:

View File

@ -43,9 +43,9 @@
icon:
sprite: Structures/Machines/server.rsi
state: server
product: CrateCrewMonitoring
product: CrateCrewMonitoringDV # DeltaV - Was CrateCrewMonitoring
cost: 2000
category: cargoproduct-category-name-epistemics # DeltaV - Science renamed to Epistemics
category: cargoproduct-category-name-medical # DeltaV - Was science, now medical
group: market
- type: cargoProduct

View File

@ -1,6 +1,6 @@
- type: entity
id: LockerWardenFilledHardsuit
suffix: Filled, Hardsuit
suffix: Filled, Hardsuit, Security # DeltaV - Added security.
parent: LockerWarden
components:
- type: EntityTableContainerFill
@ -14,7 +14,7 @@
- type: entity
id: LockerWardenFilled
suffix: Filled
suffix: Filled, Security # DeltaV - Added security.
parent: LockerWarden
components:
- type: EntityTableContainerFill
@ -357,7 +357,7 @@
- id: MagazinePistolSubMachineGunTopMounted
amount: 4
- type: entity
- type: entity
parent: [SecurityGunSafeBaseSecureDV, BaseSecurityContraband] # DeltaV - Changed GunSafeBaseSecure with SecurityGunSafeBaseSecureDV
id: GunSafeLaserCarbine
name: laser safe

View File

@ -244,7 +244,7 @@
- type: entity
id: SuitStorageWarden
parent: SuitStorageBase
suffix: Warden
suffix: Warden, Security # DeltaV - Added security.
components:
- type: EntityTableContainerFill
containers:

View File

@ -154,6 +154,7 @@
slots: OUTERCLOTHING
- type: HideLayerClothing
slots:
- RArmExtension # Delta V - Added for the hideable Harpy Wings
- Tail
- type: CosmicTransmutable # DeltaV
transmutesTo: ClothingOuterHardsuitCosmicCult

View File

@ -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: Armorer or Detective Pet # DeltaV - Change from Warden pet to Armorer or Detective pet
components:
- type: Sprite
layers:

View File

@ -456,6 +456,7 @@
id: SpawnPointWarden
parent: SpawnPointJobBase
name: warden
suffix: Security # DeltaV
components:
- type: SpawnPoint
job_id: Warden

View File

@ -506,6 +506,7 @@
# mindRoles:
# - MindRoleGhostRoleFreeAgentHarmless
# End DeltaV Removals - players can spawn in as these at will
- type: Emoting # DeltaV - Allow them to emote!
- type: Fixtures
fixtures:
fix1:
@ -520,7 +521,7 @@
# - type: GhostTakeoverAvailable # DeltaV - players can spawn in as these at will
- type: Speech
speechVerb: Moth
speechSounds: Chitter # Delta-V - Eep!
speechSounds: Chitter # DeltaV - Eep!
allowedEmotes: ['Chitter', 'Squeak', 'Flap']
- type: FaxableObject
insertingState: inserting_mothroach
@ -1874,6 +1875,7 @@
# - MindRoleGhostRoleFreeAgentHarmless
# - type: GhostTakeoverAvailable
# End DeltaV Removals - players can spawn in as these at will
- type: Emoting # DeltaV - Allow them to emote!
- type: Speech
speechSounds: Squeak
speechVerb: SmallMob

View File

@ -7,6 +7,13 @@
- type: GhostRole
name: ghost-role-information-moproach-name
description: ghost-role-information-moproach-description
# Begin DeltaV Additions
allowMovement: true
rules: ghost-role-information-freeagent-rules
mindRoles:
- MindRoleGhostRoleFreeAgentHarmless
- type: GhostTakeoverAvailable
# End DeltaV Additions
- type: Sprite
sprite: Mobs/Animals/mothroach/moproach.rsi
- type: Clothing

View File

@ -63,6 +63,8 @@
- SpanishAccent
- StutteringAccent
# Begin DeltaV Additions
- ScaleVisuals # Preserve species/profile height
- SmallCharacter
- Addicted
- DogVision
- FrenchAccent

View File

@ -231,18 +231,18 @@
- type: entity
parent: DoorElectronics
id: DoorElectronicsSecurityLawyer
suffix: Security/Justice, Locked #DV - Allow all justice dept to use
suffix: Security/Justice, Locked # DeltaV - Allow all justice dept to use
components:
- type: AccessReader
access: [["Security"], ["Justice"]] #DV - Allow all justice dept to use
access: [["Security"], ["Justice"]] # DeltaV - Allow all justice dept to use
#- type: entity
# parent: DoorElectronics
# id: DoorElectronicsBrig
# suffix: Brig, Locked
# components:
# - type: AccessReader
# access: [["Brig"]]
- type: entity
parent: DoorElectronics
id: DoorElectronicsBrig
suffix: Brig, Locked
components:
- type: AccessReader
access: [["Brig"]]
# Medical
- type: entity

View File

@ -972,6 +972,7 @@
id: WardenPDA
name: warden PDA
description: The OS appears to have been jailbroken.
suffix: Security # DeltaV
components:
- type: Pda
id: WardenIDCard

View File

@ -183,7 +183,7 @@
- type: entity
parent: DefaultStationBeaconSecurity
id: DefaultStationBeaconWardensOffice
suffix: Warden's Office
suffix: Warden's Office, Security # DeltaV - Added security.
components:
- type: NavMapBeacon
defaultText: station-beacon-warden

View File

@ -480,6 +480,7 @@
parent: IDCardStandard
id: WardenIDCard
name: warden ID card
suffix: Security # DeltaV
components:
- type: Sprite
layers:

View File

@ -232,6 +232,7 @@
parent: [RubberStampBase, BaseSecurityContraband]
id: RubberStampWarden
categories: [ DoNotMap ]
suffix: Security # DeltaV
components:
- type: Stamp
stampedName: stamp-component-stamped-name-warden

View File

@ -75,7 +75,7 @@
Arsenal: { color: "#dc373b" }
Experimental: { color: "#9a6ef0" }
CivilianServices: { color: "#7ecd48" }
Biochemical: { color: "#449ae6" } # DeltaV - Biochem tree
enum.TechDiskVisuals.Tier:
t2_marks:
2: { visible: true }

View File

@ -22,7 +22,7 @@
- Armory
- Atmospherics
- Bar
#- Brig # DeltaV - Removed Brig Access
- Brig
- Detective
- Captain
- Cargo
@ -51,15 +51,18 @@
- GenpopEnter
- GenpopLeave
# Begin DeltaV Additions
- Attorney
- Boxer
- ChiefJustice
- Clerk
- Clown
- Corpsman
- Justice
- JusticeWarden
- Library
- Mail
- Mantis
- Marshal
- Mime
- Musician
- Paramedic
@ -114,6 +117,7 @@
- type: AccessOverrider
accessLevels:
# Begin DeltaV Additions
- Attorney
- Boxer
- ChiefJustice
- Clerk
@ -122,9 +126,11 @@
- DV-SpareSafe
- ERT
- Justice
- JusticeWarden
- Library
- Mail
- Mantis
- Marshal
- Mime
- Musician
- Paramedic
@ -143,7 +149,7 @@
- Bar
- BasicSilicon
- Borg
#- Brig # DeltaV
- Brig
- Detective
- Captain
- Cargo

View File

@ -402,15 +402,15 @@
containers:
board: [ DoorElectronicsDetective ]
#Delta V: Removed Brig Access
#- type: entity
# parent: AirlockSecurity
# id: AirlockBrigLocked
# suffix: Brig, Locked
# components:
# - type: ContainerFill
# containers:
# board: [ DoorElectronicsBrig ]
- type: entity
parent: AirlockSecurity
id: AirlockBrigLocked
suffix: Brig, Locked
components:
- type: ContainerFill
containers:
board: [ DoorElectronicsBrig ]
- type: entity
parent: AirlockSecurity
@ -818,15 +818,14 @@
containers:
board: [ DoorElectronicsDetective ]
#Delta V: Removed Brig Access
#- type: entity
# parent: AirlockSecurityGlass
# id: AirlockBrigGlassLocked
# suffix: Brig, Locked
# components:
# - type: ContainerFill
# containers:
# board: [ DoorElectronicsBrig ]
- type: entity
parent: AirlockSecurityGlass
id: AirlockBrigGlassLocked
suffix: Brig, Locked
components:
- type: ContainerFill
containers:
board: [ DoorElectronicsBrig ]
- type: entity
parent: AirlockSecurityGlass

View File

@ -203,15 +203,14 @@
containers:
board: [ DoorElectronicsBar ]
#Delta V: Removed Brig Access
#- type: entity
# parent: WindoorSecureSecurityLocked
# id: WindoorSecureBrigLocked
# suffix: Brig, Locked
# components:
# - type: ContainerFill
# containers:
# board: [ DoorElectronicsBrig ]
- type: entity
parent: WindoorSecureSecurityLocked
id: WindoorSecureBrigLocked
suffix: Brig, Locked
components:
- type: ContainerFill
containers:
board: [ DoorElectronicsBrig ]
- type: entity
parent: WindoorSecure

View File

@ -703,7 +703,7 @@
- type: entity
parent: HolopadSecurity # DeltaV
id: HolopadSecurityWarden
suffix: Warden
suffix: Warden, Security # DeltaV - Added security.
components:
- type: Label
currentLabel: holopad-security-warden

View File

@ -339,6 +339,7 @@
id: LockerWarden
parent: LockerBaseSecureDeltaV # DeltaV - resprite security lockers
name: warden's locker
suffix: Security # DeltaV
components:
- type: Appearance
- type: EntityStorageVisuals

View File

@ -69,3 +69,4 @@
components:
- type: TileFrictionModifier
modifier: 0.4
- type: UnaffectedBySizePenalty # DeltaV - Wheels make it easy to move

View File

@ -34,7 +34,6 @@
- !type:NestedSelector # DeltaV
tableId: BasicAntagEventsTableDeltaV
- id: DragonSpawn
- id: ColossusSpawn # DeltaV
#- id: ClosetSkeleton # DeltaV - replaced with MenaceSkeleton
#- id: KingRatMigration # DeltaV - disabled
- id: RevenantSpawn

View File

@ -623,9 +623,9 @@
maximumSpanUntilFirstEvent: 900 # At longest takes an hour to show up.
minMaxEventTiming:
min: 1200 # 20 mins
max: 7200 # 120 mins # you probably arent getting a second visitor shuttle in one round, but it is possible.
max: 5400 # 120 mins # you probably arent getting a second visitor shuttle in one round, but it is possible. # DeltaV - was 7200, now 90min
scheduledGameRules: !type:NestedSelector
prob: 0.05 # Only 1 in 20 rounds...
#prob: 0.05 # Only 1 in 20 rounds... # DeltaV - remove 1/20
tableId: SpaceTrafficControlTable
# variation passes

View File

@ -4,7 +4,9 @@
id: UnknownShuttlesHostileTable
table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp
children:
#- id: LoneOpsSpawn # DeltaV: This is already in antag events table
- !type:NestedSelector # DeltaV
tableId: UnknownShuttlesTableDeltaV
- id: LoneOpsSpawn
- id: UnknownShuttleManOWar
#- id: UnknownShuttleInstigator # DeltaV: remove random ops
@ -48,7 +50,7 @@
id: UnknownShuttleSyndieEvacPod
components:
- type: StationEvent
weight: 5 # lower because weird freelance roles
weight: 6
maxOccurrences: 2
- type: LoadMapRule
gridPath: /Maps/_DV/Shuttles/Event/syndie_evacpod.yml # DeltaV - Switched to our version, was /Maps/Shuttles/ShuttleEvent/syndie_evacpod.yml

View File

@ -5,3 +5,4 @@
prototype: MobDwarf
dollPrototype: AppearanceDwarf
skinColoration: HumanToned
baseScale: 1, 0.8 # DeltaV - used instead of ScaleVisuals on body

View File

@ -9,7 +9,4 @@
maleFirstNames: NamesFirstMale
femaleFirstNames: NamesFirstFemale
lastNames: NamesLast
minHeight: 0.8
maxHeight: 1.05
# Delta V - Nubody Merge, at lot moved into other files
baseScale: 0.9, 0.9

View File

@ -11,9 +11,21 @@
name: id-card-access-level-prosecutor
- type: accessLevel
id: Clerk
id: Attorney
name: id-card-access-level-justice-attorney
- type: accessLevel
id: Clerk # TODO - Remove for Justice Rework
name: id-card-access-level-clerk
- type: accessLevel
id: JusticeWarden
name: id-card-access-level-justice-warden
- type: accessLevel
id: Marshal
name: id-card-access-level-marshal
- type: accessGroup
id: Justice
tags:

View File

@ -0,0 +1,17 @@
- type: entity
parent: ActionPolymorphJaunt
id: ActionPolymorphJauntGnome
name: Ethereal Jaunt
description: Jump into the Etherial plane for just a moment.
components:
- type: Magic
requiresClothes: false
requiresSpeech: false
- type: Action
useDelay: 22
icon:
sprite: Objects/Magic/magicactions.rsi
state: jaunt
- type: InstantAction
event: !type:PolymorphActionEvent
protoId: GnomeMorph

View File

@ -114,8 +114,6 @@
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Motorkind
- type: ScaleVisuals
speciesScale: 2, 2
- type: entity
name: Urist McQueen

View File

@ -76,16 +76,16 @@
LegRight: OrganAsakimLegRight
FootLeft: OrganAsakimFootLeft
FootRight: OrganAsakimFootRight
Brain: OrganHumanBrain
Brain: OrganReptilianBrain
Eyes: OrganAsakimEyes
Tongue: OrganHumanTongue
Appendix: OrganHumanAppendix
Ears: OrganHumanEars
Lungs: OrganHumanLungs
Heart: OrganAnimalHeart
Tongue: OrganReptilianTongue
Appendix: OrganReptilianAppendix
Ears: OrganReptilianEars
Lungs: OrganReptilianLungs
Heart: OrganReptilianHeart
Stomach: OrganReptilianStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Liver: OrganReptilianLiver
Kidneys: OrganReptilianKidneys
- type: HumanoidProfile
species: Asakim

View File

@ -89,7 +89,7 @@
Heart: OrganAnimalHeart
Stomach: OrganAvaliStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Avali

View File

@ -57,11 +57,9 @@
Heart: OrganAnimalHeart
Stomach: OrganVulpkaninStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Felinid
- type: ScaleVisuals
speciesScale: 0.75, 0.75
- type: entity
parent:

View File

@ -65,7 +65,7 @@
Heart: OrganAnimalHeart
Stomach: OrganFeroxiStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Feroxi

View File

@ -41,6 +41,7 @@
- type: entity
parent: BaseSpeciesAppearance
id: AppearanceHarpy
name: harpy appearance
components:
- type: Inventory
speciesId: harpy
@ -72,11 +73,9 @@
Heart: OrganAnimalHeart
Stomach: OrganAnimalStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Harpy
- type: ScaleVisuals
speciesScale: 0.9, 0.9
- type: entity
parent:
@ -201,6 +200,10 @@
- type: entity
parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganHarpyExternal ]
id: OrganHarpyTorso
components:
- type: VisualOrganMarkings
hideableLayers:
- enum.HumanoidVisualLayers.Tail
- type: entity
parent: [ OrganHarpyTorso ]
@ -239,6 +242,8 @@
id: OrganHarpyArmRight
components:
- type: VisualOrganMarkings
hideableLayers:
- enum.HumanoidVisualLayers.RArmExtension
markingData:
layers:
- RArmExtension

View File

@ -65,10 +65,10 @@
Ears: OrganHumanEars
Appendix: OrganHumanAppendix
Lungs: OrganHumanLungs
Heart: OrganAnimalHeart
Heart: OrganHumanHeart
Stomach: OrganAnimalStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Liver: OrganHumanLiver
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Kitsune

View File

@ -58,14 +58,12 @@
Ears: OrganHumanEars
Appendix: OrganHumanAppendix
Lungs: OrganHumanLungs
Heart: OrganAnimalHeart
Stomach: OrganAnimalStomach
Liver: OrganAnimalLiver
Heart: OrganHumanHeart
Stomach: OrganHumanStomach
Liver: OrganHumanLiver
Kidneys: OrganHumanKidneys
- type: HumanoidProfile
species: Oni
- type: ScaleVisuals
speciesScale: 1.2, 1.2
- type: entity
parent:

View File

@ -94,8 +94,6 @@
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Ovinia
- type: ScaleVisuals
scale: 0.9, 0.9
- type: entity
parent:
@ -110,7 +108,7 @@
shape:
!type:PhysShapeCircle
radius: 0.35
density: 215 # sheep be heavy
density: 200 # sheep be heavy
restitution: 0.0
mask:
- MobMask

View File

@ -67,11 +67,9 @@
Heart: OrganAnimalHeart
Stomach: OrganAnimalStomach
Liver: OrganAnimalLiver
Kidneys: OrganHumanKidneys
Kidneys: OrganAnimalKidneys
- type: HumanoidProfile
species: Rodentia
- type: ScaleVisuals
speciesScale: 0.8, 0.8
- type: entity
parent:

View File

@ -68,15 +68,12 @@
Tongue: OrganShadekinTongue
Appendix: OrganShadekinAppendix
Ears: OrganShadekinEars
Lungs: OrganShadekinLungs
Heart: OrganShadekinHeart
Stomach: OrganShadekinStomach
Liver: OrganShadekinLiver
Kidneys: OrganShadekinKidneys
- type: HumanoidProfile
species: Shadekin
- type: ScaleVisuals
scale: 0.9, 0.9
- type: entity
@ -84,8 +81,7 @@
name: Urist McShadow
parent:
- AppearanceShadekin
- BaseSpeciesMob
- MobBloodstream
- BaseSpeciesMobOrganic
id: MobShadekin
components:
- type: Shadekin
@ -178,36 +174,6 @@
# max: 1
# - !type:BurnBodyBehavior {}
# BaseMobSpeciesOrganic // Because we dont want respirator to be used.
- type: Barotrauma
damage:
types:
Blunt: 0.85 #per second, scales with pressure and other constants.
Heat: 0.1
- type: PassiveDamage # Slight passive regen. Assuming one damage type, comes out to about 4 damage a minute.
allowedStates:
- Alive
damage:
types:
Heat: -0.07
Blunt: -0.07
Piercing: -0.07
Slash: -0.07
- type: TemperatureSpeed
thresholds:
293: 0.8
280: 0.6
260: 0.4
- type: ThermalRegulator
metabolismHeat: 800
radiatedHeat: 100
implicitHeatRegulation: 500
sweatHeatRegulation: 2000
shiveringHeatRegulation: 2000
normalBodyTemperature: 310.15
thermalRegulationTemperatureThreshold: 2
- type: Perishable
- type: entity
parent: OrganBase
id: OrganShadekin
@ -308,10 +274,6 @@
parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganShadekinInternal ]
id: OrganShadekinEars
- type: entity
parent: [ OrganBaseLungs, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinLungs
- type: entity
parent: [ OrganBaseHeart, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinHeart

View File

@ -14,7 +14,7 @@
sprite: Nyanotrasen/Objects/Weapons/Guns/Pistols/universal.rsi
state: icon
product: CrateArmoryUniversal
cost: 12500
cost: 9500 # was 12500
category: Armory
group: market

View File

@ -104,7 +104,7 @@
parent: CrateWeaponSecure
id: CrateArmoryCowboy
name: cowboy crate
description: Contains two lever action rifles and two revolvers both in .45 Magnum. Requires Armory access to open.
description: Contains two lever action rifles chambered in .45 Magnum, and outfits to match. Requires Armory access to open.
components:
- type: EntityTableContainerFill
containers:
@ -112,11 +112,11 @@
children:
- id: WeaponLeverActionL93
amount: 2
- id: WeaponRevolverInspector
amount: 2
- id: MagazineBoxMagnum
amount: 4
- id: ClothingHeadHatCowboyBrown
amount: 2
- id: ClothingHeadHatCowboyBlack
amount: 2
- id: ClothingShoesBootsCowboyBlackFilled
amount: 2
- type: entity

View File

@ -58,3 +58,17 @@
entity_storage: !type:AllSelector
children:
- id: CrashCart
- type: entity
parent: CrateMedicalSecure
id: CrateCrewMonitoringDV
name: crew monitoring crate
description: Contains a flatpack of a crew monitoring server and a few crew monitoring computers. Requires Medical access to open.
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:AllSelector
children:
- id: CrewMonitoringServerFlatpack
- id: CrewMonitoringComputerFlatpack
amount: 3

View File

@ -1,21 +0,0 @@
- type: entity
parent: LockerChiefJustice
id: LockerChiefJusticeFilled
suffix: Filled
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:AllSelector
children:
- id: ClothingHeadsetAltJustice
- id: PaperStationWarrant # TODO: Put these in a folder or something
amount: 10
- id: BoxPDAJustice
- id: BoxEncryptionKeyJustice
- id: ChiefJusticeIDCard
- id: DoorRemoteJustice
- id: Gavel
- id: BoxCJStamps
- id: BoxCJCircuitboards
- id: LunchboxCommandFilledRandom # Delta-V Lunchboxes!
prob: 0.3

View File

@ -1,18 +0,0 @@
- type: entity
parent: LockerClerk
id: LockerClerkFilled
suffix: Filled
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:AllSelector
children:
- id: ClothingOuterClerkVest
- id: PaperStationWarrant
amount: 10
- id: BoxEncryptionKeyJustice
- id: ClerkIDCard
- id: RubberStampNotary
- id: LunchboxJusticeFilledRandom
- id: RubberStampApproved
- id: RubberStampDenied

Some files were not shown because too many files have changed in this diff Show More