diff --git a/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs b/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs index 2c4153514b..5ef0ce6407 100644 --- a/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs +++ b/Content.Server/_White/Cult/GameRule/CultRuleSystem.cs @@ -3,15 +3,12 @@ using Content.Server._Miracle.GulagSystem; using Content.Server.Actions; using Content.Server.Antag; using Content.Server.Bible.Components; -using Content.Server.Chat.Managers; using Content.Server.GameTicking; using Content.Server.GameTicking.Rules; using Content.Server.GameTicking.Rules.Components; -using Content.Server.NPC.Systems; +using Content.Server.Objectives.Components; using Content.Server.Roles; -using Content.Server.Roles.Jobs; using Content.Server.RoundEnd; -using Content.Server.Shuttles.Components; using Content.Server.StationEvents.Components; using Content.Server.Storage.EntitySystems; using Content.Shared.Body.Systems; @@ -29,6 +26,7 @@ using Content.Shared._White; using Content.Shared._White.Cult.Components; using Content.Shared._White.Cult.Systems; using Content.Shared._White.Mood; +using Content.Shared.Cloning; using Content.Shared.Mind; using Content.Shared.NPC.Systems; using Robust.Server.Player; @@ -72,10 +70,16 @@ public sealed class CultRuleSystem : GameRuleSystem SubscribeLocalEvent(OnCultistComponentInit); SubscribeLocalEvent(OnCultistComponentRemoved); SubscribeLocalEvent(OnCultistsStateChanged); + SubscribeLocalEvent(OnClone); SubscribeLocalEvent(OnGetBriefing); } + private void OnClone(Entity ent, ref CloningEvent args) + { + RemoveObjectiveAndRole(ent); + } + protected override void Added(EntityUid uid, CultRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) { base.Added(uid, component, gameRule, args); @@ -178,6 +182,21 @@ public sealed class CultRuleSystem : GameRuleSystem } } + public void RemoveObjectiveAndRole(EntityUid uid) + { + if (!_mindSystem.TryGetMind(uid, out var mindId, out var mind)) + return; + + var objectives = mind.Objectives.FindAll(HasComp); + foreach (var obj in objectives) + { + _mindSystem.TryRemoveObjective(mindId, mind, mind.Objectives.IndexOf(obj)); + } + + if (_roleSystem.MindHasRole(mindId)) + _roleSystem.MindRemoveRole(mindId); + } + private void OnCultistComponentRemoved(EntityUid uid, CultistComponent component, ComponentRemove args) { var query = QueryActiveRules(); diff --git a/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs b/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs index 8989d11435..4ceb407cd0 100644 --- a/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs +++ b/Content.Server/_White/Cult/HolyWater/DeconvertCultist.cs @@ -1,4 +1,5 @@ using System.Threading; +using Content.Server._White.Cult.GameRule; using Content.Server.Objectives.Components; using Content.Server.Popups; using Content.Server.Roles; @@ -8,6 +9,7 @@ using Content.Shared.IdentityManagement; using Content.Shared.Inventory; using Content.Shared._White.Cult.Components; using Content.Shared._White.Mood; +using Content.Shared.Jittering; using Content.Shared.Mind; using JetBrains.Annotations; using Robust.Server.Containers; @@ -40,6 +42,8 @@ public sealed partial class DeconvertCultist : ReagentEffect args.EntityManager.System() .TryParalyze(uid, TimeSpan.FromSeconds(component.HolyConvertTime + 5f), true); + args.EntityManager.System() + .DoJitter(uid, TimeSpan.FromSeconds(component.HolyConvertTime + 5f), true); var target = Identity.Name(uid, args.EntityManager); args.EntityManager.System() .PopupEntity(Loc.GetString("holy-water-started-converting", ("target", target)), uid); @@ -73,20 +77,8 @@ public sealed partial class DeconvertCultist : ReagentEffect entityManager.RemoveComponent(uid); entityManager.RemoveComponent(uid); - var mindSystem = entityManager.System(); - var roleSystem = entityManager.System(); - - if (!mindSystem.TryGetMind(uid, out var mindId, out var mind)) - return; - - var objectives = mind.Objectives.FindAll(entityManager.HasComponent); - foreach (var obj in objectives) - { - mindSystem.TryRemoveObjective(mindId, mind, mind.Objectives.IndexOf(obj)); - } - - if (roleSystem.MindHasRole(mindId)) - roleSystem.MindRemoveRole(mindId); + var cultRuleSystem = entityManager.System(); + cultRuleSystem.RemoveObjectiveAndRole(uid); entityManager.EventBus.RaiseLocalEvent(uid, new MoodRemoveEffectEvent("CultFocused")); } diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml index 11f1f26aa8..07e145e636 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/salvage.yml @@ -1,8 +1,8 @@ - type: vendingMachineInventory id: SalvageEquipmentInventory startingInventory: - WeaponProtoKineticAccelerator: 4 - WeaponCrusher: 4 + WeaponProtoKineticAccelerator: 2 + WeaponCrusher: 2 WeaponCrusherDagger: 4 WeaponGrapplingGun: 3 HandheldGPSBasic: 10 diff --git a/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml b/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml index f1c9f5acb3..09cff8ee0e 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/handcuffs.yml @@ -36,7 +36,6 @@ parent: Handcuffs components: - type: Handcuff - breakoutTime: 3 cuffedRSI: Objects/Misc/cablecuffs.rsi bodyIconState: body-overlay color: forestgreen @@ -79,7 +78,6 @@ size: Tiny storedRotation: 0 - type: Handcuff - breakoutTime: 3 cuffedRSI: Objects/Misc/cablecuffs.rsi # cablecuffs will look fine bodyIconState: body-overlay breakOnRemove: true diff --git a/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml b/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml index 508254d5bb..203b13c38f 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/jaws_of_life.yml @@ -47,7 +47,7 @@ damage: types: Blunt: 15 - Structural: 40 + Structural: 10 soundHit: path: "/Audio/Weapons/smash.ogg" @@ -89,4 +89,4 @@ damage: types: Blunt: 20 - Structural: 60 + Structural: 20 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml index 8bfec739cc..0579964727 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/spear.yml @@ -60,7 +60,7 @@ - type: SolutionContainerManager solutions: melee: - maxVol: 2 + maxVol: 5 - type: MeleeChemicalInjector solution: melee - type: RefillableSolution diff --git a/Resources/Prototypes/_White/Entities/Cult/Weapons/blood_spear.yml b/Resources/Prototypes/_White/Entities/Cult/Weapons/blood_spear.yml index dfcdfc7c9b..14de56bd1a 100644 --- a/Resources/Prototypes/_White/Entities/Cult/Weapons/blood_spear.yml +++ b/Resources/Prototypes/_White/Entities/Cult/Weapons/blood_spear.yml @@ -46,6 +46,7 @@ - type: Clothing slots: - back + - suitStorage - type: Wieldable - type: IncreaseDamageOnWield damage: diff --git a/Resources/Prototypes/_White/Entities/Cult/other_structures.yml b/Resources/Prototypes/_White/Entities/Cult/other_structures.yml index 09bb9842d6..e30892d7ca 100644 --- a/Resources/Prototypes/_White/Entities/Cult/other_structures.yml +++ b/Resources/Prototypes/_White/Entities/Cult/other_structures.yml @@ -44,6 +44,8 @@ - type: Construction graph: AirlockGlassCult node: airlock + - type: RCDDeconstructable + deconstructable: false - type: PlacementReplacement key: walls - type: Appearance