Merge remote-tracking branch 'upstream/master' into ed-19-07-2024-upstream-walls
# Conflicts: # Content.Server/Damage/Systems/DamageOtherOnHitSystem.cs
@@ -129,7 +129,7 @@ csharp_indent_braces = false
|
||||
csharp_indent_switch_labels = true
|
||||
|
||||
# Space preferences
|
||||
csharp_space_after_cast = true
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_after_comma = true
|
||||
csharp_space_after_dot = false
|
||||
|
||||
@@ -14,7 +14,6 @@ namespace Content.Client.Administration.UI.Tabs.ObjectsTab;
|
||||
public sealed partial class ObjectsTab : Control
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
|
||||
private readonly Color _altColor = Color.FromHex("#292B38");
|
||||
private readonly Color _defaultColor = Color.FromHex("#2F2F3B");
|
||||
|
||||
@@ -26,7 +26,6 @@ namespace Content.Client.Construction
|
||||
{
|
||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
|
||||
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
|
||||
29
Content.Client/IconSmoothing/ClientRandomIconSmoothSystem.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using Content.Shared.IconSmoothing;
|
||||
using Robust.Client.GameObjects;
|
||||
|
||||
namespace Content.Client.IconSmoothing;
|
||||
|
||||
public sealed class ClientRandomIconSmoothSystem : SharedRandomIconSmoothSystem
|
||||
{
|
||||
[Dependency] private readonly IconSmoothSystem _iconSmooth = default!;
|
||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<RandomIconSmoothComponent, AppearanceChangeEvent>(OnAppearanceChange);
|
||||
}
|
||||
|
||||
private void OnAppearanceChange(Entity<RandomIconSmoothComponent> ent, ref AppearanceChangeEvent args)
|
||||
{
|
||||
if (!TryComp<IconSmoothComponent>(ent, out var smooth))
|
||||
return;
|
||||
|
||||
if (!_appearance.TryGetData<string>(ent, RandomIconSmoothState.State, out var state, args.Component))
|
||||
return;
|
||||
|
||||
smooth.StateBase = state;
|
||||
_iconSmooth.SetStateBase(ent, smooth, state);
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@ namespace Content.Client.IconSmoothing
|
||||
/// Prepended to the RSI state.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("base")]
|
||||
public string StateBase { get; private set; } = string.Empty;
|
||||
public string StateBase { get; set; } = string.Empty;
|
||||
|
||||
[DataField("shader", customTypeSerializer:typeof(PrototypeIdSerializer<ShaderPrototype>))]
|
||||
public string? Shader;
|
||||
|
||||
@@ -55,6 +55,33 @@ namespace Content.Client.IconSmoothing
|
||||
if (component.Mode != IconSmoothingMode.Corners || !TryComp(uid, out SpriteComponent? sprite))
|
||||
return;
|
||||
|
||||
SetCornerLayers(sprite, component);
|
||||
|
||||
if (component.Shader != null)
|
||||
{
|
||||
sprite.LayerSetShader(CornerLayers.SE, component.Shader);
|
||||
sprite.LayerSetShader(CornerLayers.NE, component.Shader);
|
||||
sprite.LayerSetShader(CornerLayers.NW, component.Shader);
|
||||
sprite.LayerSetShader(CornerLayers.SW, component.Shader);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetStateBase(EntityUid uid, IconSmoothComponent component, string newState)
|
||||
{
|
||||
if (!TryComp<SpriteComponent>(uid, out var sprite))
|
||||
return;
|
||||
|
||||
component.StateBase = newState;
|
||||
SetCornerLayers(sprite, component);
|
||||
}
|
||||
|
||||
private void SetCornerLayers(SpriteComponent sprite, IconSmoothComponent component)
|
||||
{
|
||||
sprite.LayerMapRemove(CornerLayers.SE);
|
||||
sprite.LayerMapRemove(CornerLayers.NE);
|
||||
sprite.LayerMapRemove(CornerLayers.NW);
|
||||
sprite.LayerMapRemove(CornerLayers.SW);
|
||||
|
||||
var state0 = $"{component.StateBase}0";
|
||||
sprite.LayerMapSet(CornerLayers.SE, sprite.AddLayerState(state0));
|
||||
sprite.LayerSetDirOffset(CornerLayers.SE, DirectionOffset.None);
|
||||
@@ -64,14 +91,6 @@ namespace Content.Client.IconSmoothing
|
||||
sprite.LayerSetDirOffset(CornerLayers.NW, DirectionOffset.Flip);
|
||||
sprite.LayerMapSet(CornerLayers.SW, sprite.AddLayerState(state0));
|
||||
sprite.LayerSetDirOffset(CornerLayers.SW, DirectionOffset.Clockwise);
|
||||
|
||||
if (component.Shader != null)
|
||||
{
|
||||
sprite.LayerSetShader(CornerLayers.SE, component.Shader);
|
||||
sprite.LayerSetShader(CornerLayers.NE, component.Shader);
|
||||
sprite.LayerSetShader(CornerLayers.NW, component.Shader);
|
||||
sprite.LayerSetShader(CornerLayers.SW, component.Shader);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnShutdown(EntityUid uid, IconSmoothComponent component, ComponentShutdown args)
|
||||
|
||||
@@ -21,7 +21,6 @@ public sealed partial class LatheMenu : DefaultWindow
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IResourceCache _resources = default!;
|
||||
|
||||
private EntityUid _owner;
|
||||
private readonly SpriteSystem _spriteSystem;
|
||||
|
||||
@@ -17,7 +17,6 @@ namespace Content.Client.VendingMachines.UI
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
|
||||
private readonly Dictionary<EntProtoId, EntityUid> _dummies = [];
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ namespace Content.Server.Ame.EntitySystems;
|
||||
public sealed class AmeControllerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly IAdminManager _adminManager = default!;
|
||||
[Dependency] private readonly IChatManager _chatManager = default!;
|
||||
[Dependency] private readonly IGameTiming _gameTiming = default!;
|
||||
[Dependency] private readonly AppearanceSystem _appearanceSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audioSystem = default!;
|
||||
|
||||
@@ -60,7 +60,6 @@ public sealed partial class ChatSystem : SharedChatSystem
|
||||
[Dependency] private readonly StationSystem _stationSystem = default!;
|
||||
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
|
||||
[Dependency] private readonly ReplacementAccentSystem _wordreplacement = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
|
||||
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;
|
||||
|
||||
@@ -29,7 +29,6 @@ public sealed class CluwneSystem : EntitySystem
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly ChatSystem _chat = default!;
|
||||
[Dependency] private readonly AutoEmoteSystem _autoEmote = default!;
|
||||
[Dependency] private readonly MetaDataSystem _metaData = default!;
|
||||
[Dependency] private readonly NameModifierSystem _nameMod = default!;
|
||||
|
||||
public override void Initialize()
|
||||
|
||||
@@ -60,12 +60,6 @@ namespace Content.Server.Damage.Systems
|
||||
_sharedCameraRecoil.KickCamera(args.Target, direction);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: If more stuff touches this then handle it after.
|
||||
if (TryComp<PhysicsComponent>(uid, out var physics))
|
||||
{
|
||||
_thrownItem.LandComponent(args.Thrown, args.Component, physics, false);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDamageExamine(EntityUid uid, DamageOtherOnHitComponent component, ref DamageExamineEvent args)
|
||||
|
||||
@@ -423,11 +423,11 @@ public sealed class NetworkConfiguratorSystem : SharedNetworkConfiguratorSystem
|
||||
if (Delay(configurator))
|
||||
return;
|
||||
|
||||
if (!targetUid.HasValue || !configurator.ActiveDeviceLink.HasValue || !TryComp(userUid, out ActorComponent? actor) || !AccessCheck(targetUid.Value, userUid, configurator))
|
||||
if (!targetUid.HasValue || !configurator.ActiveDeviceLink.HasValue || !AccessCheck(targetUid.Value, userUid, configurator))
|
||||
return;
|
||||
|
||||
|
||||
_uiSystem.OpenUi(configuratorUid, NetworkConfiguratorUiKey.Link, actor.PlayerSession);
|
||||
_uiSystem.OpenUi(configuratorUid, NetworkConfiguratorUiKey.Link, userUid);
|
||||
configurator.DeviceLinkTarget = targetUid;
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ namespace Content.Server.Doors.Systems
|
||||
public sealed class FirelockSystem : SharedFirelockSystem
|
||||
{
|
||||
[Dependency] private readonly SharedDoorSystem _doorSystem = default!;
|
||||
[Dependency] private readonly AtmosAlarmableSystem _atmosAlarmable = default!;
|
||||
[Dependency] private readonly AtmosphereSystem _atmosSystem = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedMapSystem _mapping = default!;
|
||||
|
||||
@@ -24,7 +24,6 @@ public sealed partial class DragonSystem : EntitySystem
|
||||
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
|
||||
[Dependency] private readonly NpcFactionSystem _faction = default!;
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly RoleSystem _role = default!;
|
||||
[Dependency] private readonly SharedActionsSystem _actions = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
|
||||
@@ -13,7 +13,6 @@ public sealed class LoadMapRuleSystem : GameRuleSystem<LoadMapRuleComponent>
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly MapSystem _map = default!;
|
||||
[Dependency] private readonly MapLoaderSystem _mapLoader = default!;
|
||||
[Dependency] private readonly MetaDataSystem _metaData = default!;
|
||||
[Dependency] private readonly TransformSystem _transform = default!;
|
||||
[Dependency] private readonly GridPreloaderSystem _gridPreloader = default!;
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ public sealed class SecretRuleSystem : GameRuleSystem<SecretRuleComponent>
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
|
||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly IChatManager _chatManager = default!;
|
||||
[Dependency] private readonly IComponentFactory _compFact = default!;
|
||||
|
||||
private string _ruleCompName = default!;
|
||||
|
||||
@@ -12,10 +12,8 @@ namespace Content.Server.GameTicking.Rules;
|
||||
|
||||
public sealed class ThiefRuleSystem : GameRuleSystem<ThiefRuleComponent>
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly MindSystem _mindSystem = default!;
|
||||
[Dependency] private readonly AntagSelectionSystem _antag = default!;
|
||||
[Dependency] private readonly ObjectivesSystem _objectives = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
||||
@@ -29,7 +29,6 @@ public sealed class TraitorRuleSystem : GameRuleSystem<TraitorRuleComponent>
|
||||
[Dependency] private readonly MindSystem _mindSystem = default!;
|
||||
[Dependency] private readonly SharedRoleSystem _roleSystem = default!;
|
||||
[Dependency] private readonly SharedJobSystem _jobs = default!;
|
||||
[Dependency] private readonly ObjectivesSystem _objectives = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
||||
26
Content.Server/IconSmoothing/RandomIconSmoothSystem.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using Content.Shared.IconSmoothing;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server.IconSmoothing;
|
||||
|
||||
public sealed partial class RandomIconSmoothSystem : SharedRandomIconSmoothSystem
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<RandomIconSmoothComponent, MapInitEvent>(OnMapInit);
|
||||
}
|
||||
|
||||
private void OnMapInit(Entity<RandomIconSmoothComponent> ent, ref MapInitEvent args)
|
||||
{
|
||||
if (ent.Comp.RandomStates.Count == 0)
|
||||
return;
|
||||
|
||||
var state = _random.Pick(ent.Comp.RandomStates);
|
||||
_appearance.SetData(ent, RandomIconSmoothState.State, state);
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,6 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
||||
[Dependency] private readonly UserInterfaceSystem _bui = default!;
|
||||
[Dependency] private readonly PopupSystem _popup = default!;
|
||||
[Dependency] private readonly TransformSystem _transform = default!;
|
||||
[Dependency] private readonly InteractionSystem _interactions = default!;
|
||||
[Dependency] private readonly ExamineSystemShared _examineSystem = default!;
|
||||
|
||||
private const float MaxInstrumentBandRange = 10f;
|
||||
|
||||
@@ -79,6 +79,7 @@ namespace Content.Server.Kitchen.EntitySystems
|
||||
SubscribeLocalEvent<MicrowaveComponent, EntInsertedIntoContainerMessage>(OnContentUpdate);
|
||||
SubscribeLocalEvent<MicrowaveComponent, EntRemovedFromContainerMessage>(OnContentUpdate);
|
||||
SubscribeLocalEvent<MicrowaveComponent, InteractUsingEvent>(OnInteractUsing, after: new[] { typeof(AnchorableSystem) });
|
||||
SubscribeLocalEvent<MicrowaveComponent, ContainerIsInsertingAttemptEvent>(OnInsertAttempt);
|
||||
SubscribeLocalEvent<MicrowaveComponent, BreakageEventArgs>(OnBreak);
|
||||
SubscribeLocalEvent<MicrowaveComponent, PowerChangedEvent>(OnPowerChanged);
|
||||
SubscribeLocalEvent<MicrowaveComponent, AnchorStateChangedEvent>(OnAnchorChanged);
|
||||
@@ -309,6 +310,32 @@ namespace Content.Server.Kitchen.EntitySystems
|
||||
UpdateUserInterfaceState(uid, component);
|
||||
}
|
||||
|
||||
private void OnInsertAttempt(Entity<MicrowaveComponent> ent, ref ContainerIsInsertingAttemptEvent args)
|
||||
{
|
||||
if (ent.Comp.Broken)
|
||||
{
|
||||
args.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryComp<ItemComponent>(args.EntityUid, out var item))
|
||||
{
|
||||
if (_item.GetSizePrototype(item.Size) > _item.GetSizePrototype(ent.Comp.MaxItemSize))
|
||||
{
|
||||
args.Cancel();
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
if (ent.Comp.Storage.Count >= ent.Comp.Capacity)
|
||||
args.Cancel();
|
||||
}
|
||||
|
||||
private void OnInteractUsing(Entity<MicrowaveComponent> ent, ref InteractUsingEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
|
||||
@@ -46,7 +46,6 @@ public sealed class DefibrillatorSystem : EntitySystem
|
||||
[Dependency] private readonly PowerCellSystem _powerCell = default!;
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly UseDelaySystem _useDelay = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -32,10 +32,7 @@ public sealed class SpaceNinjaSystem : SharedSpaceNinjaSystem
|
||||
[Dependency] private readonly AlertsSystem _alerts = default!;
|
||||
[Dependency] private readonly BatterySystem _battery = default!;
|
||||
[Dependency] private readonly CodeConditionSystem _codeCondition = default!;
|
||||
[Dependency] private readonly IChatManager _chatMan = default!;
|
||||
[Dependency] private readonly PowerCellSystem _powerCell = default!;
|
||||
[Dependency] private readonly RoleSystem _role = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
|
||||
public override void Initialize()
|
||||
|
||||
@@ -10,7 +10,6 @@ using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Body.Components;
|
||||
using Content.Shared.Body.Organ;
|
||||
using Content.Shared.Chemistry;
|
||||
using Content.Shared.Chemistry.Reagent;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.DoAfter;
|
||||
using Content.Shared.FixedPoint;
|
||||
@@ -31,6 +30,7 @@ using Robust.Shared.Audio;
|
||||
using Robust.Shared.Audio.Systems;
|
||||
using Robust.Shared.Utility;
|
||||
using System.Linq;
|
||||
using Content.Shared.Containers.ItemSlots;
|
||||
using Robust.Server.GameObjects;
|
||||
using Content.Shared.Whitelist;
|
||||
|
||||
@@ -138,6 +138,16 @@ public sealed class FoodSystem : EntitySystem
|
||||
return (false, true);
|
||||
}
|
||||
|
||||
// Checks for used item slots
|
||||
if (TryComp<ItemSlotsComponent>(food, out var itemSlots))
|
||||
{
|
||||
if (itemSlots.Slots.Any(slot => slot.Value.HasItem))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("food-has-used-storage", ("food", food)), user, user);
|
||||
return (false, true);
|
||||
}
|
||||
}
|
||||
|
||||
var flavors = _flavorProfile.GetLocalizedFlavorsMessage(food, user, foodSolution);
|
||||
|
||||
if (GetUsesRemaining(food, foodComp) <= 0)
|
||||
|
||||
@@ -17,7 +17,6 @@ namespace Content.Server.Nutrition.EntitySystems
|
||||
{
|
||||
[Dependency] private readonly SolutionContainerSystem _solutionContainerSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
|
||||
[Dependency] private readonly TransformSystem _xformSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
|
||||
@@ -35,7 +35,6 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
|
||||
[Dependency] private readonly MindSystem _minds = default!;
|
||||
[Dependency] private readonly PlayTimeTrackingManager _tracking = default!;
|
||||
[Dependency] private readonly IAdminManager _adminManager = default!;
|
||||
[Dependency] private readonly SharedRoleSystem _role = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
||||
@@ -152,9 +152,7 @@ namespace Content.Server.Pointing.EntitySystems
|
||||
|
||||
if (TryComp<PointingArrowComponent>(arrow, out var pointing))
|
||||
{
|
||||
if (TryComp(player, out TransformComponent? xformPlayer))
|
||||
pointing.StartPosition = _transform.ToCoordinates((player, xformPlayer), _transform.ToMapCoordinates(xformPlayer.Coordinates)).Position;
|
||||
|
||||
pointing.StartPosition = _transform.ToCoordinates((arrow, Transform(arrow)), _transform.ToMapCoordinates(Transform(player).Coordinates)).Position;
|
||||
pointing.EndTime = _gameTiming.CurTime + PointDuration;
|
||||
|
||||
Dirty(arrow, pointing);
|
||||
|
||||
@@ -22,7 +22,6 @@ namespace Content.Server.Power.EntitySystems
|
||||
[Dependency] private readonly PowerNetConnectorSystem _powerNetConnector = default!;
|
||||
[Dependency] private readonly IConfigurationManager _cfg = default!;
|
||||
[Dependency] private readonly IParallelManager _parMan = default!;
|
||||
[Dependency] private readonly PowerReceiverSystem _powerReceiver = default!;
|
||||
|
||||
private readonly PowerState _powerState = new();
|
||||
private readonly HashSet<PowerNet> _powerNetReconnectQueue = new();
|
||||
|
||||
@@ -21,7 +21,6 @@ namespace Content.Server.Power.EntitySystems
|
||||
{
|
||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly IAdminManager _adminManager = default!;
|
||||
[Dependency] private readonly AppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly AudioSystem _audio = default!;
|
||||
private EntityQuery<ApcPowerReceiverComponent> _recQuery;
|
||||
private EntityQuery<ApcPowerProviderComponent> _provQuery;
|
||||
|
||||
@@ -9,7 +9,7 @@ public static class StaticPowerSystem
|
||||
public static bool IsPowered(this EntitySystem system, EntityUid uid, IEntityManager entManager, ApcPowerReceiverComponent? receiver = null)
|
||||
{
|
||||
if (receiver == null && !entManager.TryGetComponent(uid, out receiver))
|
||||
return false;
|
||||
return true;
|
||||
|
||||
return receiver.Powered;
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ public sealed partial class DungeonSystem
|
||||
// go BRRNNTTT on existing stuff
|
||||
if (clearExisting)
|
||||
{
|
||||
var gridBounds = new Box2(Vector2.Transform(Vector2.Zero, roomTransform), Vector2.Transform(room.Size, roomTransform));
|
||||
var gridBounds = new Box2(Vector2.Transform(-room.Size/2, roomTransform), Vector2.Transform(room.Size/2, roomTransform));
|
||||
_entitySet.Clear();
|
||||
// Polygon skin moment
|
||||
gridBounds = gridBounds.Enlarged(-0.05f);
|
||||
|
||||
@@ -33,7 +33,6 @@ public sealed partial class DungeonSystem : SharedDungeonSystem
|
||||
[Dependency] private readonly AnchorableSystem _anchorable = default!;
|
||||
[Dependency] private readonly DecalSystem _decals = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly TagSystem _tag = default!;
|
||||
[Dependency] private readonly TileSystem _tile = default!;
|
||||
[Dependency] private readonly MapLoaderSystem _loader = default!;
|
||||
[Dependency] private readonly SharedMapSystem _maps = default!;
|
||||
|
||||
@@ -40,7 +40,6 @@ public sealed partial class BorgSystem : SharedBorgSystem
|
||||
[Dependency] private readonly IBanManager _banManager = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedAccessSystem _access = default!;
|
||||
[Dependency] private readonly ActionsSystem _actions = default!;
|
||||
[Dependency] private readonly AlertsSystem _alerts = default!;
|
||||
[Dependency] private readonly DeviceNetworkSystem _deviceNetwork = default!;
|
||||
|
||||
@@ -17,7 +17,6 @@ public sealed partial class StationJobsSystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly IBanManager _banManager = default!;
|
||||
[Dependency] private readonly PlayTimeTrackingSystem _playTime = default!;
|
||||
|
||||
private Dictionary<int, HashSet<string>> _jobsByWeight = default!;
|
||||
private List<int> _orderedWeights = default!;
|
||||
|
||||
@@ -27,10 +27,8 @@ namespace Content.Server.Station.Systems;
|
||||
[PublicAPI]
|
||||
public sealed class StationSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
[Dependency] private readonly IPlayerManager _player = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly ChatSystem _chatSystem = default!;
|
||||
[Dependency] private readonly GameTicker _ticker = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
|
||||
@@ -11,7 +11,6 @@ namespace Content.Server.Traits;
|
||||
public sealed class TraitSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly ISerializationManager _serializationManager = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _sharedHandsSystem = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
|
||||
|
||||
|
||||
@@ -155,7 +155,12 @@ public sealed class AccessReaderSystem : EntitySystem
|
||||
return IsAllowedInternal(access, stationKeys, reader);
|
||||
|
||||
if (!_containerSystem.TryGetContainer(target, reader.ContainerAccessProvider, out var container))
|
||||
return Paused(target); // when mapping, containers with electronics arent spawned
|
||||
return false;
|
||||
|
||||
// If entity is paused then always allow it at this point.
|
||||
// Door electronics is kind of a mess but yeah, it should only be an unpaused ent interacting with it
|
||||
if (Paused(target))
|
||||
return true;
|
||||
|
||||
foreach (var entity in container.ContainedEntities)
|
||||
{
|
||||
|
||||
@@ -25,7 +25,6 @@ public abstract class SharedActionsSystem : EntitySystem
|
||||
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
|
||||
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
|
||||
[Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
|
||||
[Dependency] private readonly RotateToFaceSystem _rotateToFaceSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transformSystem = default!;
|
||||
|
||||
@@ -12,8 +12,6 @@ namespace Content.Shared.Beeper.Systems;
|
||||
/// </summary>
|
||||
public sealed class ProximityBeeperSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly ProximityDetectionSystem _proximity = default!;
|
||||
[Dependency] private readonly BeeperSystem _beeper = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -14,13 +14,10 @@ namespace Content.Shared.Clothing;
|
||||
|
||||
public sealed class ClothingSpeedModifierSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly ClothingSpeedModifierSystem _clothingSpeedModifier = default!;
|
||||
[Dependency] private readonly SharedContainerSystem _container = default!;
|
||||
[Dependency] private readonly ExamineSystemShared _examine = default!;
|
||||
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!;
|
||||
[Dependency] private readonly ItemToggleSystem _toggle = default!;
|
||||
[Dependency] private readonly SharedPowerCellSystem _powerCell = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
||||
@@ -192,6 +192,11 @@ public sealed partial class StaminaSystem : EntitySystem
|
||||
|
||||
private void OnCollide(EntityUid uid, StaminaDamageOnCollideComponent component, EntityUid target)
|
||||
{
|
||||
// you can't inflict stamina damage on things with no stamina component
|
||||
// this prevents stun batons from using up charges when throwing it at lockers or lights
|
||||
if (!HasComp<StaminaComponent>(target))
|
||||
return;
|
||||
|
||||
var ev = new StaminaDamageOnHitAttemptEvent();
|
||||
RaiseLocalEvent(uid, ref ev);
|
||||
if (ev.Cancelled)
|
||||
|
||||
16
Content.Shared/IconSmoothing/RandomIconSmoothComponent.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.IconSmoothing;
|
||||
|
||||
/// <summary>
|
||||
/// Allow randomize StateBase of IconSmoothComponent for random visual variation
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class RandomIconSmoothComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// StateBase will be randomly selected from this list. Allows to randomize the visual.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public List<string> RandomStates = new();
|
||||
}
|
||||
12
Content.Shared/IconSmoothing/SharedRandomIconSmoothSystem.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.IconSmoothing;
|
||||
|
||||
public abstract class SharedRandomIconSmoothSystem : EntitySystem
|
||||
{
|
||||
}
|
||||
[Serializable, NetSerializable]
|
||||
public enum RandomIconSmoothState : byte
|
||||
{
|
||||
State
|
||||
}
|
||||
@@ -38,8 +38,6 @@ using Robust.Shared.Serialization;
|
||||
using Robust.Shared.Timing;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
#pragma warning disable 618
|
||||
|
||||
namespace Content.Shared.Interaction
|
||||
{
|
||||
/// <summary>
|
||||
@@ -522,11 +520,11 @@ namespace Content.Shared.Interaction
|
||||
protected bool ValidateInteractAndFace(EntityUid user, EntityCoordinates coordinates)
|
||||
{
|
||||
// Verify user is on the same map as the entity they clicked on
|
||||
if (coordinates.GetMapId(EntityManager) != Transform(user).MapID)
|
||||
if (_transform.GetMapId(coordinates) != Transform(user).MapID)
|
||||
return false;
|
||||
|
||||
if (!HasComp<NoRotateOnInteractComponent>(user))
|
||||
_rotateToFaceSystem.TryFaceCoordinates(user, coordinates.ToMapPos(EntityManager, _transform));
|
||||
_rotateToFaceSystem.TryFaceCoordinates(user, _transform.ToMapCoordinates(coordinates).Position);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -859,7 +857,7 @@ namespace Content.Shared.Interaction
|
||||
Ignored? predicate = null,
|
||||
bool popup = false)
|
||||
{
|
||||
return InRangeUnobstructed(origin, other.ToMap(EntityManager, _transform), range, collisionMask, predicate, popup);
|
||||
return InRangeUnobstructed(origin, _transform.ToMapCoordinates(other), range, collisionMask, predicate, popup);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -966,7 +964,7 @@ namespace Content.Shared.Interaction
|
||||
/// </summary>
|
||||
public void InteractDoAfter(EntityUid user, EntityUid used, EntityUid? target, EntityCoordinates clickLocation, bool canReach)
|
||||
{
|
||||
if (target is {Valid: false})
|
||||
if (target is { Valid: false })
|
||||
target = null;
|
||||
|
||||
var afterInteractEvent = new AfterInteractEvent(user, used, target, clickLocation, canReach);
|
||||
|
||||
@@ -43,7 +43,6 @@ public sealed class PullingSystem : EntitySystem
|
||||
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
||||
[Dependency] private readonly SharedInteractionSystem _interaction = default!;
|
||||
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly HeldSpeedModifierSystem _clothingMoveSpeed = default!;
|
||||
|
||||
public override void Initialize()
|
||||
|
||||
@@ -18,7 +18,6 @@ public sealed class DashAbilitySystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ActionContainerSystem _actionContainer = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedChargesSystem _charges = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly ExamineSystemShared _examine = default!;
|
||||
|
||||
@@ -150,8 +150,19 @@ public sealed class SwapTeleporterSystem : EntitySystem
|
||||
return;
|
||||
}
|
||||
|
||||
var teleEnt = GetTeleportingEntity((uid, xform));
|
||||
var otherTeleEnt = GetTeleportingEntity((linkedEnt, Transform(linkedEnt)));
|
||||
var (teleEnt, cont) = GetTeleportingEntity((uid, xform));
|
||||
var (otherTeleEnt, otherCont) = GetTeleportingEntity((linkedEnt, Transform(linkedEnt)));
|
||||
|
||||
if (otherCont != null && !_container.CanInsert(teleEnt, otherCont) ||
|
||||
cont != null && !_container.CanInsert(otherTeleEnt, cont))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-fail",
|
||||
("entity", Identity.Entity(linkedEnt, EntityManager))),
|
||||
teleEnt,
|
||||
teleEnt,
|
||||
PopupType.MediumCaution);
|
||||
return;
|
||||
}
|
||||
|
||||
_popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-other",
|
||||
("entity", Identity.Entity(linkedEnt, EntityManager))),
|
||||
@@ -184,20 +195,20 @@ public sealed class SwapTeleporterSystem : EntitySystem
|
||||
DestroyLink(linked, user); // the linked one is shown globally
|
||||
}
|
||||
|
||||
private EntityUid GetTeleportingEntity(Entity<TransformComponent> ent)
|
||||
private (EntityUid, BaseContainer?) GetTeleportingEntity(Entity<TransformComponent> ent)
|
||||
{
|
||||
var parent = ent.Comp.ParentUid;
|
||||
if (_container.TryGetOuterContainer(ent, ent, out var container))
|
||||
parent = container.Owner;
|
||||
|
||||
if (HasComp<MapGridComponent>(parent) || HasComp<MapComponent>(parent))
|
||||
return ent;
|
||||
return (ent, container);
|
||||
|
||||
if (!_xformQuery.TryGetComponent(parent, out var parentXform) || parentXform.Anchored)
|
||||
return ent;
|
||||
return (ent, container);
|
||||
|
||||
if (!TryComp<PhysicsComponent>(parent, out var body) || body.BodyType == BodyType.Static)
|
||||
return ent;
|
||||
return (ent, container);
|
||||
|
||||
return GetTeleportingEntity((parent, parentXform));
|
||||
}
|
||||
|
||||
@@ -1,48 +1,4 @@
|
||||
Entries:
|
||||
- author: EmoGarbage404
|
||||
changes:
|
||||
- message: Fixed cargo telepads not teleporting in orders from linked consoles.
|
||||
type: Fix
|
||||
id: 6429
|
||||
time: '2024-04-23T12:07:12.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/27255
|
||||
- author: Plykiya
|
||||
changes:
|
||||
- message: Do-after bars of other players are now shaded and harder to see in the
|
||||
dark.
|
||||
type: Tweak
|
||||
id: 6430
|
||||
time: '2024-04-24T02:42:34.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/27273
|
||||
- author: Blackern5000
|
||||
changes:
|
||||
- message: The cargo telepad is now tier 2 technology rather than tier 3.
|
||||
type: Tweak
|
||||
id: 6431
|
||||
time: '2024-04-24T13:21:29.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/26270
|
||||
- author: FungiFellow
|
||||
changes:
|
||||
- message: Truncheon now fits in SecBelt
|
||||
type: Tweak
|
||||
id: 6432
|
||||
time: '2024-04-24T13:43:56.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/27281
|
||||
- author: pigeonpeas
|
||||
changes:
|
||||
- message: Adds a trash bag to the advanced cleaning module.
|
||||
type: Add
|
||||
id: 6433
|
||||
time: '2024-04-24T21:27:34.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/27226
|
||||
- author: Beck Thompson
|
||||
changes:
|
||||
- message: Radio jammer now has 3 selectable power operating levels and a battery
|
||||
level led indicator!
|
||||
type: Tweak
|
||||
id: 6434
|
||||
time: '2024-04-25T02:19:17.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/25912
|
||||
- author: cooldolphin
|
||||
changes:
|
||||
- message: Three variants of glasses are now available in the loadout menu.
|
||||
@@ -3804,3 +3760,48 @@
|
||||
id: 6928
|
||||
time: '2024-07-17T13:50:25.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/30033
|
||||
- author: Errant
|
||||
changes:
|
||||
- message: Vox are temporarily removed from Space Ninjas and all Unknown Shuttle
|
||||
ghostroles, until code supports giving them species-specific gear.
|
||||
type: Tweak
|
||||
id: 6929
|
||||
time: '2024-07-17T22:04:51.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/30099
|
||||
- author: Cojoke-dot
|
||||
changes:
|
||||
- message: You can no longer teleport objects that should not be in other objects
|
||||
into other objects with the Quantum Spin Inverter
|
||||
type: Fix
|
||||
id: 6930
|
||||
time: '2024-07-18T00:40:54.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/29200
|
||||
- author: Plykiya
|
||||
changes:
|
||||
- message: Stun batons no longer use up charges when hitting objects without stamina.
|
||||
type: Fix
|
||||
id: 6931
|
||||
time: '2024-07-18T00:48:09.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/30136
|
||||
- author: Sh18RW
|
||||
changes:
|
||||
- message: Moth can't eat boots with an item more
|
||||
type: Fix
|
||||
id: 6932
|
||||
time: '2024-07-18T22:34:18.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/30019
|
||||
- author: portfiend
|
||||
changes:
|
||||
- message: Reptilians display correct mask sprites in character customization screen.
|
||||
type: Fix
|
||||
id: 6933
|
||||
time: '2024-07-18T22:36:53.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/30095
|
||||
- author: Plykiya
|
||||
changes:
|
||||
- message: You no longer deal double damage to your first target when throwing an
|
||||
item.
|
||||
type: Fix
|
||||
id: 6934
|
||||
time: '2024-07-19T01:08:52.0000000+00:00'
|
||||
url: https://github.com/space-wizards/space-station-14/pull/30115
|
||||
|
||||
@@ -5,6 +5,7 @@ swap-teleporter-popup-link-destroyed = Quantum link destroyed!
|
||||
swap-teleporter-popup-teleport-cancel-time = It's still recharging!
|
||||
swap-teleporter-popup-teleport-cancel-link = It's not linked with another device!
|
||||
swap-teleporter-popup-teleport-other = {CAPITALIZE(THE($entity))} activates, and you find yourself somewhere else.
|
||||
swap-teleporter-popup-teleport-fail = {CAPITALIZE(THE($entity))} activates and fails to transport you anywhere.
|
||||
|
||||
swap-teleporter-verb-destroy-link = Destroy Quantum Link
|
||||
|
||||
|
||||
@@ -385,11 +385,11 @@ entities:
|
||||
- type: Transform
|
||||
- type: Map
|
||||
- type: PhysicsMap
|
||||
- type: GridTree
|
||||
- type: MovedGrids
|
||||
- type: Broadphase
|
||||
- type: OccluderTree
|
||||
- type: LoadedMap
|
||||
- type: GridTree
|
||||
- type: MovedGrids
|
||||
- proto: AirAlarm
|
||||
entities:
|
||||
- uid: 800
|
||||
@@ -401,8 +401,6 @@ entities:
|
||||
- type: DeviceList
|
||||
devices:
|
||||
- 801
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: AirCanister
|
||||
entities:
|
||||
- uid: 458
|
||||
@@ -410,8 +408,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 7.5,-0.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: Airlock
|
||||
entities:
|
||||
- uid: 48
|
||||
@@ -901,33 +897,21 @@ entities:
|
||||
- type: Transform
|
||||
pos: -2.5,-14.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 1013
|
||||
- uid: 697
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,-14.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 1014
|
||||
- uid: 698
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 1.5,-16.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 1014
|
||||
- uid: 984
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -2.5,-16.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 1013
|
||||
- proto: BoozeDispenser
|
||||
entities:
|
||||
- uid: 752
|
||||
@@ -2660,13 +2644,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 24.5,5.5
|
||||
parent: 179
|
||||
- proto: chem_master
|
||||
entities:
|
||||
- uid: 311
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 8.5,11.5
|
||||
parent: 179
|
||||
- proto: ChemDispenser
|
||||
entities:
|
||||
- uid: 583
|
||||
@@ -2704,6 +2681,13 @@ entities:
|
||||
- type: Transform
|
||||
pos: 6.4651074,9.828774
|
||||
parent: 179
|
||||
- proto: ChemMaster
|
||||
entities:
|
||||
- uid: 311
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 8.5,11.5
|
||||
parent: 179
|
||||
- proto: ChemMasterMachineCircuitboard
|
||||
entities:
|
||||
- uid: 718
|
||||
@@ -3031,27 +3015,18 @@ entities:
|
||||
- type: Transform
|
||||
pos: -2.5,-15.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 699
|
||||
- uid: 259
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 1.5,-14.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 983
|
||||
- uid: 463
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 1.5,-16.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 983
|
||||
- uid: 677
|
||||
components:
|
||||
- type: Transform
|
||||
@@ -3063,61 +3038,40 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -1.5,11.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 722
|
||||
- uid: 720
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: -0.5,11.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 722
|
||||
- uid: 721
|
||||
components:
|
||||
- type: Transform
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 0.5,11.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 722
|
||||
- uid: 985
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 1.5,-13.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 983
|
||||
- uid: 989
|
||||
components:
|
||||
- type: Transform
|
||||
rot: 3.141592653589793 rad
|
||||
pos: 1.5,-15.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 983
|
||||
- uid: 990
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -2.5,-13.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 699
|
||||
- uid: 991
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -2.5,-16.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 699
|
||||
- proto: CrateEngineeringToolbox
|
||||
entities:
|
||||
- uid: 692
|
||||
@@ -3575,8 +3529,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 3.5,-3.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasMixer
|
||||
entities:
|
||||
- uid: 747
|
||||
@@ -3585,8 +3537,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 3.5,-2.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasOutletInjector
|
||||
entities:
|
||||
- uid: 429
|
||||
@@ -3595,8 +3545,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 6.5,-1.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasPipeBend
|
||||
entities:
|
||||
- uid: 727
|
||||
@@ -3635,8 +3583,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 6.5,-0.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasPressurePump
|
||||
entities:
|
||||
- uid: 171
|
||||
@@ -3645,8 +3591,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 4.5,-3.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasValve
|
||||
entities:
|
||||
- uid: 168
|
||||
@@ -3655,8 +3599,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 4.5,-2.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasVentPump
|
||||
entities:
|
||||
- uid: 729
|
||||
@@ -3665,8 +3607,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 6.5,-3.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasVentScrubber
|
||||
entities:
|
||||
- uid: 452
|
||||
@@ -3675,8 +3615,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 6.5,-2.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GasVolumePump
|
||||
entities:
|
||||
- uid: 160
|
||||
@@ -3685,8 +3623,6 @@ entities:
|
||||
rot: -1.5707963267948966 rad
|
||||
pos: 4.5,-1.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: GeigerCounter
|
||||
entities:
|
||||
- uid: 759
|
||||
@@ -4223,9 +4159,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 12.5,24.5
|
||||
parent: 179
|
||||
- type: DeviceLinkSink
|
||||
links:
|
||||
- 1083
|
||||
- proto: MachineFrame
|
||||
entities:
|
||||
- uid: 533
|
||||
@@ -4379,8 +4312,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 7.5,-1.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: Ointment
|
||||
entities:
|
||||
- uid: 148
|
||||
@@ -4400,8 +4331,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 7.5,-3.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: PaperBin10
|
||||
entities:
|
||||
- uid: 977
|
||||
@@ -4435,8 +4364,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: 7.5,-2.5
|
||||
parent: 179
|
||||
- type: AtmosDevice
|
||||
joinedGrid: 179
|
||||
- proto: PlasticFlapsAirtightClear
|
||||
entities:
|
||||
- uid: 997
|
||||
@@ -5112,7 +5039,7 @@ entities:
|
||||
- type: Transform
|
||||
pos: -6.5,-12.5
|
||||
parent: 179
|
||||
- proto: soda_dispenser
|
||||
- proto: SodaDispenser
|
||||
entities:
|
||||
- uid: 751
|
||||
components:
|
||||
@@ -5164,20 +5091,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -3.5,4.5
|
||||
parent: 179
|
||||
- proto: SpawnVehicleATV
|
||||
entities:
|
||||
- uid: 1176
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -7.5,1.5
|
||||
parent: 179
|
||||
- proto: SpawnVehicleJanicart
|
||||
entities:
|
||||
- uid: 904
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 5.5,16.5
|
||||
parent: 179
|
||||
- proto: Spear
|
||||
entities:
|
||||
- uid: 185
|
||||
@@ -5809,20 +5722,6 @@ entities:
|
||||
- type: Transform
|
||||
pos: -7.5,4.5
|
||||
parent: 179
|
||||
- proto: VehicleKeyATV
|
||||
entities:
|
||||
- uid: 1187
|
||||
components:
|
||||
- type: Transform
|
||||
pos: -6.8905525,1.5128828
|
||||
parent: 179
|
||||
- proto: VehicleKeyJanicart
|
||||
entities:
|
||||
- uid: 14
|
||||
components:
|
||||
- type: Transform
|
||||
pos: 6.5,16.5
|
||||
parent: 179
|
||||
- proto: VendingMachineCigs
|
||||
entities:
|
||||
- uid: 870
|
||||
|
||||
@@ -607,6 +607,8 @@
|
||||
- type: randomHumanoidSettings
|
||||
id: LostCargoTechnician
|
||||
parent: EventHumanoid
|
||||
speciesBlacklist:
|
||||
- Vox
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-lost-cargo-technical-name
|
||||
@@ -658,6 +660,8 @@
|
||||
id: ClownTroupe
|
||||
parent: EventHumanoid
|
||||
randomizeName: false
|
||||
speciesBlacklist:
|
||||
- Vox
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-clown-troupe-name
|
||||
@@ -708,6 +712,8 @@
|
||||
- type: randomHumanoidSettings
|
||||
id: TravelingChef
|
||||
parent: EventHumanoid
|
||||
speciesBlacklist:
|
||||
- Vox
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-traveling-chef-name
|
||||
@@ -768,6 +774,8 @@
|
||||
- type: randomHumanoidSettings
|
||||
id: DisasterVictimHead
|
||||
parent: EventHumanoidMindShielded
|
||||
speciesBlacklist:
|
||||
- Vox
|
||||
components:
|
||||
- type: GhostRole
|
||||
name: ghost-role-information-disaster-victim-name
|
||||
@@ -826,6 +834,8 @@
|
||||
- type: randomHumanoidSettings
|
||||
id: SyndieDisasterVictim
|
||||
parent: EventHumanoid
|
||||
speciesBlacklist:
|
||||
- Vox
|
||||
components:
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
|
||||
@@ -71,5 +71,11 @@
|
||||
components:
|
||||
- type: HumanoidAppearance
|
||||
species: Reptilian
|
||||
hideLayersOnEquip:
|
||||
- Snout
|
||||
- HeadTop
|
||||
- HeadSide
|
||||
- type: Inventory
|
||||
speciesId: reptilian
|
||||
|
||||
#Weh
|
||||
|
||||
@@ -1109,6 +1109,11 @@
|
||||
- type: IconSmooth
|
||||
key: walls
|
||||
base: mining
|
||||
- type: RandomIconSmooth
|
||||
randomStates:
|
||||
- mining
|
||||
- miningB
|
||||
- type: Appearance
|
||||
|
||||
- type: entity
|
||||
parent: WallShuttleDiagonal
|
||||
|
||||
@@ -151,6 +151,10 @@
|
||||
minimumPlayers: 30
|
||||
- type: SpaceSpawnRule
|
||||
- type: AntagLoadProfileRule
|
||||
# Vox disabled until loadouts work on AntagSelection-based spawns
|
||||
speciesOverride: Human
|
||||
speciesOverrideBlacklist:
|
||||
- Vox
|
||||
- type: AntagObjectives
|
||||
objectives:
|
||||
- StealResearchObjective
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<GuideEntityEmbed Entity="MobSlimesGeras" Caption="A typical geras."/>
|
||||
</Box>
|
||||
|
||||
Slimepeople have an [bold]internal 2x2 storage inventory[/bold] inside of their slime membrane. Anyone can see what's inside and take it out of you without asking,
|
||||
Slimepeople have an [bold]internal 2x3 storage inventory[/bold] inside of their slime membrane. Anyone can see what's inside and take it out of you without asking,
|
||||
so be careful. They [bold]don't drop their internal storage when they morph into a geras, however![/bold]
|
||||
|
||||
Slimepeople have slight accelerated regeneration compared to other humanoids. They're also capable of hardening their fists, and as such have stronger punches,
|
||||
|
||||
@@ -7,40 +7,72 @@
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
{
|
||||
"name": "full"
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining0",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining1",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining2",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining3",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining4",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining5",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining6",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
{
|
||||
"name": "mining7",
|
||||
"directions": 4
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB0",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB2",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB3",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB4",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB5",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB6",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "miningB7",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB0.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB2.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB3.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB4.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB5.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB6.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Resources/Textures/Structures/Walls/mining.rsi/miningB7.png
Normal file
|
After Width: | Height: | Size: 962 B |