using Content.Shared.Armor;
using Content.Shared.Inventory;
using Content.Shared.Movement.Systems;
using Content.Shared.NameModifier.EntitySystems;
namespace Content.Shared.Zombies;
public abstract class SharedZombieSystem : EntitySystem
{
///
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnRefreshSpeed);
SubscribeLocalEvent(OnRefreshNameModifiers);
SubscribeLocalEvent(OnArmorExamine);
SubscribeLocalEvent>(OnResistanceQuery);
}
private void OnResistanceQuery(Entity ent, ref InventoryRelayedEvent query)
{
query.Args.TotalCoefficient *= ent.Comp.ZombificationResistanceCoefficient;
}
private void OnArmorExamine(Entity 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)));
}
private void OnRefreshSpeed(EntityUid uid, ZombieComponent component, RefreshMovementSpeedModifiersEvent args)
{
var mod = component.ZombieMovementSpeedDebuff;
args.ModifySpeed(mod, mod);
}
private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args)
{
args.AddModifier("zombie-name-prefix");
}
}