diff --git a/Content.Server/Explosion/Components/OnTrigger/GibOnTriggerComponent.cs b/Content.Server/Explosion/Components/OnTrigger/GibOnTriggerComponent.cs index da584676593..61615d65b9a 100644 --- a/Content.Server/Explosion/Components/OnTrigger/GibOnTriggerComponent.cs +++ b/Content.Server/Explosion/Components/OnTrigger/GibOnTriggerComponent.cs @@ -13,4 +13,11 @@ public sealed partial class GibOnTriggerComponent : Component [ViewVariables(VVAccess.ReadWrite)] [DataField("deleteItems")] public bool DeleteItems = false; + + /// + /// Frontier - Should gibbing also delete the owners organs? + /// + [ViewVariables(VVAccess.ReadWrite)] + [DataField("deleteOrgans")] + public bool DeleteOrgans = false; } diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs index 0647fec0690..d05a186a315 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.cs @@ -33,6 +33,7 @@ using Robust.Shared.Random; using Robust.Shared.Player; using Content.Shared.Coordinates; +using Content.Shared.Body.Components; // Frontier - Gib organs namespace Content.Server.Explosion.EntitySystems { @@ -175,6 +176,19 @@ private void HandleGibTrigger(EntityUid uid, GibOnTriggerComponent component, Tr Del(item); } } + + if (component.DeleteOrgans) // Frontier - Gib organs + { + if (TryComp(xform.ParentUid, out var body)) + { + var organs = _body.GetBodyOrganComponents(xform.ParentUid, body); + foreach (var (_, organ) in organs) + { + Del(organ.Owner); + } + } + } // Frontier + _body.GibBody(xform.ParentUid, true); args.Handled = true; } diff --git a/Content.Shared/Bed/Sleep/AutoWakeUpComponent.cs b/Content.Shared/Bed/Sleep/AutoWakeUpComponent.cs new file mode 100644 index 00000000000..f2fa75ca4a2 --- /dev/null +++ b/Content.Shared/Bed/Sleep/AutoWakeUpComponent.cs @@ -0,0 +1,13 @@ +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Bed.Sleep; + +/// +/// Frontier - Added to AI to allow auto waking up after 5 secs. +/// +[NetworkedComponent, RegisterComponent] +public sealed partial class AutoWakeUpComponent : Component +{ +} diff --git a/Content.Shared/Bed/Sleep/SharedSleepingSystem.cs b/Content.Shared/Bed/Sleep/SharedSleepingSystem.cs index 4e4bc2c574b..1a5443b160c 100644 --- a/Content.Shared/Bed/Sleep/SharedSleepingSystem.cs +++ b/Content.Shared/Bed/Sleep/SharedSleepingSystem.cs @@ -7,6 +7,7 @@ using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Timing; +using System.Threading.Tasks; // Frontier namespace Content.Server.Bed.Sleep { @@ -38,6 +39,16 @@ private void OnMapInit(EntityUid uid, SleepingComponent component, MapInitEvent // TODO remove hardcoded time. _actionsSystem.SetCooldown(component.WakeAction, _gameTiming.CurTime, _gameTiming.CurTime + TimeSpan.FromSeconds(15)); + + if (TryComp(uid, out var autoWakeUp)) // Frontier + { + Task.Run(async () => + { + await Task.Delay(TimeSpan.FromSeconds(5)); + ev = new SleepStateChangedEvent(false); + RaiseLocalEvent(uid, ev); + }); + } // Frontier } private void OnShutdown(EntityUid uid, SleepingComponent component, ComponentShutdown args) diff --git a/Content.Shared/Buckle/Components/BuckleComponent.cs b/Content.Shared/Buckle/Components/BuckleComponent.cs index cf28b56d51f..80d3be7db14 100644 --- a/Content.Shared/Buckle/Components/BuckleComponent.cs +++ b/Content.Shared/Buckle/Components/BuckleComponent.cs @@ -75,6 +75,13 @@ public sealed partial class BuckleComponent : Component /// Used for client rendering /// [ViewVariables] public int? OriginalDrawDepth; + + /// + /// Frontier - True if the entity is blocked from buckling. + /// + [DataField] + [ViewVariables(VVAccess.ReadWrite)] + public bool Disable; } [ByRefEvent] diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index cfaea47d304..ab5289f35a6 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -323,6 +323,9 @@ private bool CanBuckle( if (attemptEvent.Cancelled) return false; + if (buckleComp.Disable) // Frontier + return false; // Frontier + return true; } diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ee0149fc656..9877198dfd8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3802,3 +3802,17 @@ Entries: message: NC Ceres now comes with soda and booze dispensers. id: 4882 time: '2024-03-25T21:19:17.0000000+00:00' +- author: ThatOneGoblin25 + changes: + - type: Remove + message: Removed Tranquilizer rounds from LibertyVend. + id: 4883 + time: '2024-03-26T09:57:43.0000000+00:00' +- author: dvir01 + changes: + - type: Tweak + message: >- + Syndicate agents are now more agitated, refusing to sit, and having + issues with sleeping for long duration. + id: 4884 + time: '2024-03-26T22:52:38.0000000+00:00' diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml index 4d3babb4da1..0bccf796b29 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/ammo.yml @@ -11,7 +11,6 @@ BoxShotgunSlug: 15 BoxLethalshot: 15 BoxBeanbag: 15 - BoxShellTranquilizer: 15 BoxShotgunPractice: 15 WeaponRevolverArgenti: 15 MagazineBoxRifle: 15 diff --git a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/syndicatemob.yml b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/syndicatemob.yml index ac87a4d54a0..07901ab63dd 100644 --- a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/syndicatemob.yml +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/syndicatemob.yml @@ -25,6 +25,9 @@ minimumWait: 120 # 1 * 2 maximumWait: 240 # 2 * 60 NextAdvertisementTime: 0 + - type: Buckle + disable: true + - type: AutoWakeUp # Humans - type: entity @@ -167,7 +170,7 @@ - SyndicateNavalGrenadierGear - type: AutoImplant implants: - - DeathAcidifierImplant + - DeathAcidifierImplantNF - type: RechargeBasicEntityAmmo rechargeCooldown: 5 rechargeSound: @@ -239,16 +242,12 @@ - type: Loadout prototypes: - SyndicateNavalCommanderGear - - type: MobThresholds - thresholds: - 0: Alive - 100: Dead # No crit state to ensure that mob explodes ASAP - type: Stamina critThreshold: 500 # Extra hard to incapacitate and loot - type: AutoImplant implants: - DeathRattleImplant - - DeathAcidifierImplant + - DeathAcidifierImplantNF - type: RechargeBasicEntityAmmo rechargeCooldown: 0.5 rechargeSound: diff --git a/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml b/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml index 9872e713e1d..d119d2ac358 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Misc/implanters.yml @@ -7,3 +7,12 @@ components: - type: Implanter implant: MedicalTrackingImplant + +- type: entity + id: DeathAcidifierImplanterNF + name: death acidifier implanter + suffix: All + parent: BaseImplantOnlyImplanterSyndi + components: + - type: Implanter + implant: DeathAcidifierImplantNF diff --git a/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml index 7f7b7237e29..57f96e3992e 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Misc/subdermal_implants.yml @@ -25,3 +25,29 @@ - Dead - type: Rattle radioChannel: "Medical" + +- type: entity + parent: BaseSubdermalImplant + id: DeathAcidifierImplantNF + name: death-acidifier implant + description: This implant melts the user and their equipment upon death. + noSpawn: true + components: + - type: SubdermalImplant + permanent: true +# implantAction: ActionActivateDeathAcidifier + - type: TriggerOnMobstateChange + mobState: + - Dead + - Critical +# - type: TriggerImplantAction + - type: GibOnTrigger + deleteItems: true + deleteOrgans: true + - type: SpawnOnTrigger + proto: Acidifier + - type: Tag + tags: + - SubdermalImplant + - HideContextMenu + - DeathAcidifier