Merge pull request #338 from crystallpunk-14/ed-19-07-2024-upstream-walls

Ed 19 07 2024 upstream walls
This commit is contained in:
Ed
2024-07-19 11:35:48 +03:00
committed by GitHub
66 changed files with 319 additions and 253 deletions

View File

@@ -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

View File

@@ -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");

View File

@@ -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!;

View 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);
}
}

View File

@@ -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;

View File

@@ -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)

View File

@@ -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;

View File

@@ -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 = [];

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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()

View File

@@ -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)

View File

@@ -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;

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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()
{

View File

@@ -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()
{

View 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);
}
}

View File

@@ -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;

View File

@@ -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)

View File

@@ -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/>

View File

@@ -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()

View File

@@ -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)

View File

@@ -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()

View File

@@ -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()
{

View File

@@ -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);

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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!;

View File

@@ -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)
{

View File

@@ -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!;

View File

@@ -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/>

View File

@@ -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()
{

View File

@@ -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)

View 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();
}

View 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
}

View File

@@ -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);

View File

@@ -25,8 +25,8 @@ namespace Content.Shared.Localizations
public void Initialize()
{
//Ru localization
var culture = new CultureInfo(Culture);
// Uncomment for Ru localization
_loc.LoadCulture(culture);
var fallbackCulture = new CultureInfo("en-US");
@@ -34,10 +34,6 @@ namespace Content.Shared.Localizations
_loc.SetFallbackCluture(fallbackCulture);
//
//Eng localization
//var culture = new CultureInfo(Culture);
//
_loc.AddFunction(culture, "PRESSURE", FormatPressure);
_loc.AddFunction(culture, "POWERWATTS", FormatPowerWatts);
_loc.AddFunction(culture, "POWERJOULES", FormatPowerJoules);

View File

@@ -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()

View File

@@ -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!;

View File

@@ -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));
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -71,5 +71,11 @@
components:
- type: HumanoidAppearance
species: Reptilian
hideLayersOnEquip:
- Snout
- HeadTop
- HeadSide
- type: Inventory
speciesId: reptilian
#Weh

View File

@@ -1109,6 +1109,11 @@
- type: IconSmooth
key: walls
base: mining
- type: RandomIconSmooth
randomStates:
- mining
- miningB
- type: Appearance
- type: entity
parent: WallShuttleDiagonal

View File

@@ -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

View File

@@ -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,

View File

@@ -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
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B