Merge branch 'master' into Letting-the-Patos-be-purchased
This commit is contained in:
commit
117d92ec53
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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)})";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) =
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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.
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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" ) }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@
|
|||
- type: entity
|
||||
id: SuitStorageWarden
|
||||
parent: SuitStorageBase
|
||||
suffix: Warden
|
||||
suffix: Warden, Security # DeltaV - Added security.
|
||||
components:
|
||||
- type: EntityTableContainerFill
|
||||
containers:
|
||||
|
|
|
|||
|
|
@ -154,6 +154,7 @@
|
|||
slots: OUTERCLOTHING
|
||||
- type: HideLayerClothing
|
||||
slots:
|
||||
- RArmExtension # Delta V - Added for the hideable Harpy Wings
|
||||
- Tail
|
||||
- type: CosmicTransmutable # DeltaV
|
||||
transmutesTo: ClothingOuterHardsuitCosmicCult
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -456,6 +456,7 @@
|
|||
id: SpawnPointWarden
|
||||
parent: SpawnPointJobBase
|
||||
name: warden
|
||||
suffix: Security # DeltaV
|
||||
components:
|
||||
- type: SpawnPoint
|
||||
job_id: Warden
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@
|
|||
- SpanishAccent
|
||||
- StutteringAccent
|
||||
# Begin DeltaV Additions
|
||||
- ScaleVisuals # Preserve species/profile height
|
||||
- SmallCharacter
|
||||
- Addicted
|
||||
- DogVision
|
||||
- FrenchAccent
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -480,6 +480,7 @@
|
|||
parent: IDCardStandard
|
||||
id: WardenIDCard
|
||||
name: warden ID card
|
||||
suffix: Security # DeltaV
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@
|
|||
parent: [RubberStampBase, BaseSecurityContraband]
|
||||
id: RubberStampWarden
|
||||
categories: [ DoNotMap ]
|
||||
suffix: Security # DeltaV
|
||||
components:
|
||||
- type: Stamp
|
||||
stampedName: stamp-component-stamped-name-warden
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -339,6 +339,7 @@
|
|||
id: LockerWarden
|
||||
parent: LockerBaseSecureDeltaV # DeltaV - resprite security lockers
|
||||
name: warden's locker
|
||||
suffix: Security # DeltaV
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: EntityStorageVisuals
|
||||
|
|
|
|||
|
|
@ -69,3 +69,4 @@
|
|||
components:
|
||||
- type: TileFrictionModifier
|
||||
modifier: 0.4
|
||||
- type: UnaffectedBySizePenalty # DeltaV - Wheels make it easy to move
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -5,3 +5,4 @@
|
|||
prototype: MobDwarf
|
||||
dollPrototype: AppearanceDwarf
|
||||
skinColoration: HumanToned
|
||||
baseScale: 1, 0.8 # DeltaV - used instead of ScaleVisuals on body
|
||||
|
|
@ -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
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -114,8 +114,6 @@
|
|||
Kidneys: OrganHumanKidneys
|
||||
- type: HumanoidProfile
|
||||
species: Motorkind
|
||||
- type: ScaleVisuals
|
||||
speciesScale: 2, 2
|
||||
|
||||
- type: entity
|
||||
name: Urist McQueen
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
Heart: OrganAnimalHeart
|
||||
Stomach: OrganAvaliStomach
|
||||
Liver: OrganAnimalLiver
|
||||
Kidneys: OrganHumanKidneys
|
||||
Kidneys: OrganAnimalKidneys
|
||||
- type: HumanoidProfile
|
||||
species: Avali
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
Heart: OrganAnimalHeart
|
||||
Stomach: OrganFeroxiStomach
|
||||
Liver: OrganAnimalLiver
|
||||
Kidneys: OrganHumanKidneys
|
||||
Kidneys: OrganAnimalKidneys
|
||||
- type: HumanoidProfile
|
||||
species: Feroxi
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
Loading…
Reference in New Issue