diff --git a/Content.Client/Sirena/EntityHealthBar/EntityHealthBarOverlay.cs b/Content.Client/Sirena/EntityHealthBar/EntityHealthBarOverlay.cs
index ec27cbf5eef..47fcba0147a 100644
--- a/Content.Client/Sirena/EntityHealthBar/EntityHealthBarOverlay.cs
+++ b/Content.Client/Sirena/EntityHealthBar/EntityHealthBarOverlay.cs
@@ -1,231 +1,230 @@
-// using System.Numerics;
-// using Content.Shared.Damage;
-// using Content.Shared.Mobs;
-// using Content.Shared.Mobs.Components;
-// using Content.Shared.Mobs.Systems;
-// using Content.Shared.FixedPoint;
-// using Robust.Client.GameObjects;
-// using Robust.Client.Graphics;
-// using Robust.Shared.Enums;
-// using Robust.Shared.Prototypes;
-// using Robust.Shared.Utility;
-// using Robust.Shared.Timing;
-//
-// namespace Content.Client.Sirena.EntityHealthBar;
-//
-// ///
-// /// Yeah a lot of this is duplicated from doafters.
-// /// Not much to be done until there's a generic HUD system
-// ///
-// public sealed class EntityHealthBarOverlay : Overlay
-// {
-// private readonly IEntityManager _entManager;
-// private readonly SharedTransformSystem _transform;
-// private readonly MobStateSystem _mobStateSystem;
-// private readonly MobThresholdSystem _mobThresholdSystem;
-// private readonly Texture _barTexture;
-// private readonly ShaderInstance _shader;
-// public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
-// public string? DamageContainer;
-// // for icon frame change timer
-// int iconFrame = 1;
-// double delayTime = 0.25;
-//
-// public EntityHealthBarOverlay(IEntityManager entManager, IPrototypeManager protoManager)
-// {
-// _entManager = entManager;
-// _transform = _entManager.EntitySysManager.GetEntitySystem();
-// _mobStateSystem = _entManager.EntitySysManager.GetEntitySystem();
-// _mobThresholdSystem = _entManager.EntitySysManager.GetEntitySystem();
-//
-// var sprite = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/health_status.rsi"), "background");
-// _barTexture = _entManager.EntitySysManager.GetEntitySystem().Frame0(sprite);
-//
-// _shader = protoManager.Index("unshaded").Instance();
-// Timer.SpawnRepeating(TimeSpan.FromSeconds(delayTime), () => {
-// if (iconFrame < 8)
-// iconFrame++;
-// else
-// iconFrame = 1;
-// }, new System.Threading.CancellationToken());
-// }
-//
-// protected override void Draw(in OverlayDrawArgs args)
-// {
-// var handle = args.WorldHandle;
-// var rotation = args.Viewport.Eye?.Rotation ?? Angle.Zero;
-// var spriteQuery = _entManager.GetEntityQuery();
-// var xformQuery = _entManager.GetEntityQuery();
-//
-// var _spriteSys = _entManager.EntitySysManager.GetEntitySystem();
-//
-// const float scale = 1f;
-// var scaleMatrix = Matrix3.CreateScale(new Vector2(scale, scale));
-// var rotationMatrix = Matrix3.CreateRotation(-rotation);
-// handle.UseShader(_shader);
-//
-// foreach (var (mob, dmg) in _entManager.EntityQuery(true))
-// {
-// if (!xformQuery.TryGetComponent(mob.Owner, out var xform) ||
-// xform.MapID != args.MapId)
-// {
-// continue;
-// }
-//
-// if (DamageContainer != null && dmg.DamageContainerID != DamageContainer)
-// continue;
-//
-// var worldPosition = _transform.GetWorldPosition(xform);
-// var worldMatrix = Matrix3.CreateTranslation(worldPosition);
-//
-// Matrix3.Multiply(scaleMatrix, worldMatrix, out var scaledWorld);
-// Matrix3.Multiply(rotationMatrix, scaledWorld, out var matty);
-//
-// handle.SetTransform(matty);
-//
-// // Use the sprite itself if we know its bounds. This means short or tall sprites don't get overlapped
-// // by the bar.
-// float yOffset;
-// float xIconOffset;
-// float yIconOffset;
-// if (spriteQuery.TryGetComponent(mob.Owner, out var sprite))
-// {
-// yOffset = sprite.Bounds.Height + 12f;
-// yIconOffset = sprite.Bounds.Height + 7f;
-// xIconOffset = sprite.Bounds.Width + 7f;
-// }
-// else
-// {
-// yOffset = 1f;
-// yIconOffset = 1f;
-// xIconOffset = 1f;
-// }
-//
-// // Position above the entity (we've already applied the matrix transform to the entity itself)
-// // Offset by the texture size for every do_after we have.
-// var position = new Vector2(-_barTexture.Width / 2f / EyeManager.PixelsPerMeter,
-// yOffset / EyeManager.PixelsPerMeter);
-//
-// // Draw the underlying bar texture
-// if (sprite != null && !sprite.ContainerOccluded)
-// handle.DrawTexture(_barTexture, position);
-// else
-// continue;
-//
-// // Draw state icon
-// string current_state;
-// if (_mobStateSystem.IsAlive(mob.Owner, mob))
-// {
-// current_state = "life_state";
-// }
-// else
-// {
-// if (_mobStateSystem.IsCritical(mob.Owner, mob) && _mobThresholdSystem.TryGetThresholdForState(mob.Owner, MobState.Critical, out var critThreshold))
-// current_state = "defib_state";
-// else
-// current_state = "dead_state";
-// }
-//
-// var icon_sprite = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/health_state.rsi"), current_state);
-// Texture _stateIcon = _spriteSys.RsiStateLike(icon_sprite).GetFrame(0, GetIconFrame(_spriteSys.RsiStateLike(icon_sprite)));
-//
-// var icon_position = new Vector2(xIconOffset / EyeManager.PixelsPerMeter,
-// yIconOffset / EyeManager.PixelsPerMeter);
-//
-// handle.DrawTexture(_stateIcon, icon_position);
-//
-// // we are all progressing towards death every day
-// (float ratio, bool inCrit) deathProgress = CalcProgress(mob.Owner, mob, dmg);
-//
-// var color = GetProgressColor(deathProgress.ratio, deathProgress.inCrit);
-//
-// // Hardcoded width of the progress bar because it doesn't match the texture.
-// const float startX = 1f;
-// const float endX = 15f;
-//
-// var xProgress = (endX - startX) * deathProgress.ratio + startX;
-//
-// var box = new Box2(new Vector2(startX, 0f) / EyeManager.PixelsPerMeter, new Vector2(xProgress, 2f) / EyeManager.PixelsPerMeter);
-// box = box.Translated(position);
-// handle.DrawRect(box, color);
-// }
-//
-// handle.UseShader(null);
-// handle.SetTransform(Matrix3.Identity);
-// }
-//
-// private int GetIconFrame(IRsiStateLike sprite)
-// {
-// var _spriteSys = _entManager.EntitySysManager.GetEntitySystem();
-//
-// if (sprite.AnimationFrameCount <= 1)
-// return 0;
-//
-// var currentFrame = iconFrame;
-// var result = 0;
-// while (true)
-// {
-// if (currentFrame > 0 && currentFrame > sprite.AnimationFrameCount)
-// {
-// currentFrame -= sprite.AnimationFrameCount;
-// }
-// else
-// {
-// result = currentFrame - 1;
-// break;
-// }
-// }
-// return result;
-// }
-//
-//
-// ///
-// /// Returns a ratio between 0 and 1, and whether the entity is in crit.
-// ///
-// private (float, bool) CalcProgress(EntityUid uid, MobStateComponent component, DamageableComponent dmg)
-// {
-// if (_mobStateSystem.IsAlive(uid, component))
-// {
-// if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var threshold))
-// return (1, false);
-//
-// var ratio = 1 - ((FixedPoint2) (dmg.TotalDamage / threshold)).Float();
-// return (ratio, false);
-// }
-//
-// if (_mobStateSystem.IsCritical(uid, component))
-// {
-// if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold) ||
-// !_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Dead, out var deadThreshold))
-// {
-// return (1, true);
-// }
-//
-// var ratio = 1 -
-// ((dmg.TotalDamage - critThreshold) /
-// (deadThreshold - critThreshold)).Value.Float();
-//
-// return (ratio, true);
-// }
-//
-// return (0, true);
-// }
-//
-// public static Color GetProgressColor(float progress, bool crit)
-// {
-// if (progress >= 1.0f)
-// {
-// return new Color(0f, 1f, 0f);
-// }
-// // lerp
-// if (!crit)
-// {
-// var hue = (5f / 18f) * progress;
-// return Color.FromHsv((hue, 1f, 0.75f, 1f));
-// }
-// else
-// {
-// return Color.Red;
-// }
-// }
-// }
+using Content.Shared.Damage;
+using Content.Shared.Mobs;
+using Content.Shared.Mobs.Components;
+using Content.Shared.Mobs.Systems;
+using Content.Shared.FixedPoint;
+using Robust.Client.GameObjects;
+using Robust.Client.Graphics;
+using Robust.Shared.Enums;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Utility;
+using Robust.Shared.Timing;
+using System.Numerics;
+
+namespace Content.Client.Sirena.EntityHealthBar;
+
+///
+/// Yeah a lot of this is duplicated from doafters.
+/// Not much to be done until there's a generic HUD system
+///
+public sealed class EntityHealthBarOverlay : Overlay
+{
+ private readonly IEntityManager _entManager;
+ private readonly SharedTransformSystem _transform;
+ private readonly MobStateSystem _mobStateSystem;
+ private readonly MobThresholdSystem _mobThresholdSystem;
+ private readonly Texture _barTexture;
+ private readonly ShaderInstance _shader;
+ public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
+ public string? DamageContainer;
+ // for icon frame change timer
+ int iconFrame = 1;
+ double delayTime = 0.25;
+
+ public EntityHealthBarOverlay(IEntityManager entManager, IPrototypeManager protoManager)
+ {
+ _entManager = entManager;
+ _transform = _entManager.EntitySysManager.GetEntitySystem();
+ _mobStateSystem = _entManager.EntitySysManager.GetEntitySystem();
+ _mobThresholdSystem = _entManager.EntitySysManager.GetEntitySystem();
+
+ var sprite = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/health_status.rsi"), "background");
+ _barTexture = _entManager.EntitySysManager.GetEntitySystem().Frame0(sprite);
+
+ _shader = protoManager.Index("unshaded").Instance();
+ Timer.SpawnRepeating(TimeSpan.FromSeconds(delayTime), () => {
+ if (iconFrame < 8)
+ iconFrame++;
+ else
+ iconFrame = 1;
+ }, new System.Threading.CancellationToken());
+ }
+
+ protected override void Draw(in OverlayDrawArgs args)
+ {
+ var handle = args.WorldHandle;
+ var rotation = args.Viewport.Eye?.Rotation ?? Angle.Zero;
+ var spriteQuery = _entManager.GetEntityQuery();
+ var xformQuery = _entManager.GetEntityQuery();
+
+ var _spriteSys = _entManager.EntitySysManager.GetEntitySystem();
+
+ const float scale = 1f;
+ var scaleMatrix = Matrix3.CreateScale(new Vector2(scale, scale));
+ var rotationMatrix = Matrix3.CreateRotation(-rotation);
+ handle.UseShader(_shader);
+
+ foreach (var (mob, dmg) in _entManager.EntityQuery(true))
+ {
+ if (!xformQuery.TryGetComponent(mob.Owner, out var xform) ||
+ xform.MapID != args.MapId)
+ {
+ continue;
+ }
+
+ if (DamageContainer != null && dmg.DamageContainerID != DamageContainer)
+ continue;
+
+ var worldPosition = _transform.GetWorldPosition(xform);
+ var worldMatrix = Matrix3.CreateTranslation(worldPosition);
+
+ Matrix3.Multiply(scaleMatrix, worldMatrix, out var scaledWorld);
+ Matrix3.Multiply(rotationMatrix, scaledWorld, out var matty);
+
+ handle.SetTransform(matty);
+
+ // Use the sprite itself if we know its bounds. This means short or tall sprites don't get overlapped
+ // by the bar.
+ float yOffset;
+ float xIconOffset;
+ float yIconOffset;
+ if (spriteQuery.TryGetComponent(mob.Owner, out var sprite))
+ {
+ yOffset = sprite.Bounds.Height + 12f;
+ yIconOffset = sprite.Bounds.Height + 7f;
+ xIconOffset = sprite.Bounds.Width + 7f;
+ }
+ else
+ {
+ yOffset = 1f;
+ yIconOffset = 1f;
+ xIconOffset = 1f;
+ }
+
+ // Position above the entity (we've already applied the matrix transform to the entity itself)
+ // Offset by the texture size for every do_after we have.
+ var position = new Vector2(-_barTexture.Width / 2f / EyeManager.PixelsPerMeter,
+ yOffset / EyeManager.PixelsPerMeter);
+
+ // Draw the underlying bar texture
+ if (sprite != null && !sprite.ContainerOccluded)
+ handle.DrawTexture(_barTexture, position);
+ else
+ continue;
+
+ // Draw state icon
+ string current_state;
+ if (_mobStateSystem.IsAlive(mob.Owner, mob))
+ {
+ current_state = "life_state";
+ }
+ else
+ {
+ if (_mobStateSystem.IsCritical(mob.Owner, mob) && _mobThresholdSystem.TryGetThresholdForState(mob.Owner, MobState.Critical, out var critThreshold))
+ current_state = "defib_state";
+ else
+ current_state = "dead_state";
+ }
+
+ var icon_sprite = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Misc/health_state.rsi"), current_state);
+ Texture _stateIcon = _spriteSys.RsiStateLike(icon_sprite).GetFrame(0, GetIconFrame(_spriteSys.RsiStateLike(icon_sprite)));
+
+ var icon_position = new Vector2(xIconOffset / EyeManager.PixelsPerMeter,
+ yIconOffset / EyeManager.PixelsPerMeter);
+
+ handle.DrawTexture(_stateIcon, icon_position);
+
+ // we are all progressing towards death every day
+ (float ratio, bool inCrit) deathProgress = CalcProgress(mob.Owner, mob, dmg);
+
+ var color = GetProgressColor(deathProgress.ratio, deathProgress.inCrit);
+
+ // Hardcoded width of the progress bar because it doesn't match the texture.
+ const float startX = 1f;
+ const float endX = 15f;
+
+ var xProgress = (endX - startX) * deathProgress.ratio + startX;
+
+ var box = new Box2(new Vector2(startX, 0f) / EyeManager.PixelsPerMeter, new Vector2(xProgress, 2f) / EyeManager.PixelsPerMeter);
+ box = box.Translated(position);
+ handle.DrawRect(box, color);
+ }
+
+ handle.UseShader(null);
+ handle.SetTransform(Matrix3.Identity);
+ }
+
+ private int GetIconFrame(IRsiStateLike sprite)
+ {
+ var _spriteSys = _entManager.EntitySysManager.GetEntitySystem();
+
+ if (sprite.AnimationFrameCount <= 1)
+ return 0;
+
+ var currentFrame = iconFrame;
+ var result = 0;
+ while (true)
+ {
+ if (currentFrame > 0 && currentFrame > sprite.AnimationFrameCount)
+ {
+ currentFrame -= sprite.AnimationFrameCount;
+ }
+ else
+ {
+ result = currentFrame - 1;
+ break;
+ }
+ }
+ return result;
+ }
+
+ ///
+ /// Returns a ratio between 0 and 1, and whether the entity is in crit.
+ ///
+ private (float, bool) CalcProgress(EntityUid uid, MobStateComponent component, DamageableComponent dmg)
+ {
+ if (_mobStateSystem.IsAlive(uid, component))
+ {
+ if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var threshold))
+ return (1, false);
+
+ var ratio = 1 - ((FixedPoint2) (dmg.TotalDamage / threshold)).Float();
+ return (ratio, false);
+ }
+
+ if (_mobStateSystem.IsCritical(uid, component))
+ {
+ if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var critThreshold) ||
+ !_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Dead, out var deadThreshold))
+ {
+ return (1, true);
+ }
+
+ var ratio = 1 -
+ ((dmg.TotalDamage - critThreshold) /
+ (deadThreshold - critThreshold)).Value.Float();
+
+ return (ratio, true);
+ }
+
+ return (0, true);
+ }
+
+ public static Color GetProgressColor(float progress, bool crit)
+ {
+ if (progress >= 1.0f)
+ {
+ return new Color(0f, 1f, 0f);
+ }
+ // lerp
+ if (!crit)
+ {
+ var hue = (5f / 18f) * progress;
+ return Color.FromHsv((hue, 1f, 0.75f, 1f));
+ }
+ else
+ {
+ return Color.Red;
+ }
+ }
+}
diff --git a/Content.Client/Sirena/EntityHealthBar/ShowHealthBarsSystem.cs b/Content.Client/Sirena/EntityHealthBar/ShowHealthBarsSystem.cs
index 594806641a9..3bb342aab42 100644
--- a/Content.Client/Sirena/EntityHealthBar/ShowHealthBarsSystem.cs
+++ b/Content.Client/Sirena/EntityHealthBar/ShowHealthBarsSystem.cs
@@ -1,64 +1,64 @@
-// using Content.Shared.Sirena.EntityHealthBar;
-// using Content.Shared.GameTicking;
-// using Robust.Client.Player;
-// using Robust.Client.Graphics;
-// using Robust.Client.GameObjects;
-// using Robust.Shared.Prototypes;
-//
-// namespace Content.Client.Sirena.EntityHealthBar
-// {
-// public sealed class ShowHealthBarsSystem : EntitySystem
-// {
-// [Dependency] private readonly IPlayerManager _player = default!;
-// [Dependency] private readonly IPrototypeManager _protoMan = default!;
-// [Dependency] private readonly IOverlayManager _overlayMan = default!;
-//
-// private EntityHealthBarOverlay _overlay = default!;
-// public override void Initialize()
-// {
-// base.Initialize();
-//
-// SubscribeLocalEvent(OnInit);
-// SubscribeLocalEvent(OnRemove);
-// SubscribeLocalEvent(OnPlayerAttached);
-// SubscribeLocalEvent(OnPlayerDetached);
-// SubscribeLocalEvent(OnRoundRestart);
-//
-// _overlay = new(EntityManager, _protoMan);
-// }
-//
-// private void OnInit(EntityUid uid, ShowHealthBarsComponent component, ComponentInit args)
-// {
-// if (_player.LocalPlayer?.ControlledEntity == uid)
-// {
-// _overlayMan.AddOverlay(_overlay);
-// _overlay.DamageContainer = component.DamageContainer;
-// }
-//
-//
-// }
-// private void OnRemove(EntityUid uid, ShowHealthBarsComponent component, ComponentRemove args)
-// {
-// if (_player.LocalPlayer?.ControlledEntity == uid)
-// {
-// _overlayMan.RemoveOverlay(_overlay);
-// }
-// }
-//
-// private void OnPlayerAttached(EntityUid uid, ShowHealthBarsComponent component, PlayerAttachedEvent args)
-// {
-// _overlayMan.AddOverlay(_overlay);
-// _overlay.DamageContainer = component.DamageContainer;
-// }
-//
-// private void OnPlayerDetached(EntityUid uid, ShowHealthBarsComponent component, PlayerDetachedEvent args)
-// {
-// _overlayMan.RemoveOverlay(_overlay);
-// }
-//
-// private void OnRoundRestart(RoundRestartCleanupEvent args)
-// {
-// _overlayMan.RemoveOverlay(_overlay);
-// }
-// }
-// }
+using Content.Shared.GameTicking;
+using Content.Shared.Sirena.EntityHealthBar;
+using Robust.Client.Graphics;
+using Robust.Client.Player;
+using Robust.Shared.Player;
+using Robust.Shared.Prototypes;
+
+namespace Content.Client.Sirena.EntityHealthBar
+{
+ public sealed class ShowHealthBarsSystem : EntitySystem
+ {
+ [Dependency] private readonly IPlayerManager _player = default!;
+ [Dependency] private readonly IPrototypeManager _protoMan = default!;
+ [Dependency] private readonly IOverlayManager _overlayMan = default!;
+
+ private EntityHealthBarOverlay _overlay = default!;
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnInit);
+ SubscribeLocalEvent(OnRemove);
+ SubscribeLocalEvent(OnPlayerAttached);
+ SubscribeLocalEvent(OnPlayerDetached);
+ SubscribeLocalEvent(OnRoundRestart);
+
+ _overlay = new(EntityManager, _protoMan);
+ }
+
+ private void OnInit(EntityUid uid, ShowHealthBarsComponent component, ComponentInit args)
+ {
+ if (_player.LocalPlayer?.ControlledEntity == uid)
+ {
+ _overlayMan.AddOverlay(_overlay);
+ _overlay.DamageContainer = component.DamageContainer;
+ }
+
+
+ }
+ private void OnRemove(EntityUid uid, ShowHealthBarsComponent component, ComponentRemove args)
+ {
+ if (_player.LocalPlayer?.ControlledEntity == uid)
+ {
+ _overlayMan.RemoveOverlay(_overlay);
+ }
+ }
+
+ private void OnPlayerAttached(EntityUid uid, ShowHealthBarsComponent component, LocalPlayerAttachedEvent args)
+ {
+ _overlayMan.AddOverlay(_overlay);
+ _overlay.DamageContainer = component.DamageContainer;
+ }
+
+ private void OnPlayerDetached(EntityUid uid, ShowHealthBarsComponent component, LocalPlayerDetachedEvent args)
+ {
+ _overlayMan.RemoveOverlay(_overlay);
+ }
+
+ private void OnRoundRestart(RoundRestartCleanupEvent args)
+ {
+ _overlayMan.RemoveOverlay(_overlay);
+ }
+ }
+}
diff --git a/Resources/Changelog/ChangelogADT.yml b/Resources/Changelog/ChangelogADT.yml
index 3be34f0a78f..42248cc1a7f 100644
--- a/Resources/Changelog/ChangelogADT.yml
+++ b/Resources/Changelog/ChangelogADT.yml
@@ -929,8 +929,16 @@ Entries:
id: 55648 #костыль отображения в Обновлениях
time: '2023-12-25T20:20:00.0000000+00:00'
+
+- author: Friskis
+ changes:
+ - {message: "Медицинские худы теперь работают", type: Fix}
+ id: 55649 #костыль отображения в Обновлениях
+ time: '2023-12-27T20:04:00.0000000+00:00'
+
- author: Altius
changes:
- {message: Добавил хачапури. Пользуясь случаем; внёс в книгу рецептов некоторые дополнения, type: Add}
- id: 55649 #костыль отображения в Обновлениях
+ id: 55650 #костыль отображения в Обновлениях
time: '2023-12-27T20:20:00.0000000+00:00'
+
diff --git a/Resources/Prototypes/ADT/Entities/Objects/Misc/wiretapping.yml b/Resources/Prototypes/ADT/Entities/Objects/Misc/wiretapping.yml
index 5845fe4d606..d8338013a06 100644
--- a/Resources/Prototypes/ADT/Entities/Objects/Misc/wiretapping.yml
+++ b/Resources/Prototypes/ADT/Entities/Objects/Misc/wiretapping.yml
@@ -67,7 +67,7 @@
- id: ADTWiretapping
- type: Storage
grid:
- - 0,0,10,7
+ - 0,0,1,0
maxItemSize: Small
- type: ContainerContainer
containers:
diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml
index e18ba4f46b4..78b770f5a21 100644
--- a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml
+++ b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml
@@ -27,7 +27,7 @@
- type: ClothingGrantComponent # Sirena-Edit's-Start
component:
- type: ShowHealthBars
- damageContainer: Biological # Sirena-Edit's-End
+ damageContainer: Biological
- type: entity
parent: ClothingEyesBase
@@ -133,6 +133,10 @@
- type: Clothing
sprite: Clothing/Eyes/Hud/medonion.rsi
- type: ShowHungerIcons
+ - type: ClothingGrantComponent # Sirena-Edit's-Start
+ component:
+ - type: ShowHealthBars
+ damageContainer: Biological
- type: entity
parent: ClothingEyesBase
@@ -158,6 +162,13 @@
- type: Clothing
sprite: Clothing/Eyes/Hud/medsec.rsi
- type: ShowSecurityIcons
+ - type: ClothingGrantComponent # Sirena-Edit's-Start
+ component:
+ - type: ShowHealthBars
+ damageContainer: Biological
+ - type: FlashImmunity
+ - type: EyeProtection
+ protectionTime: 5
- type: entity
parent: ClothingEyesBase
@@ -199,4 +210,8 @@
sprite: Clothing/Eyes/Hud/synd.rsi
- type: ShowSyndicateIcons
- type: ShowSecurityIcons
+ - type: ClothingGrantComponent # Sirena-Edit's-Start
+ component:
+ - type: ShowHealthBars
+ damageContainer: Biological
diff --git a/Resources/Prototypes/Entities/Structures/Power/apc.yml b/Resources/Prototypes/Entities/Structures/Power/apc.yml
index 9be2e5bd4c9..5ad0eff6643 100644
--- a/Resources/Prototypes/Entities/Structures/Power/apc.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/apc.yml
@@ -91,7 +91,7 @@
graph: APC
node: apc
- type: PowerNetworkBattery
- maxSupply: 15000
+ maxSupply: 50000
maxChargeRate: 5000
supplyRampTolerance: 1000
supplyRampRate: 500
diff --git a/Resources/Prototypes/Entities/Structures/Power/smes.yml b/Resources/Prototypes/Entities/Structures/Power/smes.yml
index 35cb7de33d2..0003ce8ddf2 100644
--- a/Resources/Prototypes/Entities/Structures/Power/smes.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/smes.yml
@@ -62,7 +62,7 @@
voltage: High
node: input
- type: PowerNetworkBattery
- maxSupply: 200000
+ maxSupply: 400000
maxChargeRate: 5000
supplyRampTolerance: 5000
supplyRampRate: 1000
diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml
index ceed94685cf..0538f9f0bd5 100644
--- a/Resources/Prototypes/Entities/Structures/Power/substation.yml
+++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml
@@ -52,7 +52,7 @@
- type: BatteryDischarger
voltage: Medium
- type: PowerNetworkBattery
- maxSupply: 200000
+ maxSupply: 400000
maxChargeRate: 5000
supplyRampTolerance: 5000
supplyRampRate: 1000
@@ -184,7 +184,7 @@
- type: BatteryDischarger
voltage: Medium
- type: PowerNetworkBattery
- maxSupply: 150000
+ maxSupply: 300000
maxChargeRate: 5000
supplyRampTolerance: 5000
supplyRampRate: 1000
diff --git a/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml b/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml
index b83ab85a5f3..c5bd346e110 100644
--- a/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml
+++ b/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml
@@ -29,7 +29,7 @@
back: ClothingBackpackBrigmedicFilled
shoes: ClothingShoesColorRed
gloves: ClothingHandsGlovesNitrile
- eyes: ClothingEyesHudMedical
+ eyes: ClothingEyesHudMedSec
head: ClothingHeadHatBeretBrigmedic
id: BrigmedicPDA
ears: ClothingHeadsetBrigmedic