diff --git a/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedEui.cs b/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedEui.cs
new file mode 100644
index 0000000000..c800d2d713
--- /dev/null
+++ b/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedEui.cs
@@ -0,0 +1,25 @@
+using Content.Client.Eui;
+
+namespace Content.Client._DV.CosmicCult.UI;
+
+public sealed class CosmicMindwipedEui : BaseEui
+{
+ private readonly CosmicMindwipedMenu _menu;
+
+ public CosmicMindwipedEui()
+ {
+ _menu = new CosmicMindwipedMenu();
+ }
+
+ public override void Opened()
+ {
+ _menu.OpenCentered();
+ }
+
+ public override void Closed()
+ {
+ base.Closed();
+
+ _menu.Close();
+ }
+}
diff --git a/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedMenu.xaml b/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedMenu.xaml
new file mode 100644
index 0000000000..30fca1fbeb
--- /dev/null
+++ b/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedMenu.xaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff --git a/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedMenu.xaml.cs b/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedMenu.xaml.cs
new file mode 100644
index 0000000000..ebad44f90e
--- /dev/null
+++ b/Content.Client/_DV/CosmicCult/UI/CosmicMindwipedMenu.xaml.cs
@@ -0,0 +1,16 @@
+using Content.Client.UserInterface.Controls;
+using Robust.Client.AutoGenerated;
+using Robust.Client.UserInterface.XAML;
+
+namespace Content.Client._DV.CosmicCult.UI;
+
+[GenerateTypedNameReferences]
+public sealed partial class CosmicMindwipedMenu : FancyWindow
+{
+ public CosmicMindwipedMenu()
+ {
+ RobustXamlLoader.Load(this);
+
+ ConfirmButton.OnPressed += _ => Close();
+ }
+}
diff --git a/Content.Server/_DV/CosmicCult/CosmicMindwipedEui.cs b/Content.Server/_DV/CosmicCult/CosmicMindwipedEui.cs
new file mode 100644
index 0000000000..9cfecd1f53
--- /dev/null
+++ b/Content.Server/_DV/CosmicCult/CosmicMindwipedEui.cs
@@ -0,0 +1,8 @@
+using Content.Server.EUI;
+
+namespace Content.Server._DV.CosmicCult;
+
+///
+/// Does nothing on the server as this popup has no interactions
+///
+public sealed class CosmicMindwipedEui : BaseEui;
diff --git a/Content.Server/_DV/CosmicCult/DeconversionSystem.cs b/Content.Server/_DV/CosmicCult/DeconversionSystem.cs
index 3510686273..1a9c446fa3 100644
--- a/Content.Server/_DV/CosmicCult/DeconversionSystem.cs
+++ b/Content.Server/_DV/CosmicCult/DeconversionSystem.cs
@@ -1,5 +1,6 @@
using Content.Server._DV.CosmicCult.Components;
using Content.Server.Bible.Components;
+using Content.Server.EUI;
using Content.Shared._DV.CosmicCult.Components.Examine;
using Content.Shared._DV.CosmicCult.Components;
using Content.Shared._DV.CosmicCult;
@@ -8,10 +9,13 @@ using Content.Shared.DoAfter;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
using Content.Shared.Jittering;
+using Content.Shared.Mind;
using Content.Shared.Mobs.Systems;
using Content.Shared.Popups;
+using Content.Shared.Stunnable;
using Content.Shared.Timing;
using Content.Shared.Tools.Systems;
+using Robust.Server.Player;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Audio;
using Robust.Shared.Timing;
@@ -30,6 +34,10 @@ public sealed class DeconversionSystem : EntitySystem
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly SharedToolSystem _tools = default!;
[Dependency] private readonly UseDelaySystem _delay = default!;
+ [Dependency] private readonly SharedStunSystem _stun = default!;
+ [Dependency] private readonly SharedMindSystem _mind = default!;
+ [Dependency] private readonly IPlayerManager _playerMan = default!;
+ [Dependency] private readonly EuiManager _euiMan = default!;
public override void Initialize()
{
@@ -114,6 +122,11 @@ public sealed class DeconversionSystem : EntitySystem
_popup.PopupCoordinates(Loc.GetString("cleanse-deconvert-attempt-rebound"), targetPosition, PopupType.MediumCaution);
_damageable.TryChangeDamage(args.User, censer.FailedDeconversionDamage, true);
_damageable.TryChangeDamage(args.Target, censer.FailedDeconversionDamage, true);
+ _stun.TryKnockdown(target.Value, TimeSpan.FromSeconds(2), true);
+ if (_mind.TryGetMind(target.Value, out _, out var mind) && _playerMan.TryGetSessionById(mind.UserId, out var session))
+ {
+ _euiMan.OpenEui(new CosmicMindwipedEui(), session);
+ }
}
args.Handled = true;
}
diff --git a/Resources/Locale/en-US/_DV/cosmiccult/preset-cosmiccult.ftl b/Resources/Locale/en-US/_DV/cosmiccult/preset-cosmiccult.ftl
index eb89bf2df7..3d5e003990 100644
--- a/Resources/Locale/en-US/_DV/cosmiccult/preset-cosmiccult.ftl
+++ b/Resources/Locale/en-US/_DV/cosmiccult/preset-cosmiccult.ftl
@@ -131,6 +131,7 @@ cosmiccult-chantry-powerup = The vacuous chantry flares to life!
cosmiccult-ui-deconverted-title = Deconverted
cosmiccult-ui-converted-title = Converted
+cosmiccult-ui-mindwiped-title = Mindwiped
cosmiccult-ui-roundstart-title = The Unknown
cosmiccult-ui-converted-text-1 =
@@ -151,6 +152,12 @@ cosmiccult-ui-deconverted-text-2 =
You have lost all memories pertaining to the Cosmic Cult.
If you are converted back, these memories will return.
+cosmiccult-ui-mindwiped-text-1 =
+ You have been mindwiped with a censer.
+cosmiccult-ui-mindwiped-text-2 =
+ You no longer remember anything that happened during this round.
+ There is no way to recover your memory.
+
cosmiccult-ui-popup-confirm = Confirm
diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml
index 6c4f6fb738..653b1a64a6 100644
--- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml
+++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml
@@ -29,4 +29,3 @@
back:
- Bible
- RubberStampChaplain
- - CosmicCenser # DeltaV - Cosmic Cult
diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml
index 55017e02cc..a64e10fb50 100644
--- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml
+++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml
@@ -50,4 +50,3 @@
storage:
back:
- Flash
- - CosmicCenser # DeltaV - Cosmic Cult
diff --git a/Resources/Prototypes/_DV/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/_DV/Catalog/Fills/Lockers/heads.yml
index 101dbfc2b7..032d743186 100644
--- a/Resources/Prototypes/_DV/Catalog/Fills/Lockers/heads.yml
+++ b/Resources/Prototypes/_DV/Catalog/Fills/Lockers/heads.yml
@@ -87,6 +87,7 @@
- id: EpistemicsTechFabCircuitboard
- id: LunchboxCommandFilledRandom
prob: 0.3
+ - id: CosmicCenser
- type: entityTable
id: LockerFillHeadOfSecurityDeltaV
diff --git a/Resources/Prototypes/_DV/CosmicCult/Objects/censer.yml b/Resources/Prototypes/_DV/CosmicCult/Objects/censer.yml
index e5b6d2b9ba..7d6775b5a4 100644
--- a/Resources/Prototypes/_DV/CosmicCult/Objects/censer.yml
+++ b/Resources/Prototypes/_DV/CosmicCult/Objects/censer.yml
@@ -9,7 +9,7 @@
parent: BaseItem
id: CosmicCenser
name: ardent censer
- description: Cleanses and sanctifies the air around it.
+ description: Cleanses and sanctifies the air around it. If used on another being, it would irreversibly wipe their memories.
components:
- type: Item
size: Small
@@ -35,21 +35,21 @@
failedDeconversionDamage:
types:
Cold: 80
- Asphyxiation: 40
- type: Tool
qualities: Censer
- type: Welder
fuelSolutionName: Censer
- fuelReagent: Holywater
+ fuelReagent: MindbreakerToxin
+ fuelConsumption: 0.5
- type: RefillableSolution
solution: Censer
- type: SolutionContainerManager
solutions:
Censer:
reagents:
- - ReagentId: Holywater
- Quantity: 100
- maxVol: 100
+ - ReagentId: MindbreakerToxin
+ Quantity: 50
+ maxVol: 50
- type: ItemTogglePointLight
- type: ToggleableLightVisuals
spriteLayer: flame