From 5f1e4d604a0fd258ce5471eac830e4f9fca10d93 Mon Sep 17 00:00:00 2001 From: Sidzaru <110207359+Sidzaru@users.noreply.github.com> Date: Sat, 27 Sep 2025 00:22:52 +0300 Subject: [PATCH] Empty Implanter (#3212) Co-authored-by: Vigers Ray <60344369+VigersRay@users.noreply.github.com> --- .../Implants/SubdermalImplantSystem.cs | 31 +++++++++++++++ Resources/Audio/_Starlight/Voice/gorilla.ogg | Bin 0 -> 7430 bytes .../Prototypes/Entities/Mobs/NPCs/animals.yml | 34 +++++++++++++++++ .../_Starlight/Polymorphs/polymorphs.yml | 15 ++++++++ .../_Sunrise/Catalog/uplink_catalog.yml | 36 +++++++++--------- .../_Sunrise/Damage/modifier_sets.yml | 6 +++ 6 files changed, 104 insertions(+), 18 deletions(-) create mode 100644 Resources/Audio/_Starlight/Voice/gorilla.ogg diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index 582b9cb2ac..b8e530bf38 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -5,17 +5,26 @@ using Content.Shared.Interaction; using Content.Shared.Popups; using Content.Shared.Store.Components; +using Content.Shared.Implants.Components; // Starlight +using Content.Server.Polymorph.Systems; // Starlight +using Content.Shared.Zombies; // Starlight +using Robust.Shared.Player; // Starlight + namespace Content.Server.Implants; public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem { [Dependency] private readonly StoreSystem _store = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + + [Dependency] private readonly PolymorphSystem _polymorphSystem = default!; // Starlight + public override void Initialize() { base.Initialize(); SubscribeLocalEvent>(OnStoreRelay); + SubscribeLocalEvent(OnMagillitisSerumImplantImplant); // Starlight } // TODO: This shouldn't be in the SubdermalImplantSystem @@ -41,4 +50,26 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem var msg = Loc.GetString("store-currency-inserted-implant", ("used", args.Used)); _popup.PopupEntity(msg, args.User, args.User); } + + // Starlight-start + private void OnMagillitisSerumImplantImplant(EntityUid uid, SubdermalImplantComponent component, UseMagillitisSerumImplantEvent args) + { + if (component.ImplantedEntity is not { } ent) + return; + + if (HasComp(ent)) + return; + + var polymorph = _polymorphSystem.PolymorphEntity(ent, "RampagingGorilla"); + + if (!polymorph.HasValue) + return; + + _popup.PopupEntity(Loc.GetString("magillitisserum-implant-activated-others", ("entity", polymorph.Value)), polymorph.Value, Filter.PvsExcept(polymorph.Value), true); + _popup.PopupEntity(Loc.GetString("magillitisserum-implant-activated-user"), polymorph.Value, polymorph.Value); + + args.Handled = true; + QueueDel(uid); + } + // Starlight-end } diff --git a/Resources/Audio/_Starlight/Voice/gorilla.ogg b/Resources/Audio/_Starlight/Voice/gorilla.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2d62702e5502be42feafcdf0e9c0fdbd6ce41a2f GIT binary patch literal 7430 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