Merge branch 'master' into offmed-staging

This commit is contained in:
Janet Blackquill
2025-10-07 23:41:47 -04:00
352 changed files with 2698 additions and 1901 deletions

View File

@@ -14,6 +14,9 @@ namespace Content.Client.Administration.UI.Notes;
[GenerateTypedNameReferences]
public sealed partial class AdminNotesLine : BoxContainer
{
[Dependency] private readonly ILogManager _logManager = default!;
private readonly ISawmill _sawmill = default!;
private readonly SpriteSystem _sprites;
private const string AdminNotesTextureBase = "/Textures/Interface/AdminNotes/";
@@ -33,6 +36,8 @@ public sealed partial class AdminNotesLine : BoxContainer
public AdminNotesLine(SpriteSystem sprites, SharedAdminNote note)
{
RobustXamlLoader.Load(this);
_sawmill = _logManager.GetSawmill("admin.notes");
_sprites = sprites;
Note = note;
@@ -61,7 +66,7 @@ public sealed partial class AdminNotesLine : BoxContainer
if (iconPath is null)
{
SeverityRect.Visible = false;
Logger.WarningS("admin.notes", $"Could not find an icon for note ID {Note.Id}");
_sawmill.Warning($"Could not find an icon for note ID {Note.Id}");
}
else
{

View File

@@ -37,8 +37,7 @@ public sealed class TypingIndicatorVisualizerSystem : VisualizerSystem<TypingInd
if (!layerExists)
layer = SpriteSystem.LayerMapReserve((uid, args.Sprite), TypingIndicatorLayers.Base);
SpriteSystem.LayerSetRsi((uid, args.Sprite), layer, proto.SpritePath);
SpriteSystem.LayerSetRsiState((uid, args.Sprite), layer, proto.TypingState);
SpriteSystem.LayerSetRsi((uid, args.Sprite), layer, proto.SpritePath, proto.TypingState);
args.Sprite.LayerSetShader(layer, proto.Shader);
SpriteSystem.LayerSetOffset((uid, args.Sprite), layer, proto.Offset);

View File

@@ -30,8 +30,10 @@ namespace Content.Client.Construction.UI
[Dependency] private readonly IUserInterfaceManager _uiManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IClientPreferencesManager _preferencesManager = default!;
private readonly SpriteSystem _spriteSystem;
[Dependency] private readonly ILogManager _logManager = default!;
private readonly ISawmill _sawmill = default!;
private readonly SpriteSystem _spriteSystem;
private readonly IConstructionMenuView _constructionView;
private readonly EntityWhitelistSystem _whitelistSystem;
@@ -87,6 +89,8 @@ namespace Content.Client.Construction.UI
{
// This is a lot easier than a factory
IoCManager.InjectDependencies(this);
_sawmill = _logManager.GetSawmill("construction.menu");
_constructionView = new ConstructionMenu();
_whitelistSystem = _entManager.System<EntityWhitelistSystem>();
_spriteSystem = _entManager.System<SpriteSystem>();
@@ -284,7 +288,7 @@ namespace Content.Client.Construction.UI
if (!_constructionSystem!.TryGetRecipePrototype(recipe.ID, out var targetProtoId))
{
Logger.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.",
_sawmill.Error("Cannot find the target prototype in the recipe cache with the id \"{0}\" of {1}.",
recipe.ID,
nameof(ConstructionPrototype));
continue;

View File

@@ -7,7 +7,6 @@ using Robust.Client.UserInterface;
using Robust.Shared.ContentPack;
using Robust.Shared.Prototypes;
using Robust.Shared.Reflection;
using Robust.Shared.Sandboxing;
using Robust.Shared.Utility;
using static Pidgin.Parser;
@@ -21,7 +20,7 @@ public sealed partial class DocumentParsingManager
[Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly IReflectionManager _reflectionManager = default!;
[Dependency] private readonly IResourceManager _resourceManager = default!;
[Dependency] private readonly ISandboxHelper _sandboxHelper = default!;
[Dependency] private readonly IDynamicTypeFactory _dynamicTypeFactory = default!;
private readonly Dictionary<string, Parser<char, Control>> _tagControlParsers = new();
private Parser<char, Control> _controlParser = default!;
@@ -43,7 +42,7 @@ public sealed partial class DocumentParsingManager
foreach (var typ in _reflectionManager.GetAllChildren<IDocumentTag>())
{
_tagControlParsers.Add(typ.Name, CreateTagControlParser(typ.Name, typ, _sandboxHelper));
_tagControlParsers.Add(typ.Name, CreateTagControlParser(typ.Name, typ, _dynamicTypeFactory));
}
ControlParser = whitespaceAndCommentParser.Then(_controlParser.Many());
@@ -51,22 +50,22 @@ public sealed partial class DocumentParsingManager
_sawmill = Logger.GetSawmill("Guidebook");
}
public bool TryAddMarkup(Control control, ProtoId<GuideEntryPrototype> entryId, bool log = true)
public bool TryAddMarkup(Control control, ProtoId<GuideEntryPrototype> entryId)
{
if (!_prototype.Resolve(entryId, out var entry))
return false;
using var file = _resourceManager.ContentFileReadText(entry.Text);
return TryAddMarkup(control, file.ReadToEnd(), log);
return TryAddMarkup(control, file.ReadToEnd());
}
public bool TryAddMarkup(Control control, GuideEntry entry, bool log = true)
public bool TryAddMarkup(Control control, GuideEntry entry)
{
using var file = _resourceManager.ContentFileReadText(entry.Text);
return TryAddMarkup(control, file.ReadToEnd(), log);
return TryAddMarkup(control, file.ReadToEnd());
}
public bool TryAddMarkup(Control control, string text, bool log = true)
public bool TryAddMarkup(Control control, string text)
{
try
{
@@ -87,14 +86,14 @@ public sealed partial class DocumentParsingManager
return true;
}
private Parser<char, Control> CreateTagControlParser(string tagId, Type tagType, ISandboxHelper sandbox)
private Parser<char, Control> CreateTagControlParser(string tagId, Type tagType, IDynamicTypeFactory typeFactory)
{
return Map(
(args, controls) =>
{
try
{
var tag = (IDocumentTag) sandbox.CreateInstance(tagType);
var tag = (IDocumentTag) typeFactory.CreateInstance(tagType);
if (!tag.TryParseTag(args, out var control))
{
_sawmill.Error($"Failed to parse {tagId} args");

View File

@@ -8,6 +8,11 @@ namespace Content.Client.Guidebook.Richtext;
[UsedImplicitly]
public sealed class Table : TableContainer, IDocumentTag
{
[Dependency] private readonly ILogManager _logManager = default!;
private ISawmill Sawmill => _sawmill ??= _logManager.GetSawmill("table");
private ISawmill? _sawmill;
public bool TryParseTag(Dictionary<string, string> args, [NotNullWhen(true)] out Control? control)
{
HorizontalExpand = true;
@@ -15,7 +20,7 @@ public sealed class Table : TableContainer, IDocumentTag
if (!args.TryGetValue("Columns", out var columns) || !int.TryParse(columns, out var columnsCount))
{
Logger.Error("Guidebook tag \"Table\" does not specify required property \"Columns.\"");
Sawmill.Error("Guidebook tag \"Table\" does not specify required property \"Columns.\"");
control = null;
return false;
}

View File

@@ -1,4 +1,4 @@
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
@@ -12,6 +12,11 @@ namespace Content.Client.Guidebook.RichText;
[UsedImplicitly]
public sealed class TextLinkTag : IMarkupTagHandler
{
[Dependency] private readonly ILogManager _logManager = default!;
private ISawmill Sawmill => _sawmill ??= _logManager.GetSawmill(Name);
private ISawmill? _sawmill;
public static Color LinkColor => Color.CornflowerBlue;
public string Name => "textlink";
@@ -53,7 +58,7 @@ public sealed class TextLinkTag : IMarkupTagHandler
if (control.TryGetParentHandler<ILinkClickHandler>(out var handler))
handler.HandleClick(link);
else
Logger.Warning("Warning! No valid ILinkClickHandler found.");
Sawmill.Warning("Warning! No valid ILinkClickHandler found.");
}
}

View File

@@ -20,7 +20,9 @@ namespace Content.Client.Launcher
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IClipboardManager _clipboard = default!;
[Dependency] private readonly ILogManager _logManager = default!;
private ISawmill _sawmill = default!;
private LauncherConnectingGui? _control;
private Page _currentPage;
@@ -59,6 +61,8 @@ namespace Content.Client.Launcher
protected override void Startup()
{
_sawmill = _logManager.GetSawmill("launcher-ui");
_control = new LauncherConnectingGui(this, _random, _prototypeManager, _cfg, _clipboard);
_userInterfaceManager.StateRoot.AddChild(_control);
@@ -115,12 +119,12 @@ namespace Content.Client.Launcher
}
else
{
Logger.InfoS("launcher-ui", $"Redial not possible, no Ss14Address");
_sawmill.Info($"Redial not possible, no Ss14Address");
}
}
catch (Exception ex)
{
Logger.ErrorS("launcher-ui", $"Redial exception: {ex}");
_sawmill.Error($"Redial exception: {ex}");
}
return false;
}

View File

@@ -14,12 +14,18 @@ namespace Content.Client.UserInterface.Systems.Alerts.Widgets;
[GenerateTypedNameReferences]
public sealed partial class AlertsUI : UIWidget
{
[Dependency] private readonly ILogManager _logManager = default!;
private readonly ISawmill _sawmill = default!;
// also known as Control.Children?
private readonly Dictionary<AlertKey, AlertControl> _alertControls = new();
public AlertsUI()
{
RobustXamlLoader.Load(this);
_sawmill = _logManager.GetSawmill("alertsui");
}
public void SyncControls(AlertsSystem alertsSystem,
@@ -78,7 +84,7 @@ public sealed partial class AlertsUI : UIWidget
{
if (!alertKey.AlertType.HasValue)
{
Logger.WarningS("alert", "found alertkey without alerttype," +
_sawmill.Warning("found alertkey without alerttype," +
" alert keys should never be stored without an alerttype set: {0}", alertKey);
continue;
}
@@ -86,7 +92,7 @@ public sealed partial class AlertsUI : UIWidget
var alertType = alertKey.AlertType.Value;
if (!alertsSystem.TryGet(alertType, out var newAlert))
{
Logger.ErrorS("alert", "Unrecognized alertType {0}", alertType);
_sawmill.Error("Unrecognized alertType {0}", alertType);
continue;
}

View File

@@ -33,7 +33,9 @@ public sealed class ReplayMainScreen : State
[Dependency] private readonly IClientRobustSerializer _serializer = default!;
[Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!;
[Dependency] private readonly ContentReplayPlaybackManager _replayMan = default!;
[Dependency] private readonly ILogManager _logManager = default!;
private ISawmill _sawmill = default!;
private ReplayMainMenuControl _mainMenuControl = default!;
private SelectReplayWindow? _selectWindow;
private ResPath _directory;
@@ -42,6 +44,8 @@ public sealed class ReplayMainScreen : State
protected override void Startup()
{
_sawmill = _logManager.GetSawmill("replay.screen");
_mainMenuControl = new(_resourceCache);
_userInterfaceManager.StateRoot.AddChild(_mainMenuControl);
@@ -263,7 +267,7 @@ public sealed class ReplayMainScreen : State
}
catch (Exception ex)
{
Logger.Error($"Failed to load replay info. Exception: {ex}");
_sawmill.Error($"Failed to load replay info. Exception: {ex}");
SelectReplay(null);
return;
}

View File

@@ -112,7 +112,9 @@ public sealed class SpaceHeaterSystem : EntitySystem
if (!TryComp<GasThermoMachineComponent>(uid, out var thermoMachine))
return;
thermoMachine.TargetTemperature = float.Clamp(thermoMachine.TargetTemperature + args.Temperature, thermoMachine.MinTemperature, thermoMachine.MaxTemperature);
thermoMachine.TargetTemperature = float.Clamp(thermoMachine.TargetTemperature + args.Temperature,
spaceHeater.MinTemperature,
spaceHeater.MaxTemperature);
UpdateAppearance(uid);
DirtyUI(uid, spaceHeater);

View File

@@ -1,9 +0,0 @@
using Content.Server.Body.Systems;
namespace Content.Server.Body.Components
{
[RegisterComponent, Access(typeof(BrainSystem))]
public sealed partial class BrainComponent : Component
{
}
}

View File

@@ -1,6 +1,3 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Runtime.InteropServices;
using Content.Server.Administration.Logs;
using Content.Server.Administration.Managers;
using Content.Server.Administration.Systems;
@@ -18,6 +15,9 @@ using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Replays;
using Robust.Shared.Utility;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Runtime.InteropServices;
namespace Content.Server.Chat.Managers;
@@ -45,6 +45,7 @@ internal sealed partial class ChatManager : IChatManager
[Dependency] private readonly PlayerRateLimitManager _rateLimitManager = default!;
[Dependency] private readonly ISharedPlayerManager _player = default!;
[Dependency] private readonly DiscordChatLink _discordLink = default!;
[Dependency] private readonly ILogManager _logManager = default!;
/// <summary>
/// The maximum length a player-sent message can be sent
@@ -54,6 +55,7 @@ internal sealed partial class ChatManager : IChatManager
private bool _oocEnabled = true;
private bool _adminOocEnabled = true;
private ISawmill _sawmill = default!;
private readonly Dictionary<NetUserId, ChatUser> _players = new();
public void Initialize()
@@ -64,6 +66,8 @@ internal sealed partial class ChatManager : IChatManager
_configurationManager.OnValueChanged(CCVars.OocEnabled, OnOocEnabledChanged, true);
_configurationManager.OnValueChanged(CCVars.AdminOocEnabled, OnAdminOocEnabledChanged, true);
_sawmill = _logManager.GetSawmill("SERVER");
RegisterRateLimits();
}
@@ -111,7 +115,7 @@ internal sealed partial class ChatManager : IChatManager
{
var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", FormattedMessage.EscapeText(message)));
ChatMessageToAll(ChatChannel.Server, message, wrappedMessage, EntityUid.Invalid, hideChat: false, recordReplay: true, colorOverride: colorOverride);
Logger.InfoS("SERVER", message);
_sawmill.Info(message);
_adminLogger.Add(LogType.Chat, LogImpact.Low, $"Server announcement: {message}");
}

View File

@@ -19,7 +19,7 @@ public sealed partial class ReactionMixerSystem : EntitySystem
{
base.Initialize();
SubscribeLocalEvent<ReactionMixerComponent, AfterInteractEvent>(OnAfterInteract);
SubscribeLocalEvent<ReactionMixerComponent, AfterInteractEvent>(OnAfterInteract, before: [typeof(IngestionSystem)]);
SubscribeLocalEvent<ReactionMixerComponent, ShakeEvent>(OnShake);
SubscribeLocalEvent<ReactionMixerComponent, ReactionMixDoAfterEvent>(OnDoAfter);
}
@@ -29,12 +29,13 @@ public sealed partial class ReactionMixerSystem : EntitySystem
if (!args.Target.HasValue || !args.CanReach || !entity.Comp.MixOnInteract)
return;
if (!MixAttempt(entity, args.Target.Value, out var solution))
if (!MixAttempt(entity, args.Target.Value, out _))
return;
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, entity.Comp.TimeToMix, new ReactionMixDoAfterEvent(), entity, args.Target.Value, entity);
_doAfterSystem.TryStartDoAfter(doAfterArgs);
args.Handled = true;
}
private void OnDoAfter(Entity<ReactionMixerComponent> entity, ref ReactionMixDoAfterEvent args)

View File

@@ -13,11 +13,14 @@ namespace Content.Server.GameTicking.Commands
[AnyCommand]
sealed class JoinGameCommand : IConsoleCommand
{
[Dependency] private readonly ILogManager _logManager = default!;
[Dependency] private readonly IEntityManager _entManager = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
private readonly ISawmill _sawmill = default!;
public string Command => "joingame";
public string Description => "";
public string Help => "";
@@ -25,6 +28,8 @@ namespace Content.Server.GameTicking.Commands
public JoinGameCommand()
{
IoCManager.InjectDependencies(this);
_sawmill = _logManager.GetSawmill("security");
}
public void Execute(IConsoleShell shell, string argStr, string[] args)
{
@@ -46,7 +51,7 @@ namespace Content.Server.GameTicking.Commands
if (ticker.PlayerGameStatuses.TryGetValue(player.UserId, out var status) && status == PlayerGameStatus.JoinedGame)
{
Logger.InfoS("security", $"{player.Name} ({player.UserId}) attempted to latejoin while in-game.");
_sawmill.Info($"{player.Name} ({player.UserId}) attempted to latejoin while in-game.");
shell.WriteError($"{player.Name} is not in the lobby. This incident will be reported.");
return;
}

View File

@@ -1,11 +0,0 @@
namespace Content.Server.Ghost.Components
{
[RegisterComponent]
public sealed partial class GhostOnMoveComponent : Component
{
[DataField("canReturn")] public bool CanReturn { get; set; } = true;
[DataField("mustBeDead")]
public bool MustBeDead = false;
}
}

View File

@@ -9,4 +9,5 @@ public abstract partial class NPCComponent : SharedNPCComponent
/// </summary>
[DataField("blackboard", customTypeSerializer: typeof(NPCBlackboardSerializer))]
public NPCBlackboard Blackboard = new();
// TODO FULL GAME SAVE Serialize this
}

View File

@@ -24,6 +24,7 @@ public sealed partial class HTNComponent : NPCComponent
/// </summary>
[ViewVariables]
public HTNPlan? Plan;
// TODO FULL GAME SAVE serialize this?
/// <summary>
/// How long to wait after having planned to try planning again.

View File

@@ -33,6 +33,7 @@ public sealed class HTNSystem : EntitySystem
base.Initialize();
SubscribeLocalEvent<HTNComponent, MobStateChangedEvent>(_npc.OnMobStateChange);
SubscribeLocalEvent<HTNComponent, MapInitEvent>(_npc.OnNPCMapInit);
SubscribeLocalEvent<HTNComponent, ComponentStartup>(_npc.OnNPCStartup);
SubscribeLocalEvent<HTNComponent, PlayerAttachedEvent>(_npc.OnPlayerNPCAttach);
SubscribeLocalEvent<HTNComponent, PlayerDetachedEvent>(_npc.OnPlayerNPCDetach);
SubscribeLocalEvent<HTNComponent, ComponentShutdown>(OnHTNShutdown);

View File

@@ -0,0 +1,28 @@
using Content.Shared.StatusEffectNew;
using Robust.Shared.Prototypes;
namespace Content.Server.NPC.HTN.Preconditions;
/// <summary>
/// Returns true if entity have specified status effect
/// </summary>
public sealed partial class HasStatusEffectPrecondition : HTNPrecondition
{
private StatusEffectsSystem _statusEffects = default!;
[DataField(required: true)]
public EntProtoId StatusEffect;
public override void Initialize(IEntitySystemManager sysManager)
{
base.Initialize(sysManager);
_statusEffects = sysManager.GetEntitySystem<StatusEffectsSystem>();
}
public override bool IsMet(NPCBlackboard blackboard)
{
var owner = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner);
return _statusEffects.HasStatusEffect(owner, StatusEffect);
}
}

View File

@@ -63,9 +63,13 @@ namespace Content.Server.NPC.Systems
WakeNPC(uid, component);
}
public void OnNPCMapInit(EntityUid uid, HTNComponent component, MapInitEvent args)
public void OnNPCStartup(EntityUid uid, HTNComponent component, ComponentStartup args)
{
component.Blackboard.SetValue(NPCBlackboard.Owner, uid);
}
public void OnNPCMapInit(EntityUid uid, HTNComponent component, MapInitEvent args)
{
WakeNPC(uid, component);
}

View File

@@ -0,0 +1,6 @@
using Content.Shared.Body.Systems;
namespace Content.Shared.Body.Components;
[RegisterComponent, Access(typeof(BrainSystem))]
public sealed partial class BrainComponent : Component;

View File

@@ -1,12 +1,12 @@
using Content.Server.Body.Components;
using Content.Server.Ghost.Components;
using Content.Shared.Body.Components;
using Content.Shared.Body.Events;
using Content.Shared.Ghost;
using Content.Shared.Mind;
using Content.Shared.Mind.Components;
using Content.Shared.Mobs.Components;
using Content.Shared.Pointing;
namespace Content.Server.Body.Systems;
namespace Content.Shared.Body.Systems;
public sealed class BrainSystem : EntitySystem
{
@@ -43,4 +43,3 @@ public sealed class BrainSystem : EntitySystem
args.Cancel();
}
}

View File

@@ -0,0 +1,13 @@
using Robust.Shared.GameStates;
namespace Content.Shared.Ghost;
[RegisterComponent, NetworkedComponent]
public sealed partial class GhostOnMoveComponent : Component
{
[DataField]
public bool CanReturn = true;
[DataField]
public bool MustBeDead;
}

View File

@@ -205,6 +205,7 @@ namespace Content.Shared.Preferences
return new()
{
Species = species,
Appearance = HumanoidCharacterAppearance.DefaultWithSpecies(species),
};
}

View File

@@ -1,15 +1,19 @@
using Content.Shared.Inventory;
using Robust.Shared.GameStates;
namespace Content.Shared.Storage.Components;
/// <summary>
/// Applies an ongoing pickup area around the attached entity.
/// </summary>
[RegisterComponent, AutoGenerateComponentPause]
[RegisterComponent, NetworkedComponent]
[AutoGenerateComponentState]
[AutoGenerateComponentPause]
public sealed partial class MagnetPickupComponent : Component
{
[ViewVariables(VVAccess.ReadWrite), DataField("nextScan")]
[AutoPausedField]
[AutoNetworkedField]
public TimeSpan NextScan = TimeSpan.Zero;
/// <summary>

View File

@@ -47,6 +47,7 @@ public sealed class MagnetPickupSystem : EntitySystem
continue;
comp.NextScan += ScanDelay;
Dirty(uid, comp);
if (!_inventory.TryGetContainingSlot((uid, xform, meta), out var slotDef))
continue;

View File

@@ -1447,5 +1447,19 @@ Entries:
id: 175
time: '2025-09-25T21:43:53.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40246
- author: Kowlin
changes:
- message: Adjusted meatspike admin log severities.
type: Tweak
id: 176
time: '2025-10-03T11:31:37.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40604
- author: Kowlin
changes:
- message: Stun prods are now high severity when crafted.
type: Tweak
id: 177
time: '2025-10-05T07:40:15.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40709
Name: Admin
Order: 2

View File

@@ -1,312 +1,4 @@
Entries:
- author: EmoGarbage404
changes:
- message: You can now patch holes in the floors of the evac shuttle and ATS.
type: Fix
id: 8501
time: '2025-05-17T01:54:27.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36989
- author: Lanedon
changes:
- message: Multiple head gear now hides the hair !
type: Fix
id: 8502
time: '2025-05-17T05:05:43.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36818
- author: ArtisticRoomba
changes:
- message: Metal foam grenades have been added to station engineer lockers.
type: Add
- message: Metal foam grenades have been tweaked to cover more area over a longer
period of time.
type: Tweak
- message: Metal foam grenades now have a 5 second timer.
type: Tweak
- message: Aluminum foam walls now take one hit to destroy.
type: Tweak
id: 8503
time: '2025-05-17T05:21:24.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37476
- author: EmoGarbage404
changes:
- message: Fixed tetherguns not having a beam when dragging.
type: Fix
id: 8504
time: '2025-05-17T05:22:40.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37510
- author: aada
changes:
- message: Id cards now have the same max length as character names.
type: Fix
id: 8505
time: '2025-05-17T05:27:39.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/35407
- author: ArtisticRoomba
changes:
- message: Radiation collector power output has been buffed. Remember engineers,
the third level on the PA is safe for long term use!
type: Tweak
id: 8506
time: '2025-05-17T07:45:44.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37475
- author: Ilya246
changes:
- message: Shuttles can now deal (weak) collision damage.
type: Add
id: 8507
time: '2025-05-17T17:11:08.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37422
- author: VlaDOS1408
changes:
- message: Fax UI Menu has been reworked and now behaves better on resizing
type: Tweak
id: 8508
time: '2025-05-17T17:20:11.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/33825
- author: YotaXP
changes:
- message: Favorites selected in the construction menu will now persist between
rounds.
type: Tweak
id: 8509
time: '2025-05-17T17:37:19.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/35867
- author: perryprog
changes:
- message: You can now link cutter machines to material silos.
type: Tweak
id: 8510
time: '2025-05-18T01:51:58.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37554
- author: Spangs04
changes:
- message: Resprited Telecomms
type: Tweak
id: 8511
time: '2025-05-18T02:10:56.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/35811
- author: EmoGarbage404
changes:
- message: Added the salvage job board! This board allows salvagers to access and
complete a variety of jobs in order to rank up, earn spesos, and unlock new
cargo orders. Work hard and you too may become a Supreme Salvager.
type: Add
id: 8512
time: '2025-05-18T04:02:52.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37549
- author: EmoGarbage404
changes:
- message: Lathes can no longer connect to research servers on separate grids
type: Tweak
id: 8513
time: '2025-05-18T04:04:28.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36821
- author: 0leshe
changes:
- message: Changed max and minimum amount of jigger transfer amount
type: Tweak
id: 8514
time: '2025-05-18T04:14:23.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/35962
- author: ArtisticRoomba
changes:
- message: Air grenades have been added! These can fill up a spaced room of ~30
tiles with fresh air. They can be found in Atmospheric Technician's lockers.
Use them wisely!
type: Add
id: 8515
time: '2025-05-18T04:32:52.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37531
- author: EmoGarbage404
changes:
- message: Various salvage equipment can now be unlocked through the job board and
purchased through cargo.
type: Add
- message: Space debris and the mining asteroid no longer generate salvage equipment
type: Tweak
id: 8516
time: '2025-05-18T06:40:59.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37561
- author: mrjajkes
changes:
- message: Add Blatantly Nuclear as a Nuke Song.
type: Add
id: 8517
time: '2025-05-18T07:30:20.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/35927
- author: metalgearsloth
changes:
- message: Shuttles now are treated as rooved for daylight.
type: Tweak
id: 8518
time: '2025-05-18T07:47:35.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36112
- author: ScarKy0
changes:
- message: Deliveries can now very rarely spawn as bomb-type! They grant A LOT of
spesos... at a price.
type: Add
id: 8519
time: '2025-05-18T08:57:23.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37069
- author: ScarKy0
changes:
- message: Aloxadone has been tweaked. The recipe has been altered to be simplier
to make and the healing values have been increased.
type: Tweak
id: 8523
time: '2025-05-18T09:16:14.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37239
- author: Simyon
changes:
- message: The Syndicate and Wizard Communications Console now no longer show who
the message was sent by.
type: Tweak
id: 8524
time: '2025-05-18T09:18:18.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37567
- author: SuperGDPWYL
changes:
- message: A Lone Operative detonating the nuke on-station will now end the round.
type: Add
- message: The endscreen will now properly show how successful Lone Operatives were.
type: Fix
id: 8525
time: '2025-05-18T11:34:33.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36498
- author: metalgearsloth
changes:
- message: Fixes being able to grab items through walls.
type: Fix
id: 8526
time: '2025-05-18T14:38:32.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37570
- author: qwerltaz
changes:
- message: Water vapor is now dangerous to slime life-forms.
type: Add
id: 8527
time: '2025-05-18T22:55:40.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/32751
- author: slarticodefast
changes:
- message: Added a new keybind for swapping hands in the other direction (if you
got more than two). Defaults to Shift+X. Useful for cycling through borg modules.
type: Add
id: 8528
time: '2025-05-19T01:17:35.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37588
- author: keronshb
changes:
- message: Force Wall timers changed so it despawns faster than it can be cast.
type: Tweak
- message: Force Wall users can now interact while inside of the wall, but also
can be attacked while inside of the wall.
type: Tweak
id: 8529
time: '2025-05-19T01:30:46.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37525
- author: Samuka
changes:
- message: Holy water now evaporates.
type: Fix
id: 8530
time: '2025-05-19T16:14:40.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37611
- author: aada
changes:
- message: Pepper makes you cough.
type: Add
id: 8531
time: '2025-05-19T18:23:38.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36358
- author: Entvari
changes:
- message: Hyper Capacity Powercells are now available as Tier 3 Industrial Research.
type: Add
- message: The Tier 3 Industrial Research 'Portable Fission' has been renamed to
Optimized Microgalvanism to better reflect this.
type: Tweak
id: 8532
time: '2025-05-19T22:35:08.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37619
- author: RedBookcase
changes:
- message: The Salvage section of the guidebook has been updated.
type: Fix
id: 8533
time: '2025-05-19T22:39:23.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37593
- author: SpeltIncorrectyl
changes:
- message: Kammerer now has a tighter spread to compensate for its lower rate of
fire.
type: Tweak
id: 8534
time: '2025-05-19T22:45:18.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37616
- author: Pronana
changes:
- message: Galoshes now slow on puddles again
type: Fix
id: 8535
time: '2025-05-20T02:47:03.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37628
- author: slarticodefast
changes:
- message: Added a reduced motion version of the seeing rainbows overlay.
type: Add
id: 8536
time: '2025-05-20T12:36:08.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37584
- author: B-Kirill
changes:
- message: Added new fun meteors variations (Cosmic cow, Honksteroid, Space potato)
that drop unique loot upon destruction. Urist McMeteor now shatters into meat
when explodes.
type: Add
id: 8537
time: '2025-05-20T13:04:27.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37327
- author: Kittygyat
changes:
- message: Added a new, faster way for slimepeople to access their own special inventory,
with LMB.
type: Add
id: 8538
time: '2025-05-20T16:55:21.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37592
- author: FrostWinters
changes:
- message: Histamines no longer cause radiation.
type: Tweak
- message: Epinephrine treats Histamines above OD threshold.
type: Tweak
id: 8544
time: '2025-05-21T01:12:54.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37460
- author: Minty642
changes:
- message: Added fungal soil, maintenance version of hydroponics.
type: Add
id: 8545
time: '2025-05-21T04:59:51.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36245
- author: metalgearsloth
changes:
- message: Picking up items with area pickups (e.g. trash bags) no longer lags the
game.
type: Fix
id: 8546
time: '2025-05-21T06:16:27.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37638
- author: Errant
changes:
- message: High-energy shuttle impacts now deal much less damage.
type: Tweak
id: 8547
time: '2025-05-21T10:37:36.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37578
- author: metalgearsloth
changes:
- message: Shuttle impact force is now proportional to direction of impact.
@@ -3963,3 +3655,307 @@
id: 9011
time: '2025-09-27T17:01:14.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39914
- author: SignalSender
changes:
- message: reworked salv instrument spawns to include more instruments
type: Tweak
id: 9012
time: '2025-09-27T20:51:52.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40572
- author: keronshb
changes:
- message: 'EXPERIMENTAL: Tasers, a short-ranged gun capable of causing targets
to become prone, are now added into Warden, HoS, and Security locker fills.'
type: Add
id: 9013
time: '2025-09-27T21:21:05.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39087
- author: SurrealShibe
changes:
- message: Vulpkanin now audibly gasp.
type: Fix
id: 9014
time: '2025-09-28T03:25:39.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40579
- author: keronshb
changes:
- message: Tasers can now be used by Pacifists.
type: Tweak
id: 9015
time: '2025-09-28T03:43:02.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40588
- author: beck-thompson
changes:
- message: Labelers can no longer add markup tags to items
type: Fix
id: 9016
time: '2025-09-28T18:33:27.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40600
- author: SirWarock
changes:
- message: Fixed Shotgun Ammo Count not properly updating when reloading!
type: Fix
id: 9017
time: '2025-09-29T10:28:45.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40568
- author: BoskiYourk, spanky_spanky
changes:
- message: Microwaves can now be picked up when unwrenched, and optionally, used
as a weapon.
type: Tweak
id: 9018
time: '2025-09-30T21:55:10.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40618
- author: leahcat
changes:
- message: moved desoxyephedrine from ambrosia plants to glasstle.
type: Tweak
id: 9019
time: '2025-10-01T04:05:41.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40638
- author: SignalSender
changes:
- message: Musicians now have a Stage Name
type: Tweak
id: 9020
time: '2025-10-01T11:46:34.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40640
- author: Velcroboy
changes:
- message: Shutters, blast doors, and lights can now be linked using the "Link Defaults"
button.
type: Tweak
id: 9021
time: '2025-10-01T20:22:50.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37690
- author: YoungThugSS14
changes:
- message: The Prisoner Eva Suit now has the same stats as an emergency eva suit.
type: Tweak
id: 9022
time: '2025-10-01T20:23:37.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36696
- author: K-Dynamic
changes:
- message: Puddles now spill over at 50u instead of 20u.
type: Add
id: 9023
time: '2025-10-01T20:28:13.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/38044
- author: Mixelz
changes:
- message: Circuit Totes, a new type of box to compactly carry conspicous chunks
of Circuits!
type: Add
- message: Head Lockers now compact all circuit boards & stamps into boxes for convenience.
type: Tweak
- message: The Surplus Circuit Crate is now a Tote!
type: Tweak
id: 9024
time: '2025-10-01T23:22:33.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39868
- author: sudobeans
changes:
- message: utility knife, which can be made in the autolathe.
type: Add
id: 9025
time: '2025-10-02T09:02:36.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39567
- author: kosticia
changes:
- message: Anomalies with inconsistent particles no longer shuffle right before
collision with particle.
type: Fix
id: 9026
time: '2025-10-02T20:11:25.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40624
- author: archee1
changes:
- message: Material doors now have destruction sounds and will drop a portion of
their construction materials when destroyed.
type: Add
- message: Material doors now have reduced health, resistances, construction time,
and construction costs
type: Tweak
id: 9027
time: '2025-10-02T22:47:11.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/36597
- author: PJB3005
changes:
- message: You can stuff the nuke disk in plushies now.
type: Tweak
id: 9028
time: '2025-10-03T09:53:41.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40674
- author: Crude Oil
changes:
- message: Returned PDA lights to original brightness
type: Fix
id: 9029
time: '2025-10-03T20:33:25.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40687
- author: NoreUhh
changes:
- message: The Syndicate Cyborg Martyr Module can now be used multiple times.
type: Tweak
id: 9030
time: '2025-10-03T23:35:01.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40224
- author: K-Dynamic
changes:
- message: Adds smart equip function to pocket 1, pocket 2, and suit storage slots.
Default binds are Shift+F and Shift+G for first and second pocket, Shift+H for
suit storage.
type: Add
id: 9031
time: '2025-10-04T01:44:30.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/37975
- author: AwareFoxy
changes:
- message: Added Pride-O-Mat to marathon!
type: Add
id: 9032
time: '2025-10-04T16:50:52.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40696
- author: Moomoobeef
changes:
- message: Evac directional signs now glow in the dark!
type: Tweak
id: 9033
time: '2025-10-04T20:27:15.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/38545
- author: NoreUhh
changes:
- message: The Ian suit makes you bark now. Woof!
type: Tweak
id: 9034
time: '2025-10-05T08:06:06.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40694
- author: Princess-Cheeseballs
changes:
- message: Incendiary rounds now deal a mix of pierce damage and heat damage instead
of primarily heat damage.
type: Tweak
id: 9035
time: '2025-10-05T08:38:36.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39204
- author: Centronias
changes:
- message: Stirring is once again prioritized over drinking. No longer will your
bartender be very tempted to taste test your drink as they stir it.
type: Fix
id: 9036
time: '2025-10-05T22:12:24.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40704
- author: jessicamaybe
changes:
- message: Skeletons are now playable instruments!
type: Add
id: 9037
time: '2025-10-07T00:59:20.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40009
- author: Huaqas, Davyei
changes:
- message: 3 new Holy Books have been added to the Chaplain's loadout.
type: Add
id: 9038
time: '2025-10-07T07:39:37.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39181
- author: Huaqas
changes:
- message: The Tanakh and Satanic bibles have been removed.
type: Remove
id: 9039
time: '2025-10-07T09:14:49.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39698
- author: jessicamaybe
changes:
- message: Gorillas can now pull objects.
type: Tweak
id: 9040
time: '2025-10-07T09:31:46.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40700
- author: SurrealShibe
changes:
- message: Added the nutri-batard to mime survival boxes in place of the nutri-brick.
type: Add
id: 9041
time: '2025-10-07T10:18:50.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40601
- author: Lordbrandon12
changes:
- message: Fixed issue allowing space heater temperature to be set above the allowed
limit.
type: Fix
id: 9042
time: '2025-10-07T12:53:59.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40453
- author: IProduceWidgets
changes:
- message: Vox that take excessive amounts of fire damage will now burn into fried
chicken.
type: Tweak
id: 9043
time: '2025-10-07T14:12:25.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40115
- author: BoskiYourk, spanky_spanky
changes:
- message: The Head of Security now has an energy magnum, a self-charging multi-mode
laser revolver, in their locker instead of the energy shotgun.
type: Add
- message: The Warden now has the energy shotgun in their locker round-start.
type: Tweak
id: 9044
time: '2025-10-07T16:05:07.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40615
- author: FungiFellow
changes:
- message: Cancer Mice now have unique ghost role entries.
type: Tweak
id: 9045
time: '2025-10-07T16:33:42.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40102
- author: FungiFellow
changes:
- message: Biosuits can now fit Gastanks in Suit Storage, the Security Biosuit can
fit both Gastanks and Weapons
type: Add
- message: Security Biosuits Cost has been increased 800->1600
type: Tweak
id: 9046
time: '2025-10-07T18:22:07.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/39888
- author: Hitlinemoss
changes:
- message: MRE wrappers are no longer twice as nutritious as the actual food within.
type: Fix
id: 9047
time: '2025-10-07T19:36:32.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40761
- author: TrixxedHeart
changes:
- message: 'Added new markings for Vox: 3 new beak types, 2 beak markings, 1 overlay
6 head, and 3 chest markings.'
type: Add
- message: Fixed sprite layering issue where a Vox's back leg would appear on top
of their front leg in side sprites.
type: Fix
id: 9048
time: '2025-10-07T23:14:11.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40569
- author: Hitlinemoss
changes:
- message: Bartenders with a significant amount of playtime can now select a golden
shaker in the loadout menu.
type: Add
id: 9049
time: '2025-10-07T23:37:43.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40762
- author: SlamBamActionman
changes:
- message: The Energy Shotgun no longer has a self-recharge or wide fire mode, but
charges faster in rechargers.
type: Tweak
id: 9050
time: '2025-10-08T02:51:21.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40757

View File

@@ -731,4 +731,22 @@
id: 88
time: '2025-09-25T21:36:16.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40546
- author: Absotively
changes:
- message: Updated Elkridge's burn chambers for safer delta pressure handling
type: Tweak
id: 89
time: '2025-09-30T03:45:17.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40590
- author: ToastEnjoyer
changes:
- message: On Marathon, added various improvements to engineering, parts of maints,
and some service improvements.
type: Tweak
- message: On Marathon, the security front has been fixed so that power is there
roundstart.
type: Fix
id: 90
time: '2025-10-07T02:21:21.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/40725
Order: 1

View File

@@ -1,5 +1,5 @@
discord-round-notifications-new = A new round is starting!
discord-round-notifications-started = Round #{$id} on map "{$map}" started.
discord-round-notifications-end = Round #{$id} has ended. It lasted for {$hours} hours, {$minutes} minutes, and {$seconds} seconds.
discord-round-notifications-end-ping = <@&{$roleId}>, the server will reboot shortly!
discord-round-notifications-end-ping = <@&{$roleId}>, a new round will start soon!
discord-round-notifications-unknown-map = Unknown

View File

@@ -32,6 +32,9 @@ ghost-role-information-silicon-rules = You are a [color={role-type-silicon-color
ghost-role-information-mouse-name = Mouse
ghost-role-information-mouse-description = A hungry and mischievous mouse.
ghost-role-information-cancer-mouse-name = Cancer Mouse
ghost-role-information-cancer-mouse-description = An irradiated mouse, spread your affliction and seek food.
ghost-role-information-mothroach-name = Mothroach
ghost-role-information-mothroach-description = A cute but mischievous mothroach.

View File

@@ -1,14 +1,62 @@
marking-TattooVoxNightlingHead-tattoo_nightling_head = Vox Head Tattoo (Nightling)
marking-TattooVoxNightlingHead = Vox Head Tattoo (Nightling)
marking-TattooVoxArrowHead-tattoo_arrow_head = Vox Head Tattoo (Arrow)
marking-TattooVoxArrowHead = Vox Head Tattoo (Arrow)
marking-VoxTattooEyeliner-eyeliner = Eyeliner
marking-VoxTattooEyeliner = Eyeliner
marking-VoxVisage-visage = Visage (Full)
marking-VoxVisage = Visage (Full)
marking-VoxVisageL-visage_l = Visage (Left)
marking-VoxVisageL = Visage (Left)
marking-VoxVisageR-visage_r = Visage (Right)
marking-VoxVisageR = Visage (Right)
marking-VoxCheek-cheekblush = Cheeks
marking-VoxCheek = Cheeks
marking-VoxBeak-beak = Beak (Pointed)
marking-VoxBeak = Beak (Pointed)
marking-VoxBeakSquareCere-beak_squarecere = Beak (Square Cere)
marking-VoxBeakSquareCere = Beak (Square Cere)
marking-VoxBeakHooked-beak_hooked = Beak (Hooked)
marking-VoxBeakHooked = Beak (Hooked)
marking-VoxBeakShaved-beak_shaved = Beak (Shaved)
marking-VoxBeakShaved = Beak (Shaved)
marking-VoxBeakCoverTip-beakcover_tip = Beak Tip
marking-VoxBeakCoverTip = Beak Tip
marking-VoxBeakCoverStripe-beakcover_stripe = Beak Stripe
marking-VoxBeakCoverStripe = Beak Stripe
marking-TattooVoxHeartLeftArm-heart_l_arm = Vox Left Arm Tattoo (Heart)
marking-TattooVoxHeartLeftArm = Vox Left Arm Tattoo (Heart)
marking-TattooVoxHeartRightArm-heart_r_arm = Vox Right Arm Tattoo (Heart)
marking-TattooVoxHeartRightArm = Vox Right Arm Tattoo (Heart)
marking-TattooVoxHiveChest-hive_s = Vox Chest Tattoo (hive)
marking-TattooVoxHiveChest = Vox Chest Tattoo (hive)
marking-TattooVoxHiveChest-hive_s = Vox Chest Tattoo (Hive)
marking-TattooVoxHiveChest = Vox Chest Tattoo (Hive)
marking-TattooVoxNightlingChest-nightling_s = Vox Chest Tattoo (nightling)
marking-TattooVoxNightlingChest = Vox Chest Tattoo (nightling)
marking-TattooVoxNightlingChest-nightling_s = Vox Chest Tattoo (Nightling)
marking-TattooVoxNightlingChest = Vox Chest Tattoo (Nightling)
marking-TattooVoxNightbelt-nightbelt = Vox Stomach Tattoo (Nightling)
marking-TattooVoxNightbelt = Vox Stomach Tattoo (Nightling)
marking-TattooVoxChestV-night_v = Vox Chest Tattoo (V Shape)
marking-TattooVoxChestV = Vox Chest Tattoo (V Shape)
marking-TattooVoxUnderbelly-underbelly = Underbelly
marking-TattooVoxUnderbelly = Underbelly
marking-VoxScarEyeRight-vox_scar_eye_right = Right Eye Scar
marking-VoxScarEyeRight = Eye Scar (Right)

View File

@@ -11,7 +11,7 @@ steal-target-groups-captain-id-card = captain ID card
steal-target-groups-jetpack-captain-filled = captain's jetpack
steal-target-groups-weapon-antique-laser = antique laser pistol
steal-target-groups-nuke-disk = nuclear authentication disk
steal-target-groups-weapon-energy-shot-gun = energy shotgun
steal-target-groups-weapon-energy-magnum = energy magnum
# Thief Collection
steal-target-groups-figurines = figurine

View File

@@ -43,6 +43,7 @@ loadout-group-passenger-neck = Passenger neck
loadout-group-bartender-head = Bartender head
loadout-group-bartender-jumpsuit = Bartender jumpsuit
loadout-group-bartender-outerclothing = Bartender outer clothing
loadout-group-bartender-shaker = Bartender shaker
loadout-group-chef-head = Chef head
loadout-group-chef-mask = Chef mask

File diff suppressed because it is too large Load Diff

View File

@@ -54,7 +54,7 @@
sprite: Clothing/Head/Hoods/Bio/security.rsi
state: icon
product: CrateSecurityBiosuit
cost: 800
cost: 1600
category: cargoproduct-category-name-security
group: market

View File

@@ -183,6 +183,7 @@
- id: DrinkWaterBottleFull
- type: Tag
tags:
- BoxCardboard
- BoxHug
- type: entity
@@ -212,7 +213,7 @@
- id: EmergencyOxygenTankFilled
- id: EmergencyMedipen
- id: Flare
- id: FoodSnackNutribrick
- id: FoodBreadNutriBatard
- id: DrinkWaterBottleFull
- type: entity
@@ -226,7 +227,7 @@
- id: EmergencyNitrogenTankFilled
- id: EmergencyMedipen
- id: Flare
- id: FoodSnackNutribrick
- id: FoodBreadNutriBatard
- id: DrinkWaterBottleFull
- type: Sprite
layers:
@@ -246,7 +247,7 @@
- id: EmergencyOxygenTankFilled
- id: EmergencyMedipen
- id: Flare
- id: FoodSnackNutribrick
- id: FoodBreadCottonNutriBatard
- id: DrinkWaterBottleFull
- type: entity

View File

@@ -408,7 +408,7 @@
- type: Storage
grid:
- 0,0,5,3
whitelist:
whitelist: # TODO cardboard boxes shouldn't have whitelisting
tags:
- Candle
- type: StorageFill

View File

@@ -102,7 +102,7 @@
layers:
- state: box
- state: bodybags
- type: Storage
- type: Storage # TODO cardboard boxes shouldn't have whitelisting
whitelist:
tags:
- BodyBag

View File

@@ -308,7 +308,7 @@
id: LockerFillHeadOfSecurityNoHardsuit
table: !type:AllSelector
children:
- id: WeaponEnergyShotgun
- id: WeaponEnergyMagnum
- id: BookSpaceLaw
- id: BoxEncryptionKeySecurity
- id: CigarGoldCase

View File

@@ -46,6 +46,7 @@
amount: 2
- id: NetworkConfigurator
- id: Binoculars
- id: WeaponEnergyShotgun
- type: entityTable
id: FillLockerWardenHarduit

View File

@@ -1,5 +1,5 @@
- type: entity
parent: ClothingOuterBaseLarge
parent: [ClothingOuterBaseLarge, AllowSuitStorageClothingGasTanks]
id: ClothingOuterBioGeneral
name: bio suit
suffix: Generic
@@ -64,7 +64,7 @@
sprite: Clothing/OuterClothing/Bio/scientist.rsi
- type: entity
parent: [ClothingOuterBioGeneral, BaseSecurityContraband]
parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing, BaseSecurityContraband]
id: ClothingOuterBioSecurity
name: bio suit
suffix: Security
@@ -82,6 +82,10 @@
Piercing: 0.8
- type: ZombificationResistance
zombificationResistanceCoefficient: 0.4
- type: GroupExamine
- type: ClothingSpeedModifier
walkModifier: 0.95
sprintModifier: 0.95
- type: entity
parent: ClothingOuterBioGeneral

View File

@@ -13,6 +13,52 @@
!type:SimpleColoring
color: "#937e3d"
- type: marking
# The cere is the base of the top part of the beak, the cere on this beak, is a square.
id: VoxBeakSquareCere
bodyPart: Snout
markingCategory: Snout
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: beak_squarecere
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxBeakShaved
bodyPart: Snout
markingCategory: Snout
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: beak_shaved
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxBeakHooked
bodyPart: Snout
markingCategory: Snout
forcedColoring: true
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_parts.rsi
state: beak_hooked
coloring:
default:
type:
!type:SimpleColoring
color: "#937e3d"
- type: marking
id: VoxLArmScales
bodyPart: LArm

View File

@@ -54,6 +54,50 @@
- sprite: Mobs/Customization/vox_tattoos.rsi
state: nightling_s
- type: marking
id: TattooVoxNightbelt
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: nightbelt
- type: marking
id: TattooVoxChestV
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: chest_v_1
- sprite: Mobs/Customization/vox_tattoos.rsi
state: chest_v_2
- type: marking
id: TattooVoxUnderbelly
bodyPart: Chest
markingCategory: Chest
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: underbelly
- type: marking
id: TattooVoxTailRing
# TODO // Looks off on some tails (i.e docked/amputated), if conditionals for markings ever get implemented this needs to be updated to account for those.
@@ -131,3 +175,125 @@
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: eyeshadow_large
- type: marking
id: VoxTattooEyeliner
bodyPart: Eyes
markingCategory: Overlay
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: eyeliner
- type: marking
id: VoxBeakCoverStripe
bodyPart: Snout
markingCategory: SnoutCover
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: beakcover_stripe
- type: marking
id: VoxBeakCoverTip
bodyPart: Snout
markingCategory: SnoutCover
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
speciesRestriction: [Vox]
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: beakcover_tip
- type: marking
id: TattooVoxArrowHead
bodyPart: Head
markingCategory: Head
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: tattoo_arrow_head
- type: marking
id: TattooVoxNightlingHead
bodyPart: Head
markingCategory: Head
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: tattoo_nightling_head
- type: marking
id: VoxVisage
bodyPart: Head
markingCategory: Head
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: visage
- type: marking
id: VoxVisageL
bodyPart: Head
markingCategory: Head
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: visage_l
- type: marking
id: VoxVisageR
bodyPart: Head
markingCategory: Head
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: visage_r
- type: marking
id: VoxCheek
bodyPart: Head
markingCategory: Head
speciesRestriction: [Vox]
coloring:
default:
type:
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: Mobs/Customization/vox_tattoos.rsi
state: cheekblush

View File

@@ -1215,6 +1215,8 @@
true
NavSmash: !type:Bool
true
- type: Puller
needsHands: false
- type: Prying
pryPowered: true
force: true
@@ -1978,6 +1980,12 @@
parent: MobMouse
id: MobMouseCancer
components:
- type: GhostRole
name: ghost-role-information-cancer-mouse-name
description: ghost-role-information-cancer-mouse-description
rules: ghost-role-information-freeagent-rules
mindRoles:
- MindRoleGhostRoleFreeAgent
- type: Sprite
color: LightGreen
- type: PointLight

View File

@@ -76,7 +76,7 @@
components:
- type: Spectral
- type: Tag
tags:
tags: # BAD: Intentional removal of inherited tag
- AllowGhostShownByEvent
- type: entity

View File

@@ -109,6 +109,24 @@
32:
sprite: Mobs/Species/Human/displacement.rsi
state: jumpsuit-female
- type: Instrument
program: 13 # Xylophone. Woodblock is 115 (another good option)
- type: ActivatableUI
blockSpectators: true # otherwise they can play client-side music
inHandsOnly: false
singleUser: true
requiresComplex: true
verbOnly: true
verbText: verb-instrument-openui
key: enum.InstrumentUiKey.Key
- type: UserInterface
interfaces:
enum.InstrumentUiKey.Key:
type: InstrumentBoundUserInterface
enum.HumanoidMarkingModifierKey.Key:
type: HumanoidMarkingModifierBoundUserInterface
enum.StrippingUiKey.Key:
type: StrippableBoundUserInterface
- type: entity
parent: BaseSpeciesDummy

View File

@@ -30,6 +30,44 @@
- type: Damageable
damageContainer: Biological
damageModifierSet: Vox
- type: Destructible
thresholds:
- trigger:
!type:DamageTypeTrigger
damageType: Blunt
damage: 400
behaviors:
- !type:GibBehavior { }
- trigger:
!type:DamageTypeTrigger
damageType: Heat
damage: 1500
behaviors:
- !type:SpawnEntitiesBehavior
spawnInContainer: true
spawn:
FoodMeatChickenFriedVox:
min: 3
max: 5
- !type:BurnBodyBehavior { }
- !type:PlaySoundBehavior
sound:
collection: MeatLaserImpact
- trigger:
!type:DamageTypeTrigger
damageType: Radiation
damage: 15
behaviors:
- !type:PopupBehavior
popup: mouth-taste-metal
popupType: LargeCaution
targetOnly: true
- trigger:
!type:DamageTypeTrigger
damageType: Radiation
damage: 40
behaviors:
- !type:VomitBehavior
- type: PassiveDamage
# Augment normal health regen to be able to tank some Poison damage
# This allows Vox to take their mask off temporarily to eat something without needing a trip to medbay afterwards.

View File

@@ -91,7 +91,7 @@
# map: ["enum.OpenableVisuals.Layer"]
## Bases for visuals
# TODO standardize state names for fill levels and openable visuals
# New drinks should mirror these state names to reduce clutter when creating new prototypes
# Basic visualizer for an openable entity. Requires DrinkBaseOpenable
- type: entity
@@ -103,13 +103,14 @@
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "icon_open"}
False: {state: "icon"}
True: {state: "icon_open"} # lid off
False: {state: "icon"} # lid on
- type: Sprite
layers:
- state: icon
map: ["enum.OpenableVisuals.Layer"]
- type: ExaminableSolution
solution: *sol
examinableWhileClosed: false # If you can't see the fill levels on the sprite, we can assume it's opaque
heldOnly: true # If it's opaque, you probably can't see through the open lid from a distance
@@ -121,11 +122,12 @@
- type: Appearance
- type: Sprite
layers:
- state: icon_empty
- state: icon
- state: fill-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: SolutionContainerVisuals
solutionName: *sol
maxFillLevels: 5
fillBaseName: fill-
inHandsMaxFillLevels: 3
@@ -139,7 +141,7 @@
components:
- type: Sprite
layers:
- state: icon_empty
- state: icon
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill-1
map: [ "enum.SolutionContainerLayers.Fill" ]
@@ -169,8 +171,8 @@
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "icon_open"}
False: {state: "icon_empty"}
True: {state: "icon_open"} # lid off
False: {state: "icon_empty"} # lid on
- type: Sprite
layers:
- state: icon_empty

View File

@@ -106,7 +106,7 @@
- type: Sprite
sprite: Objects/Consumable/Drinks/alco-bottle.rsi
layers:
- state: icon_blue # todo add "icon_empty" state
- state: icon_empty
map: ["enum.OpenableVisuals.Layer"]
- state: fill-6
map: ["enum.SolutionContainerLayers.Fill"]
@@ -260,7 +260,7 @@
- type: Sprite
sprite: Objects/Consumable/Drinks/alco-bottle.rsi
layers:
- state: icon_green # todo icon_empty
- state: icon_empty
map: ["enum.OpenableVisuals.Layer"]
- state: fill-6
map: ["enum.SolutionContainerLayers.Fill"]

View File

@@ -9,7 +9,7 @@
solutions:
drink:
maxVol: 30
grindable:
grindable: &grindable
reagents: # 5u -> 1/2 steel sheet (10u)
- ReagentId: Aluminium # Fun fact: soda can makeup is approx. 75% aluminium and 25% tin/iron.
Quantity: 4
@@ -51,12 +51,7 @@
reagents:
- ReagentId: Cola
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Tag
tags:
- Cola
@@ -76,12 +71,7 @@
solutions:
drink:
maxVol: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Tag
tags:
- Cola
@@ -101,12 +91,7 @@
reagents:
- ReagentId: IcedTea
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/ice_tea_can.rsi
- type: Item
@@ -125,12 +110,7 @@
reagents:
- ReagentId: LemonLime
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/lemon-lime.rsi
- type: Item
@@ -149,12 +129,7 @@
reagents:
- ReagentId: LemonLimeCranberry
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/lemon-lime-cranberry.rsi
- type: Item
@@ -206,12 +181,7 @@
reagents:
- ReagentId: GrapeSoda
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/purple_can.rsi
- type: Item
@@ -230,12 +200,7 @@
reagents:
- ReagentId: RootBeer
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/rootbeer.rsi
- type: Item
@@ -258,12 +223,7 @@
reagents:
- ReagentId: SodaWater
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/sodawater.rsi
- type: Item
@@ -282,12 +242,7 @@
reagents:
- ReagentId: SpaceMountainWind
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/space_mountain_wind.rsi
- type: Item
@@ -306,12 +261,7 @@
reagents:
- ReagentId: SpaceUp
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/space-up.rsi
- type: Item
@@ -330,12 +280,7 @@
reagents:
- ReagentId: SolDry
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/sol_dry.rsi
- type: Item
@@ -354,12 +299,7 @@
reagents:
- ReagentId: Starkist
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/starkist.rsi
- type: Item
@@ -378,12 +318,7 @@
reagents:
- ReagentId: TonicWater
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/tonic.rsi
- type: Item
@@ -402,12 +337,7 @@
reagents:
- ReagentId: FourteenLoko
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/fourteen_loko.rsi
- type: Item
@@ -426,12 +356,7 @@
reagents:
- ReagentId: ChangelingSting
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/changelingsting.rsi
- type: Item
@@ -450,12 +375,7 @@
reagents:
- ReagentId: DrGibb
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/dr_gibb.rsi
- type: Item
@@ -478,12 +398,7 @@
Quantity: 20
- ReagentId: Ice
Quantity: 5
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/robustnukie.rsi
- type: Item
@@ -502,12 +417,7 @@
reagents:
- ReagentId: EnergyDrink
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/energy_drink.rsi
- type: Item
@@ -526,12 +436,7 @@
reagents:
- ReagentId: ShamblersJuice
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/shamblersjuice.rsi
- type: Item
@@ -550,12 +455,7 @@
reagents:
- ReagentId: PwrGame
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/pwrgame.rsi
- type: Item
@@ -574,12 +474,7 @@
reagents:
- ReagentId: Beer
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/beer_can.rsi
- type: Item
@@ -602,12 +497,7 @@
reagents:
- ReagentId: Wine
Quantity: 30
grindable:
reagents:
- ReagentId: Aluminium
Quantity: 4
- ReagentId: Iron
Quantity: 1
grindable: *grindable
- type: Sprite
sprite: Objects/Consumable/Drinks/wine_can.rsi
- type: Item

View File

@@ -22,22 +22,16 @@
# A mug is a type of cup.[2]
- type: entity
abstract: true
parent: [ DrinkBaseMaterialPorcelain, DrinkBaseCup ] # todo Should use DrinkVisualsFill, but inheritors have no in-hand and state names are wrong
parent: [ DrinkBaseMaterialPorcelain, DrinkBaseCup, DrinkVisualsFill ]
id: DrinkBaseMug
name: mug
description: A mug.
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/mug.rsi
layers:
- state: icon-0
- state: icon-3
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: icon-
inHandsFillBaseName: null
## Misc Cups
@@ -53,18 +47,13 @@
price: 125
- type: entity
parent: DrinkBaseMug
parent: DrinkBaseMug # a teacup is basically a mug
id: DrinkTeacupEmpty
name: teacup
description: A plain white porcelain teacup.
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/teacup.rsi
layers:
- state: icon-0
- state: icon-4
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: SolutionContainerVisuals
maxFillLevels: 4
@@ -76,20 +65,11 @@
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/glass_coupe_shape.rsi
layers:
- state: icon # todo add "icon_empty" state to match DrinkVisualsFillOverlay
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill1
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- state: icon-front
map: [ "enum.SolutionContainerLayers.Overlay" ]
- type: SolutionContainerVisuals
fillBaseName: fill # todo rename to "fill-" to match DrinkVisualsFillOverlay
inHandsMaxFillLevels: 1
- type: entity
parent: [DrinkBaseMaterialCardboard, DrinkBaseCup] # TODO should use DrinkVisualsFill but state names are wrong and no inhand
parent: [DrinkBaseMaterialCardboard, DrinkBaseCup, DrinkBaseEmptyTrash, DrinkVisualsFill]
id: DrinkWaterCup
name: water cup
description: A paper water cup.
@@ -102,22 +82,14 @@
size: Tiny
- type: Sprite
sprite: Objects/Consumable/Drinks/water_cup.rsi
layers:
- state: icon-0
- state: icon-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: SolutionContainerVisuals
maxFillLevels: 1
fillBaseName: icon-
inHandsFillBaseName: null
- type: Tag
tags:
- Trash
- DrinkCup
- WhitelistChameleon
- type: Appearance
- type: TrashOnSolutionEmpty
solution: drink
- type: Clothing
slots:
- HEAD
@@ -240,16 +212,13 @@
- ReagentId: HotCocoa
Quantity: 20
- type: Icon
sprite: Objects/Consumable/Drinks/hot_coco.rsi
state: icon-vend
sprite: Objects/Consumable/Drinks/mug.rsi
state: icon-vend-brown
- type: Sprite
sprite: Objects/Consumable/Drinks/hot_coco.rsi
layers:
- state: icon-0
- map: ["enum.SolutionContainerLayers.Fill"]
state: icon-4
- type: SolutionContainerVisuals
maxFillLevels: 4
- state: icon
- state: fill-3
map: ["enum.SolutionContainerLayers.Fill"]
- type: TrashOnSolutionEmpty
solution: drink
@@ -267,16 +236,13 @@
- ReagentId: Coffee
Quantity: 20
- type: Icon
sprite: Objects/Consumable/Drinks/hot_coffee.rsi
state: icon-vend
sprite: Objects/Consumable/Drinks/mug.rsi
state: icon-vend-brown
- type: Sprite
sprite: Objects/Consumable/Drinks/hot_coffee.rsi
layers:
- state: icon-0
- map: ["enum.SolutionContainerLayers.Fill"]
state: icon-4
- type: SolutionContainerVisuals
maxFillLevels: 4
- state: icon
- state: fill-3
map: ["enum.SolutionContainerLayers.Fill"]
- type: TrashOnSolutionEmpty
solution: drink
@@ -293,16 +259,17 @@
reagents:
- ReagentId: CafeLatte
Quantity: 20
- type: Icon
sprite: Objects/Consumable/Drinks/cafe_latte.rsi
state: icon-vend
- type: Sprite
sprite: Objects/Consumable/Drinks/cafe_latte.rsi
layers:
- state: icon_empty
- state: icon
- state: fill-1
map: ["enum.SolutionContainerLayers.Fill"]
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 1
fillBaseName: fill-
changeColor: false
- type: TrashOnSolutionEmpty
solution: drink

View File

@@ -8,9 +8,9 @@
collection: packetOpenSounds
- type: Sprite
layers:
- state: icon
- state: icon_empty
map: ["enum.OpenableVisuals.Layer"]
- state: fill6
- state: fill-6
map: [ "enum.SolutionContainerLayers.Fill" ] # already has liquid, so no visible: false
- state: icon-front
map: [ "enum.SolutionContainerLayers.Overlay" ]
@@ -20,13 +20,6 @@
maxVol: 30
- type: SolutionContainerVisuals
maxFillLevels: 6
fillBaseName: fill # TODO rename to "fill-"
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: {state: "icon_open"}
False: {state: "icon"}
- type: TrashOnSolutionEmpty
solution: drink
@@ -97,8 +90,6 @@
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/jar_what.rsi
- type: ExaminableSolution
solution: drink
- type: FitsInDispenser
solution: drink
- type: Tag

View File

@@ -4,35 +4,23 @@
# Transformable container - normal glass
- type: entity
parent: [DrinkBaseMaterialGlass, DrinkBaseCup] # todo parent to DrinkVisualsFillOverlay after in-hands are added
parent: [DrinkBaseMaterialGlass, DrinkBaseCup, DrinkVisualsFillOverlay]
id: DrinkGlass
name: metamorphic glass
description: A metamorphic glass that automagically turns into a glass appropriate for the drink within. There's a sanded off patent number on the bottom.
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/glass_clear.rsi
layers:
- state: icon # TODO add "icon_empty" state to match "DrinkVisualsFillOverlay"
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill1
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- state: icon-front
map: [ "enum.SolutionContainerLayers.Overlay" ]
- type: Appearance
- type: SolutionContainerManager
solutions:
drink:
maxVol: 30
- type: SolutionContainerVisuals
maxFillLevels: 9
fillBaseName: fill # todo rename to "fill-", add in-hands, then add parent "DrinkVisualsFillOverlay"
metamorphic: true
metamorphicDefaultSprite:
sprite: Objects/Consumable/Drinks/glass_clear.rsi
state: icon
inHandsMaxFillLevels: 3
inHandsFillBaseName: -fill-
- type: Tag
tags:
- DrinkCup # Do these tags
@@ -47,14 +35,6 @@
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/jar.rsi
layers:
- state: icon
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill1
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- state: icon-front
map: [ "enum.SolutionContainerLayers.Overlay" ]
- type: SolutionContainerManager
solutions:
drink:

View File

@@ -12,17 +12,8 @@
size: Tiny
- type: Sprite
sprite: Objects/Consumable/Drinks/shotglass.rsi
layers:
- state: icon # TODO add "icon_empty" state to match "DrinkVisualsFillOverlay"
map: [ "enum.SolutionContainerLayers.Base" ]
- state: fill1
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- state: icon-front
map: [ "enum.SolutionContainerLayers.Overlay" ]
- type: SolutionContainerVisuals
maxFillLevels: 2
fillBaseName: fill # TODO rename to "fill-" to match "DrinkVisualsFillOverlay"
inHandsMaxFillLevels: 1
- type: FitsInDispenser
solution: drink
@@ -146,6 +137,21 @@
reactionTypes:
- Shake
- type: entity
parent: DrinkShaker
id: DrinkShakerGold
name: golden shaker
description: A gold-plated shaker given as a token of appreciation for years of service. It doesn't make the drinks taste any different.
components:
- type: Sprite
sprite: Objects/Consumable/Drinks/shaker_gold.rsi
- type: Item
sprite: Objects/Consumable/Drinks/shaker_gold.rsi
- type: PhysicalComposition
materialComposition:
Gold: 10 # Gold plated, not solid gold
Steel: 40
- type: entity
parent: [DrinkBaseMaterialMetal, DrinkBase]
id: DrinkJigger
@@ -184,11 +190,6 @@
maxVol: 60
- type: Sprite
sprite: Objects/Consumable/Drinks/pitcher.rsi
layers:
- state: icon # TODO add "icon_empty" state to match "DrinkVisualsFill"
- state: fill-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: SolutionContainerVisuals
maxFillLevels: 6
inHandsMaxFillLevels: 2

View File

@@ -731,7 +731,7 @@
name: crostini
parent: FoodBreadSliceBase
id: FoodBreadBaguetteSlice
description: Bon ap-petite!
description: Bon ap-pétite!
components:
- type: Sprite
state: crostini
@@ -753,7 +753,7 @@
parent: FoodBreadBaguetteSlice
id: FoodBreadBaguetteCottonSlice
name: cotton crostini
description: Bon az-zetite!
description: Bon az-zétite!
components:
- type: Sprite
state: crostini-cotton
@@ -1001,3 +1001,57 @@
damage:
groups:
Brute: 1
- type: entity
parent: FoodBreadBase
id: FoodBreadNutriBatard
name: nutri-bâtard
description: bon 'pétite!
components:
- type: Sprite
sprite: Objects/Consumable/Food/Baked/bread.rsi
state: batard
- type: Item
size: Small
storedOffset: -1,0
heldPrefix: batard
- type: Tag
tags:
- ReptilianFood
- type: FlavorProfile
flavors:
- nutribrick
- peppery
- salty
- bread
- type: entity
parent: FoodBreadNutriBatard
id: FoodBreadCottonNutriBatard
name: cotton nutri-bâtard
description: bon 'pétite!
components:
- type: Edible
requiresSpecialDigestion: true
- type: Sprite
sprite: Objects/Consumable/Food/Baked/bread.rsi
state: batard-cotton
- type: FlavorProfile
flavors:
- peppery
- salty
- bread
- type: Tag
tags:
- ClothMade
- type: Item
size: Small
storedOffset: -1,0
heldPrefix: batard-cotton
- type: SolutionContainerManager
solutions:
food:
maxVol: 26
reagents:
- ReagentId: Fiber
Quantity: 20

View File

@@ -533,6 +533,7 @@
tags:
- Trash
- HappyHonk
- BoxCardboard
- type: StorageFill
contents:
- id: ToyMouse
@@ -704,7 +705,8 @@
- type: Tag
tags:
- Trash
- CluwneHappyHonk
- CluwneHappyHonk # BAD: Intentional removal of parent tag
- BoxCardboard
- type: Sprite
sprite: Objects/Storage/Happyhonk/cluwne.rsi
state: box
@@ -882,7 +884,7 @@
grid:
- 0,0,1,1
maxItemSize: Normal
whitelist:
whitelist: # TODO BoxCardboard shouldn't have whitelisted storage
tags:
- ClothMade
- type: Item

View File

@@ -1242,6 +1242,23 @@
- state: plain-cooked-inhand-right
color: "#F7E3A3"
- type: entity
parent: FoodMeatChickenFried
id: FoodMeatChickenFriedVox
name: mystery fried chicken
description: “Eleven secret herbs and… oh no. Thats not chicken."
components:
- type: SolutionContainerManager
solutions:
food:
reagents:
- ReagentId: Nutriment
Quantity: 2
- ReagentId: Protein
Quantity: 5
- ReagentId: Ammonia
Quantity: 3
- type: entity
parent: FoodMeatBase
id: FoodMeatDuckCooked

View File

@@ -864,10 +864,10 @@
- type: SolutionContainerManager
solutions:
food:
maxVol: 45
maxVol: 25
reagents:
- ReagentId: Fiber
Quantity: 40
Quantity: 20
- type: Tag
tags:
- ClothMade

View File

@@ -27,7 +27,7 @@
id: PackPaperRollingFilters
description: A pack of filters and thin pieces of paper used to make fine smokeables.
components:
- type: Storage
- type: Storage # Redundant
whitelist:
tags:
- RollingPaper

View File

@@ -65,4 +65,5 @@
- state: holo
- type: Tag
tags:
- BoxCardboard
- BoxHug

View File

@@ -108,7 +108,7 @@
- ReagentId: Plasma
Quantity: 10
canReact: false
- type: Tag
- type: Tag # Redundant
tags:
- Sheet
- ConstructionMaterial

View File

@@ -263,7 +263,7 @@
- type: Storage
grid:
- 0,0,5,3
whitelist:
whitelist: # Redundant
tags:
- Document
- type: ItemMapper

View File

@@ -1,5 +1,5 @@
- type: entity
name: bible
name: space bible
description: New Interstellar Version 2340.
parent: BaseStorageItem
id: Bible
@@ -96,21 +96,10 @@
event: !type:SummonActionEvent
- type: entity
parent: Bible
name: tanakh
description: "For God's chosen crewmembers"
id: BibleTanakh
components:
- type: Sprite
sprite: Objects/Specific/Chapel/tanakh.rsi
- type: Item
sprite: Objects/Specific/Chapel/tanakh.rsi
- type: entity
parent: Bible
name: druidic tablet
description: "It's the mystery of the druids!"
id: BibleDruid
name: druidic tablet
parent: Bible
description: "It's the mystery of the druids!"
components:
- type: Sprite
sprite: Objects/Specific/Chapel/mysteryofthedruids.rsi
@@ -118,10 +107,10 @@
sprite: Objects/Specific/Chapel/mysteryofthedruids.rsi
- type: entity
parent: Bible
name: communist manifesto
description: "Remove the mask of humanity from Capital."
id: BibleCommunistManifesto
name: communist manifesto
parent: Bible
description: "Remove the mask of humanity from Capital."
components:
- type: Sprite
sprite: Objects/Specific/Chapel/communistmanifesto.rsi
@@ -129,23 +118,45 @@
sprite: Objects/Specific/Chapel/communistmanifesto.rsi
- type: entity
id: BibleNarsie
name: tome of nar'sie
parent: Bible
name: satanic bible
description: "What could possibly go wrong?"
id: BibleSatanic
description: "What could possibly go wrong with a book covered in blood?"
components:
- type: Sprite
sprite: Objects/Specific/Chapel/satanicbible.rsi
sprite: Objects/Specific/Chapel/tomeofnarsie.rsi
- type: Item
sprite: Objects/Specific/Chapel/satanicbible.rsi
sprite: Objects/Specific/Chapel/tomeofnarsie.rsi
- type: entity
parent: Bible
name: codex nanotrasimus
description: "A familiar book containing the Sacred Operating Procedures."
id: BibleNanoTrasen
name: codex nanotrasimus
parent: Bible
description: "A familiar book containing the Sacred Operating Procedures."
components:
- type: Sprite
sprite: Objects/Specific/Chapel/codexnanotrasimus.rsi
- type: Item
sprite: Objects/Specific/Chapel/codexnanotrasimus.rsi
- type: entity
id: BibleHonk
name: mirth of the honkmother
parent: Bible
description: "Oh great and glorious Mother, Mistress of Mirth, Matron of Mask and Merriments, Blessed is she amongst us jesters."
components:
- type: Sprite
sprite: Objects/Specific/Chapel/honk.rsi
- type: Item
sprite: Objects/Specific/Chapel/honk.rsi
- type: entity
id: BibleRatvar
name: tablet of ratvar
parent: Bible
description: "A holy relic of the Clockwork Cult, blessed by the Clockwork Justice, Ratvar."
components:
- type: Sprite
sprite: Objects/Specific/Chapel/ratvartablet.rsi
- type: Item
sprite: Objects/Specific/Chapel/ratvartablet.rsi

View File

@@ -278,9 +278,11 @@
parent: Plunger
description: A plunger with a plastic suction cup coated in a thin layer of gold given as a token of appreciation for years of service. Still used to unclog drains.
components:
- type: Tag
- type: Tag # TODO change Plunger into a tool so we dont got to layer Tags like below.
tags:
- GoldenPlunger
- Plunger
- WhitelistChameleon
- type: Sprite
sprite: Objects/Specific/Janitorial/golden_plunger.rsi
state: plunger

View File

@@ -5,7 +5,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeAntiMateriel
- type: CartridgeAmmo
proto: BulletAntiMateriel

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeCaselessRifle
- type: CartridgeAmmo
deleteOnSpawn: true

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeHeavyRifle
- type: CartridgeAmmo
proto: BulletHeavyRifle

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeLightRifle
- type: CartridgeAmmo
proto: BulletLightRifle

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeMagnum
- type: CartridgeAmmo
proto: BulletMagnum

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgePistol
- type: CartridgeAmmo
proto: BulletPistol

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeRifle
- type: CartridgeAmmo
proto: BulletRifle

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- ShellShotgun
- type: CartridgeAmmo
soundEject:
@@ -26,7 +25,6 @@
components:
- type: Tag
tags:
- Cartridge
- ShellShotgun
- ShellShotgunLight
- type: Sprite
@@ -59,7 +57,6 @@
components:
- type: Tag
tags:
- Cartridge
- ShellShotgun
- ShellShotgunLight
- type: Sprite
@@ -118,7 +115,6 @@
components:
- type: Tag
tags:
- Cartridge
- ShellShotgun
- ShellShotgunLight
- type: Sprite
@@ -147,7 +143,6 @@
components:
- type: Tag
tags:
- Cartridge
- ShellShotgun
- ShellShotgunLight
- type: Sprite

View File

@@ -6,7 +6,6 @@
components:
- type: Tag
tags:
- Cartridge
- CartridgeCap
- type: CartridgeAmmo
- type: Sprite

View File

@@ -337,7 +337,7 @@
components:
- type: BallisticAmmoProvider
proto: CartridgePistol
whitelist:
whitelist: # Redundant
tags:
- CartridgePistol
soundInsert:

View File

@@ -815,7 +815,7 @@
- type: entity
name: energy shotgun
parent: [BaseWeaponBattery, BaseGunWieldable, BaseGrandTheftContraband]
parent: [BaseWeaponBattery, BaseGunWieldable, BaseSecurityContraband]
id: WeaponEnergyShotgun
description: A one-of-a-kind prototype energy weapon that uses various shotgun configurations. It offers the possibility of both lethal and non-lethal shots, making it a versatile weapon.
components:
@@ -839,34 +839,69 @@
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
- type: ProjectileBatteryAmmoProvider
proto: BulletLaserSpread
fireCost: 150
proto: BulletLaserSpreadNarrow
fireCost: 80
- type: BatteryWeaponFireModes
fireModes:
- proto: BulletLaserSpread
fireCost: 150
- proto: BulletLaserSpreadNarrow
fireCost: 200
fireCost: 80
- proto: BulletDisablerSmgSpread
fireCost: 120
fireCost: 48
- type: Item
size: Large
sprite: Objects/Weapons/Guns/Battery/inhands_64x.rsi
heldPrefix: energy
- type: GunRequiresWield #remove when inaccuracy on spreads is fixed
- type: Battery
maxCharge: 480
startingCharge: 480
- type: entity
name: energy magnum
parent: [BaseWeaponBatterySmall, BaseGrandTheftContraband]
id: WeaponEnergyMagnum
description: A high powered self-charging energy pistol designed for elite security personnel. It has has three firing modes allowing for either high damage, window piercing, or non-lethal disabling.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Battery/energy_magnum.rsi
layers:
- state: base
map: [ "enum.GunVisualLayers.Base" ]
- state: mag-unshaded-1
visible: false
map: [ "enum.GunVisualLayers.MagUnshaded" ]
shader: unshaded
- type: MagazineVisuals
magState: mag
steps: 4
zeroVisible: true
- type: Appearance
- type: Clothing
sprite: Objects/Weapons/Guns/Battery/energy_magnum.rsi
- type: Tag
tags:
- HighRiskItem
- type: StealTarget
stealGroup: WeaponEnergyShotgun
- type: GunRequiresWield #remove when inaccuracy on spreads is fixed
- type: Battery
maxCharge: 1200
startingCharge: 1200
stealGroup: WeaponEnergyMagnum
- type: Gun
soundGunshot:
path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg
- type: ProjectileBatteryAmmoProvider
proto: BulletLaserMagnum
fireCost: 150
- type: BatteryWeaponFireModes
fireModes:
- proto: BulletLaserMagnum
fireCost: 150
- proto: BulletLaserWindowPiercingMagnum
fireCost: 150
- proto: BulletDisabler
fireCost: 62.5
- type: BatterySelfRecharger
autoRecharge: true
autoRechargeRate: 24
autoRechargeRate: 48
autoRechargePause: true
autoRechargePauseTime: 30
autoRechargePauseTime: 10
- type: entity
name: temperature gun

View File

@@ -425,7 +425,7 @@
description: It fires large meteors.
components:
- type: BallisticAmmoProvider
whitelist:
whitelist: # Redundant
tags:
- CartridgeRocket
proto: MeteorMedium
@@ -438,7 +438,7 @@
description: It fires slow immovable rods.
components:
- type: BallisticAmmoProvider
whitelist:
whitelist: # Redundant
tags:
- CartridgeRocket
proto: ImmovableRodSlow

View File

@@ -1305,7 +1305,7 @@
spread: 30
- type: entity
name: narrow laser barrage
name: lethal laser barrage
id: BulletLaserSpreadNarrow
categories: [ HideSpawnMenu ]
parent: BulletLaser
@@ -1325,3 +1325,52 @@
proto: BulletDisablerSmg
count: 3 #bit stronger than a disabler if you hit your shots you goober, still not a 2 hit stun though
spread: 9
- type: entity
name: magnum laser bolt
id: BulletLaserMagnum
categories: [ HideSpawnMenu ]
parent: BulletLaser
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/projectiles_magnum.rsi
layers:
- state: magnum
shader: unshaded
- type: PointLight
enabled: true
color: "#ff4300"
- type: Projectile
impactEffect: BulletImpactEffectOrangeDisabler
damage:
types:
Heat: 30
- type: entity
name: magnum window-piercing bolt
id: BulletLaserWindowPiercingMagnum
categories: [ HideSpawnMenu ]
parent: BulletLaser
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Projectiles/projectiles_magnum.rsi
layers:
- state: magnum_piercing
shader: unshaded
- type: PointLight
enabled: true
color: "#ff4300"
- type: Projectile
impactEffect: BulletImpactEffectOrangeDisabler
damage:
types:
Heat: 20
- type: Fixtures
fixtures:
projectile:
shape:
!type:PhysShapeAabb
bounds: "-0.1,-0.1,0.1,0.1"
hard: false
mask:
- Opaque

View File

@@ -153,7 +153,7 @@
suffix: armor-piercing
components:
- type: RevolverAmmoProvider
whitelist:
whitelist: # Redundant
tags:
- CartridgeMagnum
- SpeedLoaderMagnum

View File

@@ -1,8 +1,8 @@
- type: entity
id: BaseMaterialDoor
parent: BaseStructure
name: door
abstract: true
parent: BaseStructure
id: BaseMaterialDoor
name: door
description: A door, where will it lead?
components:
- type: Anchorable
@@ -63,31 +63,31 @@
- type: BlockWeather
- type: entity
abstract: true
parent: BaseMaterialDoor
id: BaseMaterialDoorNavMap
abstract: true
components:
- type: NavMapDoor
### Metal doors ###
- type: entity
parent: BaseMaterialDoorNavMap
id: MetalDoor
name: metal door
parent: BaseMaterialDoorNavMap
components:
- type: Construction
graph: DoorGraph
node: metalDoor
- type: Destructible
thresholds:
- trigger:
- trigger: &DamageTrigger200 # Overkill threshold
!type:DamageTrigger
damage: 200
behaviors:
behaviors: &OverkillBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
- trigger: &DamageTrigger150
!type:DamageTrigger
damage: 150
behaviors:
@@ -103,30 +103,20 @@
max: 5
- type: entity
parent: BaseMaterialDoorNavMap
id: PlasmaDoor
name: plasma door
parent: BaseMaterialDoorNavMap
description: A door, where will it lead?
components:
- type: Sprite
sprite: Structures/Doors/MineralDoors/plasma_door.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- type: Construction
graph: DoorGraph
node: plasmaDoor
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 150
- trigger: *DamageTrigger200
behaviors: *OverkillBehavior
- trigger: *DamageTrigger150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
@@ -140,30 +130,20 @@
max: 5
- type: entity
parent: BaseMaterialDoorNavMap
id: GoldDoor
name: gold door
parent: BaseMaterialDoorNavMap
description: A door, where will it lead?
components:
- type: Sprite
sprite: Structures/Doors/MineralDoors/gold_door.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- type: Construction
graph: DoorGraph
node: goldDoor
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 150
- trigger: *DamageTrigger200
behaviors: *OverkillBehavior
- trigger: *DamageTrigger150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
@@ -177,30 +157,20 @@
max: 5
- type: entity
parent: BaseMaterialDoorNavMap
id: SilverDoor
name: silver door
parent: BaseMaterialDoorNavMap
description: A door, where will it lead?
components:
- type: Sprite
sprite: Structures/Doors/MineralDoors/silver_door.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- type: Construction
graph: DoorGraph
node: silverDoor
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 150
- trigger: *DamageTrigger200
behaviors: *OverkillBehavior
- trigger: *DamageTrigger150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
@@ -214,35 +184,26 @@
max: 5
- type: entity
parent: BaseMaterialDoorNavMap
id: BananiumDoor
name: bananium door
parent: BaseMaterialDoorNavMap
description: A door, where will it lead?
components:
- type: Sprite
sprite: Structures/Doors/MineralDoors/bananium_door.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- type: Door
openSound:
path: /Audio/Items/bikehorn.ogg
closeSound:
path: /Audio/Items/bikehorn.ogg
openSound: &BikeHornSound
collection: BikeHorn
params:
variation: 0.125
closeSound: *BikeHornSound
- type: Construction
graph: DoorGraph
node: bananiumDoor
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 150
- trigger: *DamageTrigger200
behaviors: *OverkillBehavior
- trigger: *DamageTrigger150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
@@ -258,9 +219,9 @@
### Other doors ###
- type: entity
parent: BaseMaterialDoorNavMap
id: WoodDoor
name: wooden door
parent: BaseMaterialDoorNavMap
components:
- type: Sprite
sprite: Structures/Doors/MineralDoors/wood_door.rsi
@@ -273,16 +234,11 @@
graph: DoorGraph
node: woodDoor
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Wood
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger: *DamageTrigger150
behaviors: *OverkillBehavior
- trigger:
!type:DamageTrigger
damage: 75
@@ -299,16 +255,12 @@
max: 5
- type: entity
parent: BaseMaterialDoorNavMap
id: PaperDoor
name: paper door
parent: BaseMaterialDoorNavMap
description: A door, where will it lead?
components:
- type: Sprite
sprite: Structures/Doors/MineralDoors/paper_door.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- type: Door
openSound:
path: /Audio/Effects/paperdoor_openclose.ogg
@@ -318,16 +270,11 @@
graph: DoorGraph
node: paperDoor
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Wood
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger: *DamageTrigger150
behaviors: *OverkillBehavior
- trigger:
!type:DamageTrigger
damage: 50
@@ -344,16 +291,13 @@
max: 5
- type: entity
parent: BaseMaterialDoorNavMap
id: WebDoor
name: web door
parent: BaseMaterialDoorNavMap
description: A door, leading to the lands of the spiders... or a spaced room.
components:
- type: Sprite
sprite: Structures/Doors/web_door.rsi
layers:
- state: closed
map: ["enum.DoorVisualLayers.Base"]
- type: Door
closeSound:
path: /Audio/Effects/rustle1.ogg
@@ -366,21 +310,8 @@
damageModifierSet: Web
- type: Destructible
thresholds:
- trigger: # Excess damage, don't spawn entities
!type:DamageTrigger
damage: 100
behaviors:
- !type:PlaySoundBehavior
sound:
collection: WoodDestroy
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- trigger: *DamageTrigger150
behaviors: *OverkillBehavior
- trigger:
!type:DamageTrigger
damage: 50
@@ -397,8 +328,8 @@
max: 2
- type: entity
id: CardDoor
parent: BaseMaterialDoorNavMap
id: CardDoor
name: cardboard door
components:
- type: Sprite
@@ -417,16 +348,11 @@
path:
"/Audio/Weapons/pierce.ogg"
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Card
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 60 #excess damage (nuke?). avoid computational cost of spawning entities.
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger: *DamageTrigger150
behaviors: *OverkillBehavior
- trigger:
!type:DamageTrigger
damage: 30

View File

@@ -190,10 +190,6 @@
whitelist:
tags:
- Plunger
goldenplunger_slot:
name: janitorial-trolley-slot-component-slot-name-goldenplunger
whitelist:
tags:
- GoldenPlunger
priority: 8
wetfloorsign_slot4:

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobQuartermaster
time: 72000 #20 hrs
time: 20h
# Jumpsuit
- type: loadout

View File

@@ -1,3 +1,12 @@
- type: loadoutEffectGroup
id: SeniorBar
effects:
- !type:JobRequirementLoadoutEffect
requirement:
!type:RoleTimeRequirement
role: JobBartender
time: 52h # 1 hour per week for 1 year
# Head
- type: loadout
id: BartenderHead
@@ -40,3 +49,13 @@
id: BartenderWintercoat
equipment:
outerClothing: ClothingOuterWinterBar
# Misc
- type: loadout
id: BartenderGoldenShaker
effects:
- !type:GroupLoadoutEffect
proto: SeniorBar
storage:
back:
- DrinkShakerGold

View File

@@ -1,3 +1,33 @@
# Playtime requirement for NanoTrasen Bible, Codex NanoTrasimus
- type: loadoutEffectGroup
id: NanoTrasenBibleRequirement
effects:
- !type:JobRequirementLoadoutEffect
requirement:
!type:RoleTimeRequirement
role: JobCaptain
time: 7200 #2 hrs
# Playtime requirement for Druid Bible, Druidic Tablet
- type: loadoutEffectGroup
id: DruidBibleRequirement
effects:
- !type:JobRequirementLoadoutEffect
requirement:
!type:RoleTimeRequirement
role: JobBotanist
time: 18000 #5 hrs
# Playtime requirement for Clown Bible, Mirth of the Honkmother
- type: loadoutEffectGroup
id: ClownBibleRequirement
effects:
- !type:JobRequirementLoadoutEffect
requirement:
!type:RoleTimeRequirement
role: JobClown
time: 18000 #5 hrs
# Head
- type: loadout
id: ChaplainHead
@@ -87,24 +117,39 @@
- type: loadout
id: BibleDruid
effects:
- !type:GroupLoadoutEffect
proto: DruidBibleRequirement
storage:
back:
- BibleDruid
- type: loadout
id: BibleNanoTrasen
effects:
- !type:GroupLoadoutEffect
proto: NanoTrasenBibleRequirement
storage:
back:
- BibleNanoTrasen
- type: loadout
id: BibleSatanic
id: BibleNarsie
storage:
back:
- BibleSatanic
- BibleNarsie
- type: loadout
id: BibleTanakh
id: BibleHonk
effects:
- !type:GroupLoadoutEffect
proto: ClownBibleRequirement
storage:
back:
- BibleTanakh
- BibleHonk
- type: loadout
id: BibleRatvar
storage:
back:
- BibleRatvar

View File

@@ -5,7 +5,7 @@
requirement:
!type:RoleTimeRequirement
role: JobJanitor
time: 187200 #52 hrs (1 hour per week for 1 year)
time: 52h # 1 hour per week for 1 year
# Head
- type: loadout

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobPassenger
time: 36000 #10 hrs, silly reward for people who play passenger a lot
time: 10h # silly reward for people who play passenger a lot
# Head of Greytide (for grey mantle)
- type: loadoutEffectGroup
@@ -16,7 +16,7 @@
requirement:
!type:RoleTimeRequirement
role: JobPassenger
time: 72000 #20 hrs, fun mantle for the most experienced greytiders
time: 20h # fun mantle for the most experienced greytiders
# Face
- type: loadout

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobCaptain
time: 72000 #20 hrs
time: 20h
# Jumpsuit
- type: loadout

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobHeadOfPersonnel
time: 72000 #20 hrs
time: 20h
# Professional HoP Time
- type: loadoutEffectGroup
@@ -16,7 +16,7 @@
requirement:
!type:RoleTimeRequirement
role: JobHeadOfPersonnel
time: 54000 #15 hrs, special reward for HoP mains
time: 15h # special reward for HoP mains
# Jumpsuit
- type: loadout

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobChiefEngineer
time: 72000 #20 hrs
time: 20h
# Jumpsuit
- type: loadout

View File

@@ -6,17 +6,17 @@
requirement:
!type:RoleTimeRequirement
role: JobAtmosphericTechnician
time: 21600 #6 hrs
time: 6h
- !type:JobRequirementLoadoutEffect
requirement:
!type:RoleTimeRequirement
role: JobStationEngineer
time: 21600 #6 hrs
time: 6h
- !type:JobRequirementLoadoutEffect
requirement:
!type:DepartmentTimeRequirement
department: Engineering
time: 216000 # 60 hrs
time: 60h
# Head
- type: startingGear

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobChiefMedicalOfficer
time: 72000 #20 hrs
time: 20h
# Jumpsuit
- type: loadout

View File

@@ -6,17 +6,17 @@
requirement:
!type:RoleTimeRequirement
role: JobChemist
time: 21600 #6 hrs
time: 6h
- !type:JobRequirementLoadoutEffect
requirement:
!type:RoleTimeRequirement
role: JobMedicalDoctor
time: 21600 #6 hrs
time: 6h
- !type:JobRequirementLoadoutEffect
requirement:
!type:DepartmentTimeRequirement
department: Medical
time: 216000 # 60 hrs
time: 60h
# Other Timers
@@ -27,7 +27,7 @@
requirement:
!type:RoleTimeRequirement
role: JobMedicalDoctor
time: 108000 #30 hrs
time: 30h
# Head

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobResearchDirector
time: 72000 #20 hrs
time: 20h
# Head
- type: loadout

View File

@@ -6,7 +6,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Science
time: 216000 #60 hrs
time: 60h
# Head
- type: startingGear

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobHeadOfSecurity
time: 72000 #20 hrs
time: 20h
# Jumpsuit
- type: loadout

View File

@@ -6,12 +6,12 @@
requirement:
!type:RoleTimeRequirement
role: JobWarden
time: 21600 #6 hrs
time: 6h
- !type:JobRequirementLoadoutEffect
requirement:
!type:DepartmentTimeRequirement
department: Security
time: 216000 # 60 hrs
time: 60h
#Security Star
- type: loadoutEffectGroup
@@ -21,7 +21,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Security
time: 360000 #100 hrs
time: 100h
# Head
- type: loadout

View File

@@ -6,7 +6,7 @@
requirement:
!type:RoleTimeRequirement
role: JobLibrarian
time: 3600 # 1 hour of being the biggest nerd on the station
time: 1h # for being the biggest nerd on the station
- type: loadoutEffectGroup
id: JensenTimer
@@ -15,7 +15,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Cargo
time: 36000 #10 hours of being a space trucker
time: 10h # 10 hours of being a space trucker
# Basic options
# Glasses

View File

@@ -6,7 +6,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Command
time: 3600 # 1 hour
time: 1h
# Flowers
- type: loadout
@@ -308,7 +308,7 @@
- !type:JobRequirementLoadoutEffect
requirement:
!type:OverallPlaytimeRequirement
time: 36000 # 10hr
time: 10h
storage:
back:
- TowelColorWhite
@@ -320,7 +320,7 @@
- !type:JobRequirementLoadoutEffect
requirement:
!type:OverallPlaytimeRequirement
time: 1800000 # 500hr
time: 500h
storage:
back:
- TowelColorSilver
@@ -332,7 +332,7 @@
- !type:JobRequirementLoadoutEffect
requirement:
!type:OverallPlaytimeRequirement
time: 3600000 # 1000hr
time: 1000h
storage:
back:
- TowelColorGold
@@ -345,7 +345,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Cargo
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorLightBrown
@@ -358,7 +358,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Civilian
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorGreen
@@ -371,7 +371,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Command
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorDarkBlue
@@ -384,7 +384,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Engineering
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorOrange
@@ -397,7 +397,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Medical
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorLightBlue
@@ -410,7 +410,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Science
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorPurple
@@ -423,7 +423,7 @@
requirement:
!type:DepartmentTimeRequirement
department: Security
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorRed
@@ -436,7 +436,7 @@
requirement:
!type:RoleTimeRequirement
role: JobPassenger
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorGray
@@ -449,7 +449,7 @@
requirement:
!type:RoleTimeRequirement
role: JobChaplain
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorBlack
@@ -462,7 +462,7 @@
requirement:
!type:RoleTimeRequirement
role: JobLibrarian
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorDarkGreen
@@ -475,7 +475,7 @@
requirement:
!type:RoleTimeRequirement
role: JobLawyer
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorMaroon
@@ -488,7 +488,7 @@
requirement:
!type:RoleTimeRequirement
role: JobClown
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorYellow
@@ -501,7 +501,7 @@
requirement:
!type:RoleTimeRequirement
role: JobMime
time: 360000 # 100hr
time: 100h
storage:
back:
- TowelColorMime

View File

@@ -270,6 +270,13 @@
- BartenderApron
- BartenderWintercoat
- type: loadoutGroup
id: BartenderGoldenShaker
name: loadout-group-bartender-shaker
minLimit: 0
loadouts:
- BartenderGoldenShaker
- type: loadoutGroup
id: ChefHead
name: loadout-group-chef-head
@@ -381,10 +388,11 @@
minLimit: 1
loadouts:
- Bible
- BibleDruid
- BibleNanoTrasen
- BibleSatanic
- BibleTanakh
- BibleDruid
- BibleHonk
- BibleRatvar
- BibleNarsie
- type: loadoutGroup
id: JanitorHead

View File

@@ -61,6 +61,7 @@
- BartenderJumpsuit
- CommonBackpack
- BartenderOuterClothing
- BartenderGoldenShaker
- Glasses
- Survival
- Trinkets

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