forked from wylab/wylab-station-14
9ae469991f
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>
63 lines
2.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|