From 876a48458e6d0d4b6cb53151dbfb8331f473e279 Mon Sep 17 00:00:00 2001 From: Spatison <137375981+Spatison@users.noreply.github.com> Date: Thu, 19 Jun 2025 19:46:24 +0300 Subject: [PATCH] =?UTF-8?q?[Fix]=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=84=D0=B0=D1=81=D1=82=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B4=D0=B6=20#600=20(#606)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * commit * fix --- .../CombatMode/CombatModeIndicatorsOverlay.cs | 2 +- Content.Client/Entry/EntryPoint.cs | 2 + .../{ => _White}/Overlays/CRTVisionOverlay.cs | 31 +++--- .../{ => _White}/Overlays/CRTVisionSystem.cs | 101 +++++++++--------- .../CRTVisionOverlayComponent.cs} | 7 +- .../StudioVisorOverlayComponent.cs} | 6 +- .../Locale/en-US/_white/traits/traits.ftl | 3 + Resources/Locale/en-US/traits/traits.ftl | 3 - .../Locale/ru-RU/_white/traits/traits.ftl | 3 + Resources/Locale/ru-RU/traits/traits.ftl | 3 - .../Entities/Mobs/Cyborgs/borg_chassis.yml | 2 +- .../Prototypes/Entities/Mobs/Player/ipc.yml | 2 +- .../Prototypes/Entities/Mobs/Species/ipc.yml | 14 --- .../Guns/turrets/turrets_ballistic.yml | 10 +- .../Weapons/Guns/turrets/turrets_base.yml | 2 +- .../Weapons/Guns/Turrets/turret_base.yml | 1 + Resources/Prototypes/_White/Traits/vision.yml | 2 +- 17 files changed, 89 insertions(+), 105 deletions(-) rename Content.Client/{ => _White}/Overlays/CRTVisionOverlay.cs (84%) rename Content.Client/{ => _White}/Overlays/CRTVisionSystem.cs (67%) rename Content.Shared/_White/{Traits/Assorted/Components/CRTVisionComponent.cs => Overlays/CRTVisionOverlayComponent.cs} (50%) rename Content.Shared/_White/{Traits/Assorted/Components/StudioVisorComponent.cs => Overlays/StudioVisorOverlayComponent.cs} (59%) delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/ipc.yml diff --git a/Content.Client/CombatMode/CombatModeIndicatorsOverlay.cs b/Content.Client/CombatMode/CombatModeIndicatorsOverlay.cs index 00d9b821cc..65c344ad9b 100644 --- a/Content.Client/CombatMode/CombatModeIndicatorsOverlay.cs +++ b/Content.Client/CombatMode/CombatModeIndicatorsOverlay.cs @@ -44,7 +44,7 @@ public sealed class CombatModeIndicatorsOverlay : Overlay _eye = eye; _combat = combatSys; _hands = hands; - ZIndex = 100; + ZIndex = 100; // WD EDIT var spriteSys = _entMan.EntitySysManager.GetEntitySystem(); _gunSight = spriteSys.Frame0(new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/crosshair_pointers.rsi"), diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index e1203d4d32..44151f7b29 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -128,10 +128,12 @@ namespace Content.Client.Entry _prototypeManager.RegisterIgnore("stationGoal"); _prototypeManager.RegisterIgnore("ghostRoleRaffleDecider"); + // WD EDIT START // Vision effects _componentFactory.RegisterIgnore("UltraVisionComponent"); _componentFactory.RegisterIgnore("DogVisionComponent"); _componentFactory.RegisterIgnore("CRTVisionComponent"); + // WD EDIT END _componentFactory.GenerateNetIds(); _adminManager.Initialize(); diff --git a/Content.Client/Overlays/CRTVisionOverlay.cs b/Content.Client/_White/Overlays/CRTVisionOverlay.cs similarity index 84% rename from Content.Client/Overlays/CRTVisionOverlay.cs rename to Content.Client/_White/Overlays/CRTVisionOverlay.cs index a1b3d5ff24..cd24dce103 100644 --- a/Content.Client/Overlays/CRTVisionOverlay.cs +++ b/Content.Client/_White/Overlays/CRTVisionOverlay.cs @@ -1,12 +1,13 @@ +using Content.Shared._White.Overlays; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Shared.Enums; using Robust.Shared.Prototypes; -using Content.Shared._White.Traits.Assorted.Components; using Robust.Shared.Timing; -namespace Content.Client.Overlays; +namespace Content.Client._White.Overlays; +// ReSharper disable once InconsistentNaming public sealed class CRTVisionOverlay : Overlay { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; @@ -38,13 +39,13 @@ public sealed class CRTVisionOverlay : Overlay // Effect parameters private float _healthPercentage = 1.0f; - private float _glitchIntensity = 0.0f; + private float _glitchIntensity; // Temporary glitch effect parameters - private float _temporaryGlitchIntensity = 0.0f; - private float _temporaryGlitchDuration = 0.0f; - private float _temporaryGlitchTimer = 0.0f; - private bool _hasTemporaryGlitch = false; + private float _temporaryGlitchIntensity; + private float _temporaryGlitchDuration; + private float _temporaryGlitchTimer; + private bool _hasTemporaryGlitch; public CRTVisionOverlay() { @@ -58,8 +59,8 @@ public sealed class CRTVisionOverlay : Overlay protected override bool BeforeDraw(in OverlayDrawArgs args) { - if (_playerManager.LocalEntity is not { Valid: true } player - || !_entityManager.HasComponent(player)) + if (_playerManager.LocalEntity is not { Valid: true, } player + || !_entityManager.HasComponent(player)) return false; return base.BeforeDraw(in args); @@ -95,11 +96,11 @@ public sealed class CRTVisionOverlay : Overlay _crtVisionShader.SetParameter("TIME", _currentTime); // Apply temporary glitch effect if active - float effectiveGlitchIntensity = _glitchIntensity; + var effectiveGlitchIntensity = _glitchIntensity; if (_hasTemporaryGlitch && _temporaryGlitchDuration > 0f) { - float remainingFactor = 1.0f - (_temporaryGlitchTimer / _temporaryGlitchDuration); - float tempIntensity = _temporaryGlitchIntensity * remainingFactor; + var remainingFactor = 1.0f - (_temporaryGlitchTimer / _temporaryGlitchDuration); + var tempIntensity = _temporaryGlitchIntensity * remainingFactor; effectiveGlitchIntensity = Math.Max(effectiveGlitchIntensity, tempIntensity); } @@ -131,7 +132,7 @@ public sealed class CRTVisionOverlay : Overlay if (_healthPercentage < GlitchHealthThreshold) { // Normalize scale from threshold to 0.0 into range from 0.0 to 1.0 - float normalizedHealth = 1.0f - (_healthPercentage / GlitchHealthThreshold); + var normalizedHealth = 1.0f - (_healthPercentage / GlitchHealthThreshold); // Quadratic function for smooth effect increase _glitchIntensity = normalizedHealth * normalizedHealth * GlitchIntensityMultiplier; @@ -146,8 +147,8 @@ public sealed class CRTVisionOverlay : Overlay // At low charge enhance effects if (_healthPercentage < LowHealthThreshold) { - float lowChargeFactor = 1.0f - (_healthPercentage / LowHealthThreshold); - float pulsation = (float)Math.Sin(_currentTime * LowHealthPulsationFrequency) * LowHealthPulsationAmplitude; + var lowChargeFactor = 1.0f - (_healthPercentage / LowHealthThreshold); + var pulsation = (float)Math.Sin(_currentTime * LowHealthPulsationFrequency) * LowHealthPulsationAmplitude; _glitchIntensity = Math.Max(_glitchIntensity, lowChargeFactor * LowHealthIntensityFactor + pulsation); } _glitchIntensity = Math.Max(0f, _glitchIntensity); diff --git a/Content.Client/Overlays/CRTVisionSystem.cs b/Content.Client/_White/Overlays/CRTVisionSystem.cs similarity index 67% rename from Content.Client/Overlays/CRTVisionSystem.cs rename to Content.Client/_White/Overlays/CRTVisionSystem.cs index 2f1e27d978..1f0830f6bf 100644 --- a/Content.Client/Overlays/CRTVisionSystem.cs +++ b/Content.Client/_White/Overlays/CRTVisionSystem.cs @@ -1,25 +1,23 @@ -using Content.Shared._White.Traits.Assorted.Components; +using Content.Shared._White.Overlays; using Content.Shared.CCVar; +using Content.Shared.Damage; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Content.Shared.Stunnable; +using Content.Shared.Weapons.Melee.Events; using Robust.Client.Graphics; using Robust.Shared.Configuration; using Robust.Shared.Player; -using Content.Shared.Damage; -using Robust.Shared.Timing; -using System; -using Content.Shared.Mobs; -using Content.Shared.Mobs.Components; -using Content.Shared.Weapons.Melee.Events; -using Content.Shared.Stunnable; -using Content.Shared.Mobs.Systems; -namespace Content.Client.Overlays; +namespace Content.Client._White.Overlays; -public sealed partial class CRTVisionSystem : EntitySystem +// ReSharper disable once InconsistentNaming +public sealed class CRTVisionSystem : EntitySystem { [Dependency] private readonly IOverlayManager _overlayMan = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly ISharedPlayerManager _playerMan = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IEntityManager _entityManager = default!; private CRTVisionOverlay _overlay = default!; @@ -31,35 +29,44 @@ public sealed partial class CRTVisionSystem : EntitySystem private const float StudioVisorGlitchReduction = 0.7f; // Reduce glitch intensity by 70% with studio visor private const float StudioVisorLowHealthThreshold = 0.3f; + private bool _noVisionFilters; + public override void Initialize() { base.Initialize(); _overlay = new(); - SubscribeLocalEvent(OnComponentChange); - SubscribeLocalEvent(OnComponentChange); - SubscribeLocalEvent(OnPlayerStateChange); - SubscribeLocalEvent(OnPlayerStateChange); + SubscribeLocalEvent(OnComponentChange); + SubscribeLocalEvent(OnComponentChange); + SubscribeLocalEvent(OnPlayerStateChange); + SubscribeLocalEvent(OnPlayerStateChange); // Subscribe to studio visor events - SubscribeLocalEvent(OnComponentChange); - SubscribeLocalEvent(OnComponentChange); + SubscribeLocalEvent(OnComponentChange); + SubscribeLocalEvent(OnComponentChange); // Subscribe to damage events - SubscribeLocalEvent(OnDamageChanged); + SubscribeLocalEvent(OnDamageChanged); // Subscribe to mob state change events - SubscribeLocalEvent(OnMobStateChanged); + SubscribeLocalEvent(OnMobStateChanged); // Subscribe to health threshold events - SubscribeLocalEvent(OnThresholdChecked); + SubscribeLocalEvent(OnThresholdChecked); // Subscribe to attack and stun events - SubscribeLocalEvent(OnAttacked); - SubscribeLocalEvent(OnStunned); + SubscribeLocalEvent(OnAttacked); + SubscribeLocalEvent(OnStunned); - Subs.CVar(_cfg, CCVars.NoVisionFilters, OnNoVisionFiltersChanged); + Subs.CVar( + _cfg, + CCVars.NoVisionFilters, + v => + { + _noVisionFilters = v; + UpdateOverlayState(); + }); } private void OnComponentChange(EntityUid uid, T component, EntityEventArgs args) where T: IComponent @@ -68,7 +75,7 @@ public sealed partial class CRTVisionSystem : EntitySystem UpdateOverlayState(); } - private void OnPlayerStateChange(EntityUid uid, CRTVisionComponent component, T args) + private void OnPlayerStateChange(EntityUid uid, CRTVisionOverlayComponent component, T args) { UpdateOverlayState(); } @@ -76,46 +83,40 @@ public sealed partial class CRTVisionSystem : EntitySystem private void UpdateOverlayState() { var player = _playerMan.LocalEntity; - if (player == null || !EntityManager.HasComponent(player)) - { + if (player == null || !EntityManager.HasComponent(player)) + { _overlayMan.RemoveOverlay(_overlay); return; } UpdateHealthPercentage(player.Value); - var hasStudioVisor = _entityManager.HasComponent(player.Value); - var noVisionFilters = _cfg.GetCVar(CCVars.NoVisionFilters); + var hasStudioVisor = _entityManager.HasComponent(player.Value); // The overlay is active if filters are enabled, and the user either doesn't have a studio visor, // or has one but is at low health. - bool shouldShowOverlay = !noVisionFilters && (!hasStudioVisor || _healthPercentage < StudioVisorLowHealthThreshold); + var shouldShowOverlay = !_noVisionFilters && (!hasStudioVisor || _healthPercentage < StudioVisorLowHealthThreshold); if (shouldShowOverlay) { if (!_overlayMan.HasOverlay()) - _overlayMan.AddOverlay(_overlay); + _overlayMan.AddOverlay(_overlay); } else - { - if (_overlayMan.HasOverlay()) - _overlayMan.RemoveOverlay(_overlay); + { + if (_overlayMan.HasOverlay()) + _overlayMan.RemoveOverlay(_overlay); } } - private void OnNoVisionFiltersChanged(bool enabled) - { - UpdateOverlayState(); - } - // Process damage event - private void OnDamageChanged(EntityUid uid, CRTVisionComponent component, DamageChangedEvent args) + private void OnDamageChanged(EntityUid uid, CRTVisionOverlayComponent component, DamageChangedEvent args) { if (uid != _playerMan.LocalEntity) return; // Check if it was damage and not healing - if (args.DamageIncreased && args.DamageDelta != null) + if (args is { DamageIncreased: true, DamageDelta: not null, }) { var damageAmount = (float) args.DamageDelta.GetTotal(); TriggerImpactEffect(damageAmount); @@ -129,7 +130,7 @@ public sealed partial class CRTVisionSystem : EntitySystem private void UpdateHealthPercentage(EntityUid uid) { if (!_entityManager.TryGetComponent(uid, out var damageable) || - !_entityManager.TryGetComponent(uid, out var thresholds)) + !_entityManager.HasComponent(uid)) return; // Get critical threshold @@ -145,29 +146,25 @@ public sealed partial class CRTVisionSystem : EntitySystem } // Handle mob state change (e.g., transition from Normal to Critical) - private void OnMobStateChanged(EntityUid uid, CRTVisionComponent component, MobStateChangedEvent args) + private void OnMobStateChanged(EntityUid uid, CRTVisionOverlayComponent component, MobStateChangedEvent args) { if (uid != _playerMan.LocalEntity) return; // If state worsened, show impact effect if (args.NewMobState > args.OldMobState) - { TriggerImpactEffect(20.0f); // Stronger effect on state change - } // Trigger a strong glitch effect when entering critical state if (args.NewMobState == MobState.Critical) - { _overlay.SetTemporaryGlitchEffect(1.5f, 0.5f); - } // Update health percentage for glitch effects UpdateOverlayState(); } // Handle health threshold check - private void OnThresholdChecked(EntityUid uid, CRTVisionComponent component, MobThresholdChecked args) + private void OnThresholdChecked(EntityUid uid, CRTVisionOverlayComponent component, MobThresholdChecked args) { if (uid != _playerMan.LocalEntity) return; @@ -183,7 +180,7 @@ public sealed partial class CRTVisionSystem : EntitySystem } // Handle attack on player - private void OnAttacked(EntityUid uid, CRTVisionComponent component, AttackedEvent args) + private void OnAttacked(EntityUid uid, CRTVisionOverlayComponent component, AttackedEvent args) { if (uid != _playerMan.LocalEntity) return; @@ -193,7 +190,7 @@ public sealed partial class CRTVisionSystem : EntitySystem } // Handle stun event - private void OnStunned(EntityUid uid, CRTVisionComponent component, StunnedEvent args) + private void OnStunned(EntityUid uid, CRTVisionOverlayComponent component, StunnedEvent args) { if (uid != _playerMan.LocalEntity) return; @@ -210,11 +207,11 @@ public sealed partial class CRTVisionSystem : EntitySystem // Reduce impact effect intensity if player has studio visor var effectiveIntensity = intensity; - if (_entityManager.HasComponent(player.Value)) + if (_entityManager.HasComponent(player.Value)) effectiveIntensity *= (1.0f - StudioVisorGlitchReduction); // Trigger a temporary glitch effect proportional to damage - float glitchIntensity = Math.Min(effectiveIntensity / 50.0f, 1.0f); + var glitchIntensity = Math.Min(effectiveIntensity / 50.0f, 1.0f); _overlay.SetTemporaryGlitchEffect(glitchIntensity * 0.8f, 0.4f); } } diff --git a/Content.Shared/_White/Traits/Assorted/Components/CRTVisionComponent.cs b/Content.Shared/_White/Overlays/CRTVisionOverlayComponent.cs similarity index 50% rename from Content.Shared/_White/Traits/Assorted/Components/CRTVisionComponent.cs rename to Content.Shared/_White/Overlays/CRTVisionOverlayComponent.cs index 68800c55a5..12da932b64 100644 --- a/Content.Shared/_White/Traits/Assorted/Components/CRTVisionComponent.cs +++ b/Content.Shared/_White/Overlays/CRTVisionOverlayComponent.cs @@ -1,11 +1,10 @@ using Robust.Shared.GameStates; -namespace Content.Shared._White.Traits.Assorted.Components; +namespace Content.Shared._White.Overlays; /// /// This is used for adding CRT vision effects to IPCs. /// [RegisterComponent, NetworkedComponent] -public sealed partial class CRTVisionComponent : Component -{ -} +// ReSharper disable once InconsistentNaming +public sealed partial class CRTVisionOverlayComponent : Component; diff --git a/Content.Shared/_White/Traits/Assorted/Components/StudioVisorComponent.cs b/Content.Shared/_White/Overlays/StudioVisorOverlayComponent.cs similarity index 59% rename from Content.Shared/_White/Traits/Assorted/Components/StudioVisorComponent.cs rename to Content.Shared/_White/Overlays/StudioVisorOverlayComponent.cs index d11e98afad..066a8aa56c 100644 --- a/Content.Shared/_White/Traits/Assorted/Components/StudioVisorComponent.cs +++ b/Content.Shared/_White/Overlays/StudioVisorOverlayComponent.cs @@ -1,11 +1,9 @@ using Robust.Shared.GameStates; -namespace Content.Shared._White.Traits.Assorted.Components; +namespace Content.Shared._White.Overlays; /// /// This is used for IPCs with studio visor that reduces CRT vision effects. /// [RegisterComponent, NetworkedComponent] -public sealed partial class StudioVisorComponent : Component -{ -} \ No newline at end of file +public sealed partial class StudioVisorOverlayComponent : Component; diff --git a/Resources/Locale/en-US/_white/traits/traits.ftl b/Resources/Locale/en-US/_white/traits/traits.ftl index 1831d36154..ca3dd26960 100644 --- a/Resources/Locale/en-US/_white/traits/traits.ftl +++ b/Resources/Locale/en-US/_white/traits/traits.ftl @@ -3,3 +3,6 @@ trait-description-Deaf = You can not hear anything anyone says! Luckily, you see trait-name-Contract = Contract trait-description-Contract = You signed paper with your own blood, what could go wrong? + +trait-name-StudioVisor = Studio Visor +trait-description-StudioVisor = A studio-grade visor is installed in your vision sensors, which significantly reduces the intensity of CRT-like visual effects and glitches caused by damage or low health. diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 490c3da60f..16d15315b7 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -665,6 +665,3 @@ trait-description-IPCFragileCircuits = Your chassis is particularly bad at handling electric discharges. You immediately shut down any time you take [color=orange]Shock[/color] damage and must be rebooted. fragileCircuits-kill-popup = {$name}'s circuits shut down from short-circuiting! - -trait-name-StudioVisor = Studio Visor -trait-description-StudioVisor = A studio-grade visor is installed in your vision sensors, which significantly reduces the intensity of CRT-like visual effects and glitches caused by damage or low health. diff --git a/Resources/Locale/ru-RU/_white/traits/traits.ftl b/Resources/Locale/ru-RU/_white/traits/traits.ftl index bbe7f2bcb5..ab3d6816fa 100644 --- a/Resources/Locale/ru-RU/_white/traits/traits.ftl +++ b/Resources/Locale/ru-RU/_white/traits/traits.ftl @@ -3,3 +3,6 @@ trait-description-Deaf = Вы совершенно ничего не слыши trait-name-Contract = Контракт trait-description-Contract = Вы подписали какую-то бумажку своей кровью, что может пойти не так? + +trait-name-StudioVisor = Студийный визор +trait-description-StudioVisor = В ваши оптические сенсоры встроен визор студийного класса, который значительно снижает интенсивность визуальных ЭЛТ-эффектов и глитчей, вызванных повреждениями или низким уровнем заряда. diff --git a/Resources/Locale/ru-RU/traits/traits.ftl b/Resources/Locale/ru-RU/traits/traits.ftl index 572aef63be..bd641ac863 100644 --- a/Resources/Locale/ru-RU/traits/traits.ftl +++ b/Resources/Locale/ru-RU/traits/traits.ftl @@ -590,6 +590,3 @@ trait-name-IPCFragileCircuits = Хрупкие Микросхемы trait-description-IPCFragileCircuits = Ваша система не переносит электрических перегрузок. Любой [color=orange]шоковый[/color] урон моментально отключает вас. fragileCircuits-kill-popup = {$name} отключился из-за короткого замыкания! - -trait-name-StudioVisor = Студийный визор -trait-description-StudioVisor = В ваши оптические сенсоры встроен визор студийного класса, который значительно снижает интенсивность визуальных ЭЛТ-эффектов и глитчей, вызванных повреждениями или низким уровнем заряда. diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index e77ac2b056..a4a24810d0 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -2,7 +2,6 @@ id: BorgChassisSelectable parent: BaseBorgChassisNT components: - - type: CRTVision - type: Sprite layers: - state: robot @@ -37,6 +36,7 @@ - type: SurgerySpeedModifier speedModifier: 1.5 - type: Sanitized + - type: CRTVisionOverlay # WD EDIT - type: entity id: BorgChassisGeneric diff --git a/Resources/Prototypes/Entities/Mobs/Player/ipc.yml b/Resources/Prototypes/Entities/Mobs/Player/ipc.yml index b6340dd11a..95456440df 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/ipc.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/ipc.yml @@ -4,7 +4,6 @@ name: Urist McPositronic description: A positronic brain in a metal body. components: - - type: CRTVision - type: PowerCellSlot cellSlotId: cell_slot fitsInCharger: true @@ -137,6 +136,7 @@ - DoorBumpOpener - SiliconEmotes - SiliconMob + - type: CRTVisionOverlay # WD EDIT - type: entity save: false diff --git a/Resources/Prototypes/Entities/Mobs/Species/ipc.yml b/Resources/Prototypes/Entities/Mobs/Species/ipc.yml deleted file mode 100644 index 2152537cc3..0000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/ipc.yml +++ /dev/null @@ -1,14 +0,0 @@ -- type: entity - id: MobIPCSpecies - parent: BaseMob - name: ipc - description: A synthetic man-made lifeform. - components: - - type: CRTVision - - type: Respirator - damage: - excess: 0 - damageRecovery: - types: - Asphyxiation: -1.0 - \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_ballistic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_ballistic.yml index d2d9073cb4..27f611d3fe 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_ballistic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_ballistic.yml @@ -1,5 +1,5 @@ - type: entity - parent: [BaseWeaponBallisticTurret, BaseTurret3D] # wwdp edit + parent: [BaseTurret3D, BaseWeaponBallisticTurret] # wwdp edit id: WeaponTurretSyndicate suffix: Syndicate components: @@ -8,7 +8,7 @@ - Syndicate - type: entity - parent: [BaseWeaponBallisticTurret, BaseTurret3D] # wwdp edit + parent: [BaseTurret3D, BaseWeaponBallisticTurret] # wwdp edit id: WeaponTurretSAN suffix: Sol Alliance Navy description: A turret designed to provide protection for Sol Marines during combat drops. It menaces targets with a twin-linked C-20r, although its cheap fire controller lends to poor accuracy. @@ -28,7 +28,7 @@ capacity: 200 - type: entity - parent: [BaseWeaponBallisticTurret, BaseTurret3D] # wwdp edit + parent: [BaseTurret3D, BaseWeaponBallisticTurret] # wwdp edit name: disposable ballistic turret id: WeaponTurretSyndicateDisposable suffix: Syndicate, Disposable @@ -62,7 +62,7 @@ canCreateVacuum: false - type: entity - parent: [BaseWeaponBallisticTurret, BaseTurret3D] # wwdp edit + parent: [BaseTurret3D, BaseWeaponBallisticTurret] # wwdp edit id: WeaponTurretNanoTrasen suffix: NanoTrasen components: @@ -71,7 +71,7 @@ - NanoTrasen - type: entity - parent: [BaseWeaponBallisticTurret, BaseTurret3D] # wwdp edit + parent: [BaseTurret3D, BaseWeaponBallisticTurret] # wwdp edit id: WeaponTurretHostile suffix: Hostile components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_base.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_base.yml index 68c1472dd0..e90ccd9ad0 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_base.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/turrets/turrets_base.yml @@ -37,7 +37,7 @@ capacity: 200 - type: entity - parent: [BaseWeaponBallisticTurret, BaseTurret3D] # wwdp edit + parent: BaseWeaponBallisticTurret id: BaseWeaponTurretMinigun name: minigun turret abstract: true diff --git a/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/Turrets/turret_base.yml b/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/Turrets/turret_base.yml index bf09c89b9a..4021de8f63 100644 --- a/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/Turrets/turret_base.yml +++ b/Resources/Prototypes/_White/Entities/Objects/Weapons/Guns/Turrets/turret_base.yml @@ -82,6 +82,7 @@ components: - type: Sprite noRot: true + sprite: Objects/Weapons/Guns/Turrets/turrets.rsi drawdepth: Mobs layers: - state: syndie_base diff --git a/Resources/Prototypes/_White/Traits/vision.yml b/Resources/Prototypes/_White/Traits/vision.yml index a5de61cd64..c0dc48e7f0 100644 --- a/Resources/Prototypes/_White/Traits/vision.yml +++ b/Resources/Prototypes/_White/Traits/vision.yml @@ -9,4 +9,4 @@ functions: - !type:TraitAddComponent components: - - type: StudioVisor + - type: StudioVisorOverlay