diff --git a/Content.Client/Gameplay/GameplayStateBase.cs b/Content.Client/Gameplay/GameplayStateBase.cs index 6236cd8e95..cfcb6367e9 100644 --- a/Content.Client/Gameplay/GameplayStateBase.cs +++ b/Content.Client/Gameplay/GameplayStateBase.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Numerics; using Content.Client.Clickable; using Content.Client.UserInterface; +using Content.Shared.Damage; using Content.Shared.Input; using Robust.Client.ComponentTrees; using Robust.Client.GameObjects; @@ -102,6 +103,13 @@ namespace Content.Client.Gameplay return first.IsValid() ? first : null; } + public EntityUid? GetDamageableClickedEntity(MapCoordinates coordinates) // WD + { + var first = GetClickableEntities(coordinates) + .FirstOrDefault(e => _entityManager.HasComponent(e)); + return first.IsValid() ? first : null; + } + public IEnumerable GetClickableEntities(EntityCoordinates coordinates) { return GetClickableEntities(coordinates.ToMap(_entityManager, _entitySystemManager.GetEntitySystem())); diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 0298b5de46..bb96d478e3 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -121,7 +121,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem if (_stateManager.CurrentState is GameplayStateBase screen) { - target = screen.GetClickedEntity(mousePos); + target = screen.GetDamageableClickedEntity(mousePos); // WD EDIT } EntityManager.RaisePredictiveEvent(new DisarmAttackEvent(GetNetEntity(target), GetNetCoordinates(coordinates))); @@ -169,7 +169,7 @@ public sealed partial class MeleeWeaponSystem : SharedMeleeWeaponSystem if (_stateManager.CurrentState is GameplayStateBase screen) { - target = screen.GetClickedEntity(mousePos); + target = screen.GetDamageableClickedEntity(mousePos); // WD EDIT } // Don't light-attack if interaction will be handling this instead diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs index b095ff9eb4..2426d39872 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.cs @@ -190,7 +190,7 @@ public sealed partial class GunSystem : SharedGunSystem EntityUid? shootingTarget = null; if (_state.CurrentState is GameplayStateBase screen) - shootingTarget = screen.GetClickedEntity(mousePos); + shootingTarget = screen.GetDamageableClickedEntity(mousePos); EntityManager.RaisePredictiveEvent(new RequestShootEvent { diff --git a/Content.Client/_White/Overlays/NightVisionOverlay.cs b/Content.Client/_White/Overlays/NightVisionOverlay.cs index ffc98c1294..0ed82b8d4d 100644 --- a/Content.Client/_White/Overlays/NightVisionOverlay.cs +++ b/Content.Client/_White/Overlays/NightVisionOverlay.cs @@ -31,23 +31,28 @@ namespace Content.Client._White.Overlays var handle = args.WorldHandle; + if (_playerManager.LocalEntity == null) + return; + + var uid = _playerManager.LocalEntity.Value; + Color? color = null; - if (_entityManager.TryGetComponent(_playerManager.LocalSession?.AttachedEntity, - out var component) && component.IsActive) + if (_entityManager.TryGetComponent(uid, out var component) && component.IsActive) { - _shader.SetParameter("tint", component.Tint); - _shader.SetParameter("luminance_threshold", component.Strength); - _shader.SetParameter("noise_amount", component.Noise); - color = component.Color; + color = SetParameters(component); } - else if (_entityManager.TryGetComponent( - _playerManager.LocalSession?.AttachedEntity, out var tempNvComp)) + else if (_entityManager.TryGetComponent(uid, out var thermal) && thermal.IsActive) { - _shader.SetParameter("tint", tempNvComp.Tint); - _shader.SetParameter("luminance_threshold", tempNvComp.Strength); - _shader.SetParameter("noise_amount", tempNvComp.Noise); - color = tempNvComp.Color; + color = SetParameters(thermal); + } + else if (_entityManager.TryGetComponent(uid, out var tempNvComp)) + { + color = SetParameters(tempNvComp); + } + else if (_entityManager.TryGetComponent(uid, out var tempThermal)) + { + color = SetParameters(tempThermal); } if (color == null) @@ -59,5 +64,13 @@ namespace Content.Client._White.Overlays handle.DrawRect(args.WorldBounds, color.Value); handle.UseShader(null); } + + private Color SetParameters(BaseNvOverlayComponent component) + { + _shader.SetParameter("tint", component.Tint); + _shader.SetParameter("luminance_threshold", component.Strength); + _shader.SetParameter("noise_amount", component.Noise); + return component.Color; + } } } diff --git a/Content.Client/_White/Overlays/NightVisionSystem.cs b/Content.Client/_White/Overlays/NightVisionSystem.cs index 00934c5765..92d7d88ac3 100644 --- a/Content.Client/_White/Overlays/NightVisionSystem.cs +++ b/Content.Client/_White/Overlays/NightVisionSystem.cs @@ -72,6 +72,7 @@ public sealed class NightVisionSystem : SharedNightVisionSystem if (_player.LocalSession != player) return; + UpdateOverlay(active); UpdateNightVision(active); } @@ -80,16 +81,31 @@ public sealed class NightVisionSystem : SharedNightVisionSystem if (_player.LocalSession?.AttachedEntity != uid) return; + UpdateOverlay(active); UpdateNightVision(active); } - private void UpdateNightVision(bool active) + public void UpdateOverlay(bool active) { + if (_player.LocalEntity == null) + { + _overlayMan.RemoveOverlay(_overlay); + return; + } + + var uid = _player.LocalEntity.Value; + active |= TryComp(uid, out var nv) && nv.IsActive || + TryComp(uid, out var thermal) && thermal.IsActive || + HasComp(uid) || + HasComp(uid); if (active) _overlayMan.AddOverlay(_overlay); else _overlayMan.RemoveOverlay(_overlay); + } + private void UpdateNightVision(bool active) + { _lightManager.DrawLighting = !active; } diff --git a/Content.Client/_White/Overlays/ThermalVisionOverlay.cs b/Content.Client/_White/Overlays/ThermalVisionOverlay.cs new file mode 100644 index 0000000000..ace9bfaf5a --- /dev/null +++ b/Content.Client/_White/Overlays/ThermalVisionOverlay.cs @@ -0,0 +1,103 @@ +using System.Linq; +using System.Numerics; +using Content.Shared._White.Overlays; +using Content.Shared.Body.Components; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Enums; +using Robust.Shared.Map; + +namespace Content.Client._White.Overlays; + +public sealed class ThermalVisionOverlay : Overlay +{ + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IPlayerManager _players = default!; + + private readonly ContainerSystem _container; + private readonly TransformSystem _transform; + private readonly OccluderSystem _occluder; + + public override OverlaySpace Space => OverlaySpace.WorldSpace; + + private readonly List _entries = new(); + + public ThermalVisionOverlay() + { + IoCManager.InjectDependencies(this); + + _container = _entity.System(); + _transform = _entity.System(); + _occluder = _entity.System(); + ZIndex = -1; + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (_players.LocalEntity == null) + return; + + var ent = _players.LocalEntity.Value; + + if ((!_entity.TryGetComponent(ent, out ThermalVisionComponent? component) || !component.IsActive) && + !_entity.HasComponent(ent)) + { + return; + } + + if (HasOccluders(ent)) + return; + + var handle = args.WorldHandle; + var eye = args.Viewport.Eye; + var eyeRot = eye?.Rotation ?? default; + + _entries.Clear(); + var entities = _entity.EntityQueryEnumerator(); + while (entities.MoveNext(out var uid, out _, out var sprite, out var xform)) + { + if (HasOccluders(uid)) + continue; + + _entries.Add(new NightVisionRenderEntry((uid, sprite, xform), + eye?.Position.MapId, + eyeRot)); + } + + foreach (var entry in _entries) + { + Render(entry.Ent, entry.Map, handle, entry.EyeRot); + } + + handle.SetTransform(Matrix3.Identity); + } + + private void Render(Entity ent, + MapId? map, + DrawingHandleWorld handle, + Angle eyeRot) + { + var (uid, sprite, xform) = ent; + if (xform.MapID != map || _container.IsEntityOrParentInContainer(uid)) + return; + + var position = _transform.GetWorldPosition(xform); + var rotation = _transform.GetWorldRotation(xform); + + sprite.Render(handle, eyeRot, rotation, position: position); + } + + private bool HasOccluders(EntityUid ent) + { + var mapCoordinates = _transform.GetMapCoordinates(ent); + var occluders = _occluder.QueryAabb(mapCoordinates.MapId, + Box2.CenteredAround(mapCoordinates.Position, new Vector2(0.4f, 0.4f))); + return occluders.Any(o => o.Component.Enabled); + } +} + +public record struct NightVisionRenderEntry( + (EntityUid, SpriteComponent, TransformComponent) Ent, + MapId? Map, + Angle EyeRot); diff --git a/Content.Client/_White/Overlays/ThermalVisionSystem.cs b/Content.Client/_White/Overlays/ThermalVisionSystem.cs new file mode 100644 index 0000000000..42457c0bb5 --- /dev/null +++ b/Content.Client/_White/Overlays/ThermalVisionSystem.cs @@ -0,0 +1,109 @@ +using Content.Shared._Miracle.Systems; +using Content.Shared.GameTicking; +using Content.Shared._White.Overlays; +using Robust.Client.Graphics; +using Robust.Client.Player; +using Robust.Shared.Player; + +namespace Content.Client._White.Overlays; + +public sealed class ThermalVisionSystem : SharedThermalVisionSystem +{ + [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IOverlayManager _overlayMan = default!; + [Dependency] private readonly NightVisionSystem _nv = default!; + + private ThermalVisionOverlay _overlay = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); + SubscribeLocalEvent(OnRestart); + + SubscribeLocalEvent(OnTempInit); + SubscribeLocalEvent(OnTempRemove); + SubscribeLocalEvent(OnTempPlayerAttached); + SubscribeLocalEvent(OnTempPlayerDetached); + + _overlay = new ThermalVisionOverlay(); + } + + private void OnTempPlayerAttached(Entity ent, ref PlayerAttachedEvent args) + { + UpdateThermalVision(args.Player, true); + } + + private void OnTempPlayerDetached(Entity ent, ref PlayerDetachedEvent args) + { + UpdateThermalVision(args.Player, false); + } + + private void OnTempRemove(Entity ent, ref ComponentRemove args) + { + if (TryComp(ent, out ThermalVisionComponent? thermalVision) && thermalVision.IsActive) + return; + + UpdateThermalVision(ent, false); + } + + private void OnTempInit(Entity ent, ref ComponentInit args) + { + UpdateThermalVision(ent, true); + } + + private void OnPlayerAttached(EntityUid uid, ThermalVisionComponent component, PlayerAttachedEvent args) + { + if (!component.IsActive && HasComp(args.Entity)) + return; + + UpdateThermalVision(args.Player, component.IsActive); + } + + private void OnPlayerDetached(EntityUid uid, ThermalVisionComponent component, PlayerDetachedEvent args) + { + UpdateThermalVision(args.Player, false); + } + + private void UpdateThermalVision(ICommonSession player, bool active) + { + if (_player.LocalSession != player) + return; + + _nv.UpdateOverlay(active); + UpdateThermalVision(active); + } + + protected override void UpdateThermalVision(EntityUid uid, bool active) + { + if (_player.LocalSession?.AttachedEntity != uid) + return; + + _nv.UpdateOverlay(active); + UpdateThermalVision(active); + } + + public void UpdateThermalVision(bool active) + { + if (_player.LocalEntity == null) + { + _overlayMan.RemoveOverlay(_overlay); + return; + } + + var uid = _player.LocalEntity.Value; + active |= TryComp(uid, out var thermal) && thermal.IsActive || + HasComp(uid); + if (active) + _overlayMan.AddOverlay(_overlay); + else + _overlayMan.RemoveOverlay(_overlay); + } + + private void OnRestart(RoundRestartCleanupEvent ev) + { + _overlayMan.RemoveOverlay(_overlay); + } +} diff --git a/Content.Server/Changeling/ChangelingSystem.Abilities.cs b/Content.Server/Changeling/ChangelingSystem.Abilities.cs index 8e87a63927..b9e765d626 100644 --- a/Content.Server/Changeling/ChangelingSystem.Abilities.cs +++ b/Content.Server/Changeling/ChangelingSystem.Abilities.cs @@ -672,12 +672,14 @@ public sealed partial class ChangelingSystem if (HasComp(ent)) { RemComp(ent); + RemComp(ent); EnsureComp(ent); EnsureComp(ent); return; } EnsureComp(ent); + EnsureComp(ent); RemComp(ent); RemComp(ent); } @@ -1054,6 +1056,19 @@ public sealed partial class ChangelingSystem EntityManager.AddComponent(to, toAdd); } + if (TryComp(from, out TemporaryThermalVisionComponent? thermal)) + { + var toAdd = new TemporaryThermalVisionComponent + { + Color = thermal.Color, + Tint = thermal.Tint, + Strength = thermal.Strength, + Noise = thermal.Noise + }; + + EntityManager.AddComponent(to, toAdd); + } + if (TryComp(from, out NpcFactionMemberComponent? factionMember)) { _faction.ClearFactions(to); diff --git a/Content.Server/Changeling/ChangelingSystem.Shop.cs b/Content.Server/Changeling/ChangelingSystem.Shop.cs index ddf691767c..9dbc95fc55 100644 --- a/Content.Server/Changeling/ChangelingSystem.Shop.cs +++ b/Content.Server/Changeling/ChangelingSystem.Shop.cs @@ -28,6 +28,7 @@ public sealed partial class ChangelingSystem RemComp(ent); RemComp(ent); RemComp(ent); + RemComp(ent); RemComp(ent); foreach (var hand in _handsSystem.EnumerateHands(ent)) diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index 3675c214b1..b8d7389533 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -153,7 +153,7 @@ namespace Content.Server.Explosion.EntitySystems private void HandleFlashTrigger(EntityUid uid, FlashOnTriggerComponent component, TriggerEvent args) { // TODO Make flash durations sane ffs. - _flashSystem.FlashArea(uid, args.User, component.Range, component.Duration * 1000f, probability: component.Probability); + _flashSystem.FlashArea(uid, args.User, component.Range, component.Duration * 1000f, probability: component.Probability, forceStun: component.ForceStun); // WD edit args.Handled = true; } diff --git a/Content.Server/Flash/FlashSystem.cs b/Content.Server/Flash/FlashSystem.cs index 148c45c8a2..2e5a713192 100644 --- a/Content.Server/Flash/FlashSystem.cs +++ b/Content.Server/Flash/FlashSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Flash.Components; using Content.Server.Light.EntitySystems; using Content.Server.Popups; using Content.Server.Stunnable; +using Content.Shared._White.BuffedFlashGrenade; using Content.Shared.Charges.Components; using Content.Shared.Charges.Systems; using Content.Shared.Eye.Blinding.Components; @@ -38,6 +39,7 @@ namespace Content.Server.Flash [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly StatusEffectsSystem _statusEffectsSystem = default!; + [Dependency] private readonly FlashSoundSuppressionSystem _flashSoundSuppressionSystem = default!; public override void Initialize() { @@ -152,7 +154,8 @@ namespace Content.Server.Flash } } - public void FlashArea(Entity source, EntityUid? user, float range, float duration, float slowTo = 0.8f, bool displayPopup = false, float probability = 1f, SoundSpecifier? sound = null) + // WD edit + public void FlashArea(Entity source, EntityUid? user, float range, float duration, float slowTo = 0.8f, bool displayPopup = false, float probability = 1f, SoundSpecifier? sound = null, bool forceStun = false) { var transform = Transform(source); var mapPosition = _transform.GetMapCoordinates(transform); @@ -175,6 +178,9 @@ namespace Content.Server.Flash // They shouldn't have flash removed in between right? Flash(entity, user, source, duration, slowTo, displayPopup); + + if (forceStun) // WD + _flashSoundSuppressionSystem.Stun(entity, duration); } _audio.PlayPvs(sound, source, AudioParams.Default.WithVolume(1f).WithMaxDistance(3f)); diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index c2f00a6c06..77d38c8bb9 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -251,8 +251,32 @@ public sealed class NukeopsRuleSystem : GameRuleSystem continue; } + MapId? targetStationMap = null; + if (nukeops.TargetStation != null && TryComp(nukeops.TargetStation, out StationDataComponent? stationData)) + { + var stationGrid = stationData.Grids.FirstOrNull(); + targetStationMap = stationGrid != null + ? Transform(stationGrid.Value).MapID + : null; + } + + // WD EDIT nukeops.WinConditions.Add(WinCondition.NukeExplodedOnCorrectStation); - SetWinType(uid, WinType.OpsMajor, nukeops); + + + var operatives = EntityQuery(true); + var operativesAlive = operatives + .Any(ent => ent.Item2.MapID != targetStationMap && ent.Item1.Running); + + if (operativesAlive) + SetWinType(uid, WinType.OpsMajor, nukeops); + else + { + nukeops.WinConditions.Add(WinCondition.AllNukiesDead); + SetWinType(uid, WinType.OpsMinor, nukeops); + } + // WD EDIT + correctStation = true; } @@ -516,7 +540,7 @@ public sealed class NukeopsRuleSystem : GameRuleSystem return; // If the win condition was set to operative/crew major win, ignore. - if (component.WinType == WinType.OpsMajor || component.WinType == WinType.CrewMajor) + if (component.WinType == WinType.OpsMajor || component.WinType == WinType.CrewMajor || component.WinType == WinType.OpsMinor) return; var nukeQuery = AllEntityQuery(); @@ -527,6 +551,7 @@ public sealed class NukeopsRuleSystem : GameRuleSystem if (nuke.Status != NukeStatus.ARMED) continue; + Log.Error("hyi"); // UH OH if (nukeTransform.MapUid != null && centcomms.Contains(nukeTransform.MapUid.Value)) { @@ -552,39 +577,42 @@ public sealed class NukeopsRuleSystem : GameRuleSystem } } - var allAlive = true; - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var nukeopsUid, out _, out var mindContainer, out var mobState)) + if (!component.WinConditions.Contains(WinCondition.AllNukiesDead)) // WD EDIT { - // mind got deleted somehow so ignore it - if (!_mind.TryGetMind(nukeopsUid, out _, out var mind, mindContainer)) - continue; - - // check if player got gibbed or ghosted or something - count as dead - if (mind.OwnedEntity != null && - // if the player somehow isn't a mob anymore that also counts as dead - // have to be alive, not crit or dead - mobState.CurrentState is MobState.Alive) + var allAlive = true; + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var nukeopsUid, out _, out var mindContainer, out var mobState)) { - continue; + // mind got deleted somehow so ignore it + if (!_mind.TryGetMind(nukeopsUid, out _, out var mind, mindContainer)) + continue; + + // check if player got gibbed or ghosted or something - count as dead + if (mind.OwnedEntity != null && + // if the player somehow isn't a mob anymore that also counts as dead + // have to be alive, not crit or dead + mobState.CurrentState is MobState.Alive) + { + continue; + } + + allAlive = false; + break; } - allAlive = false; - break; - } + // If all nuke ops were alive at the end of the round, + // the nuke ops win. This is to prevent people from + // running away the moment nuke ops appear. + if (allAlive) + { + SetWinType(uid, WinType.OpsMinor, component); + component.WinConditions.Add(WinCondition.AllNukiesAlive); + return; + } - // If all nuke ops were alive at the end of the round, - // the nuke ops win. This is to prevent people from - // running away the moment nuke ops appear. - if (allAlive) - { - SetWinType(uid, WinType.OpsMinor, component); - component.WinConditions.Add(WinCondition.AllNukiesAlive); - return; + component.WinConditions.Add(WinCondition.SomeNukiesAlive); } - component.WinConditions.Add(WinCondition.SomeNukiesAlive); - var diskAtCentCom = false; var diskQuery = AllEntityQuery(); @@ -619,7 +647,7 @@ public sealed class NukeopsRuleSystem : GameRuleSystem component.WinType = type; - if (endRound && (type == WinType.CrewMajor || type == WinType.OpsMajor)) + if (endRound && (type == WinType.CrewMajor || type == WinType.OpsMajor || type == WinType.OpsMinor)) _roundEndSystem.EndRound(); } diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index 8df25feebf..c0a4d5f231 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -114,9 +114,7 @@ namespace Content.Server.Nuke foreach (var (nukeUid, nuke) in nukes) { if (!onlyCurrentStation && - (owningStation == null && - nuke.OriginMapGrid != (transform.MapID, transform.GridUid) || - nuke.OriginStation != owningStation)) + nuke.OriginStation != owningStation) { continue; } diff --git a/Content.Server/Pinpointer/PinpointerSystem.cs b/Content.Server/Pinpointer/PinpointerSystem.cs index be9a715d5d..0a7098909f 100644 --- a/Content.Server/Pinpointer/PinpointerSystem.cs +++ b/Content.Server/Pinpointer/PinpointerSystem.cs @@ -8,7 +8,7 @@ using Content.Shared.IdentityManagement; namespace Content.Server.Pinpointer; -public sealed class PinpointerSystem : SharedPinpointerSystem +public sealed partial class PinpointerSystem : SharedPinpointerSystem { [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; @@ -18,6 +18,8 @@ public sealed class PinpointerSystem : SharedPinpointerSystem public override void Initialize() { base.Initialize(); + InitializeMultiplePinpointer(); // WD EDIT + _xformQuery = GetEntityQuery(); SubscribeLocalEvent(OnActivate); diff --git a/Content.Server/_Miracle/Systems/ThermalVisionSystem.cs b/Content.Server/_Miracle/Systems/ThermalVisionSystem.cs new file mode 100644 index 0000000000..5d13e52fa7 --- /dev/null +++ b/Content.Server/_Miracle/Systems/ThermalVisionSystem.cs @@ -0,0 +1,7 @@ +using Content.Shared._Miracle.Systems; + +namespace Content.Server._Miracle.Systems; + +public sealed class ThermalVisionSystem : SharedThermalVisionSystem +{ +} diff --git a/Content.Server/_White/Pinpointer/PinpointerSystem.multiple.cs b/Content.Server/_White/Pinpointer/PinpointerSystem.multiple.cs new file mode 100644 index 0000000000..5a0dd8b215 --- /dev/null +++ b/Content.Server/_White/Pinpointer/PinpointerSystem.multiple.cs @@ -0,0 +1,75 @@ +using Content.Shared._White.Pinpointer; +using Content.Shared.Interaction; +using Content.Shared.Pinpointer; + +namespace Content.Server.Pinpointer; + +public sealed partial class PinpointerSystem +{ + public void InitializeMultiplePinpointer() + { + SubscribeLocalEvent(OnMultiplePinpointerStartup); + SubscribeLocalEvent(OnMultiplePinpointerActivated); + SubscribeLocalEvent(OnMultiplePinpointerHandleState); + } + + private void OnMultiplePinpointerHandleState(EntityUid uid, MultiplePinpointerComponent component, ref AfterAutoHandleStateEvent args) + { + SetMultiplePinpointer(uid, component); + } + + private void OnMultiplePinpointerStartup(EntityUid uid, MultiplePinpointerComponent multiple, ComponentStartup args) + { + var pinpointer = EntityManager.EnsureComponent(uid); + + SetMultiplePinpointer(uid, multiple, pinpointer); + } + + private void OnMultiplePinpointerActivated(EntityUid uid, MultiplePinpointerComponent multiple, ActivateInWorldEvent args) + { + if (args.Handled) + return; + + args.Handled = CycleMultiplePinpointer(uid, multiple, args.User); + } + + private bool CycleMultiplePinpointer(EntityUid uid, MultiplePinpointerComponent? multiple = null, EntityUid? user = null) + { + if (!Resolve(uid, ref multiple)) + return false; + + if (multiple.Modes.Length == 0) + return false; + + multiple.CurrentEntry = (uint)((multiple.CurrentEntry + 1) % multiple.Modes.Length); + SetMultiplePinpointer(uid, multiple, user: user); + + return true; + } + + private void SetMultiplePinpointer(EntityUid uid, + MultiplePinpointerComponent? multiple = null, + PinpointerComponent? pin = null, + EntityUid? user = null) + { + if (!Resolve(uid, ref multiple, ref pin)) + return; + + if (multiple.Modes.Length <= multiple.CurrentEntry) + return; + + var current = multiple.Modes[multiple.CurrentEntry]; + SetDistance(uid, Distance.Unknown, pin); + if (current == "Off") + { + SetActive(uid, true, pin); + pin.Component = null; + } + else + { + SetActive(uid, false, pin); + pin.Component = current; + } + LocateTarget(uid, pin); + } +} diff --git a/Content.Server/_White/Wizard/WizardRuleSystem.cs b/Content.Server/_White/Wizard/WizardRuleSystem.cs index 2062083920..e33eb21833 100644 --- a/Content.Server/_White/Wizard/WizardRuleSystem.cs +++ b/Content.Server/_White/Wizard/WizardRuleSystem.cs @@ -312,13 +312,12 @@ public sealed class WizardRuleSystem : GameRuleSystem _humanoid.LoadProfile(mob, profile); _metaData.SetEntityName(mob, GetRandom(component.Name, "")); - } - _stationSpawning.EquipStartingGear(mob, gear); + _stationSpawning.EquipStartingGear(mob, gear); + } _npcFaction.RemoveFaction(mob, "NanoTrasen", false); _npcFaction.AddFaction(mob, "Wizard"); - } private EntityCoordinates WizardSpawnPoint(WizardRuleComponent component) diff --git a/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs b/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs index 7658ca0ae5..3f174db29d 100644 --- a/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs +++ b/Content.Shared/Flash/Components/FlashOnTriggerComponent.cs @@ -10,4 +10,5 @@ public sealed partial class FlashOnTriggerComponent : Component [DataField] public float Range = 1.0f; [DataField] public float Duration = 8.0f; [DataField] public float Probability = 1.0f; + [DataField] public bool ForceStun; // WD } diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index f6713713b6..8ea8dd0217 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -1,3 +1,4 @@ +using Content.Shared._White.BuffedFlashGrenade; using Content.Shared._White.Events; using Content.Shared._White.StaminaProtection; using Content.Shared.Changeling; @@ -34,6 +35,7 @@ public partial class InventorySystem SubscribeLocalEvent(RelayInventoryEvent); // WD SubscribeLocalEvent(RelayInventoryEvent); // WD SubscribeLocalEvent(RelayInventoryEvent); // WD + SubscribeLocalEvent(RelayInventoryEvent); // WD SubscribeLocalEvent(RelayInventoryEvent); // by-ref events diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index aefec3e211..5d75aec9ff 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -134,7 +134,7 @@ public sealed class PryingSystem : EntitySystem RaiseLocalEvent(target, ref modEv); - var time = TimeSpan.FromSeconds(!TryComp(target, out var airlock) || !airlock.Powered ? 0 : modEv.BaseTime * modEv.PryTimeModifier * toolModifier); // WD EDIT + var time = TimeSpan.FromSeconds(modEv.BaseTime * modEv.PryTimeModifier * (toolModifier - (!TryComp(target, out var airlock) || !airlock.Powered ? 1 : 0))); // WD EDIT var doAfterArgs = new DoAfterArgs(EntityManager, user, time, new DoorPryDoAfterEvent(), target, target, tool) { diff --git a/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs b/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs index b414de944d..b81792167e 100644 --- a/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs +++ b/Content.Shared/_Miracle/Systems/SharedNightVisionSystem.cs @@ -48,7 +48,11 @@ public abstract class SharedNightVisionSystem : EntitySystem return; component.IsActive = !component.IsActive; - _audio.PlayPredicted(component.ToggleSound, uid, uid); + + if (component.IsActive && component.ActivateSound != null) + _audio.PlayPredicted(component.ActivateSound, uid, uid); + else if (component.DeactivateSound != null) + _audio.PlayPredicted(component.DeactivateSound, uid, uid); args.Handled = true; diff --git a/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs b/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs new file mode 100644 index 0000000000..7c36bd2cbd --- /dev/null +++ b/Content.Shared/_Miracle/Systems/SharedThermalVisionSystem.cs @@ -0,0 +1,64 @@ +using Content.Shared._White.Overlays; +using Content.Shared.Actions; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Timing; + +namespace Content.Shared._Miracle.Systems; + +public abstract class SharedThermalVisionSystem : EntitySystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnToggle); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnRemove); + } + + private void OnRemove(EntityUid uid, ThermalVisionComponent component, ComponentRemove args) + { + _actions.RemoveAction(uid, component.ToggleActionEntity); + + if (HasComp(uid)) + return; + + UpdateThermalVision(uid, false); + } + + private void OnInit(EntityUid uid, ThermalVisionComponent component, ComponentInit args) + { + _actions.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + + if (!component.IsActive && HasComp(uid)) + return; + + UpdateThermalVision(uid, component.IsActive); + } + + protected virtual void UpdateThermalVision(EntityUid uid, bool active) { } + + private void OnToggle(EntityUid uid, ThermalVisionComponent component, ToggleThermalVisionEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + + component.IsActive = !component.IsActive; + + if (component.IsActive && component.ActivateSound != null) + _audio.PlayPredicted(component.ActivateSound, uid, uid); + else if (component.DeactivateSound != null) + _audio.PlayPredicted(component.DeactivateSound, uid, uid); + + args.Handled = true; + + if (!component.IsActive && HasComp(uid)) + return; + + UpdateThermalVision(uid, component.IsActive); + } +} diff --git a/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionComponent.cs b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionComponent.cs new file mode 100644 index 0000000000..190af15af6 --- /dev/null +++ b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.BuffedFlashGrenade; + +[RegisterComponent, NetworkedComponent] +public sealed partial class FlashSoundSuppressionComponent : Component +{ + +} diff --git a/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionSystem.cs b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionSystem.cs new file mode 100644 index 0000000000..c04d650fa0 --- /dev/null +++ b/Content.Shared/_White/BuffedFlashGrenade/FlashSoundSuppressionSystem.cs @@ -0,0 +1,43 @@ +using Content.Shared.Inventory; +using Content.Shared.Stunnable; + +namespace Content.Shared._White.BuffedFlashGrenade; + +public sealed class FlashSoundSuppressionSystem : EntitySystem +{ + [Dependency] private readonly SharedStunSystem _stunSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>( + OnGetFlashbanged); + } + + private void OnGetFlashbanged(Entity ent, + ref InventoryRelayedEvent args) + { + args.Args.Protected = true; + } + + public void Stun(EntityUid target, float duration) + { + if (HasComp(target)) + return; + + var ev = new GetFlashbangedEvent(); + RaiseLocalEvent(target, ev); + if (ev.Protected) + return; + + _stunSystem.TryParalyze(target, TimeSpan.FromSeconds(duration / 1000f), true); + } +} + +public sealed class GetFlashbangedEvent : EntityEventArgs, IInventoryRelayEvent +{ + public bool Protected; + + public SlotFlags TargetSlots => SlotFlags.EARS | SlotFlags.HEAD; +} diff --git a/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs b/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs index 104d6bcf0f..bd67e508e6 100644 --- a/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs +++ b/Content.Shared/_White/ClothingGrant/Systems/ClothingGrantingSystem.cs @@ -28,9 +28,11 @@ public sealed class ClothingGrantingSystem : EntitySystem if (_timing.ApplyingState) return; - if (!TryComp(uid, out var clothing)) return; + if (!TryComp(uid, out var clothing)) + return; - if (!clothing.Slots.HasFlag(args.SlotFlags)) return; + if (!clothing.Slots.HasFlag(args.SlotFlags)) + return; if (component.Components.Count > 8) { @@ -53,7 +55,7 @@ public sealed class ClothingGrantingSystem : EntitySystem } component.IsActive = true; - Dirty(component); + Dirty(uid, component); } private void OnCompUnequip(EntityUid uid, ClothingGrantComponentComponent component, GotUnequippedEvent args) @@ -68,7 +70,7 @@ public sealed class ClothingGrantingSystem : EntitySystem } component.IsActive = false; - Dirty(component); + Dirty(uid, component); } private void OnTagEquip(EntityUid uid, ClothingGrantTagComponent component, GotEquippedEvent args) @@ -81,7 +83,7 @@ public sealed class ClothingGrantingSystem : EntitySystem _tagSystem.AddTag(args.Equipee, component.Tag); component.IsActive = true; - Dirty(component); + Dirty(uid, component); } private void OnTagUnequip(EntityUid uid, ClothingGrantTagComponent component, GotUnequippedEvent args) @@ -91,6 +93,6 @@ public sealed class ClothingGrantingSystem : EntitySystem _tagSystem.RemoveTag(args.Equipee, component.Tag); component.IsActive = false; - Dirty(component); + Dirty(uid, component); } } diff --git a/Content.Shared/_White/Nuke/NuclearBombSyndicateComponent.cs b/Content.Shared/_White/Nuke/NuclearBombSyndicateComponent.cs new file mode 100644 index 0000000000..2062b0d35a --- /dev/null +++ b/Content.Shared/_White/Nuke/NuclearBombSyndicateComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.Nuke; + +/// +/// Used for tracking the nuke bomb - isn't a tag for pinpointer purposes. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class NuclearBombSyndicateComponent : Component +{ + +} diff --git a/Content.Shared/_White/Overlays/BaseNvOverlayComponent.cs b/Content.Shared/_White/Overlays/BaseNvOverlayComponent.cs new file mode 100644 index 0000000000..40901f39a9 --- /dev/null +++ b/Content.Shared/_White/Overlays/BaseNvOverlayComponent.cs @@ -0,0 +1,19 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.Overlays; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public abstract partial class BaseNvOverlayComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public virtual Vector3 Tint { get; set; } = new(0.3f, 0.3f, 0.3f); + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public virtual float Strength { get; set; } = 2f; + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public virtual float Noise { get; set; } = 0.5f; + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public virtual Color Color { get; set; } = Color.FromHex("#98FB98"); +} diff --git a/Content.Shared/_White/Overlays/NightVisionComponent.cs b/Content.Shared/_White/Overlays/NightVisionComponent.cs index 54f0baeea6..ed706b5241 100644 --- a/Content.Shared/_White/Overlays/NightVisionComponent.cs +++ b/Content.Shared/_White/Overlays/NightVisionComponent.cs @@ -6,25 +6,19 @@ using Robust.Shared.Prototypes; namespace Content.Shared._White.Overlays; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class NightVisionComponent : Component +public sealed partial class NightVisionComponent : BaseNvOverlayComponent { [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public Vector3 Tint = new(0.3f, 0.3f, 0.3f); - - [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float Strength = 2f; - - [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float Noise = 0.5f; - - [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public Color Color = Color.FromHex("#98FB98"); + public override Color Color { get; set; } = Color.FromHex("#98FB98"); [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public bool IsActive = true; [DataField] - public SoundSpecifier? ToggleSound = new SoundPathSpecifier("/Audio/Items/flashlight_pda.ogg"); + public SoundSpecifier? ActivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/activate.ogg"); + + [DataField] + public SoundSpecifier? DeactivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/deactivate.ogg"); [DataField] public EntProtoId? ToggleAction = "ToggleNightVision"; diff --git a/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs b/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs index cc4d4aba22..141480b517 100644 --- a/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs +++ b/Content.Shared/_White/Overlays/TemporaryNightVisionComponent.cs @@ -3,17 +3,8 @@ using Robust.Shared.GameStates; namespace Content.Shared._White.Overlays; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class TemporaryNightVisionComponent : Component +public sealed partial class TemporaryNightVisionComponent : BaseNvOverlayComponent { [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public Vector3 Tint = new(0.3f, 0.3f, 0.3f); - - [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float Strength = 2f; - - [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public float Noise = 0.5f; - - [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] - public Color Color = Color.FromHex("#FB9898"); + public override Color Color { get; set; } = Color.FromHex("#FB9898"); } diff --git a/Content.Shared/_White/Overlays/TemporaryThermalVisionComponent.cs b/Content.Shared/_White/Overlays/TemporaryThermalVisionComponent.cs new file mode 100644 index 0000000000..1a8dc8eb1c --- /dev/null +++ b/Content.Shared/_White/Overlays/TemporaryThermalVisionComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.Overlays; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class TemporaryThermalVisionComponent : BaseNvOverlayComponent +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public override Color Color { get; set; } = Color.FromHex("#FB9898"); +} diff --git a/Content.Shared/_White/Overlays/ThermalVisionComponent.cs b/Content.Shared/_White/Overlays/ThermalVisionComponent.cs new file mode 100644 index 0000000000..7e081a138b --- /dev/null +++ b/Content.Shared/_White/Overlays/ThermalVisionComponent.cs @@ -0,0 +1,32 @@ +using Content.Shared.Actions; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._White.Overlays; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ThermalVisionComponent : BaseNvOverlayComponent +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public override Color Color { get; set; } = Color.FromHex("#F84742"); + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool IsActive = true; + + [DataField] + public SoundSpecifier? ActivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/activate.ogg"); + + [DataField] + public SoundSpecifier? DeactivateSound = new SoundPathSpecifier("/Audio/White/Items/Goggles/deactivate.ogg"); + + [DataField] + public EntProtoId? ToggleAction = "ToggleThermalVision"; + + [ViewVariables] + public EntityUid? ToggleActionEntity; +} + +public sealed partial class ToggleThermalVisionEvent : InstantActionEvent +{ +} diff --git a/Content.Shared/_White/Pinpointer/MultiplePinpointerComponent.cs b/Content.Shared/_White/Pinpointer/MultiplePinpointerComponent.cs new file mode 100644 index 0000000000..b27503cd4c --- /dev/null +++ b/Content.Shared/_White/Pinpointer/MultiplePinpointerComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._White.Pinpointer; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class MultiplePinpointerComponent : Component +{ + [DataField(required: true)] + public string[] Modes = Array.Empty(); + + [ViewVariables, AutoNetworkedField] + public uint CurrentEntry = 0; +} diff --git a/Resources/Audio/White/Items/Goggles/activate.ogg b/Resources/Audio/White/Items/Goggles/activate.ogg new file mode 100644 index 0000000000..96cdb288fe Binary files /dev/null and b/Resources/Audio/White/Items/Goggles/activate.ogg differ diff --git a/Resources/Audio/White/Items/Goggles/deactivate.ogg b/Resources/Audio/White/Items/Goggles/deactivate.ogg new file mode 100644 index 0000000000..e1e8f4fd82 Binary files /dev/null and b/Resources/Audio/White/Items/Goggles/deactivate.ogg differ diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index 0dc6923ae6..fa8a76c1e8 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -6106,3 +6106,142 @@ id: 394 time: '2024-07-19T12:52:57.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/463 +- author: Spatison + changes: + - message: "\u0421\u043F\u0430\u0432\u043D \u043C\u0430\u0433\u0430 \u0447\u0435\ + \u0440\u0435\u0437 \u0430\u0434\u043C\u0438\u043D\u0432\u0435\u0440\u0431 \u0442\ + \u0435\u043F\u0435\u0440\u044C \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442\ + \ \u0431\u043E\u043B\u0435\u0435 \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\ + \u043E" + type: Fix + id: 395 + time: '2024-07-19T14:42:32.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/465 +- author: Aviu + changes: + - message: "\u0420\u0430\u0431\u043E\u0447\u0438\u0435 \u0442\u0435\u0440\u043C\u0430\ + \u043B\u043A\u0438." + type: Add + - message: "\u0410\u0443\u0433\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F \u0437\ + \u0440\u0435\u043D\u0438\u044F \u0433\u0435\u043D\u043E\u043A\u0440\u0430\u0434\ + \u0430 \u0434\u0430\u0435\u0442 \u0442\u0435\u0440\u043C\u0430\u043B\u044C\u043D\ + \u043E\u0435 \u0437\u0440\u0435\u043D\u0438\u0435." + type: Add + - message: "\u0423\u0431\u0440\u0430\u043D\u0430 \u043C\u0430\u0433\u0438\u0447\u0435\ + \u0441\u043A\u0430\u044F \u043B\u0430\u043C\u043F\u0430 \u0441 \u044D\u043A\u0441\ + \u043F\u0435\u0434\u0438\u0446\u0438\u0439." + type: Remove + id: 396 + time: '2024-07-19T16:27:02.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/466 +- author: ThereDrD + changes: + - message: "\u041F\u0435\u0440\u0435\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u044B\ + \ \u0441\u0432\u0435\u0442\u043E\u0448\u0443\u043C\u043E\u0432\u044B\u0435 \u0433\ + \u0440\u0430\u043D\u0430\u0442\u044B. \u0422\u0435\u043F\u0435\u0440\u044C \u043E\ + \u043D\u0438 \u0441\u0442\u0430\u043D\u044F\u0442 \u0438\u0433\u0440\u043E\u043A\ + \u043E\u0432 \u0432 \u0440\u0430\u0434\u0438\u0443\u0441\u0435, \u0435\u0441\ + \u043B\u0438 \u043D\u0435 \u043D\u043E\u0441\u0438\u0442\u044C \u043F\u043E\u043B\ + \u043D\u043E\u0440\u0430\u0437\u043C\u0435\u0440\u043D\u0443\u044E \u0433\u0430\ + \u0440\u043D\u0438\u0442\u0443\u0440\u0443. \u042D\u0442\u0438 \u0433\u0430\u0440\ + \u043D\u0438\u0442\u0443\u0440\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u043B\ + \u043E \u0432\u0441\u0435 \u0421\u0411 \u0438 \u0432\u0441\u0435 \u0413\u043B\ + \u0430\u0432\u044B." + type: Tweak + - message: "\u0421\u043E\u043A\u0438 \u0431\u043E\u043B\u044C\u0448\u0435 \u0441\ + \u043A\u043E\u043B\u044C\u0437\u043A\u0438\u0435" + type: Tweak + - message: "\u041A\u0430\u0440\u043C\u0430\u043D\u043D\u0430\u044F \u0444\u043B\u0435\ + \u0448\u043A\u0430 \u0441\u0442\u0430\u043B\u0430 \u0437\u0430\u043D\u0438\u043C\ + \u0430\u0442\u044C \u043C\u0435\u043D\u044C\u0448\u0435 \u043C\u0435\u0441\u0442\ + \u0430 \u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0438\ + \u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0439 \u0443\ + \u0432\u0435\u043B\u0438\u0447\u0438\u043B\u043E\u0441\u044C \u043D\u0430 2" + type: Tweak + - message: "\u0418\u043A\u043E\u043D\u043A\u0430 \u0442\u0435\u0440\u043C\u0430\u043B\ + \u043E\u043A \u0440\u0435\u0441\u043F\u0440\u0430\u0442\u043D\u0443\u0442\u0430" + type: Tweak + - message: "\u0421\u043F\u0440\u0430\u0439\u0442 \u041F\u041D\u0412 \u043D\u0430\ + \ \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u0436\u0435 \u0440\u0435\u0441\u043F\ + \u0440\u0430\u0439\u0442\u043D\u0443\u0442" + type: Tweak + - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0437\u0432\u0443\ + \u043A\u0438 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u0438 \u043E\ + \u0442\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u041F\u041D\u0412 \u0438\ + \ \u0422\u0435\u0440\u043C\u0430\u043B\u043E\u043A" + type: Add + - message: "\u0421\u043A\u0430\u0444\u0430\u043D\u0434\u0440\u044B \u0421\u0411\ + \ \u0442\u0435\u043F\u0435\u0440\u044C \u0437\u0430\u0449\u0438\u0449\u0430\u044E\ + \u0442 \u043E\u0442 \u0441\u0432\u0435\u0442\u043E\u0448\u0443\u043C\u043E\u0432\ + \u044B\u0445 \u0433\u0440\u0430\u043D\u0430\u0442, \u043F\u043E\u043A\u0430\ + \ \u0433\u0435\u0440\u043C\u0435\u0442\u0438\u0447\u043D\u044B." + type: Tweak + - message: "\u0421\u043E\u043B\u043D\u0446\u0435\u0437\u0430\u0449\u0438\u0442\u043D\ + \u044B\u0435 \u043E\u0447\u043A\u0438 \u0442\u0435\u043F\u0435\u0440\u044C \u0437\ + \u0430\u0449\u0438\u0449\u0430\u044E\u0442 \u043E\u0442 \u0441\u0432\u0430\u0440\ + \u043A\u0438, \u043A\u0430\u043A \u0432 \u0441\u044113!" + type: Tweak + - message: "\u0428\u043B\u0435\u043C \u0438\u043D\u0436\u0435\u043D\u0435\u0440\u043D\ + \u044B\u0445 \u0441\u043A\u0430\u0444\u0430\u043D\u0434\u0440\u043E\u0432 \u0442\ + \u0435\u043F\u0435\u0440\u044C \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442\ + \ \u043E\u0442 \u0432\u0441\u043F\u044B\u0448\u0435\u043A" + type: Tweak + id: 397 + time: '2024-07-20T02:08:01.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/467 +- author: Spatison + changes: + - message: "\u041D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0446\u0435\u043B\ + \u0435\u0432\u043E\u0439 \u043F\u0438\u043D\u043F\u043E\u0438\u043D\u0442\u0435\ + \u0440 \u0434\u043B\u044F \u043E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\u043D\ + \u0438\u043A\u043E\u0432 \u0441\u0438\u043D\u0434\u0438\u043A\u0430\u0442\u0430" + type: Add + - message: "\u0411\u043E\u0435\u0433\u043E\u043B\u043E\u0432\u043A\u0430 \u043D\u0430\ + \ \u0448\u0430\u0442\u0442\u043B\u0435 \u0441\u0438\u043D\u0434\u0438\u043A\u0430\ + \u0442\u0430 \u0442\u0435\u043F\u0435\u0440\u044C \u0432\u0441\u0435\u0433\u0434\ + \u0430 \u0441\u043E \u0441\u0432\u043E\u0438\u043C\u0438 \u043A\u043E\u0434\u0430\ + \u043C\u0438 \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438" + type: Tweak + - message: "\u0415\u0441\u043B\u0438 \u043F\u0440\u0438 \u0432\u0437\u0440\u044B\ + \u0432\u0435 \u0431\u043E\u0435\u0433\u043E\u043B\u043E\u0432\u043A\u0438 \u043D\ + \u0435 \u043E\u0434\u0438\u043D \u043E\u043F\u0435\u0440\u0430\u0442\u0438\u0432\ + \u043D\u0438\u043A \u043D\u0435 \u043F\u043E\u043A\u0438\u043D\u0443\u043B \u0441\ + \u0442\u0430\u043D\u0446\u0438\u044E, \u0442\u043E \u0437\u0430\u0441\u0447\u0438\ + \u0442\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043C\u0438\u043D\u043E\u0440\ + \u043D\u0430\u044F \u043F\u043E\u0431\u0435\u0434\u0430" + type: Tweak + - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E \u043C\u043E\ + \u043C\u0435\u043D\u0442\u0430\u043B\u044C\u043D\u043E\u0435 \u043E\u0442\u043A\ + \u0440\u044B\u0442\u0438\u0435 \u043E\u0431\u0435\u0441\u0442\u043E\u0447\u0435\ + \u043D\u043D\u043E\u0433\u043E \u0448\u043B\u044E\u0437\u0430 \u0440\u0443\u043A\ + \u043E\u0439" + type: Fix + id: 398 + time: '2024-07-20T02:33:14.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/468 +- author: ThereDrD + changes: + - message: "\u0420\u0435\u0441\u043F\u0440\u0430\u0439\u0442 \u0432\u0441\u0435\u0445\ + \ \u043A\u0430\u043D\u0438\u0441\u0442\u0440" + type: Add + - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u044B \u043D\u043E\u0432\ + \u044B\u0435 \u043A\u0440\u0430\u0441\u0438\u0432\u044B\u0435 \u0432\u0438\u0434\ + \u044B \u043F\u043B\u0430\u0449\u0435\u0439 \u0434\u043B\u044F \u041A\u0430\u043F\ + \u0438\u0442\u0430\u043D\u0430, \u0421\u0415 \u0438 \u0420\u0414. \u0414\u043E\ + \u0441\u0442\u0443\u043F\u043D\u044B \u0432 \u043B\u043E\u0430\u0434\u0430\u0443\ + \u0442\u0430\u0445" + type: Add + id: 399 + time: '2024-07-20T02:32:32.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/469 +- author: ThereDrD + changes: + - message: "\u041F\u043E\u043B\u043D\u043E\u0440\u0430\u0437\u043C\u0435\u0440\u043D\ + \u044B\u0435 \u0433\u0430\u0440\u043D\u0438\u0442\u0443\u0440\u044B \u0434\u043E\ + \u0431\u0430\u0432\u043B\u0435\u043D\u044B \u0432 \u0448\u043A\u0430\u0444\u044B\ + \ \u043E\u0444\u0438\u0446\u0435\u0440\u043E\u0432 \u0438 \u0432\u0435\u043D\ + \u0434\u043E\u043C\u0430\u0442\u044B \u0421\u0411" + type: Fix + id: 400 + time: '2024-07-20T15:28:44.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/470 diff --git a/Resources/Locale/ru-RU/research/technologies.ftl b/Resources/Locale/ru-RU/research/technologies.ftl index 065187db6a..6513155c8c 100644 --- a/Resources/Locale/ru-RU/research/technologies.ftl +++ b/Resources/Locale/ru-RU/research/technologies.ftl @@ -70,4 +70,5 @@ research-technology-advanced-spray = Продвинутые спреи research-technology-bluespace-cargo-transport = Блюспейс-транспортировка грузов research-technology-quantum-fiber-weaving = Плетение квантового волокна research-technology-night-vision = Технологии ночного видения +research-technology-thermal-vision = Технологии термального видения research-technology-bluespace-chemistry = Блюспейс химия diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl index e7676f2a40..4d12d4c353 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/clothing/ears/headsets_alt.ftl @@ -13,6 +13,9 @@ ent-ClothingHeadsetAltMedical = полноразмерная медицинск ent-ClothingHeadsetAltSecurity = полноразмерная охранная гарнитура .desc = { ent-ClothingHeadsetAlt.desc } .suffix = { "" } +ent-ClothingHeadsetAltSecurityCommand = { ent-ClothingHeadsetAltSecurity } + .desc = { ent-ClothingHeadsetAlt.desc } + .suffix = { "" } ent-ClothingHeadsetAltEngineering = полноразмерная инженерная гарнитура .desc = { ent-ClothingHeadsetAlt.desc } .suffix = { "" } diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/nuke.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/nuke.ftl index 564c2bae35..dd92dc38c2 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/nuke.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/nuke.ftl @@ -4,6 +4,9 @@ ent-NuclearBomb = ядерная боеголовка ent-NuclearBombUnanchored = { ent-NuclearBomb } .suffix = незакрепленный .desc = { ent-NuclearBomb.desc } +ent-NuclearBombSyndicate = { ent-NuclearBomb } + .suffix = синдикат + .desc = { ent-NuclearBomb.desc } ent-NuclearBombKeg = ядерная боеголовка .desc = Вам, вероятно, не стоит оставаться здесь, чтобы проверить, запущена ли она. Сбоку имеется кран. .suffix = кег diff --git a/Resources/Locale/ru-RU/store/uplink-catalog.ftl b/Resources/Locale/ru-RU/store/uplink-catalog.ftl index 32749b0a62..4c35d521d9 100644 --- a/Resources/Locale/ru-RU/store/uplink-catalog.ftl +++ b/Resources/Locale/ru-RU/store/uplink-catalog.ftl @@ -444,6 +444,9 @@ uplink-blood-dagger-desc = Критическая жажда: Кинжал Жа uplink-night-vision-name = ПНВ [Хамелеон] uplink-night-vision-desc = Теперь ты видишь во тьме! +uplink-thermal-vision-name = Оптический термальный сканер [Хамелеон] +uplink-thermal-vision-desc = Позволяет вам видеть существ через стены. + uplink-betrayal-knife-name = Предательский нож uplink-betrayal-knife-desc = Предательский нож позволяет пользователю телепортироваться на короткое расстояние, а также наносит значительные повреждения, пробивая броню противника, при ударе в спину. diff --git a/Resources/Locale/ru-RU/white/actions/thermal-vision.ftl b/Resources/Locale/ru-RU/white/actions/thermal-vision.ftl new file mode 100644 index 0000000000..df580d2b2f --- /dev/null +++ b/Resources/Locale/ru-RU/white/actions/thermal-vision.ftl @@ -0,0 +1,2 @@ +ent-ToggleThermalVision = Переключить термальное зрение. + .desc = Переключает термальное зрение. diff --git a/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl b/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl index 27f6c1e246..89f3a8eb2e 100644 --- a/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl +++ b/Resources/Locale/ru-RU/white/changeling/changeling-entities.ftl @@ -5,7 +5,7 @@ changeling-ability-biodegrade = Биоразложение changeling-ability-biodegrade-desc = Растворяет наручники и прочие сдерживающие элементы. Стоит 30 химикатов. changeling-ability-eyesight = Аугментация зрения -changeling-ability-eyesight-desc = Развивает переключаемое ночное зрение. Когда способность неактивна, защищает вас от флешек и яркого света, например от сварки. +changeling-ability-eyesight-desc = Развивает переключаемое ночное и термальное зрение. Когда способность неактивна, защищает вас от флешек и яркого света, например от сварки. changeling-ability-dissonant-shriek = Диссонирующий вопль changeling-ability-dissonant-shriek-desc = Испускает заряд ЭМИ, который нарушает работу всего оборудования вокруг. Стоит 20 химикатов. diff --git a/Resources/Maps/Dungeon/snowy_labs.yml b/Resources/Maps/Dungeon/snowy_labs.yml index 1211d7a664..66bd615ed1 100644 --- a/Resources/Maps/Dungeon/snowy_labs.yml +++ b/Resources/Maps/Dungeon/snowy_labs.yml @@ -7034,13 +7034,6 @@ entities: - type: Transform pos: 10.480986,45.607067 parent: 1653 -- proto: ClothingEyesGlassesThermal - entities: - - uid: 800 - components: - - type: Transform - pos: 6.5116234,25.568321 - parent: 1653 - proto: ClothingHandsGlovesLeather entities: - uid: 719 @@ -10731,14 +10724,6 @@ entities: rot: -1.5707963267948966 rad pos: 52.5,14.5 parent: 1653 -- proto: MagicalLamp - entities: - - uid: 1204 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5085075,47.438328 - parent: 1653 - proto: MaintenanceFluffSpawner entities: - uid: 1245 diff --git a/Resources/Maps/Shuttles/infiltrator.yml b/Resources/Maps/Shuttles/infiltrator.yml index 55955bfeea..38077ca1b9 100644 --- a/Resources/Maps/Shuttles/infiltrator.yml +++ b/Resources/Maps/Shuttles/infiltrator.yml @@ -165,6 +165,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -180,6 +188,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.14996 moles: @@ -195,6 +211,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -210,6 +234,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -225,6 +257,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -240,6 +280,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 chunkSize: 4 - type: DecalGrid chunkCollection: @@ -2650,8 +2698,6 @@ entities: rot: 3.141592653589793 rad pos: 5.5,-27.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - proto: GasMinerOxygen entities: - uid: 369 @@ -2660,8 +2706,6 @@ entities: rot: 3.141592653589793 rad pos: 3.5,-27.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - proto: GasMixer entities: - uid: 370 @@ -2675,8 +2719,6 @@ entities: - type: GasMixer inletTwoConcentration: 0.78 inletOneConcentration: 0.22 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - proto: GasPassiveVent @@ -2687,24 +2729,18 @@ entities: rot: 3.141592653589793 rad pos: 3.5,-26.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - uid: 372 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-26.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - uid: 373 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-19.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - proto: GasPipeBend entities: - uid: 374 @@ -3268,8 +3304,6 @@ entities: rot: 1.5707963267948966 rad pos: 2.5,-23.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - proto: GasPressurePump @@ -3282,8 +3316,6 @@ entities: rot: 1.5707963267948966 rad pos: 4.5,-19.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - proto: GasVentPump @@ -3294,8 +3326,6 @@ entities: rot: -1.5707963267948966 rad pos: 0.5,-11.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - uid: 450 @@ -3304,8 +3334,6 @@ entities: rot: 3.141592653589793 rad pos: -0.5,-21.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - uid: 451 @@ -3314,8 +3342,6 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,-23.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - uid: 452 @@ -3324,8 +3350,6 @@ entities: rot: 3.141592653589793 rad pos: -4.5,-21.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - uid: 453 @@ -3334,8 +3358,6 @@ entities: rot: 1.5707963267948966 rad pos: -4.5,-16.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - uid: 454 @@ -3344,8 +3366,6 @@ entities: rot: -1.5707963267948966 rad pos: 3.5,-16.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - uid: 455 @@ -3353,8 +3373,6 @@ entities: - type: Transform pos: 0.5,-3.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#0335FCFF' - proto: GasVentScrubber @@ -3365,8 +3383,6 @@ entities: rot: -1.5707963267948966 rad pos: 1.5,-12.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - uid: 457 @@ -3375,8 +3391,6 @@ entities: rot: -1.5707963267948966 rad pos: 3.5,-17.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - uid: 458 @@ -3385,8 +3399,6 @@ entities: rot: 3.141592653589793 rad pos: 2.5,-20.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - uid: 459 @@ -3395,8 +3407,6 @@ entities: rot: 1.5707963267948966 rad pos: -4.5,-17.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - uid: 460 @@ -3405,8 +3415,6 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,-21.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - uid: 461 @@ -3414,8 +3422,6 @@ entities: - type: Transform pos: -0.5,-3.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 - type: AtmosPipeColor color: '#FF1212FF' - proto: GeneratorBasic15kW @@ -3635,6 +3641,9 @@ entities: - type: Transform pos: 4.5,-5.5 parent: 1 + - type: PointLight + color: '#D56C6CFF' + enabled: True - type: EntityStorage air: volume: 200 @@ -3653,6 +3662,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - type: ContainerContainer containers: entity_storage: !type:Container @@ -3726,19 +3743,19 @@ entities: - type: Transform pos: 5.6633797,-17.565443 parent: 1 -- proto: NuclearBombUnanchored +- proto: NuclearBombSyndicate entities: - uid: 509 components: - type: Transform pos: -2.5,-12.5 parent: 1 -- proto: NukeCodePaper +- proto: NukeCodePaperStation entities: - uid: 510 components: - type: Transform - pos: -2.5286522,-11.44479 + pos: -2.4890966,-11.441471 parent: 1 - proto: Ointment entities: @@ -3766,8 +3783,8 @@ entities: - type: Transform pos: -1.5,-24.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 + - type: PolymorphableCanister + currentPrototype: OxygenCanister - proto: OxygenTankFilled entities: - uid: 515 @@ -4551,8 +4568,8 @@ entities: - type: Transform pos: 2.5,-23.5 parent: 1 - - type: AtmosDevice - joinedGrid: 1 + - type: PolymorphableCanister + currentPrototype: StorageCanister - proto: SubstationBasic entities: - uid: 628 diff --git a/Resources/Maps/Shuttles/striker.yml b/Resources/Maps/Shuttles/striker.yml index 6a450f5266..6ef324fdbb 100644 --- a/Resources/Maps/Shuttles/striker.yml +++ b/Resources/Maps/Shuttles/striker.yml @@ -184,6 +184,14 @@ entities: - 0 - 0 - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance @@ -191,6 +199,7 @@ entities: shakeTimes: 10 - type: SpreaderGrid - type: GridPathfinding + - type: NukeOpsShuttle - proto: AirCanister entities: - uid: 91 @@ -198,8 +207,8 @@ entities: - type: Transform pos: -0.5,-8.5 parent: 325 - - type: AtmosDevice - joinedGrid: 325 + - type: PolymorphableCanister + currentPrototype: AirCanister - proto: AirlockExternalShuttleSyndicateLocked entities: - uid: 142 @@ -825,6 +834,10 @@ entities: occludes: True ents: - 245 + disk_slot: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: CyberPen entities: - uid: 77 @@ -1041,8 +1054,6 @@ entities: rot: 3.141592653589793 rad pos: -0.5,-8.5 parent: 325 - - type: AtmosDevice - joinedGrid: 325 - proto: GasVentPump entities: - uid: 218 @@ -1054,8 +1065,6 @@ entities: address: Vnt-5f41a0ae transmitFrequency: 1621 receiveFrequency: 1621 - - type: AtmosDevice - joinedGrid: 325 - uid: 219 components: - type: Transform @@ -1066,8 +1075,6 @@ entities: address: Vnt-129c27d2 transmitFrequency: 1621 receiveFrequency: 1621 - - type: AtmosDevice - joinedGrid: 325 - uid: 220 components: - type: Transform @@ -1078,8 +1085,6 @@ entities: address: Vnt-11c4609d transmitFrequency: 1621 receiveFrequency: 1621 - - type: AtmosDevice - joinedGrid: 325 - uid: 221 components: - type: Transform @@ -1090,8 +1095,6 @@ entities: address: Vnt-6859729f transmitFrequency: 1621 receiveFrequency: 1621 - - type: AtmosDevice - joinedGrid: 325 - uid: 222 components: - type: Transform @@ -1102,8 +1105,6 @@ entities: address: Vnt-19d24c7f transmitFrequency: 1621 receiveFrequency: 1621 - - type: AtmosDevice - joinedGrid: 325 - proto: GeneratorBasic15kW entities: - uid: 41 @@ -1457,6 +1458,13 @@ entities: - type: Transform pos: 1.561105,-2.5567772 parent: 325 +- proto: OxygenTankFilled + entities: + - uid: 167 + components: + - type: Transform + pos: 1.60798,-0.3062118 + parent: 325 - proto: PinpointerNuclear entities: - uid: 162 @@ -2379,11 +2387,4 @@ entities: occludes: True ents: - 346 -- proto: YellowOxygenTankFilled - entities: - - uid: 167 - components: - - type: Transform - pos: 1.60798,-0.3062118 - parent: 325 ... diff --git a/Resources/Maps/atlas.yml b/Resources/Maps/atlas.yml index 1ce74026c9..f5c7f31418 100644 --- a/Resources/Maps/atlas.yml +++ b/Resources/Maps/atlas.yml @@ -18251,15 +18251,6 @@ entities: parent: 30 - type: Physics canCollide: False -- proto: ClothingEyesGlassesThermal - entities: - - uid: 7267 - components: - - type: Transform - pos: -31.624142,-1.1191435 - parent: 30 - - type: Physics - canCollide: False - proto: ClothingHandsGlovesColorYellow entities: - uid: 1668 diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index 3e86095fa4..7b8dd2e9ed 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -58677,23 +58677,6 @@ entities: - type: Transform pos: 14.470102,-43.56056 parent: 60 -- proto: ClothingEyesGlassesThermal - entities: - - uid: 15400 - components: - - type: Transform - pos: -17.455568,32.420967 - parent: 60 - - uid: 15402 - components: - - type: Transform - pos: -17.455568,32.624092 - parent: 60 - - uid: 23570 - components: - - type: Transform - pos: -62.52358,41.396984 - parent: 60 - proto: ClothingHandsGlovesBoxingBlue entities: - uid: 19920 diff --git a/Resources/Maps/fland.yml b/Resources/Maps/fland.yml index 28018bb4c8..89b2f86c15 100644 --- a/Resources/Maps/fland.yml +++ b/Resources/Maps/fland.yml @@ -93553,28 +93553,6 @@ entities: - type: Transform pos: 102.52885,13.515509 parent: 13329 -- proto: ClothingEyesGlassesThermal - entities: - - uid: 31732 - components: - - type: Transform - pos: 65.539406,-14.949457 - parent: 13329 - - uid: 31733 - components: - - type: Transform - pos: 70.49054,-5.808993 - parent: 13329 - - uid: 31734 - components: - - type: Transform - pos: 70.47884,-26.373547 - parent: 13329 - - uid: 31735 - components: - - type: Transform - pos: 70.57259,-26.498547 - parent: 13329 - proto: ClothingEyesHudBeer entities: - uid: 31731 diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index f6ce22872b..10eba2385c 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -51820,18 +51820,6 @@ entities: - type: Transform pos: 47.465996,44.649086 parent: 30 -- proto: ClothingEyesGlassesThermal - entities: - - uid: 9441 - components: - - type: Transform - pos: 5.522977,-23.530071 - parent: 30 - - uid: 10010 - components: - - type: Transform - pos: -13.542964,-45.170254 - parent: 30 - proto: ClothingEyesHudDiagnostic entities: - uid: 11291 diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index aab725e956..8c2236c71a 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -60170,18 +60170,6 @@ entities: - type: Transform pos: 66.56803,33.64219 parent: 5350 -- proto: ClothingEyesGlassesThermal - entities: - - uid: 23947 - components: - - type: Transform - pos: 55.407906,-5.421943 - parent: 5350 - - uid: 23948 - components: - - type: Transform - pos: 55.501656,-5.562568 - parent: 5350 - proto: ClothingEyesHudMedical entities: - uid: 14922 diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index cf8b8afe68..94efc6158a 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -32339,13 +32339,6 @@ entities: - type: Transform pos: 86.49675,1.6024053 parent: 2 -- proto: ClothingEyesGlassesThermal - entities: - - uid: 12673 - components: - - type: Transform - pos: 32.51945,-30.628448 - parent: 2 - proto: ClothingEyesHudDiagnostic entities: - uid: 11439 diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 4e4b6d9382..a91c3b2644 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -332,6 +332,17 @@ - id: PinpointerSyndicateNuclear - id: DeathAcidifierImplanter +- type: entity + parent: ClothingBackpackDuffelSyndicateBundle + id: ClothingBackpackDuffelSyndicateLonelyOperative + name: operative duffelbag + components: + - type: StorageFill + contents: + - id: BoxSurvivalSyndicate + - id: WeaponPistolViper + - id: PinpointerStationNuclear + - id: DeathAcidifierImplanter - type: entity parent: ClothingBackpackDuffelSyndicateMedicalBundle diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml index 17f00d091f..dc1a0325e3 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/dressers.yml @@ -93,7 +93,7 @@ - id: ClothingHandsGlovesCombat - id: ClothingShoesBootsJack - id: ClothingEyesGlassesSecurity - - id: ClothingHeadsetAltSecurity + - id: ClothingHeadsetAltSecurityCommand - id: ClothingMaskGasSwat - id: ClothingOuterCoatHoSTrench diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 8ab18cbcb8..876150fe6f 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -324,5 +324,5 @@ - id: ClothingUniformJumpskirtInspector - id: ClothingUniformJumpskirtInspectorFormal - id: ClothingHandsGlovesInspector - - id: ClothingHeadsetAltSecurity + - id: ClothingHeadsetAltSecurityCommand - id: RubberStampInspector diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 96315ffa2c..6a8f1faf4f 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -56,7 +56,7 @@ - id: Flash prob: 0.5 - id: ClothingEyesGlassesSecurity - - id: ClothingHeadsetSecurity + - id: ClothingHeadsetAltSecurity # WD - id: ClothingHandsGlovesColorBlack - id: ClothingShoesBootsJack - id: WeaponMeleeNeedle diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml index d16f4dbe27..bbb485afd5 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/secdrobe.yml @@ -7,7 +7,7 @@ ClothingHeadHatBeret: 4 ClothingHeadHatSecsoft: 4 ClothingHeadBandRed: 4 - ClothingHeadsetSecurity: 4 + ClothingHeadsetAltSecurity: 4 ClothingEyesGlassesSecurity: 4 ClothingOuterWinterSec: 4 ClothingUniformJumpsuitSec: 4 diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml index 9dd72691b5..07247d66ef 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity abstract: true parent: ClothingHeadset id: ClothingHeadsetAlt @@ -9,6 +9,7 @@ state: icon_alt - type: Clothing equippedPrefix: alt + - type: FlashSoundSuppression # WD - type: entity parent: ClothingHeadsetAlt @@ -108,13 +109,28 @@ containers: key_slots: - EncryptionKeySecurity - - EncryptionKeyCommand - EncryptionKeyCommon - type: Sprite sprite: Clothing/Ears/Headsets/security.rsi - type: Clothing sprite: Clothing/Ears/Headsets/security.rsi +- type: entity # WD + parent: ClothingHeadsetAlt + id: ClothingHeadsetAltSecurityCommand + name: head of security's over-ear headset + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeySecurity + - EncryptionKeyCommand + - EncryptionKeyCommon + - type: Sprite + sprite: Clothing/Ears/Headsets/command.rsi + - type: Clothing + sprite: Clothing/Ears/Headsets/command.rsi + - type: entity parent: ClothingHeadsetAlt id: ClothingHeadsetAltScience diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index e6c7626a6a..d0b671151d 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -148,7 +148,6 @@ components: - type: FlashImmunity - type: EyeProtection - protectionTime: 5 - type: Tag tags: - Sunglasses @@ -167,7 +166,6 @@ sprite: Clothing/Eyes/Glasses/secglasses.rsi - type: FlashImmunity - type: EyeProtection - protectionTime: 5 - type: Construction graph: GlassesSecHUD node: glassesSec @@ -232,14 +230,33 @@ description: Thermals in the shape of glasses. components: - type: Sprite - sprite: Clothing/Eyes/Glasses/thermal.rsi + sprite: White/Clothing/Eyes/Glasses/thermal.rsi - type: Clothing - sprite: Clothing/Eyes/Glasses/thermal.rsi - - type: Armor - modifiers: - coefficients: - Heat: 0.95 - - type: GroupExamine + sprite: White/Clothing/Eyes/Glasses/thermal.rsi + - type: ClothingGrantComponent + component: + - type: ThermalVision + +- type: entity + parent: ClothingEyesGlassesThermal + id: ClothingEyesGlassesThermalSyndie + suffix: "Хамелеон" + components: + - type: ChameleonClothing + slot: [ eyes ] + default: ClothingEyesGlassesSunglasses + - type: UserInterface + interfaces: + - key: enum.ChameleonUiKey.Key + type: ChameleonBoundUserInterface + +- type: entity + parent: ClothingEyesGlassesThermalSyndie + id: ClothingEyesGlassesThermalNukie + suffix: "Хамелеон, Ядерные Оперативники" + components: + - type: ShowSyndicateIcons + - type: ShowSecurityIcons - type: entity parent: ClothingEyesBase diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index ded521045e..46aacbaa80 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -61,6 +61,7 @@ - type: TemperatureProtection coefficient: 0.005 - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Engineering Hardsuit - type: entity @@ -80,6 +81,7 @@ highPressureMultiplier: 0.1 lowPressureMultiplier: 1000 - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Spationaut Hardsuit - type: entity @@ -183,6 +185,7 @@ Piercing: 0.9 Heat: 0.9 - type: FlashImmunity # WD edit + - type: FlashSoundSuppression # WD edit #Brigmedic Hardsuit - type: entity @@ -210,6 +213,8 @@ - type: PressureProtection highPressureMultiplier: 0.6 lowPressureMultiplier: 1000 + - type: FlashImmunity # WD edit + - type: FlashSoundSuppression # WD edit #Warden's Hardsuit - type: entity @@ -236,6 +241,7 @@ Piercing: 0.9 Heat: 0.9 - type: FlashImmunity # WD edit + - type: FlashSoundSuppression # WD edit #Captain's Hardsuit - type: entity @@ -252,6 +258,8 @@ - type: PressureProtection highPressureMultiplier: 0.3 lowPressureMultiplier: 1000 + - type: FlashImmunity # WD edit + - type: FlashSoundSuppression # WD edit #Inspector's Hardsuit - type: entity @@ -287,6 +295,7 @@ highPressureMultiplier: 0.08 lowPressureMultiplier: 1000 - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Chief Medical Officer's Hardsuit - type: entity @@ -349,6 +358,7 @@ Piercing: 0.9 Heat: 0.9 - type: FlashImmunity + - type: FlashSoundSuppression #Luxury Mining Hardsuit - type: entity @@ -368,6 +378,7 @@ - type: PointLight radius: 7 energy: 3 + - type: EyeProtection # WD edit #Head of Personnel's Hardsuit WD - type: entity @@ -410,8 +421,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Blood-red Medic Hardsuit - type: entity @@ -437,8 +448,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Syndicate Elite Hardsuit - type: entity @@ -466,8 +477,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Syndicate Commander Hardsuit - type: entity @@ -493,8 +504,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Cybersun Juggernaut Hardsuit - type: entity @@ -518,8 +529,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Wizard Hardsuit - type: entity @@ -546,8 +557,6 @@ Piercing: 0.9 Heat: 0.9 - type: WizardClothes - - type: FlashImmunity - - type: EyeProtection #Organic Space Suit - type: entity @@ -621,8 +630,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Chaplain Hardsuit - type: entity @@ -660,8 +669,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Medical Hardsuit - type: entity @@ -677,8 +686,8 @@ sprite: Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi - type: PointLight color: "#adffec" - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Security Hardsuit - type: entity @@ -701,8 +710,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #ERT Janitor Hardsuit - type: entity @@ -718,8 +727,8 @@ sprite: Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi - type: PointLight color: "#cbadff" - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #CBURN Hardsuit - type: entity @@ -759,8 +768,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD #Deathsquad Hardsuit - type: entity @@ -786,8 +795,8 @@ Heat: 0.80 Radiation: 0.80 Caustic: 0.95 - - type: FlashImmunity # WD edit - type: EyeProtection # WD edit + - type: FlashImmunity # WD - type: ShowHealthBars damageContainers: - Biological @@ -798,6 +807,7 @@ - type: ClothingGrantComponent component: - type: NightVision + - type: ThermalVision #MISC. HARDSUITS #Clown Hardsuit diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml index 03fb51a219..80943322be 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml @@ -20,6 +20,15 @@ - type: StealTarget stealGroup: HeadCloak +- type: entity # WD + parent: ClothingNeckCloakCap + id: ClothingNeckCloakCapLuxurious + name: captain's cloak + description: A pompous and comfy blue cloak with a nice gold trim, while not particularly valuable as your other possessions, it sure is fancy. + components: + - type: Sprite + sprite: White/Clothing/Neck/Cloaks/cap.rsi + - type: entity parent: ClothingNeckBase id: ClothingNeckCloakHos @@ -42,6 +51,15 @@ - type: StealTarget stealGroup: HeadCloak +- type: entity # WD + parent: ClothingNeckCloakCe + id: ClothingNeckCloakCeLuxurious + name: chief engineer's cloak + description: A dark green cloak with light blue ornaments, given to those who proved themselves to master the precise art of engineering. + components: + - type: Sprite + sprite: White/Clothing/Neck/Cloaks/ce.rsi + - type: entity parent: ClothingNeckBase id: ClothingCloakCmo @@ -64,6 +82,15 @@ - type: StealTarget stealGroup: HeadCloak +- type: entity # WD + parent: ClothingNeckCloakRd + id: ClothingNeckCloakRdLuxurious + name: research director's cloak + description: A white cloak with violet stripes, showing your status as the arbiter of cutting-edge technology. + components: + - type: Sprite + sprite: White/Clothing/Neck/Cloaks/rd.rsi + - type: entity parent: ClothingNeckBase id: ClothingNeckCloakQm diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml index 34bf32d8d7..f5c666b839 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml @@ -47,7 +47,7 @@ - type: Sprite layers: - state: red - - sprite: Structures/Storage/canister.rsi + - sprite: White/Structures/Storage/canister.rsi state: blue - type: RandomSpawner rarePrototypes: diff --git a/Resources/Prototypes/Entities/Markers/Spawners/techspawner.yml b/Resources/Prototypes/Entities/Markers/Spawners/techspawner.yml index d017841c8e..3a22d59307 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/techspawner.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/techspawner.yml @@ -601,6 +601,7 @@ - ExGrenade - SyndieMiniBomb - ClothingEyesNightVisionGogglesSyndie + - ClothingEyesGlassesThermalSyndie - ClothingOuterVestWeb - ClothingBackpackChameleonFill - CigPackSyndicate diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index 6336f512bd..16583994c7 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -84,7 +84,8 @@ path: /Audio/Effects/bite.ogg - type: Penetrated - type: NightVision - toggleSound: null + activateSound: null + deactivateSound: null color: "#404040" - type: Tool speed: 2 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 264c4cf1f6..f8ae047dbe 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -121,7 +121,8 @@ attributes: gender: male - type: NightVision - toggleSound: null + activateSound: null + deactivateSound: null color: "#404040" - type: GlobalAntagonist antagonistPrototype: globalAntagonistRats diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index f1c338a827..1dcfffc687 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -124,7 +124,8 @@ - type: Speech speechVerb: LargeMob - type: NightVision - toggleSound: null + activateSound: null + deactivateSound: null color: "#404040" - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index 962b8e21e1..10b022bdda 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -131,7 +131,8 @@ - CannotSuicide - DoorBumpOpener - type: NightVision - toggleSound: null + activateSound: null + deactivateSound: null color: "#404040" - type: Tool speed: 3 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml index ba53e455c9..1379a25c89 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml @@ -4,6 +4,8 @@ id: DrinkCanBaseFull abstract: true components: + - type: Item + size: Tiny - type: Drink - type: Openable - type: Shakeable diff --git a/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml b/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml index 29d6d67885..0bf0145080 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml @@ -63,6 +63,26 @@ - type: Pinpointer component: NukeDisk targetName: nuclear authentication disk + updateTargetName: true + + - type: MultiplePinpointer + modes: + - Off + - NukeDisk + - NuclearBombSyndicate + - NukeOpsShuttle + +- type: entity + parent: PinpointerSyndicateNuclear + id: PinpointerStationNuclear + suffix: Station bomb + components: + - type: MultiplePinpointer + modes: + - Off + - NukeDisk + - Nuke + - NukeOpsShuttle - type: entity name: universal pinpointer diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 6ea6395763..6e84c47ff8 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -303,6 +303,7 @@ suffix: Station Only components: - type: NukeCodePaper + allNukesAvailable: false - type: entity name: pen diff --git a/Resources/Prototypes/Entities/Objects/Tools/gps.yml b/Resources/Prototypes/Entities/Objects/Tools/gps.yml index 8ae34573ff..482ea96307 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/gps.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/gps.yml @@ -11,6 +11,7 @@ - state: active - type: Item sprite: Objects/Devices/gps.rsi + size: Tiny - type: HandheldGPS - type: Tag tags: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index 5b39fd357d..48aff490f1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -67,6 +67,7 @@ sprite: Objects/Weapons/Grenades/flashbang.rsi - type: FlashOnTrigger range: 7 + forceStun: true # WD - type: SoundOnTrigger sound: path: "/Audio/Effects/flash_bang.ogg" @@ -350,7 +351,7 @@ parent: GrenadeBase id: SmokeGrenade name: smoke grenade - description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. + description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. components: - type: Sprite sprite: Objects/Weapons/Grenades/smoke.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index 0c547cae22..21097aac66 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -138,8 +138,8 @@ shader: unshaded - type: Flash - type: LimitedCharges - maxCharges: 5 - charges: 5 + maxCharges: 7 + charges: 7 - type: MeleeWeapon canHeavyAttack: false wideAnimationRotation: 180 @@ -148,7 +148,7 @@ Blunt: 0 # melee weapon to allow flashing individual targets angle: 10 - type: Item - size: Small + size: Tiny sprite: Objects/Weapons/Melee/flash.rsi - type: UseDelay - type: StaticPrice diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 2f2d20f9ec..34f273beac 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -344,6 +344,7 @@ - FauxTileAstroSnow - OreBagOfHolding - ClothingEyesNightVisionGoggles # WD EDIT + - ClothingEyesGlassesThermal # WD EDIT - KitchenKnife # WD EDIT - ButchCleaver # WD EDIT - WeaponTempGun # WD EDIT diff --git a/Resources/Prototypes/Entities/Structures/Machines/nuke.yml b/Resources/Prototypes/Entities/Structures/Machines/nuke.yml index 2aab75d54e..d1cbf154a9 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/nuke.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/nuke.yml @@ -94,6 +94,15 @@ - type: Physics bodyType: Dynamic +- type: entity + parent: NuclearBombUnanchored + id: NuclearBombSyndicate + suffix: syndicate + components: + - type: NuclearBombSyndicate + - type: NukeLabel + prefix: nuke-label-syndicate + - type: entity parent: StorageTank id: NuclearBombKeg diff --git a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml index 4b0b0e9b29..d141bfeddd 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Canisters/gas_canisters.yml @@ -9,7 +9,7 @@ - type: Transform noRot: true - type: Sprite - sprite: Structures/Storage/canister.rsi + sprite: White/Structures/Storage/canister.rsi noRot: true layers: - state: grey diff --git a/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml b/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml index 9aa8f77276..dd5c2c8905 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Command/captain.yml @@ -73,6 +73,14 @@ equipment: neck: ClothingNeckCloakCapFormal +- type: itemLoadout # WD + id: CaptainCloakLuxurious + equipment: CaptainCloakLuxurious +- type: startingGear + id: CaptainCloakLuxurious + equipment: + neck: ClothingNeckCloakCapLuxurious + - type: itemLoadout id: CaptainMantle equipment: CaptainMantle diff --git a/Resources/Prototypes/Loadouts/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Loadouts/Jobs/Engineering/chief_engineer.yml index da9641d40d..5c5e8857c3 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Engineering/chief_engineer.yml @@ -59,6 +59,14 @@ equipment: neck: ClothingNeckCloakCe +- type: itemLoadout # WD + id: ChiefEngineerCloakLuxurious + equipment: ChiefEngineerCloakLuxurious +- type: startingGear + id: ChiefEngineerCloakLuxurious + equipment: + neck: ClothingNeckCloakCeLuxurious + - type: itemLoadout id: ChiefEngineerMantle equipment: ChiefEngineerMantle diff --git a/Resources/Prototypes/Loadouts/Jobs/Science/research_director.yml b/Resources/Prototypes/Loadouts/Jobs/Science/research_director.yml index b7de89bb14..53440f8553 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Science/research_director.yml @@ -24,6 +24,14 @@ equipment: neck: ClothingNeckCloakRd +- type: itemLoadout # WD + id: ResearchDirectorCloakLuxurious + equipment: ResearchDirectorCloakLuxurious +- type: startingGear + id: ResearchDirectorCloakLuxurious + equipment: + neck: ClothingNeckCloakRdLuxurious + # Jumpsuit - type: itemLoadout id: ResearchDirectorJumpsuit diff --git a/Resources/Prototypes/Loadouts/Jobs/Security/common.yml b/Resources/Prototypes/Loadouts/Jobs/Security/common.yml index 5a64004a35..ac569befe4 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Security/common.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Security/common.yml @@ -22,6 +22,14 @@ equipment: SecurityCommandHeadset - type: startingGear id: SecurityCommandHeadset + equipment: + ears: ClothingHeadsetAltSecurityCommand + +- type: itemLoadout + id: SecurityHeadsetFull + equipment: SecurityHeadsetFull +- type: startingGear + id: SecurityHeadsetFull equipment: ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 97a6baf8aa..975bff6227 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -56,6 +56,7 @@ loadouts: - CaptainCloak - CaptainCloakFormal + - CaptainCloakLuxurious # WD - CaptainMantle - type: loadoutGroup @@ -161,7 +162,6 @@ id: CommonCommandHeadset name: loadout-group-ears loadouts: - - CommandHeadset - CommandHeadsetAlt # Civilian @@ -767,7 +767,6 @@ id: QuartermasterHeadset name: loadout-group-ears loadouts: - - QuartermasterHeadset - QuartermasterHeadsetAlt - type: loadoutGroup @@ -985,9 +984,17 @@ id: ChiefEngineerHeadset name: loadout-group-ears loadouts: - - ChiefEngineerHeadset - ChiefEngineerHeadsetAlt +- type: loadoutGroup + id: ChiefEngineerNeck + name: loadout-group-neck + minLimit: 0 + loadouts: + - ChiefEngineerCloak + - ChiefEngineerCloakLuxurious # WD + - ChiefEngineerMantle + - type: loadoutGroup id: ChiefEngineerJumpsuit name: loadout-group-jumpsuit @@ -1006,14 +1013,6 @@ - ChiefEngineerDuffel - CommonSatchelLeather # WD -- type: loadoutGroup - id: ChiefEngineerNeck - name: loadout-group-neck - minLimit: 0 - loadouts: - - ChiefEngineerCloak - - ChiefEngineerMantle - - type: loadoutGroup id: ChiefEngineerOuterClothing name: loadout-group-outerclothing @@ -1180,6 +1179,7 @@ loadouts: - ResearchDirectorMantle - ResearchDirectorCloak + - ResearchDirectorCloakLuxurious # WD - type: loadoutGroup id: ResearchDirectorJumpsuit @@ -1224,7 +1224,6 @@ id: ResearchDirectorHeadset name: loadout-group-ears loadouts: - - ResearchDirectorHeadset - ResearchDirectorHeadsetAlt - type: loadoutGroup @@ -1604,6 +1603,12 @@ loadouts: - SecurityCommandHeadset +- type: loadoutGroup # WD + id: CommonSecurityHeadsetFull + name: loadout-group-ears + loadouts: + - SecurityHeadsetFull + - type: loadoutGroup id: CommonSecurityBackpack name: loadout-group-backpack @@ -1636,10 +1641,9 @@ - CowboyWhite - type: loadoutGroup # WD - id: ChiefMedicalOfficerEars + id: ChiefMedicalOfficerHeadset name: loadout-group-ears loadouts: - - CMOHeadset - CMOHeadsetAlt - type: loadoutGroup @@ -2029,9 +2033,7 @@ id: InspectorBackpack name: loadout-group-backpack loadouts: - - InspectorBackpack - InspectorSatchel - - InspectorDuffel - CommonSatchelLeather - type: loadoutGroup # WD diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml index f14a9b5069..e2d7aba241 100644 --- a/Resources/Prototypes/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/role_loadouts.yml @@ -385,7 +385,7 @@ id: JobWarden groups: - WardenHead - - CommonSecurityCommandHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityCommandMask # WD - CommonSecurityNeck - WardenJumpsuit @@ -399,7 +399,7 @@ id: JobSeniorOfficer groups: - CommonSecurityHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityCommandMask # WD - CommonSecurityNeck - SeniorOfficerJumpsuit @@ -414,7 +414,7 @@ id: JobSecurityOfficer groups: - CommonSecurityHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityMask # WD - CommonSecurityNeck # WD - SecurityJumpsuit @@ -430,7 +430,7 @@ id: JobDetective groups: - DetectiveHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonMaskCigarette # WD - CommonSecurityNeck - DetectiveJumpsuit @@ -445,7 +445,7 @@ id: JobSecurityCadet groups: - CommonSecurityHead - - CommonSecurityHeadset # WD + - CommonSecurityHeadsetFull # WD - CommonSecurityNeck - SecurityCadetJumpsuit - CommonSecurityBackpack @@ -459,7 +459,7 @@ id: JobChiefMedicalOfficer groups: - ChiefMedicalOfficerHead - - ChiefMedicalOfficerEars # WD + - ChiefMedicalOfficerHeadset # WD - CommonMedicalMask # WD - ChiefMedicalOfficerNeck - ChiefMedicalOfficerJumpsuit diff --git a/Resources/Prototypes/Procedural/salvage_loot.yml b/Resources/Prototypes/Procedural/salvage_loot.yml index 17bfe7ad02..e24591becd 100644 --- a/Resources/Prototypes/Procedural/salvage_loot.yml +++ b/Resources/Prototypes/Procedural/salvage_loot.yml @@ -153,6 +153,8 @@ prob: 0.5 - proto: ClothingEyesNightVisionGoggles cost: 8 + - proto: ClothingEyesGlassesThermal + cost: 8 - proto: ClothingHandsGlovesCombat cost: 3 - proto: Katana diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml index ee1492b45e..1edef943a1 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/juice.yml @@ -116,6 +116,7 @@ physicalDesc: reagent-physical-desc-saucey flavor: tomato color: "#731008" + slippery: false - type: reagent id: JuiceWatermelon diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index 5ece5e04a3..a53cb1c3dc 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -42,4 +42,4 @@ back: ClothingBackpackQuartermasterFilled shoes: ClothingShoesColorBrown id: QuartermasterPDA - ears: ClothingHeadsetQM + ears: ClothingHeadsetAltCargo diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index 6849bf25e3..bcd5a14890 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -43,4 +43,4 @@ back: ClothingBackpackChiefEngineerFilled shoes: ClothingShoesColorBrown id: CEPDA - ears: ClothingHeadsetCE + ears: ClothingHeadsetAltEngineering diff --git a/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml index f492afc165..8205c82022 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml @@ -145,7 +145,7 @@ id: SyndicateLoneOperativeGearFull equipment: jumpsuit: ClothingUniformJumpsuitOperative - back: ClothingBackpackDuffelSyndicateOperative + back: ClothingBackpackDuffelSyndicateLonelyOperative mask: ClothingMaskGasSyndicate eyes: ClothingEyesHudSyndicate ears: ClothingHeadsetAltSyndicate diff --git a/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml b/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml index e4fdf5d1c8..9f28aa1a09 100644 --- a/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml +++ b/Resources/Prototypes/Roles/Jobs/Justice/inspector.yml @@ -28,6 +28,6 @@ back: ClothingBackpackFilled shoes: ClothingShoesBootsInspector id: InspectorPDA - ears: ClothingHeadsetAltSecurity + ears: ClothingHeadsetAltSecurityCommand inhand: - BriefcaseBrownFilled diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index f659057461..74f023b60d 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -40,4 +40,4 @@ back: ClothingBackpackCMOFilled shoes: ClothingShoesColorBrown id: CMOPDA - ears: ClothingHeadsetCMO + ears: ClothingHeadsetAltMedical diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 9498e1a9e0..fddecee013 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -37,4 +37,4 @@ back: ClothingBackpackResearchDirectorFilled shoes: ClothingShoesColorBrown id: RnDPDA - ears: ClothingHeadsetRD + ears: ClothingHeadsetAltScience diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index 4fd6c14a98..d7d9776350 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -31,4 +31,4 @@ back: ClothingBackpackSecurityFilledDetective shoes: ClothingShoesBootsCombatFilled id: DetectivePDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index eb2f6dee42..5eebae74c7 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -45,4 +45,4 @@ back: ClothingBackpackHOSFilled shoes: ClothingShoesBootsCombatFilled id: HoSPDA - ears: ClothingHeadsetAltSecurity + ears: ClothingHeadsetAltSecurityCommand diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index c199f9bf06..e4bcb4c3c0 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -33,5 +33,5 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: SecurityCadetPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity pocket1: BookSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 3fb4fda7db..9e9e4d6569 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -30,4 +30,4 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: SecurityPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml index a519e086dd..7bac01133e 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml @@ -39,4 +39,4 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: SeniorOfficerPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index aaad42d38a..88acbf9e13 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -32,4 +32,4 @@ back: ClothingBackpackSecurityFilled shoes: ClothingShoesBootsCombatFilled id: WardenPDA - ears: ClothingHeadsetSecurity + ears: ClothingHeadsetAltSecurity diff --git a/Resources/Prototypes/_White/Actions/types.yml b/Resources/Prototypes/_White/Actions/types.yml index ca4129de2b..60ad2d137f 100644 --- a/Resources/Prototypes/_White/Actions/types.yml +++ b/Resources/Prototypes/_White/Actions/types.yml @@ -38,10 +38,24 @@ itemIconStyle: BigAction priority: -20 icon: - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi state: icon event: !type:ToggleNightVisionEvent +- type: entity + id: ToggleThermalVision + name: Toggle thermal vision. + description: Toggles thermal vision. + noSpawn: true + components: + - type: InstantAction + itemIconStyle: BigAction + priority: -20 + icon: + sprite: White/Clothing/Eyes/Glasses/thermal.rsi + state: icon + event: !type:ToggleThermalVisionEvent + - type: entity id: ToggleBodyCamera name: Toggle body camera. diff --git a/Resources/Prototypes/_White/Catalog/uplink.yml b/Resources/Prototypes/_White/Catalog/uplink.yml index 7140266856..9e8d094515 100644 --- a/Resources/Prototypes/_White/Catalog/uplink.yml +++ b/Resources/Prototypes/_White/Catalog/uplink.yml @@ -108,7 +108,7 @@ name: uplink-night-vision-name description: uplink-night-vision-desc productEntity: ClothingEyesNightVisionGogglesSyndie - icon: { sprite: White/Clothing/Head/nightvision.rsi, state: icon } + icon: { sprite: White/Clothing/Eyes/Glasses/nightvision.rsi, state: icon } cost: Telecrystal: 3 categories: @@ -124,7 +124,39 @@ name: uplink-night-vision-name description: uplink-night-vision-desc productEntity: ClothingEyesNightVisionGogglesNukie - icon: { sprite: White/Clothing/Head/nightvision.rsi, state: icon } + icon: { sprite: White/Clothing/Eyes/Glasses/nightvision.rsi, state: icon } + cost: + Telecrystal: 3 + categories: + - UplinkWearables + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkThermalGoggles + name: uplink-thermal-vision-name + description: uplink-thermal-vision-desc + productEntity: ClothingEyesGlassesThermalSyndie + icon: { sprite: White/Clothing/Eyes/Glasses/thermal.rsi, state: icon } + cost: + Telecrystal: 3 + categories: + - UplinkWearables + conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkThermalGogglesNukie + name: uplink-thermal-vision-name + description: uplink-thermal-vision-desc + productEntity: ClothingEyesGlassesThermalNukie + icon: { sprite: White/Clothing/Eyes/Glasses/thermal.rsi, state: icon } cost: Telecrystal: 3 categories: diff --git a/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml b/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml index a46e119761..420cc163d9 100644 --- a/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml +++ b/Resources/Prototypes/_White/Entities/Clothing/Head/night_vision_goggle.yml @@ -6,9 +6,9 @@ description: Теперь ты видишь во тьме! components: - type: Sprite - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi - type: Clothing - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi - type: ClothingGrantComponent component: - type: NightVision diff --git a/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml b/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml index cb5494e9cf..4cd0e39620 100644 --- a/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml +++ b/Resources/Prototypes/_White/Entities/Cult/Items/tome_craft.yml @@ -41,7 +41,8 @@ component: - type: NightVision toggleAction: null - toggleSound: null + activateSound: null + deactivateSound: null color: White - type: ShowHealthBars damageContainers: diff --git a/Resources/Prototypes/_White/Entities/Cult/constructs.yml b/Resources/Prototypes/_White/Entities/Cult/constructs.yml index e1ac802ef4..44071134e3 100644 --- a/Resources/Prototypes/_White/Entities/Cult/constructs.yml +++ b/Resources/Prototypes/_White/Entities/Cult/constructs.yml @@ -64,7 +64,8 @@ - type: ShowCultHud - type: IsDeadIC - type: NightVision - toggleSound: null + activateSound: null + deactivateSound: null color: White - type: ShowHealthBars damageContainers: diff --git a/Resources/Prototypes/_White/Recipes/lathe_recipes.yml b/Resources/Prototypes/_White/Recipes/lathe_recipes.yml index c975c5cb99..f62c31ee4b 100644 --- a/Resources/Prototypes/_White/Recipes/lathe_recipes.yml +++ b/Resources/Prototypes/_White/Recipes/lathe_recipes.yml @@ -22,6 +22,16 @@ Silver: 100 Gold: 100 +- type: latheRecipe + id: ClothingEyesGlassesThermal + result: ClothingEyesGlassesThermal + completetime: 2 + materials: + Steel: 200 + Glass: 100 + Silver: 100 + Gold: 100 + - type: latheRecipe id: WeaponTempGun result: WeaponTempGun diff --git a/Resources/Prototypes/_White/Research/experimental.yml b/Resources/Prototypes/_White/Research/experimental.yml index 4ed13340fb..f4041df2b9 100644 --- a/Resources/Prototypes/_White/Research/experimental.yml +++ b/Resources/Prototypes/_White/Research/experimental.yml @@ -3,10 +3,22 @@ id: NightVisionTech name: research-technology-night-vision icon: - sprite: White/Clothing/Head/nightvision.rsi + sprite: White/Clothing/Eyes/Glasses/nightvision.rsi state: icon discipline: Experimental tier: 2 cost: 10000 recipeUnlocks: - ClothingEyesNightVisionGoggles + +- type: technology + id: ThermalVisionTech + name: research-technology-thermal-vision + icon: + sprite: White/Clothing/Eyes/Glasses/thermal.rsi + state: icon + discipline: Experimental + tier: 2 + cost: 10000 + recipeUnlocks: + - ClothingEyesGlassesThermal diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES-off.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES-off.png new file mode 100644 index 0000000000..b63f30fc71 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES-off.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES.png new file mode 100644 index 0000000000..199c44122b Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/equipped-EYES.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/icon.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/icon.png rename to Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/icon.png diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-left.png rename to Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-left.png diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/inhand-right.png rename to Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/inhand-right.png diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/meta.json b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/meta.json new file mode 100644 index 0000000000..adb273a326 --- /dev/null +++ b/Resources/Textures/White/Clothing/Eyes/Glasses/nightvision.rsi/meta.json @@ -0,0 +1,48 @@ +{ + "version": 1, + "license": null, + "copyright": null, + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "equipped-EYES", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ], + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "equipped-EYES-off", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES.png new file mode 100644 index 0000000000..9bef0a8c05 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/icon.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/icon.png new file mode 100644 index 0000000000..3d5f8ef9b6 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/icon.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-left.png new file mode 100644 index 0000000000..bf67e35d40 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-right.png new file mode 100644 index 0000000000..4ede078291 Binary files /dev/null and b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json b/Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/meta.json similarity index 100% rename from Resources/Textures/White/Clothing/Head/nightvision.rsi/meta.json rename to Resources/Textures/White/Clothing/Eyes/Glasses/thermal.rsi/meta.json diff --git a/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png b/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png deleted file mode 100644 index 7d15515f7a..0000000000 Binary files a/Resources/Textures/White/Clothing/Head/nightvision.rsi/equipped-EYES.png and /dev/null differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/equipped-NECK.png b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/equipped-NECK.png new file mode 100644 index 0000000000..0c04dac35e Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/icon.png b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/icon.png new file mode 100644 index 0000000000..11b7a67618 Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/icon.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/inhand-left.png new file mode 100644 index 0000000000..72fd67c4ca Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/inhand-right.png new file mode 100644 index 0000000000..081177e3aa Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/meta.json b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/meta.json new file mode 100644 index 0000000000..58f9b41222 --- /dev/null +++ b/Resources/Textures/White/Clothing/Neck/Cloaks/cap.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, sprites in hand by PuroSlavKing (Github) and RudeyCoolLeet#3875, colors edited by Skarletto (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/equipped-NECK.png b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/equipped-NECK.png new file mode 100644 index 0000000000..09a49bd80a Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/icon.png b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/icon.png new file mode 100644 index 0000000000..50b9e5a927 Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/icon.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/inhand-left.png new file mode 100644 index 0000000000..1a880b087f Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/inhand-right.png new file mode 100644 index 0000000000..315b26bf93 Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/meta.json b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/meta.json new file mode 100644 index 0000000000..fde00d6116 --- /dev/null +++ b/Resources/Textures/White/Clothing/Neck/Cloaks/ce.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, sprites in hand by PuroSlavKing (Github) and RudeyCoolLeet#3875", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/equipped-NECK.png b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/equipped-NECK.png new file mode 100644 index 0000000000..0f3f854c70 Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/icon.png b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/icon.png new file mode 100644 index 0000000000..64d6970128 Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/icon.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/inhand-left.png b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/inhand-left.png new file mode 100644 index 0000000000..094adddf3d Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/inhand-left.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/inhand-right.png b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/inhand-right.png new file mode 100644 index 0000000000..afb201b3b2 Binary files /dev/null and b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/inhand-right.png differ diff --git a/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/meta.json b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/meta.json new file mode 100644 index 0000000000..fde00d6116 --- /dev/null +++ b/Resources/Textures/White/Clothing/Neck/Cloaks/rd.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, sprites in hand by PuroSlavKing (Github) and RudeyCoolLeet#3875", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/antinob-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/antinob-1.png new file mode 100644 index 0000000000..928a7a4d8f Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/antinob-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/antinob.png b/Resources/Textures/White/Structures/Storage/canister.rsi/antinob.png new file mode 100644 index 0000000000..8fab349705 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/antinob.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/black-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/black-1.png new file mode 100644 index 0000000000..634e4a5cef Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/black-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/black.png b/Resources/Textures/White/Structures/Storage/canister.rsi/black.png new file mode 100644 index 0000000000..8fdda08039 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/black.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/blue-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/blue-1.png new file mode 100644 index 0000000000..a91fee8b9b Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/blue-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/blue.png b/Resources/Textures/White/Structures/Storage/canister.rsi/blue.png new file mode 100644 index 0000000000..815035d313 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/blue.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/brown-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/brown-1.png new file mode 100644 index 0000000000..0a12872905 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/brown-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/brown.png b/Resources/Textures/White/Structures/Storage/canister.rsi/brown.png new file mode 100644 index 0000000000..d6f7e99cb8 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/brown.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-connector.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-connector.png new file mode 100644 index 0000000000..5e072729eb Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-connector.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-o0.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o0.png new file mode 100644 index 0000000000..6f8eecad72 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o0.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-o1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o1.png new file mode 100644 index 0000000000..087193266b Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-o2.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o2.png new file mode 100644 index 0000000000..c9fcc6c22c Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o2.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-o3.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o3.png new file mode 100644 index 0000000000..ee96a3f4e5 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-o3.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-oa1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-oa1.png new file mode 100644 index 0000000000..d4ac98cbbd Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-oa1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/can-open.png b/Resources/Textures/White/Structures/Storage/canister.rsi/can-open.png new file mode 100644 index 0000000000..edce30a7e6 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/can-open.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/darkblue-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/darkblue-1.png new file mode 100644 index 0000000000..10902595db Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/darkblue-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/darkblue.png b/Resources/Textures/White/Structures/Storage/canister.rsi/darkblue.png new file mode 100644 index 0000000000..e54b882c9d Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/darkblue.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/darkpurple-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/darkpurple-1.png new file mode 100644 index 0000000000..b5059f1c83 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/darkpurple-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/darkpurple.png b/Resources/Textures/White/Structures/Storage/canister.rsi/darkpurple.png new file mode 100644 index 0000000000..6ae6e5d95e Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/darkpurple.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/frezon-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/frezon-1.png new file mode 100644 index 0000000000..46dc9743ff Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/frezon-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/frezon.png b/Resources/Textures/White/Structures/Storage/canister.rsi/frezon.png new file mode 100644 index 0000000000..467fd7a108 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/frezon.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/green-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/green-1.png new file mode 100644 index 0000000000..b0af7b90a1 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/green-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/green.png b/Resources/Textures/White/Structures/Storage/canister.rsi/green.png new file mode 100644 index 0000000000..056e879e0c Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/green.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/greenys-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/greenys-1.png new file mode 100644 index 0000000000..913eb3a918 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/greenys-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/greenys.png b/Resources/Textures/White/Structures/Storage/canister.rsi/greenys.png new file mode 100644 index 0000000000..7cccdf1829 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/greenys.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/grey-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/grey-1.png new file mode 100644 index 0000000000..52bcfb60eb Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/grey-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/grey.png b/Resources/Textures/White/Structures/Storage/canister.rsi/grey.png new file mode 100644 index 0000000000..378bceee1f Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/grey.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/h2-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/h2-1.png new file mode 100644 index 0000000000..c0dcddddd6 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/h2-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/h2.png b/Resources/Textures/White/Structures/Storage/canister.rsi/h2.png new file mode 100644 index 0000000000..868a345f8c Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/h2.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/halon-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/halon-1.png new file mode 100644 index 0000000000..50f960b242 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/halon-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/halon.png b/Resources/Textures/White/Structures/Storage/canister.rsi/halon.png new file mode 100644 index 0000000000..c13fc8305e Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/halon.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/healium-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/healium-1.png new file mode 100644 index 0000000000..7840f9b4c8 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/healium-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/healium.png b/Resources/Textures/White/Structures/Storage/canister.rsi/healium.png new file mode 100644 index 0000000000..0e08caf3a8 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/healium.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/helium-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/helium-1.png new file mode 100644 index 0000000000..373eb27eb4 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/helium-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/helium.png b/Resources/Textures/White/Structures/Storage/canister.rsi/helium.png new file mode 100644 index 0000000000..f6e9e3da9d Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/helium.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/locked.png b/Resources/Textures/White/Structures/Storage/canister.rsi/locked.png new file mode 100644 index 0000000000..bb19fb4482 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/locked.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/meta.json b/Resources/Textures/White/Structures/Storage/canister.rsi/meta.json new file mode 100644 index 0000000000..197b62d033 --- /dev/null +++ b/Resources/Textures/White/Structures/Storage/canister.rsi/meta.json @@ -0,0 +1,188 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Frezon canister modified from tgstation, the rest are taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8581a636acfc1517611a680b7711a74fc7ef335", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "black" + }, + { + "name": "black-1" + }, + { + "name": "blue" + }, + { + "name": "blue-1" + }, + { + "name": "can-connector" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "can-o0", + "delays": [ + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "can-o1" + }, + { + "name": "can-o2" + }, + { + "name": "can-o3" + }, + { + "name": "can-oa1" + }, + { + "name": "can-open" + }, + { + "name": "grey" + }, + { + "name": "grey-1" + }, + { + "name": "orange" + }, + { + "name": "orange-1" + }, + { + "name": "red" + }, + { + "name": "red-1" + }, + { + "name": "redws" + }, + { + "name": "redws-1" + }, + { + "name": "yellow" + }, + { + "name": "yellow-1" + }, + { + "name": "green" + }, + { + "name": "green-1" + }, + { + "name": "greenys" + }, + { + "name": "greenys-1" + }, + { + "name": "darkblue" + }, + { + "name": "darkblue-1" + }, + { + "name": "frezon" + }, + { + "name": "frezon-1" + }, + { + "name": "water_vapor" + }, + { + "name": "water_vapor-1" + }, + { + "name": "scrubber-connector" + }, + { + "name": "scrubber-open" + }, + { + "name": "brown" + }, + { + "name": "brown-1" + }, + { + "name": "purple" + }, + { + "name": "purple-1" + }, + { + "name": "helium" + }, + { + "name": "helium-1" + }, + { + "name": "nob" + }, + { + "name": "nob-1" + }, + { + "name": "healium" + }, + { + "name": "healium-1" + }, + { + "name": "proto_nitrate" + }, + { + "name": "proto_nitrate-1" + }, + { + "name": "halon" + }, + { + "name": "halon-1" + }, + { + "name": "darkpurple" + }, + { + "name": "darkpurple-1" + }, + { + "name": "antinob" + }, + { + "name": "antinob-1" + }, + { + "name": "h2" + }, + { + "name": "h2-1" + }, + { + "name": "zauker" + }, + { + "name": "zauker-1" + } + ] +} diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/nob-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/nob-1.png new file mode 100644 index 0000000000..eb31c6fef0 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/nob-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/nob.png b/Resources/Textures/White/Structures/Storage/canister.rsi/nob.png new file mode 100644 index 0000000000..9eff7cabca Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/nob.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/orange-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/orange-1.png new file mode 100644 index 0000000000..c4617f0bc1 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/orange-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/orange.png b/Resources/Textures/White/Structures/Storage/canister.rsi/orange.png new file mode 100644 index 0000000000..adbd5397a5 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/orange.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/proto_nitrate-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/proto_nitrate-1.png new file mode 100644 index 0000000000..f7a10d91f7 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/proto_nitrate-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/proto_nitrate.png b/Resources/Textures/White/Structures/Storage/canister.rsi/proto_nitrate.png new file mode 100644 index 0000000000..f963edfd69 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/proto_nitrate.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/purple-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/purple-1.png new file mode 100644 index 0000000000..93674ec434 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/purple-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/purple.png b/Resources/Textures/White/Structures/Storage/canister.rsi/purple.png new file mode 100644 index 0000000000..82b4198644 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/purple.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/red-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/red-1.png new file mode 100644 index 0000000000..15bc2fa322 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/red-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/red.png b/Resources/Textures/White/Structures/Storage/canister.rsi/red.png new file mode 100644 index 0000000000..9780f27662 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/red.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/redws-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/redws-1.png new file mode 100644 index 0000000000..97b4dd6ec9 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/redws-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/redws.png b/Resources/Textures/White/Structures/Storage/canister.rsi/redws.png new file mode 100644 index 0000000000..8c1c0261b5 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/redws.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/scrubber-connector.png b/Resources/Textures/White/Structures/Storage/canister.rsi/scrubber-connector.png new file mode 100644 index 0000000000..261bbdb340 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/scrubber-connector.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/scrubber-open.png b/Resources/Textures/White/Structures/Storage/canister.rsi/scrubber-open.png new file mode 100644 index 0000000000..4eb9d1e708 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/scrubber-open.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/unlocked.png b/Resources/Textures/White/Structures/Storage/canister.rsi/unlocked.png new file mode 100644 index 0000000000..5cd585307a Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/unlocked.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/water_vapor-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/water_vapor-1.png new file mode 100644 index 0000000000..a6b6ad69f5 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/water_vapor-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/water_vapor.png b/Resources/Textures/White/Structures/Storage/canister.rsi/water_vapor.png new file mode 100644 index 0000000000..feae2da892 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/water_vapor.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/yellow-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/yellow-1.png new file mode 100644 index 0000000000..1ab44ae259 Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/yellow-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/yellow.png b/Resources/Textures/White/Structures/Storage/canister.rsi/yellow.png new file mode 100644 index 0000000000..66df902d3e Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/yellow.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/zauker-1.png b/Resources/Textures/White/Structures/Storage/canister.rsi/zauker-1.png new file mode 100644 index 0000000000..851c303abb Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/zauker-1.png differ diff --git a/Resources/Textures/White/Structures/Storage/canister.rsi/zauker.png b/Resources/Textures/White/Structures/Storage/canister.rsi/zauker.png new file mode 100644 index 0000000000..3ad300544f Binary files /dev/null and b/Resources/Textures/White/Structures/Storage/canister.rsi/zauker.png differ