Files
wylab-station-14/Content.Server/_WL/Destructible/Systems/FrozenSystem.cs
T
wylab 9ae469991f feat: add 11 copy-paste features from ss14-wega and ss14-wl
From ss14-wega (_Wega):
- DeleteOnDrop: auto-delete items when dropped
- FriendlyFaction: prevent friendly fire by faction
- NullRod: holy weapon that removes magic
- EdibleMatter: edible entity component
- Ghost Respawn: allow ghosts to respawn to lobby
- Barks: NPC voice sounds system (99 audio files)

From ss14-wl (_WL):
- Day/Night Cycle: automatic lighting cycle for maps
- Sleep on Buckle: sleep action when buckled
- Height System: tall entities become large items
- Freeze Component: freeze entities at high cold damage
- Suckable Food: mouth-slot consumables (lollipops, gum, etc.)
- GolemHeat: bonus feature (heat mechanics for golems)

Includes:
- 34 C# files
- 99 audio files
- 68 texture files
- 9 prototype files
- 2 locale files
- WegaCVars configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 23:13:24 +01:00

63 lines
2.4 KiB
C#

using Content.Server._WL.Destructible.Components;
using Content.Server.Humanoid;
using Content.Shared.Cloning;
using Content.Shared.Cloning.Events;
using Content.Shared.Damage;
using Content.Shared.Damage.Events;
using Content.Shared.Damage.Systems;
using Content.Shared.HealthExaminable;
using Content.Shared.NameModifier.EntitySystems;
using Content.Shared.Rejuvenate;
namespace Content.Server._WL.Destructible.Systems
{
public sealed partial class FrozenSystem : EntitySystem
{
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly HumanoidAppearanceSystem _appearance = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<FrozenComponent, RefreshNameModifiersEvent>(OnRefreshName);
SubscribeLocalEvent<FrozenComponent, BeforeDamageChangedEvent>(BeforeDamageChanged);
SubscribeLocalEvent<FrozenComponent, CloningEvent>(OnClone);
SubscribeLocalEvent<FrozenComponent, HealthBeingExaminedEvent>(OnHealthExamine);
SubscribeLocalEvent<FrozenComponent, RejuvenateEvent>(OnRejuvenate);
}
private void OnRefreshName(EntityUid ent, FrozenComponent comp, RefreshNameModifiersEvent args)
{
args.AddModifier(comp.FrozenPrefix);
args.AddModifier(comp.BaseName, int.MinValue);
}
private void BeforeDamageChanged(EntityUid ent, FrozenComponent comp, ref BeforeDamageChangedEvent args)
{
args.Damage.DamageDict[comp.FrozenDamage.Id] = 0f;
args.Damage.TrimZeros();
}
private void OnClone(EntityUid ent, FrozenComponent comp, ref CloningEvent args)
{
var target = args.CloneUid;
_metaData.SetEntityName(target, comp.BaseName, raiseEvents: true);
_appearance.SetSkinColor(target, comp.BaseSkinColor);
}
private void OnHealthExamine(EntityUid ent, FrozenComponent comp, HealthBeingExaminedEvent args)
{
args.Message.AddMarkupOrThrow("\n" + Loc.GetString(comp.FrozenHealthString));
}
private void OnRejuvenate(EntityUid ent, FrozenComponent comp, RejuvenateEvent args)
{
_metaData.SetEntityName(ent, comp.BaseName, raiseEvents: true);
_appearance.SetSkinColor(ent, comp.BaseSkinColor);
RemComp<FrozenComponent>(ent);
}
}
}