From f563f2c5663757a46577948dbb54bf191cc05bef Mon Sep 17 00:00:00 2001 From: William Lemon Date: Thu, 20 Nov 2025 20:11:07 +1100 Subject: [PATCH] Ports Devils from Goobstation (#4639) * or your debil * Woop * Whoops, Missed this * Whoops, Suicide System * Hush... Extended tests... Hush * AAAAAA * No-longer jaunt whilst dead * :) * Update Content.Shared/_Lavaland/Chasm/PreventChasmFallingSystem.cs Co-authored-by: Tobias Berger Signed-off-by: William Lemon * Update Content.Server/_Goobstation/Possession/PossessionSystem.cs Co-authored-by: Tobias Berger Signed-off-by: William Lemon * Please tobysenpai forgive me --------- Signed-off-by: William Lemon Co-authored-by: Tobias Berger --- .../UI/RevivalContractBoundUserInterface.cs | 52 ++ .../Devil/UI/RevivalContractMenu.xaml | 17 + .../Devil/UI/RevivalContractMenu.xaml.cs | 46 ++ .../Atmos/EntitySystems/BarotraumaSystem.cs | 5 +- .../Bible/Components/BibleComponent.cs | 13 + Content.Server/Body/Systems/BodySystem.cs | 2 +- .../Body/Systems/RespiratorSystem.cs | 3 +- Content.Server/Chat/SuicideSystem.cs | 3 +- Content.Server/Morgue/CrematoriumSystem.cs | 3 + .../Temperature/Systems/TemperatureSystem.cs | 30 +- .../Systems/GoobAdminVerbSystem.Antag.cs | 67 +++ .../Systems/GoobAdminVerbSystem.cs | 26 + .../_Goobstation/Bible/GoobBibleSystem.cs | 98 ++++ .../Devil/CheatDeath/CheatDeathSystem.cs | 145 +++++ .../Condemned/CondemnedSystem.OnDeath.cs | 32 ++ .../Devil/Condemned/CondemnedSystem.cs | 187 +++++++ .../DevilContractSystem.ContractEvents.cs | 105 ++++ .../Devil/Contract/DevilContractSystem.cs | 499 ++++++++++++++++++ .../PendingRevivalContractComponent.cs | 35 ++ .../Revival/RevivalContractComponent.cs | 24 + .../Contract/Revival/RevivalContractSystem.cs | 123 +++++ .../_Goobstation/Devil/DevilSystem.Actions.cs | 124 +++++ .../Devil/DevilSystem.Handshake.cs | 120 +++++ .../_Goobstation/Devil/DevilSystem.cs | 302 +++++++++++ .../GameTicking/Rules/DevilRuleComponent.cs | 27 + .../GameTicking/Rules/DevilRuleSystem.cs | 96 ++++ .../Devil/Grip/DevilGripComponent.cs | 37 ++ .../Devil/Grip/DevilGripSystem.cs | 81 +++ .../MeetContractWeightConditionComponent.cs | 18 + .../SignContractConditionComponent.cs | 17 + .../Systems/DevilObjectiveSystem.cs | 36 ++ .../Devil/Roles/DevilRoleComponent.cs | 13 + .../Possession/PossessedComponent.cs | 68 +++ .../Possession/PossessionSystem.cs | 281 ++++++++++ .../_Goobstation/Religion/WeakToHolySystem.cs | 119 +++++ .../DelayedDeath/DelayedDeathComponent.cs | 21 + .../DelayedDeath/DelayedDeathSystem.cs | 21 + Content.Shared/Actions/SharedActionsSystem.cs | 23 + .../Body/Systems/SharedBodySystem.Parts.cs | 2 +- Content.Shared/Chasm/ChasmSystem.cs | 11 + Content.Shared/Devour/DevourSystem.cs | 8 + Content.Shared/_DV/Paper/SignatureSystem.cs | 27 +- .../Atmos/SpecialPressureImmunityComponent.cs | 12 + .../SpecialBreathingImmunityComponent.cs | 13 + .../CheatDeath/CheatDeathComponent.cs | 42 ++ .../CrematorImmune/CrematorImmuneComponent.cs | 6 + .../DelayedDeath/DelayedDeathEvent.cs | 14 + .../Devil/Actions/Devil.Actions.cs | 19 + .../Devil/Condemned/CondemnedComponent.cs | 114 ++++ .../Devil/Contract/ContractSignerComponent.cs | 29 + .../Devil/Contract/DevilClausePrototype.cs | 45 ++ .../Devil/Contract/DevilContractComponent.cs | 58 ++ .../Devil/DevilBranchPrototype.cs | 21 + .../_Goobstation/Devil/DevilComponent.cs | 127 +++++ .../_Goobstation/Devil/DevilEvents.cs | 71 +++ .../Devil/PendingHandshakeComponent.cs | 17 + .../Devil/UI/RevivalContractMessage.cs | 10 + .../Devil/UI/RevivalContractUiKey.cs | 8 + .../Devour/Events/PreventSelfRevivalEvents.cs | 8 + .../Devour/PreventSelfRevivalComponent.cs | 9 + .../Systems/PreventSelfRevivalSystem.cs | 26 + .../_Goobstation/Exorcism/ExorcismDoAfter.cs | 7 + .../Inventory/GoobInventorySystem.Relays.cs | 2 + .../Paper/BeingSignedAttemptEvent.cs | 13 + .../_Goobstation/Paper/SignSucessfulEvent.cs | 13 + .../Possession/PossessionEvents.cs | 10 + .../Religion/WeakToHolyComponent.cs | 76 +++ .../SpecialHighTempImmunityComponent.cs | 12 + .../SpecialLowTempImmunityComponent.cs | 12 + .../Temperature/TemperatureEvents.cs | 14 + .../Chasm/BeforeChasmFallingEvent.cs | 25 + .../Chasm/PreventChasmFallingComponent.cs | 29 + .../Chasm/PreventChasmFallingSystem.cs | 115 ++++ .../Ambience/Antag/attributions.yml | 16 + .../Ambience/Antag/devil_start.ogg | Bin 0 -> 176725 bytes .../Audio/_Goobstation/Effects/bone_crack.ogg | Bin 0 -> 27807 bytes .../_Goobstation/Effects/earth_quake.ogg | Bin 0 -> 82463 bytes .../Audio/_Goobstation/Effects/fwoosh.ogg | Bin 0 -> 25418 bytes .../_Goobstation/Heretic/attributions.yml | 15 + .../Audio/_Goobstation/Heretic/crack2.ogg | Bin 0 -> 8339 bytes .../_Goobstation/administration/antag.ftl | 2 + .../en-US/_Goobstation/datasets/figurines.ftl | 11 + .../devil/cheatdeath/cheatdeath.ftl | 15 + .../_Goobstation/devil/contracts/contract.ftl | 49 ++ .../Locale/en-US/_Goobstation/devil/devil.ftl | 42 ++ .../Locale/en-US/_Goobstation/devil/grip.ftl | 1 + .../en-US/_Goobstation/devil/roles/antags.ftl | 2 + .../devour/prevent-self-revive.ftl | 1 + .../en-US/_Goobstation/mind/role-types.ftl | 2 + .../_Goobstation/possession/possession.ftl | 16 + .../medical/components/defibrillator.ftl | 6 + .../Entities/Mobs/Player/observer.yml | 5 + .../Entities/Objects/Fun/figurine_boxes.yml | 2 + Resources/Prototypes/GameRules/roundstart.yml | 6 +- Resources/Prototypes/Guidebook/antagonist.yml | 1 + .../Roles/Jobs/Civilian/chaplain.yml | 2 + .../Prototypes/Roles/Jobs/Civilian/lawyer.yml | 5 + .../Prototypes/Roles/Jobs/Command/captain.yml | 2 + .../Prototypes/_Goobstation/Actions/devil.yml | 131 +++++ .../_Goobstation/Damage/modifier_sets.yml | 24 + .../_Goobstation/Datasets/devil_names.yml | 56 ++ .../_Goobstation/Datasets/figurines.yml | 11 + .../Prototypes/_Goobstation/Devil/clauses.yml | 229 ++++++++ .../_Goobstation/Devil/contract.yml | 89 ++++ .../_Goobstation/Devil/devilgrip.yml | 42 ++ .../_Goobstation/Devil/powerlevel.yml | 7 + .../_Goobstation/Effects/helldrag.yml | 15 + .../_Goobstation/Effects/pentagram.yml | 31 ++ .../Entities/Clothing/Shoes/boots.yml | 112 ++++ .../Entities/Clothing/Uniforms/jumpsuits.yml | 18 + .../_Goobstation/Entities/Effects/fire.yml | 22 + .../_Goobstation/Entities/Mobs/NPCs/jaunt.yml | 40 ++ .../Entities/Objects/Fun/figurines.yml | 16 + .../Entities/Objects/Misc/books.yml | 22 + .../Entities/Objects/Misc/pen.yml | 30 ++ .../_Goobstation/GameRules/roundstart.yml | 21 + .../_Goobstation/Guidebook/devil.yml | 11 + .../Objectives/devilObjectives.yml | 44 ++ .../_Goobstation/Polymorphs/polymorph.yml | 27 + .../_Goobstation/Roles/Antags/devil.yml | 31 ++ .../_Goobstation/Roles/mind_roles.yml | 17 + .../Prototypes/_Goobstation/ai_factions.yml | 8 + Resources/Prototypes/_Goobstation/tags.yml | 3 + .../Guidebook/Antagonist/Devil.xml | 126 +++++ .../Guidebook/Antagonist/DevilClauses.xml | 224 ++++++++ .../Misc/bureaucracy.rsi/contract-written.png | Bin 0 -> 580 bytes .../Objects/Misc/bureaucracy.rsi/meta.json | 3 + .../Actions/devil.rsi/base-devil-icon.png | Bin 0 -> 179 bytes .../Actions/devil.rsi/cheat-death.png | Bin 0 -> 370 bytes .../Actions/devil.rsi/devil-grip.png | Bin 0 -> 560 bytes .../Actions/devil.rsi/heart-broken.png | Bin 0 -> 430 bytes .../_Goobstation/Actions/devil.rsi/meta.json | 35 ++ .../Actions/devil.rsi/possess.png | Bin 0 -> 334 bytes .../Actions/devil.rsi/shadow-jaunt.png | Bin 0 -> 388 bytes .../devil.rsi/summon-contract-revival.png | Bin 0 -> 655 bytes .../Actions/devil.rsi/summon-contract.png | Bin 0 -> 668 bytes .../Boots/jordans.rsi/equipped-FEET-vox.png | Bin 0 -> 4585 bytes .../Shoes/Boots/jordans.rsi/equipped-FEET.png | Bin 0 -> 4585 bytes .../Shoes/Boots/jordans.rsi/icon-creased.png | Bin 0 -> 449 bytes .../Shoes/Boots/jordans.rsi/icon-on.png | Bin 0 -> 4839 bytes .../Clothing/Shoes/Boots/jordans.rsi/icon.png | Bin 0 -> 4819 bytes .../Shoes/Boots/jordans.rsi/inhand-left.png | Bin 0 -> 4469 bytes .../Shoes/Boots/jordans.rsi/inhand-right.png | Bin 0 -> 4753 bytes .../Shoes/Boots/jordans.rsi/meta.json | 52 ++ .../jordans.rsi/on-equipped-FEET-vox.png | Bin 0 -> 4871 bytes .../Boots/jordans.rsi/on-equipped-FEET.png | Bin 0 -> 4871 bytes .../Boots/jordans.rsi/on-inhand-left.png | Bin 0 -> 4771 bytes .../Boots/jordans.rsi/on-inhand-right.png | Bin 0 -> 4756 bytes .../Devil/devil_grip.rsi/icon.png | Bin 0 -> 1929 bytes .../Devil/devil_grip.rsi/inhand-left.png | Bin 0 -> 1450 bytes .../Devil/devil_grip.rsi/inhand-right.png | Bin 0 -> 1462 bytes .../Devil/devil_grip.rsi/meta.json | 35 ++ .../Effects/hellhand.rsi/hellhand.png | Bin 0 -> 2166 bytes .../Effects/hellhand.rsi/meta.json | 30 ++ .../Effects/pentagram.rsi/icon.png | Bin 0 -> 351 bytes .../Effects/pentagram.rsi/meta.json | 65 +++ .../Effects/pentagram.rsi/pentagram.png | Bin 0 -> 7107 bytes .../Interface/Paper/paper_background_grey.svg | 39 ++ .../Paper/paper_background_grey.svg.96dpi.png | Bin 0 -> 1620 bytes .../paper_background_grey.svg.96dpi.png.yml | 12 + .../Mobs/polymorphs.rsi/meta.json | 19 + .../Mobs/polymorphs.rsi/shadow_jaunt.png | Bin 0 -> 996 bytes .../Mobs/polymorphs.rsi/shadow_jaunt_end.png | Bin 0 -> 977 bytes .../Objects/Misc/bureaucracy.rsi/meta.json | 25 + .../bureaucracy.rsi/pen_devil-inhand-left.png | Bin 0 -> 138 bytes .../pen_devil-inhand-right.png | Bin 0 -> 143 bytes .../Misc/bureaucracy.rsi/pen_devil.png | Bin 0 -> 208 bytes .../Misc/bureaucracy.rsi/pen_future.png | Bin 0 -> 429 bytes .../Misc/devil_contract.rsi/inhand-left.png | Bin 0 -> 204 bytes .../Misc/devil_contract.rsi/inhand-right.png | Bin 0 -> 203 bytes .../Objects/Misc/devil_contract.rsi/meta.json | 19 + 171 files changed, 5872 insertions(+), 14 deletions(-) create mode 100644 Content.Client/_Goobstation/Devil/UI/RevivalContractBoundUserInterface.cs create mode 100644 Content.Client/_Goobstation/Devil/UI/RevivalContractMenu.xaml create mode 100644 Content.Client/_Goobstation/Devil/UI/RevivalContractMenu.xaml.cs create mode 100644 Content.Server/_Goobstation/Administration/Systems/GoobAdminVerbSystem.Antag.cs create mode 100644 Content.Server/_Goobstation/Administration/Systems/GoobAdminVerbSystem.cs create mode 100644 Content.Server/_Goobstation/Bible/GoobBibleSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/CheatDeath/CheatDeathSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/Condemned/CondemnedSystem.OnDeath.cs create mode 100644 Content.Server/_Goobstation/Devil/Condemned/CondemnedSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/Contract/DevilContractSystem.ContractEvents.cs create mode 100644 Content.Server/_Goobstation/Devil/Contract/DevilContractSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/Contract/Revival/PendingRevivalContractComponent.cs create mode 100644 Content.Server/_Goobstation/Devil/Contract/Revival/RevivalContractComponent.cs create mode 100644 Content.Server/_Goobstation/Devil/Contract/Revival/RevivalContractSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/DevilSystem.Actions.cs create mode 100644 Content.Server/_Goobstation/Devil/DevilSystem.Handshake.cs create mode 100644 Content.Server/_Goobstation/Devil/DevilSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/GameTicking/Rules/DevilRuleComponent.cs create mode 100644 Content.Server/_Goobstation/Devil/GameTicking/Rules/DevilRuleSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/Grip/DevilGripComponent.cs create mode 100644 Content.Server/_Goobstation/Devil/Grip/DevilGripSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/Objectives/Components/MeetContractWeightConditionComponent.cs create mode 100644 Content.Server/_Goobstation/Devil/Objectives/Components/SignContractConditionComponent.cs create mode 100644 Content.Server/_Goobstation/Devil/Objectives/Systems/DevilObjectiveSystem.cs create mode 100644 Content.Server/_Goobstation/Devil/Roles/DevilRoleComponent.cs create mode 100644 Content.Server/_Goobstation/Possession/PossessedComponent.cs create mode 100644 Content.Server/_Goobstation/Possession/PossessionSystem.cs create mode 100644 Content.Server/_Goobstation/Religion/WeakToHolySystem.cs create mode 100644 Content.Shared/_Goobstation/Atmos/SpecialPressureImmunityComponent.cs create mode 100644 Content.Shared/_Goobstation/Body/Components/SpecialBreathingImmunityComponent.cs create mode 100644 Content.Shared/_Goobstation/CheatDeath/CheatDeathComponent.cs create mode 100644 Content.Shared/_Goobstation/CrematorImmune/CrematorImmuneComponent.cs create mode 100644 Content.Shared/_Goobstation/DelayedDeath/DelayedDeathEvent.cs create mode 100644 Content.Shared/_Goobstation/Devil/Actions/Devil.Actions.cs create mode 100644 Content.Shared/_Goobstation/Devil/Condemned/CondemnedComponent.cs create mode 100644 Content.Shared/_Goobstation/Devil/Contract/ContractSignerComponent.cs create mode 100644 Content.Shared/_Goobstation/Devil/Contract/DevilClausePrototype.cs create mode 100644 Content.Shared/_Goobstation/Devil/Contract/DevilContractComponent.cs create mode 100644 Content.Shared/_Goobstation/Devil/DevilBranchPrototype.cs create mode 100644 Content.Shared/_Goobstation/Devil/DevilComponent.cs create mode 100644 Content.Shared/_Goobstation/Devil/DevilEvents.cs create mode 100644 Content.Shared/_Goobstation/Devil/PendingHandshakeComponent.cs create mode 100644 Content.Shared/_Goobstation/Devil/UI/RevivalContractMessage.cs create mode 100644 Content.Shared/_Goobstation/Devil/UI/RevivalContractUiKey.cs create mode 100644 Content.Shared/_Goobstation/Devour/Events/PreventSelfRevivalEvents.cs create mode 100644 Content.Shared/_Goobstation/Devour/PreventSelfRevivalComponent.cs create mode 100644 Content.Shared/_Goobstation/Devour/Systems/PreventSelfRevivalSystem.cs create mode 100644 Content.Shared/_Goobstation/Exorcism/ExorcismDoAfter.cs create mode 100644 Content.Shared/_Goobstation/Paper/BeingSignedAttemptEvent.cs create mode 100644 Content.Shared/_Goobstation/Paper/SignSucessfulEvent.cs create mode 100644 Content.Shared/_Goobstation/Possession/PossessionEvents.cs create mode 100644 Content.Shared/_Goobstation/Religion/WeakToHolyComponent.cs create mode 100644 Content.Shared/_Goobstation/Temperature/Components/SpecialHighTempImmunityComponent.cs create mode 100644 Content.Shared/_Goobstation/Temperature/Components/SpecialLowTempImmunityComponent.cs create mode 100644 Content.Shared/_Goobstation/Temperature/TemperatureEvents.cs create mode 100644 Content.Shared/_Lavaland/Chasm/BeforeChasmFallingEvent.cs create mode 100644 Content.Shared/_Lavaland/Chasm/PreventChasmFallingComponent.cs create mode 100644 Content.Shared/_Lavaland/Chasm/PreventChasmFallingSystem.cs create mode 100644 Resources/Audio/_Goobstation/Ambience/Antag/attributions.yml create mode 100644 Resources/Audio/_Goobstation/Ambience/Antag/devil_start.ogg create mode 100644 Resources/Audio/_Goobstation/Effects/bone_crack.ogg create mode 100644 Resources/Audio/_Goobstation/Effects/earth_quake.ogg create mode 100644 Resources/Audio/_Goobstation/Effects/fwoosh.ogg create mode 100644 Resources/Audio/_Goobstation/Heretic/attributions.yml create mode 100644 Resources/Audio/_Goobstation/Heretic/crack2.ogg create mode 100644 Resources/Locale/en-US/_Goobstation/administration/antag.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/datasets/figurines.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/devil/cheatdeath/cheatdeath.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/devil/contracts/contract.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/devil/devil.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/devil/grip.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/devil/roles/antags.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/devour/prevent-self-revive.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/mind/role-types.ftl create mode 100644 Resources/Locale/en-US/_Goobstation/possession/possession.ftl create mode 100644 Resources/Locale/en-US/_Shitmed/medical/components/defibrillator.ftl create mode 100644 Resources/Prototypes/_Goobstation/Actions/devil.yml create mode 100644 Resources/Prototypes/_Goobstation/Damage/modifier_sets.yml create mode 100644 Resources/Prototypes/_Goobstation/Datasets/devil_names.yml create mode 100644 Resources/Prototypes/_Goobstation/Datasets/figurines.yml create mode 100644 Resources/Prototypes/_Goobstation/Devil/clauses.yml create mode 100644 Resources/Prototypes/_Goobstation/Devil/contract.yml create mode 100644 Resources/Prototypes/_Goobstation/Devil/devilgrip.yml create mode 100644 Resources/Prototypes/_Goobstation/Devil/powerlevel.yml create mode 100644 Resources/Prototypes/_Goobstation/Effects/helldrag.yml create mode 100644 Resources/Prototypes/_Goobstation/Effects/pentagram.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Clothing/Shoes/boots.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Clothing/Uniforms/jumpsuits.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Effects/fire.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Mobs/NPCs/jaunt.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Objects/Fun/figurines.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Objects/Misc/books.yml create mode 100644 Resources/Prototypes/_Goobstation/Entities/Objects/Misc/pen.yml create mode 100644 Resources/Prototypes/_Goobstation/GameRules/roundstart.yml create mode 100644 Resources/Prototypes/_Goobstation/Guidebook/devil.yml create mode 100644 Resources/Prototypes/_Goobstation/Objectives/devilObjectives.yml create mode 100644 Resources/Prototypes/_Goobstation/Polymorphs/polymorph.yml create mode 100644 Resources/Prototypes/_Goobstation/Roles/Antags/devil.yml create mode 100644 Resources/Prototypes/_Goobstation/Roles/mind_roles.yml create mode 100644 Resources/Prototypes/_Goobstation/ai_factions.yml create mode 100644 Resources/ServerInfo/_Goobstation/Guidebook/Antagonist/Devil.xml create mode 100644 Resources/ServerInfo/_Goobstation/Guidebook/Antagonist/DevilClauses.xml create mode 100644 Resources/Textures/Objects/Misc/bureaucracy.rsi/contract-written.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/base-devil-icon.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/cheat-death.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/devil-grip.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/heart-broken.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/possess.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/shadow-jaunt.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/summon-contract-revival.png create mode 100644 Resources/Textures/_Goobstation/Actions/devil.rsi/summon-contract.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/equipped-FEET-vox.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/equipped-FEET.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/icon-creased.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/icon-on.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/icon.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/inhand-left.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/inhand-right.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/on-equipped-FEET-vox.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/on-equipped-FEET.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/on-inhand-left.png create mode 100644 Resources/Textures/_Goobstation/Clothing/Shoes/Boots/jordans.rsi/on-inhand-right.png create mode 100644 Resources/Textures/_Goobstation/Devil/devil_grip.rsi/icon.png create mode 100644 Resources/Textures/_Goobstation/Devil/devil_grip.rsi/inhand-left.png create mode 100644 Resources/Textures/_Goobstation/Devil/devil_grip.rsi/inhand-right.png create mode 100644 Resources/Textures/_Goobstation/Devil/devil_grip.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Effects/hellhand.rsi/hellhand.png create mode 100644 Resources/Textures/_Goobstation/Effects/hellhand.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Effects/pentagram.rsi/icon.png create mode 100644 Resources/Textures/_Goobstation/Effects/pentagram.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Effects/pentagram.rsi/pentagram.png create mode 100644 Resources/Textures/_Goobstation/Interface/Paper/paper_background_grey.svg create mode 100644 Resources/Textures/_Goobstation/Interface/Paper/paper_background_grey.svg.96dpi.png create mode 100644 Resources/Textures/_Goobstation/Interface/Paper/paper_background_grey.svg.96dpi.png.yml create mode 100644 Resources/Textures/_Goobstation/Mobs/polymorphs.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Mobs/polymorphs.rsi/shadow_jaunt.png create mode 100644 Resources/Textures/_Goobstation/Mobs/polymorphs.rsi/shadow_jaunt_end.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/bureaucracy.rsi/meta.json create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/bureaucracy.rsi/pen_devil-inhand-left.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/bureaucracy.rsi/pen_devil-inhand-right.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/bureaucracy.rsi/pen_devil.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/bureaucracy.rsi/pen_future.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/devil_contract.rsi/inhand-left.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/devil_contract.rsi/inhand-right.png create mode 100644 Resources/Textures/_Goobstation/Objects/Misc/devil_contract.rsi/meta.json diff --git a/Content.Client/_Goobstation/Devil/UI/RevivalContractBoundUserInterface.cs b/Content.Client/_Goobstation/Devil/UI/RevivalContractBoundUserInterface.cs new file mode 100644 index 0000000000..527d49cfbc --- /dev/null +++ b/Content.Client/_Goobstation/Devil/UI/RevivalContractBoundUserInterface.cs @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: 2025 GoobBot +// SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter +// +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Content.Shared._Goobstation.Devil.UI; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client._Goobstation.Devil.UI; + +[UsedImplicitly] +public sealed class RevivalContractBoundUserInterface : BoundUserInterface +{ + private RevivalContractMenu? _menu; + + public RevivalContractBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + IoCManager.InjectDependencies(this); + } + + protected override void Open() + { + base.Open(); + + _menu = this.CreateWindow(); + _menu.SetEntity(Owner); + _menu.Accepted += OnAccepted; + _menu.Rejected += OnRejected; + _menu.OnClose += OnClosed; + + _menu.OpenCentered(); + } + + private void OnAccepted() + { + SendPredictedMessage(new RevivalContractMessage(true)); + Close(); + } + + private void OnRejected() + { + SendPredictedMessage(new RevivalContractMessage(false)); + Close(); + } + + private void OnClosed() + { + SendPredictedMessage(new RevivalContractMessage(false)); + Close(); + } +} diff --git a/Content.Client/_Goobstation/Devil/UI/RevivalContractMenu.xaml b/Content.Client/_Goobstation/Devil/UI/RevivalContractMenu.xaml new file mode 100644 index 0000000000..51d4c63879 --- /dev/null +++ b/Content.Client/_Goobstation/Devil/UI/RevivalContractMenu.xaml @@ -0,0 +1,17 @@ + + +