+++ /dev/null
-using System.Linq;
-using System.Numerics;
-using Content.Client.Parallax;
-using Content.Shared.Weather;
-using Robust.Client.GameObjects;
-using Robust.Client.Graphics;
-using Robust.Client.ResourceManagement;
-using Robust.Client.Utility;
-using Robust.Shared.Enums;
-using Robust.Shared.Graphics.RSI;
-using Robust.Shared.Map;
-using Robust.Shared.Map.Components;
-using Robust.Shared.Physics.Components;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Timing;
-using Robust.Shared.Utility;
-
-namespace Content.Client.Weather;
-
-public sealed class WeatherOverlay : Overlay
-{
- [Dependency] private readonly IClyde _clyde = default!;
- [Dependency] private readonly IEntityManager _entManager = default!;
- [Dependency] private readonly IGameTiming _timing = default!;
- [Dependency] private readonly IMapManager _mapManager = default!;
- [Dependency] private readonly IPrototypeManager _protoManager = default!;
- [Dependency] private readonly IResourceCache _cache = default!;
- private readonly SharedTransformSystem _transform;
- private readonly SpriteSystem _sprite;
- private readonly WeatherSystem _weather;
-
- public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
-
- private IRenderTexture? _blep;
-
- public WeatherOverlay(SharedTransformSystem transform, SpriteSystem sprite, WeatherSystem weather)
- {
- ZIndex = ParallaxSystem.ParallaxZIndex + 1;
- _transform = transform;
- _weather = weather;
- _sprite = sprite;
- IoCManager.InjectDependencies(this);
- }
-
- protected override bool BeforeDraw(in OverlayDrawArgs args)
- {
- if (args.MapId == MapId.Nullspace)
- return false;
-
- if (!_entManager.TryGetComponent<WeatherComponent>(_mapManager.GetMapEntityId(args.MapId), out var weather) ||
- weather.Weather.Count == 0)
- {
- return false;
- }
-
- return base.BeforeDraw(in args);
- }
-
- protected override void Draw(in OverlayDrawArgs args)
- {
- var mapUid = _mapManager.GetMapEntityId(args.MapId);
-
- if (!_entManager.TryGetComponent<WeatherComponent>(mapUid, out var comp))
- {
- return;
- }
-
- foreach (var (proto, weather) in comp.Weather)
- {
- if (!_protoManager.TryIndex<WeatherPrototype>(proto, out var weatherProto))
- continue;
-
- var alpha = _weather.GetPercent(weather, mapUid);
- DrawWorld(args, weatherProto, alpha);
- }
- }
-
- private void DrawWorld(in OverlayDrawArgs args, WeatherPrototype weatherProto, float alpha)
- {
- var worldHandle = args.WorldHandle;
- var mapId = args.MapId;
- var worldAABB = args.WorldAABB;
- var worldBounds = args.WorldBounds;
- var invMatrix = args.Viewport.GetWorldToLocalMatrix();
- var position = args.Viewport.Eye?.Position.Position ?? Vector2.Zero;
-
- if (_blep?.Texture.Size != args.Viewport.Size)
- {
- _blep?.Dispose();
- _blep = _clyde.CreateRenderTarget(args.Viewport.Size, new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), name: "weather-stencil");
- }
-
- // Cut out the irrelevant bits via stencil
- // This is why we don't just use parallax; we might want specific tiles to get drawn over
- // particularly for planet maps or stations.
- worldHandle.RenderInRenderTarget(_blep, () =>
- {
- var bodyQuery = _entManager.GetEntityQuery<PhysicsComponent>();
- var xformQuery = _entManager.GetEntityQuery<TransformComponent>();
- var weatherIgnoreQuery = _entManager.GetEntityQuery<IgnoreWeatherComponent>();
-
- // idk if this is safe to cache in a field and clear sloth help
- var grids = new List<Entity<MapGridComponent>>();
- _mapManager.FindGridsIntersecting(mapId, worldAABB, ref grids);
-
- foreach (var grid in grids)
- {
- var matrix = _transform.GetWorldMatrix(grid, xformQuery);
- Matrix3.Multiply(in matrix, in invMatrix, out var matty);
- worldHandle.SetTransform(matty);
-
- foreach (var tile in grid.Comp.GetTilesIntersecting(worldAABB))
- {
- // Ignored tiles for stencil
- if (_weather.CanWeatherAffect(grid, tile, weatherIgnoreQuery, bodyQuery))
- {
- continue;
- }
-
- var gridTile = new Box2(tile.GridIndices * grid.Comp.TileSize,
- (tile.GridIndices + Vector2i.One) * grid.Comp.TileSize);
-
- worldHandle.DrawRect(gridTile, Color.White);
- }
- }
-
- }, Color.Transparent);
-
- worldHandle.SetTransform(Matrix3.Identity);
- worldHandle.UseShader(_protoManager.Index<ShaderPrototype>("StencilMask").Instance());
- worldHandle.DrawTextureRect(_blep.Texture, worldBounds);
- Texture? sprite = null;
- var curTime = _timing.RealTime;
-
- switch (weatherProto.Sprite)
- {
- case SpriteSpecifier.Rsi rsi:
- var rsiActual = _cache.GetResource<RSIResource>(rsi.RsiPath).RSI;
- rsiActual.TryGetState(rsi.RsiState, out var state);
- var frames = state!.GetFrames(RsiDirection.South);
- var delays = state.GetDelays();
- var totalDelay = delays.Sum();
- var time = curTime.TotalSeconds % totalDelay;
- var delaySum = 0f;
-
- for (var i = 0; i < delays.Length; i++)
- {
- var delay = delays[i];
- delaySum += delay;
-
- if (time > delaySum)
- continue;
-
- sprite = frames[i];
- break;
- }
-
- sprite ??= _sprite.Frame0(weatherProto.Sprite);
- break;
- case SpriteSpecifier.Texture texture:
- sprite = texture.GetTexture(_cache);
- break;
- default:
- throw new NotImplementedException();
- }
-
- // Draw the rain
- worldHandle.UseShader(_protoManager.Index<ShaderPrototype>("StencilDraw").Instance());
-
- // TODO: This is very similar to parallax but we need stencil support but we can probably combine these somehow
- // and not make it spaghetti, while getting the advantages of not-duped code?
-
-
- // Okay I have spent like 5 hours on this at this point and afaict you have one of the following comprises:
- // - No scrolling so the weather is always centered on the player
- // - Crappy looking rotation but strafing looks okay and scrolls
- // - Crappy looking strafing but rotation looks okay.
- // - No rotation
- // - Storing state across frames to do scrolling and just having it always do topdown.
-
- // I have chosen no rotation.
-
- const float scale = 1f;
- const float slowness = 0f;
- var scrolling = Vector2.Zero;
-
- // Size of the texture in world units.
- var size = (sprite.Size / (float) EyeManager.PixelsPerMeter) * scale;
- var scrolled = scrolling * (float) curTime.TotalSeconds;
-
- // Origin - start with the parallax shift itself.
- var originBL = position * slowness + scrolled;
-
- // Centre the image.
- originBL -= size / 2;
-
- // Remove offset so we can floor.
- var flooredBL = args.WorldAABB.BottomLeft - originBL;
-
- // Floor to background size.
- flooredBL = (flooredBL / size).Floored() * size;
-
- // Re-offset.
- flooredBL += originBL;
-
- for (var x = flooredBL.X; x < args.WorldAABB.Right; x += size.X)
- {
- for (var y = flooredBL.Y; y < args.WorldAABB.Top; y += size.Y)
- {
- var box = Box2.FromDimensions(new Vector2(x, y), size);
- worldHandle.DrawTextureRect(sprite, box, (weatherProto.Color ?? Color.White).WithAlpha(alpha));
- }
- }
-
- worldHandle.SetTransform(Matrix3.Identity);
- worldHandle.UseShader(null);
- }
-}
/// <summary>
/// Assert whether or not the target has the given component.
/// </summary>
- protected void AssertComp<T>(bool hasComp = true, NetEntity? target = null) where T : IComponent
+ protected void AssertComp<T>(bool hasComp = true, NetEntity? target = null)
{
target ??= Target;
if (target == null)
}
// An entity may also remove components on init -> check no components are missing.
- foreach (var compType in prototype.Components.Keys)
+ foreach (var (compType, comp) in prototype.Components)
{
Assert.That(compNames, Does.Contain(compType), $"Prototype {prototype.ID} removes component {compType} on spawn.");
}
Assert.Fail($"Uninitialized entities should not be saving entity Uids. Component: {WritingComponent}. Prototype: {Prototype.ID}");
}
- return new ValueDataNode(value.Id.ToString());
+ return new ValueDataNode(value.ToString());
}
EntityUid ITypeReader<EntityUid, ValueDataNode>.Read(ISerializationManager serializationManager,
return;
}
- var targetNet = new NetEntity(targetId);
+ var target = new EntityUid(targetId);
- if (!_entities.TryGetEntity(targetNet, out var target))
+ if (!target.IsValid() || !_entities.EntityExists(target))
{
shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return;
}
- _entities.System<MindSystem>().ControlMob(player.UserId, target.Value);
+ _entities.System<MindSystem>().ControlMob(player.UserId, target);
}
}
}
[AdminCommand(AdminFlags.Fun)]
public sealed class OwoifyCommand : IConsoleCommand
{
- [Dependency] private readonly IEntityManager _entManager = default!;
-
public string Command => "owoify";
public string Description => "For when you need everything to be cat. Uses OwOAccent's formatting on the name and description of an entity.";
return;
}
+ var entityManager = IoCManager.Resolve<IEntityManager>();
+
if (!int.TryParse(args[0], out var targetId))
{
shell.WriteLine(Loc.GetString("shell-argument-must-be-number"));
return;
}
- var nent = new NetEntity(targetId);
-
- if (!_entManager.TryGetEntity(nent, out var eUid))
- {
- return;
- }
+ var eUid = new EntityUid(targetId);
- var meta = _entManager.GetComponent<MetaDataComponent>(eUid.Value);
+ var meta = entityManager.GetComponent<MetaDataComponent>(eUid);
- var owoSys = _entManager.System<OwOAccentSystem>();
- var metaDataSys = _entManager.System<MetaDataSystem>();
+ var owoSys = entityManager.System<OwOAccentSystem>();
+ var metaDataSys = entityManager.System<MetaDataSystem>();
- metaDataSys.SetEntityName(eUid.Value, owoSys.Accentuate(meta.EntityName), meta);
- metaDataSys.SetEntityDescription(eUid.Value, owoSys.Accentuate(meta.EntityDescription), meta);
+ metaDataSys.SetEntityName(eUid, owoSys.Accentuate(meta.EntityName), meta);
+ metaDataSys.SetEntityDescription(eUid, owoSys.Accentuate(meta.EntityDescription), meta);
}
}
[AdminCommand(AdminFlags.Admin)]
sealed class SetMindCommand : IConsoleCommand
{
- [Dependency] private readonly IEntityManager _entManager = default!;
public string Command => "setmind";
return;
}
- if (!int.TryParse(args[0], out var entInt))
+ if (!int.TryParse(args[0], out var entityUid))
{
shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number"));
return;
ghostOverride = bool.Parse(args[2]);
}
- var nent = new NetEntity(entInt);
+ var entityManager = IoCManager.Resolve<IEntityManager>();
- if (!_entManager.TryGetEntity(nent, out var eUid))
+ var eUid = new EntityUid(entityUid);
+
+ if (!eUid.IsValid() || !entityManager.EntityExists(eUid))
{
shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return;
}
- if (!_entManager.HasComponent<MindContainerComponent>(eUid))
+ if (!entityManager.HasComponent<MindContainerComponent>(eUid))
{
shell.WriteLine(Loc.GetString("set-mind-command-target-has-no-mind-message"));
return;
return;
}
- var mindSystem = _entManager.System<SharedMindSystem>();
- var metadata = _entManager.GetComponent<MetaDataComponent>(eUid.Value);
+ var mindSystem = entityManager.System<SharedMindSystem>();
+ var metadata = entityManager.GetComponent<MetaDataComponent>(eUid);
var mind = playerCData.Mind ?? mindSystem.CreateMind(session.UserId, metadata.EntityName);
return;
}
- if (!int.TryParse(args[0], out var entInt))
+ if (!int.TryParse(args[0], out var entityUid))
{
shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number"));
return;
}
- var targetNet = new NetEntity(entInt);
+ var target = new EntityUid(entityUid);
- if (!_entities.TryGetEntity(targetNet, out var target))
+ if (!target.IsValid() || !_entities.EntityExists(target))
{
shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return;
}
- if (!_entities.HasComponent<InventoryComponent>(target))
+ if (!_entities.HasComponent<InventoryComponent?>(target))
{
shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory")));
return;
}
var eui = IoCManager.Resolve<EuiManager>();
- var ui = new SetOutfitEui(targetNet);
+ var ui = new SetOutfitEui(target);
eui.OpenEui(ui, player);
return;
}
- if (!SetOutfit(target.Value, args[1], _entities))
+ if (!SetOutfit(target, args[1], _entities))
shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error"));
}
Text = Loc.GetString("set-outfit-verb-get-data-text"),
Category = VerbCategory.Debug,
Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/outfit.svg.192dpi.png")),
- Act = () => _euiManager.OpenEui(new SetOutfitEui(GetNetEntity(args.Target)), player),
+ Act = () => _euiManager.OpenEui(new SetOutfitEui(args.Target), player),
Impact = LogImpact.Medium
};
args.Verbs.Add(verb);
public sealed class SetOutfitEui : BaseEui
{
[Dependency] private readonly IAdminManager _adminManager = default!;
- private readonly NetEntity _target;
+ [Dependency] private readonly IEntityManager _entManager = default!;
+ private readonly EntityUid _target;
- public SetOutfitEui(NetEntity entity)
+ public SetOutfitEui(EntityUid entity)
{
_target = entity;
IoCManager.InjectDependencies(this);
{
return new SetOutfitEuiState
{
- TargetNetEntity = _target,
+ TargetNetEntity = _entManager.GetNetEntity(_target)
};
}
{
var comp = (Component) _serialization.CreateCopy(entry.Component, notNullableOverride: true);
comp.Owner = humanoid; // This .owner must survive for now.
- EntityManager.AddComponent(humanoid, comp);
+ EntityManager.AddComponent(humanoid, comp, true);
}
}
var temp = (object) component;
serializationManager.CopyTo(data.Component, ref temp);
- entityManager.AddComponent(mob, (Component) temp!);
+ entityManager.AddComponent(mob, (Component) temp!, true);
}
}
}
return;
}
- var nent = new NetEntity(int.Parse(args[0]));
+ var entId = new EntityUid(int.Parse(args[0]));
- if (!_entities.TryGetEntity(nent, out var entId))
+ if (!_entities.EntityExists(entId))
{
- shell.WriteError($"Unable to find entity {nent}");
+ shell.WriteError($"Unable to find entity with uid {entId}");
return;
}
return;
}
- var comp = _entities.AddComponent<HTNComponent>(entId.Value);
+ var comp = _entities.AddComponent<HTNComponent>(entId);
comp.RootTask = new HTNCompoundTask()
{
Task = args[1]
[AnyCommand]
public sealed class ColorNetworkCommand : IConsoleCommand
{
- [Dependency] private readonly IAdminManager _adminManager = default!;
- [Dependency] private readonly IEntityManager _entManager = default!;
-
public string Command => "colornetwork";
public string Description => Loc.GetString("color-network-command-description");
public string Help => Loc.GetString("color-network-command-help-text", ("command",Command));
return;
}
+
+
+ var entityManager = IoCManager.Resolve<IEntityManager>();
+
if (!int.TryParse(args[0], out var targetId))
{
shell.WriteLine(Loc.GetString("shell-argument-must-be-number"));
return;
}
- var nent = new NetEntity(targetId);
+ var eUid = new EntityUid(targetId);
- if (!_entManager.TryGetEntity(nent, out var eUid))
+ if (!eUid.IsValid() || !entityManager.EntityExists(eUid))
{
shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return;
}
- if (!_entManager.TryGetComponent(eUid, out NodeContainerComponent? nodeContainerComponent))
+ if (!entityManager.TryGetComponent(eUid, out NodeContainerComponent? nodeContainerComponent))
{
shell.WriteLine(Loc.GetString("shell-entity-is-not-node-container"));
return;
{
var group = nodeContainerComponent.Nodes[nodeGroupId.ToString().ToLower()].NodeGroup;
- if (group == null)
- return;
+ if (group == null) return;
foreach (var x in group.Nodes)
{
- if (!_entManager.TryGetComponent(x.Owner, out AtmosPipeColorComponent? atmosPipeColorComponent))
- continue;
+ if (!IoCManager.Resolve<IEntityManager>().TryGetComponent(x.Owner, out AtmosPipeColorComponent? atmosPipeColorComponent)) continue;
- _entManager.System<AtmosPipeColorSystem>().SetColor(x.Owner, atmosPipeColorComponent, color);
+ EntitySystem.Get<AtmosPipeColorSystem>().SetColor(x.Owner, atmosPipeColorComponent, color);
}
}
}
[AdminCommand(AdminFlags.Admin)]
public sealed class AddUplinkCommand : IConsoleCommand
{
- [Dependency] private readonly IConfigurationManager _cfgManager = default!;
- [Dependency] private readonly IEntityManager _entManager = default!;
- [Dependency] private readonly IPlayerManager _playerManager = default!;
-
public string Command => "adduplink";
public string Description => Loc.GetString("add-uplink-command-description");
if (args.Length > 0)
{
// Get player entity
- if (!_playerManager.TryGetSessionByUsername(args[0], out session))
+ if (!IoCManager.Resolve<IPlayerManager>().TryGetSessionByUsername(args[0], out session))
{
shell.WriteLine(Loc.GetString("shell-target-player-does-not-exist"));
return;
// Get target item
EntityUid? uplinkEntity = null;
+ var entityManager = IoCManager.Resolve<IEntityManager>();
if (args.Length >= 2)
{
if (!int.TryParse(args[1], out var itemID))
return;
}
- var eNet = new NetEntity(itemID);
-
- if (!_entManager.TryGetEntity(eNet, out var eUid))
+ var eUid = new EntityUid(itemID);
+ if (!eUid.IsValid() || !entityManager.EntityExists(eUid))
{
shell.WriteLine(Loc.GetString("shell-invalid-entity-id"));
return;
}
// Get TC count
- var tcCount = _cfgManager.GetCVar(CCVars.TraitorStartingBalance);
- Logger.Debug(_entManager.ToPrettyString(user));
+ var configManager = IoCManager.Resolve<IConfigurationManager>();
+ var tcCount = configManager.GetCVar(CCVars.TraitorStartingBalance);
+ Logger.Debug(entityManager.ToPrettyString(user));
// Finally add uplink
- var uplinkSys = _entManager.System<UplinkSystem>();
+ var uplinkSys = entityManager.EntitySysManager.GetEntitySystem<UplinkSystem>();
if (!uplinkSys.AddUplink(user, FixedPoint2.New(tcCount), uplinkEntity: uplinkEntity))
{
shell.WriteLine(Loc.GetString("add-uplink-command-error-2"));
[AdminCommand(AdminFlags.Admin)]
public sealed class InvokeVerbCommand : IConsoleCommand
{
- [Dependency] private readonly IEntityManager _entManager = default!;
-
public string Command => "invokeverb";
public string Description => Loc.GetString("invoke-verb-command-description");
public string Help => Loc.GetString("invoke-verb-command-help");
return;
}
- var verbSystem = _entManager.System<SharedVerbSystem>();
+ var entityManager = IoCManager.Resolve<IEntityManager>();
+ var verbSystem = entityManager.System<SharedVerbSystem>();
// get the 'player' entity (defaulting to command user, otherwise uses a uid)
EntityUid? playerEntity = null;
return;
}
}
+ else
+ {
+ entityManager.EntityExists(new EntityUid(intPlayerUid));
+ }
// gets the target entity
if (!int.TryParse(args[1], out var intUid))
return;
}
- var targetNet = new NetEntity(intUid);
-
- if (!_entManager.TryGetEntity(targetNet, out var target))
+ var target = new EntityUid(intUid);
+ if (!entityManager.EntityExists(target))
{
shell.WriteError(Loc.GetString("invoke-verb-command-invalid-target-entity"));
return;
}
var verbName = args[2].ToLowerInvariant();
- var verbs = verbSystem.GetLocalVerbs(target.Value, playerEntity.Value, Verb.VerbTypes, true);
+ var verbs = verbSystem.GetLocalVerbs(target, playerEntity.Value, Verb.VerbTypes, true);
+
// if the "verb name" is actually a verb-type, try run any verb of that type.
var verbType = Verb.VerbTypes.FirstOrDefault(x => x.Name == verbName);
var verb = verbs.FirstOrDefault(v => v.GetType() == verbType);
if (verb != null)
{
- verbSystem.ExecuteVerb(verb, playerEntity.Value, target.Value, forced: true);
+ verbSystem.ExecuteVerb(verb, playerEntity.Value, target, forced: true);
shell.WriteLine(Loc.GetString("invoke-verb-command-success", ("verb", verbName), ("target", target), ("player", playerEntity)));
return;
}
{
if (verb.Text.ToLowerInvariant() == verbName)
{
- verbSystem.ExecuteVerb(verb, playerEntity.Value, target.Value, forced: true);
+ verbSystem.ExecuteVerb(verb, playerEntity.Value, target, forced: true);
shell.WriteLine(Loc.GetString("invoke-verb-command-success", ("verb", verb.Text), ("target", target), ("player", playerEntity)));
return;
}
[AdminCommand(AdminFlags.Admin)]
public sealed class ListVerbsCommand : IConsoleCommand
{
- [Dependency] private readonly IEntityManager _entManager = default!;
-
public string Command => "listverbs";
public string Description => Loc.GetString("list-verbs-command-description");
public string Help => Loc.GetString("list-verbs-command-help");
return;
}
- var verbSystem = _entManager.System<SharedVerbSystem>();
+ var entityManager = IoCManager.Resolve<IEntityManager>();
+ var verbSystem = EntitySystem.Get<SharedVerbSystem>();
// get the 'player' entity (defaulting to command user, otherwise uses a uid)
EntityUid? playerEntity = null;
-
if (!int.TryParse(args[0], out var intPlayerUid))
{
if (args[0] == "self" && shell.Player?.AttachedEntity != null)
return;
}
}
+ else
+ {
+ entityManager.EntityExists(new EntityUid(intPlayerUid));
+ }
// gets the target entity
if (!int.TryParse(args[1], out var intUid))
return;
}
- var targetNet = new NetEntity(intUid);
-
- if (!_entManager.TryGetEntity(targetNet, out var target))
+ var target = new EntityUid(intUid);
+ if (!entityManager.EntityExists(target))
{
shell.WriteError(Loc.GetString("list-verbs-command-invalid-target-entity"));
return;
}
- var verbs = verbSystem.GetLocalVerbs(target.Value, playerEntity.Value, Verb.VerbTypes);
+ var verbs = verbSystem.GetLocalVerbs(target, playerEntity.Value, Verb.VerbTypes);
foreach (var verb in verbs)
{
component.AnalyzerEntity = null;
}
- // TODO: Yeah this comp relies upon event ordering so we get this for now.
- if (!TerminatingOrDeleted(uid))
- UpdateUserInterface(uid, component);
+ UpdateUserInterface(uid, component);
}
private void UpdateUserInterface(EntityUid uid, AnalysisConsoleComponent? component = null)
var temp = (object) comp;
_serialization.CopyTo(entry.Component, ref temp);
- EntityManager.AddComponent(uid, (Component) temp!);
+ EntityManager.AddComponent(uid, (Component) temp!, true);
}
node.Discovered = true;
comp.Owner = uid;
var temp = (object) comp;
_serialization.CopyTo(entry, ref temp);
- EntityManager.AddComponent(uid, (Component) temp!);
+ EntityManager.AddComponent(uid, (Component) temp!, true);
continue;
}
var pulse = EnsureComp<AnomalyPulsingComponent>(uid);
pulse.EndTime = Timing.CurTime + pulse.PulseDuration;
Appearance.SetData(uid, AnomalyVisuals.IsPulsing, true);
-
+
var ev = new AnomalyPulseEvent(uid, component.Stability, component.Severity);
RaiseLocalEvent(uid, ref ev, true);
}
using Content.Shared.Damage;
+using Content.Shared.Damage.Prototypes;
using Robust.Shared.Audio;
using Robust.Shared.Containers;
using Content.Shared.ActionBlocker;
+using Content.Shared.Buckle.Components;
using Content.Shared.Movement.Events;
using Content.Shared.StepTrigger.Systems;
using Robust.Shared.Network;
+using Robust.Shared.Physics.Components;
using Robust.Shared.Timing;
namespace Content.Shared.Chasm;
+using System.Numerics;
using Content.Shared.ActionBlocker;
using Content.Shared.Body.Components;
using Content.Shared.Body.Part;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
using Content.Shared.Movement.Events;
+using Content.Shared.Movement.Systems;
using Content.Shared.Physics;
using Content.Shared.Popups;
using Content.Shared.Stunnable;
/// </summary>
public void RemoveItemSlot(EntityUid uid, ItemSlot slot, ItemSlotsComponent? itemSlots = null)
{
- if (TerminatingOrDeleted(uid) || slot.ContainerSlot == null)
+ if (Terminating(uid) || slot.ContainerSlot == null)
return;
slot.ContainerSlot.Shutdown();
using Content.Shared.Administration.Components;
using Content.Shared.Administration.Logs;
using Content.Shared.Alert;
+using Content.Shared.Atmos.Piping.Unary.Components;
using Content.Shared.Buckle.Components;
using Content.Shared.Cuffs.Components;
using Content.Shared.Damage;
using Robust.Shared.Containers;
using Robust.Shared.Network;
using Robust.Shared.Player;
+using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
namespace Content.Shared.Inventory;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!;
[Dependency] private readonly SharedInteractionSystem _interactionSystem = default!;
+ [Dependency] private readonly SharedItemSystem _item = default!;
[Dependency] private readonly SharedContainerSystem _containerSystem = default!;
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
- [Dependency] private readonly SharedItemSystem _item = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly INetManager _netMan = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
lockComp.Locked = true;
_appearanceSystem.SetData(uid, StorageVisuals.Locked, true);
- Dirty(uid, lockComp);
+ Dirty(lockComp);
var ev = new LockToggledEvent(true);
RaiseLocalEvent(uid, ref ev, true);
lockComp.Locked = false;
_appearanceSystem.SetData(uid, StorageVisuals.Locked, false);
- Dirty(uid, lockComp);
+ Dirty(lockComp);
var ev = new LockToggledEvent(false);
RaiseLocalEvent(uid, ref ev, true);
+using Content.Shared.Mech;
using Content.Shared.Mech.Equipment.Components;
+using Content.Shared.Mech.Equipment.Systems;
using Content.Shared.Timing;
+using Robust.Shared.Audio;
using System.Linq;
namespace Content.Shared.Mech.Equipment.Systems;
using Content.Shared.RCD.Components;
using Content.Shared.Tag;
using Content.Shared.Tiles;
+using Robust.Shared.Audio;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Network;
using Content.Shared.Interaction;
using Content.Shared.Popups;
using Content.Shared.Radio.Components;
+using Content.Shared.Tools;
using Content.Shared.Tools.Components;
using Content.Shared.Wires;
using Robust.Shared.Containers;
using Robust.Shared.Map;
using Robust.Shared.Network;
using Robust.Shared.Physics;
+using Robust.Shared.Physics.Components;
using Robust.Shared.Physics.Systems;
+using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
using Content.Shared.ActionBlocker;
using Content.Shared.Administration.Logs;
+using Content.Shared.Audio;
+using Content.Shared.DragDrop;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Inventory.Events;
using Content.Shared.Hands;
using Content.Shared.Mobs;
using Content.Shared.Mobs.Components;
+using Content.Shared.Mobs.Systems;
using Content.Shared.Movement.Events;
using Content.Shared.Movement.Systems;
using Content.Shared.Standing;
using Content.Shared.StatusEffect;
using Content.Shared.Throwing;
+using Robust.Shared.Audio;
+using Robust.Shared.GameStates;
+using Robust.Shared.Player;
namespace Content.Shared.Stunnable;
using Content.Shared.Examine;
using Content.Shared.Weapons.Ranged.Components;
using Robust.Shared.Network;
+using Robust.Shared.Player;
using Robust.Shared.Timing;
+using Robust.Shared.Utility;
namespace Content.Shared.Weapons.Ranged.Systems;