2025-04-16 19:21:45 +01:00
|
|
|
|
using Content.Shared.Armor;
|
|
|
|
|
|
using Content.Shared.Inventory;
|
|
|
|
|
|
using Content.Shared.Movement.Systems;
|
2024-06-16 15:38:53 -04:00
|
|
|
|
using Content.Shared.NameModifier.EntitySystems;
|
2022-09-06 21:59:27 -04:00
|
|
|
|
|
|
|
|
|
|
namespace Content.Shared.Zombies;
|
|
|
|
|
|
|
|
|
|
|
|
public abstract class SharedZombieSystem : EntitySystem
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
|
|
public override void Initialize()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Initialize();
|
|
|
|
|
|
|
|
|
|
|
|
SubscribeLocalEvent<ZombieComponent, RefreshMovementSpeedModifiersEvent>(OnRefreshSpeed);
|
2024-06-16 15:38:53 -04:00
|
|
|
|
SubscribeLocalEvent<ZombieComponent, RefreshNameModifiersEvent>(OnRefreshNameModifiers);
|
2025-04-16 19:21:45 +01:00
|
|
|
|
SubscribeLocalEvent<ZombificationResistanceComponent, ArmorExamineEvent>(OnArmorExamine);
|
|
|
|
|
|
SubscribeLocalEvent<ZombificationResistanceComponent, InventoryRelayedEvent<ZombificationResistanceQueryEvent>>(OnResistanceQuery);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnResistanceQuery(Entity<ZombificationResistanceComponent> ent, ref InventoryRelayedEvent<ZombificationResistanceQueryEvent> query)
|
|
|
|
|
|
{
|
|
|
|
|
|
query.Args.TotalCoefficient *= ent.Comp.ZombificationResistanceCoefficient;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnArmorExamine(Entity<ZombificationResistanceComponent> ent, ref ArmorExamineEvent args)
|
|
|
|
|
|
{
|
|
|
|
|
|
var value = MathF.Round((1f - ent.Comp.ZombificationResistanceCoefficient) * 100, 1);
|
|
|
|
|
|
|
|
|
|
|
|
if (value == 0)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
args.Msg.PushNewline();
|
|
|
|
|
|
args.Msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.Examine, ("value", value)));
|
2022-09-06 21:59:27 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnRefreshSpeed(EntityUid uid, ZombieComponent component, RefreshMovementSpeedModifiersEvent args)
|
|
|
|
|
|
{
|
|
|
|
|
|
var mod = component.ZombieMovementSpeedDebuff;
|
|
|
|
|
|
args.ModifySpeed(mod, mod);
|
|
|
|
|
|
}
|
2024-06-16 15:38:53 -04:00
|
|
|
|
|
|
|
|
|
|
private void OnRefreshNameModifiers(Entity<ZombieComponent> entity, ref RefreshNameModifiersEvent args)
|
|
|
|
|
|
{
|
|
|
|
|
|
args.AddModifier("zombie-name-prefix");
|
|
|
|
|
|
}
|
2022-09-06 21:59:27 -04:00
|
|
|
|
}
|