diff --git a/Content.Server/_Goobstation/Devil/Contract/DevilContractSystem.cs b/Content.Server/_Goobstation/Devil/Contract/DevilContractSystem.cs index 702a93205a..305d5ff864 100644 --- a/Content.Server/_Goobstation/Devil/Contract/DevilContractSystem.cs +++ b/Content.Server/_Goobstation/Devil/Contract/DevilContractSystem.cs @@ -35,6 +35,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; using Content.Shared._EE.Silicon.Components; +using Content.Shared.StatusEffectNew; // DeltaV - Clause status effects namespace Content.Server._Goobstation.Devil.Contract; @@ -51,6 +52,7 @@ public sealed partial class DevilContractSystem : EntitySystem [Dependency] private readonly PolymorphSystem _polymorph = null!; [Dependency] private readonly ExplosionSystem _explosion = null!; [Dependency] private readonly MindSystem _mind = null!; + [Dependency] private readonly StatusEffectsSystem _statusEffects = null!; // DeltaV - Clause status effects public override void Initialize() { @@ -363,6 +365,8 @@ public sealed partial class DevilContractSystem : EntitySystem OverrideComponents(target, clause); // DeltaV - Fix component modifications + ApplyStatusEffect(target, clause); // DeltaV - Clause status effects + ChangeDamageModifier(target, clause); AddImplants(target, clause); @@ -414,6 +418,16 @@ public sealed partial class DevilContractSystem : EntitySystem } // End DeltaV Addition + // Begin DeltaV Addition - Devil clause status effects + private void ApplyStatusEffect(EntityUid target, DevilClausePrototype clause) + { + foreach (var effect in clause.StatusEffects) + { + _statusEffects.TrySetStatusEffectDuration(target, effect); + } + } + // End DeltaV Addition - Devil clause status effects + private void SpawnItems(EntityUid target, DevilClausePrototype clause) { if (clause.SpawnedItems == null) diff --git a/Content.Shared/_Goobstation/Devil/Contract/DevilClausePrototype.cs b/Content.Shared/_Goobstation/Devil/Contract/DevilClausePrototype.cs index 6f72df57f0..5b0d28cc15 100644 --- a/Content.Shared/_Goobstation/Devil/Contract/DevilClausePrototype.cs +++ b/Content.Shared/_Goobstation/Devil/Contract/DevilClausePrototype.cs @@ -27,6 +27,9 @@ public sealed class DevilClausePrototype : IPrototype [DataField] public ComponentRegistry? OverriddenComponents; // DeltaV - Added overridden components + [DataField] + public HashSet StatusEffects = new(); // DeltaV - Add status effects to clauses + [DataField] public string? DamageModifierSet; diff --git a/Resources/Prototypes/_Goobstation/Devil/clauses.yml b/Resources/Prototypes/_Goobstation/Devil/clauses.yml index f03a562f04..fe9db9627c 100644 --- a/Resources/Prototypes/_Goobstation/Devil/clauses.yml +++ b/Resources/Prototypes/_Goobstation/Devil/clauses.yml @@ -117,11 +117,14 @@ id: pain clauseWeight: -5 addedComponents: - - type: PainNumbness - type: SlowOnDamage speedModifierThresholds: 60: 1 80: 1 + # Begin DeltaV Additions - Clause status effects + statusEffects: + - PainNumbnessTraitStatusEffect + # End DeltaV Additions - Clause status effects - type: clause id: chance