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"); } }