From cd4c446655e121b54c0607cc2888639379dd5bcd Mon Sep 17 00:00:00 2001 From: "tgstation-server-ci[bot]" <161980869+tgstation-server-ci[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:52:35 +0000 Subject: [PATCH 01/24] Update TGS DMAPI --- code/__DEFINES/tgs.dm | 2 +- code/modules/tgs/v5/__interop_version.dm | 2 +- code/modules/tgs/v5/_defines.dm | 1 + code/modules/tgs/v5/topic.dm | 4 +++- code/modules/tgs/v5/undefs.dm | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 4766b3dfe661e..42f2d5fc31fee 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,7 +1,7 @@ // tgstation-server DMAPI // The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119. -#define TGS_DMAPI_VERSION "7.2.1" +#define TGS_DMAPI_VERSION "7.3.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index f4806f7adb97c..29ea239ad84db 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.9.0" +"5.10.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index 92c7a8388a711..a47bfd78000bc 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -95,6 +95,7 @@ #define DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION "newServerVersion" #define DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE "broadcastMessage" +#define DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT "clientCount" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE "commandResponse" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE "commandResponseMessage" #define DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES "chatResponses" diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index e1f2cb6385789..59e5e63e5cd42 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -149,7 +149,9 @@ if(DMAPI5_TOPIC_COMMAND_HEALTHCHECK) if(event_handler && event_handler.receive_health_checks) event_handler.HandleEvent(TGS_EVENT_HEALTH_CHECK) - return TopicResponse() + var/list/health_check_response = TopicResponse() + health_check_response[DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT] = TGS_CLIENT_COUNT + return health_check_response; if(DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH) detached = FALSE diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index 237207fdfd056..acd19dfa6411c 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -18,7 +18,6 @@ #undef DMAPI5_PARAMETER_ACCESS_IDENTIFIER #undef DMAPI5_PARAMETER_CUSTOM_COMMANDS -#undef DMAPI5_PARAMETER_TOPIC_PORT #undef DMAPI5_CHUNK #undef DMAPI5_CHUNK_PAYLOAD @@ -95,6 +94,7 @@ #undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION #undef DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE +#undef DMAPI5_TOPIC_RESPONSE_CLIENT_COUNT #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE #undef DMAPI5_TOPIC_RESPONSE_CHAT_RESPONSES From 3bcfba777591ce850e614af03ee1e0a313c6a8c0 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 01:24:30 +0300 Subject: [PATCH 02/24] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/game_options.txt | 2 +- modular_bandastation/medical/_medical.dme | 1 + .../medical/code/organs/_brain.dm | 39 +++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 modular_bandastation/medical/code/organs/_brain.dm diff --git a/config/game_options.txt b/config/game_options.txt index 689c0328a2ee4..e60d1b4be030b 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -9,7 +9,7 @@ DAMAGE_MULTIPLIER 1 REVIVAL_POD_PLANTS ## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) -REVIVAL_BRAIN_LIFE -1 +REVIVAL_BRAIN_LIFE 420 ## OOC DURING ROUND ### ## Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. diff --git a/modular_bandastation/medical/_medical.dme b/modular_bandastation/medical/_medical.dme index 3783e0393c8c7..c7fda6cf486ca 100644 --- a/modular_bandastation/medical/_medical.dme +++ b/modular_bandastation/medical/_medical.dme @@ -1,3 +1,4 @@ #include "_medical.dm" +#include "code/organs/_brain.dm" #include "code/surgery/vocal_cords.dm" diff --git a/modular_bandastation/medical/code/organs/_brain.dm b/modular_bandastation/medical/code/organs/_brain.dm new file mode 100644 index 0000000000000..a8b313b29c315 --- /dev/null +++ b/modular_bandastation/medical/code/organs/_brain.dm @@ -0,0 +1,39 @@ +/obj/item/organ/brain + var/perma_death = FALSE + +/obj/item/organ/brain/Initialize(mapload) + . = ..() + var/config_value = CONFIG_GET(number/revival_brain_life) + if(config_value > 0) + perma_death = TRUE + if(perma_death) + decay_factor = STANDARD_ORGAN_DECAY * config_value + +//Убивает игрока при смерти органа +/obj/item/organ/brain/on_death(seconds_per_tick, times_fired) + . = ..() + //Если орган мертв и включена пермасмерть + if(organ_flags & ORGAN_FAILING && perma_death && damage >= maxHealth && !suicided) + //Сделать ДНР + var/mob/living/carbon/brain_owner = owner + if(brainmob) + // If it's a ling decoy brain, nothing to transfer, just throw it out + if(decoy_override) + if(brainmob?.key) + stack_trace("Decoy override brain with a key assigned - This should never happen.") + + // Not a ling - assume direct control + else + if(brain_owner.key) + brain_owner.ghostize() + + if(brainmob.mind) + brainmob.mind.transfer_to(brain_owner) + else + brain_owner.key = brainmob.key + + brain_owner.set_suicide(HAS_TRAIT(brainmob, TRAIT_SUICIDED)) + + QDEL_NULL(brainmob) + else if(brain_owner) + brain_owner.set_suicide(TRUE) From e28e4d546d657239cdd653e0e899404bdb8a474e Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 01:27:04 +0300 Subject: [PATCH 03/24] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_bandastation/medical/_medical.dme | 1 + .../medical/code/organs/_brain.dm | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 modular_bandastation/medical/code/organs/_brain.dm diff --git a/modular_bandastation/medical/_medical.dme b/modular_bandastation/medical/_medical.dme index 3783e0393c8c7..c7fda6cf486ca 100644 --- a/modular_bandastation/medical/_medical.dme +++ b/modular_bandastation/medical/_medical.dme @@ -1,3 +1,4 @@ #include "_medical.dm" +#include "code/organs/_brain.dm" #include "code/surgery/vocal_cords.dm" diff --git a/modular_bandastation/medical/code/organs/_brain.dm b/modular_bandastation/medical/code/organs/_brain.dm new file mode 100644 index 0000000000000..a8b313b29c315 --- /dev/null +++ b/modular_bandastation/medical/code/organs/_brain.dm @@ -0,0 +1,39 @@ +/obj/item/organ/brain + var/perma_death = FALSE + +/obj/item/organ/brain/Initialize(mapload) + . = ..() + var/config_value = CONFIG_GET(number/revival_brain_life) + if(config_value > 0) + perma_death = TRUE + if(perma_death) + decay_factor = STANDARD_ORGAN_DECAY * config_value + +//Убивает игрока при смерти органа +/obj/item/organ/brain/on_death(seconds_per_tick, times_fired) + . = ..() + //Если орган мертв и включена пермасмерть + if(organ_flags & ORGAN_FAILING && perma_death && damage >= maxHealth && !suicided) + //Сделать ДНР + var/mob/living/carbon/brain_owner = owner + if(brainmob) + // If it's a ling decoy brain, nothing to transfer, just throw it out + if(decoy_override) + if(brainmob?.key) + stack_trace("Decoy override brain with a key assigned - This should never happen.") + + // Not a ling - assume direct control + else + if(brain_owner.key) + brain_owner.ghostize() + + if(brainmob.mind) + brainmob.mind.transfer_to(brain_owner) + else + brain_owner.key = brainmob.key + + brain_owner.set_suicide(HAS_TRAIT(brainmob, TRAIT_SUICIDED)) + + QDEL_NULL(brainmob) + else if(brain_owner) + brain_owner.set_suicide(TRUE) From c72db79f61167481264403d60d56723609c025ad Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 02:14:35 +0300 Subject: [PATCH 04/24] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/mob/living/brain/brain_item.dm | 2 ++ .../chemistry/reagents/medicine_reagents.dm | 10 ++++++ code/modules/surgery/brain_surgery.dm | 7 +++- config/game_options.txt | 2 +- .../medical/code/organs/_brain.dm | 32 ------------------- 5 files changed, 19 insertions(+), 34 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 7086298c19f3b..9d67953f780f0 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -44,6 +44,8 @@ var/can_smoothen_out = TRUE /// We got smooth from being washed var/smooth_brain = FALSE + /// BANDASTATION EDIT - PERMADEATH + var/perma_death = FALSE /obj/item/organ/brain/Initialize(mapload) . = ..() diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 180d9dbb7e8d3..33846559dfaf1 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1002,10 +1002,20 @@ if(exposed_mob.stat != DEAD || !(exposed_mob.mob_biotypes & MOB_ORGANIC)) return ..() + // BANDASTATION EDIT START - PERMADEATH + if(ishuman(exposed_mob)) + var/obj/item/organ/brain/brain = exposed_mob.get_organ_slot(ORGAN_SLOT_BRAIN) + if(brain) + if(!(brain.organ_flags & ORGAN_FAILING) && !brain.perma_death) + exposed_mob.visible_message(span_warning("[exposed_mob] have a criticaly damaged brain, and not react...")) + return + // BANDASTATION EDIT END - PERMADEATH + if(HAS_TRAIT(exposed_mob, TRAIT_SUICIDED)) //they are never coming back exposed_mob.visible_message(span_warning("[exposed_mob]'s body does not react...")) return + if(iscarbon(exposed_mob) && !(methods & (INGEST|INHALE))) //simplemobs can still be splashed return ..() diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm index c3a9baafde10f..60c14e51bad8f 100644 --- a/code/modules/surgery/brain_surgery.dm +++ b/code/modules/surgery/brain_surgery.dm @@ -46,7 +46,12 @@ success_sound = 'sound/items/taperecorder/taperecorder_close.ogg' /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) - return target.get_organ_slot(ORGAN_SLOT_BRAIN) && ..() + // BANDASTATION EDIT START - PERMADEATH + var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + if(brain) + var/not_dead = !(brain.organ_flags & ORGAN_FAILING) && !brain.perma_death + return brain && not_dead && ..() + // BANDASTATION EDIT END - PERMADEATH /datum/surgery_step/fix_brain/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results( diff --git a/config/game_options.txt b/config/game_options.txt index e60d1b4be030b..ce83217cd19dc 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -9,7 +9,7 @@ DAMAGE_MULTIPLIER 1 REVIVAL_POD_PLANTS ## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) -REVIVAL_BRAIN_LIFE 420 +REVIVAL_BRAIN_LIFE 100 ## OOC DURING ROUND ### ## Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. diff --git a/modular_bandastation/medical/code/organs/_brain.dm b/modular_bandastation/medical/code/organs/_brain.dm index a8b313b29c315..439c5f30c361f 100644 --- a/modular_bandastation/medical/code/organs/_brain.dm +++ b/modular_bandastation/medical/code/organs/_brain.dm @@ -1,6 +1,3 @@ -/obj/item/organ/brain - var/perma_death = FALSE - /obj/item/organ/brain/Initialize(mapload) . = ..() var/config_value = CONFIG_GET(number/revival_brain_life) @@ -8,32 +5,3 @@ perma_death = TRUE if(perma_death) decay_factor = STANDARD_ORGAN_DECAY * config_value - -//Убивает игрока при смерти органа -/obj/item/organ/brain/on_death(seconds_per_tick, times_fired) - . = ..() - //Если орган мертв и включена пермасмерть - if(organ_flags & ORGAN_FAILING && perma_death && damage >= maxHealth && !suicided) - //Сделать ДНР - var/mob/living/carbon/brain_owner = owner - if(brainmob) - // If it's a ling decoy brain, nothing to transfer, just throw it out - if(decoy_override) - if(brainmob?.key) - stack_trace("Decoy override brain with a key assigned - This should never happen.") - - // Not a ling - assume direct control - else - if(brain_owner.key) - brain_owner.ghostize() - - if(brainmob.mind) - brainmob.mind.transfer_to(brain_owner) - else - brain_owner.key = brainmob.key - - brain_owner.set_suicide(HAS_TRAIT(brainmob, TRAIT_SUICIDED)) - - QDEL_NULL(brainmob) - else if(brain_owner) - brain_owner.set_suicide(TRUE) From 436db44fefc99b9f3df7bea9ddd08ef9233c3742 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 02:27:20 +0300 Subject: [PATCH 05/24] =?UTF-8?q?=D0=9B=D0=B8=D0=BD=D1=82=D0=B5=D1=80...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/surgery/brain_surgery.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm index 60c14e51bad8f..67b26a192f121 100644 --- a/code/modules/surgery/brain_surgery.dm +++ b/code/modules/surgery/brain_surgery.dm @@ -48,8 +48,9 @@ /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) // BANDASTATION EDIT START - PERMADEATH var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + var/not_dead = TRUE if(brain) - var/not_dead = !(brain.organ_flags & ORGAN_FAILING) && !brain.perma_death + not_dead = !(brain.organ_flags & ORGAN_FAILING) && !brain.perma_death return brain && not_dead && ..() // BANDASTATION EDIT END - PERMADEATH From f9d7660b7a7f3e16d4e3c9b928d275c608b8266c Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 10:25:25 +0300 Subject: [PATCH 06/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/mob/living/brain/brain_item.dm | 9 ++++++++- .../reagents/chemistry/reagents/medicine_reagents.dm | 1 - config/game_options.txt | 2 +- modular_bandastation/medical/code/organs/_brain.dm | 10 +++++++--- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 9d67953f780f0..81b171b1f5142 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -44,8 +44,10 @@ var/can_smoothen_out = TRUE /// We got smooth from being washed var/smooth_brain = FALSE - /// BANDASTATION EDIT - PERMADEATH + // BANDASTATION ADDITION START - PERMADEATH + /// Is client brain can't be revived var/perma_death = FALSE + // BANDASTATION ADDITION END - PERMADEATH /obj/item/organ/brain/Initialize(mapload) . = ..() @@ -637,3 +639,8 @@ old_brain.Remove(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER) qdel(old_brain) return Insert(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER | DELETE_IF_REPLACED) + +/obj/item/organ/brain/on_death(seconds_per_tick, times_fired) + . = ..() + if(owner && (organ_flags & ORGAN_FAILING)) + owner.set_hud_image_state(STATUS_HUD, "huddead") diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 33846559dfaf1..62be98ccf37bd 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1015,7 +1015,6 @@ exposed_mob.visible_message(span_warning("[exposed_mob]'s body does not react...")) return - if(iscarbon(exposed_mob) && !(methods & (INGEST|INHALE))) //simplemobs can still be splashed return ..() diff --git a/config/game_options.txt b/config/game_options.txt index ce83217cd19dc..e60d1b4be030b 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -9,7 +9,7 @@ DAMAGE_MULTIPLIER 1 REVIVAL_POD_PLANTS ## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) -REVIVAL_BRAIN_LIFE 100 +REVIVAL_BRAIN_LIFE 420 ## OOC DURING ROUND ### ## Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. diff --git a/modular_bandastation/medical/code/organs/_brain.dm b/modular_bandastation/medical/code/organs/_brain.dm index 439c5f30c361f..59411fbcb374d 100644 --- a/modular_bandastation/medical/code/organs/_brain.dm +++ b/modular_bandastation/medical/code/organs/_brain.dm @@ -1,7 +1,11 @@ /obj/item/organ/brain/Initialize(mapload) . = ..() - var/config_value = CONFIG_GET(number/revival_brain_life) - if(config_value > 0) + var/new_death_time = CONFIG_GET(number/revival_brain_life) + if(new_death_time > 0) perma_death = TRUE if(perma_death) - decay_factor = STANDARD_ORGAN_DECAY * config_value + var/standart_death_time = 30 MINUTES + // DА => SDT ; NDR => NDT => DF/SDT = NDT/NDR => NDR = (SDT*NDT)DF + var/relative_data = standart_death_time / new_death_time + var/new_decay_rate = relative_data * decay_factor + decay_factor = new_decay_rate From 59479c3045bb10220173f1499b5b76297fa33412 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 15:45:19 +0300 Subject: [PATCH 07/24] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0,=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B1=D1=80=D0=BE=D1=81=D0=BA=D0=B8,?= =?UTF-8?q?=20=D1=82=D0=B2=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/__DEFINES/mobs.dm | 1 + code/game/data_huds.dm | 7 ++++++- code/game/objects/items/defib.dm | 5 ++++- code/modules/mob/living/brain/brain_item.dm | 5 ----- code/modules/mob/living/carbon/carbon.dm | 12 ++++++++++++ .../reagents/chemistry/reagents/medicine_reagents.dm | 7 +++---- .../modules/reagents/reagent_containers/hypospray.dm | 2 +- code/modules/surgery/organs/_organ.dm | 1 + config/bandastation/bandastation_config.txt | 2 ++ config/game_options.txt | 2 +- modular_bandastation/balance/_balance.dme | 1 + .../{medical/code/organs => balance/code}/_brain.dm | 7 ++++--- modular_bandastation/medical/_medical.dme | 1 - 13 files changed, 36 insertions(+), 17 deletions(-) rename modular_bandastation/{medical/code/organs => balance/code}/_brain.dm (74%) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 94b22d55ba70f..c8ce17f300258 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -536,6 +536,7 @@ #define DEFIB_FAIL_NO_INTELLIGENCE (1<<8) #define DEFIB_FAIL_BLACKLISTED (1<<9) #define DEFIB_NOGRAB_AGHOST (1<<10) +#define DEFIB_FAIL_PERMANENTLY_DEAD (1<<11) // BANDASTATION EDIT - PERMA-DEATH // Bit mask of possible return values by can_defib that would result in a revivable patient #define DEFIB_REVIVABLE_STATES (DEFIB_FAIL_NO_HEART | DEFIB_FAIL_FAILING_HEART | DEFIB_FAIL_HUSK | DEFIB_FAIL_TISSUE_DAMAGE | DEFIB_FAIL_FAILING_BRAIN | DEFIB_POSSIBLE) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index e32d09309c193..2386578b9a603 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -183,8 +183,13 @@ Medical HUD! Basic mode needs suit sensors on. set_hud_image_state(STATUS_HUD, "hudxeno") return FALSE + // BANDASTATION EDIT START - PERMA-DEATH + var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) + brain_dead = current_brain.perma_death && (current_brain.organ_flags & ORGAN_FAILING) + if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) - if(HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) + if((HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) && !brain_dead) + // BANDASTATION EDIT END - PERMA-DEATH set_hud_image_state(STATUS_HUD, "huddefib") else if(HAS_TRAIT(src, TRAIT_GHOSTROLE_ON_REVIVE)) set_hud_image_state(STATUS_HUD, "hudghost") diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 70fb3bb6693c2..994079ea9c566 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -614,7 +614,10 @@ if (DEFIB_FAIL_TISSUE_DAMAGE) fail_reason = "Tissue damage too severe, repair and try again." if (DEFIB_FAIL_HUSK) - fail_reason = "Patient's body is a mere husk, repair and try again." + // BANDASTATION EDIT START - PERMA-DEATH fail_reason = "Patient's body is a mere husk, repair and try again." + if (DEFIB_FAIL_PERMANENTLY_DEAD) + fail_reason = "Patient's brain electomagnetic activity gone. It's too late for them..." + // BANDASTATION EDIT END - PERMA-DEATH if (DEFIB_FAIL_FAILING_BRAIN) fail_reason = "Patient's brain is too damaged, repair and try again." if (DEFIB_FAIL_NO_INTELLIGENCE) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 81b171b1f5142..751c7ceb1d8be 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -639,8 +639,3 @@ old_brain.Remove(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER) qdel(old_brain) return Insert(new_owner, special = TRUE, movement_flags = NO_ID_TRANSFER | DELETE_IF_REPLACED) - -/obj/item/organ/brain/on_death(seconds_per_tick, times_fired) - . = ..() - if(owner && (organ_flags & ORGAN_FAILING)) - owner.set_hud_image_state(STATUS_HUD, "huddead") diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b7d240560daba..aef1dfe694e87 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -976,6 +976,16 @@ if (HAS_TRAIT(src, TRAIT_DEFIB_BLACKLISTED)) return DEFIB_FAIL_BLACKLISTED + // BANDASTATION EDIT START - PERMA-DEATH + var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) + + if (QDELETED(current_brain)) + return DEFIB_FAIL_NO_BRAIN + + if (current_brain.organ_flags & ORGAN_FAILING) + return current_brain.perma_death ?DEFIB_FAIL_PERMANENTLY_DEAD : DEFIB_FAIL_FAILING_BRAIN + // BANDASTATION EDIT END - PERMA-DEATH + if ((getBruteLoss() >= MAX_REVIVE_BRUTE_DAMAGE) || (getFireLoss() >= MAX_REVIVE_FIRE_DAMAGE)) return DEFIB_FAIL_TISSUE_DAMAGE @@ -989,6 +999,7 @@ if (heart.organ_flags & ORGAN_FAILING) return DEFIB_FAIL_FAILING_HEART + /* // BANDASTATION EDIT START - PERMA-DEATH var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) if (QDELETED(current_brain)) @@ -996,6 +1007,7 @@ if (current_brain.organ_flags & ORGAN_FAILING) return DEFIB_FAIL_FAILING_BRAIN + */ // BANDASTATION EDIT END - PERMA-DEATH if (current_brain.suicided || (current_brain.brainmob && HAS_TRAIT(current_brain.brainmob, TRAIT_SUICIDED))) return DEFIB_FAIL_NO_INTELLIGENCE diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 62be98ccf37bd..68b70920dcf55 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1005,10 +1005,9 @@ // BANDASTATION EDIT START - PERMADEATH if(ishuman(exposed_mob)) var/obj/item/organ/brain/brain = exposed_mob.get_organ_slot(ORGAN_SLOT_BRAIN) - if(brain) - if(!(brain.organ_flags & ORGAN_FAILING) && !brain.perma_death) - exposed_mob.visible_message(span_warning("[exposed_mob] have a criticaly damaged brain, and not react...")) - return + if(!(brain?.organ_flags & ORGAN_FAILING) && !brain?.perma_death) + exposed_mob.visible_message(span_warning("[exposed_mob] have a criticaly damaged brain, and not react...")) + return // BANDASTATION EDIT END - PERMADEATH if(HAS_TRAIT(exposed_mob, TRAIT_SUICIDED)) //they are never coming back diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index c4cd57b15680e..6558d591535a7 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -124,7 +124,7 @@ ignore_flags = 1 //so you can medipen through spacesuits reagent_flags = NONE flags_1 = null - list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/toxin/formaldehyde = 3, /datum/reagent/medicine/coagulant = 2) + list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/coagulant = 2) // BANDASTATION EDIT - PERMADEATH (/datum/reagent/toxin/formaldehyde = 3,) custom_price = PAYCHECK_CREW custom_premium_price = PAYCHECK_COMMAND var/label_examine = TRUE diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index 5a756d64a6090..ac21a18fa8d23 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -227,6 +227,7 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) if(damage >= maxHealth) organ_flags |= ORGAN_FAILING + owner?.med_hud_set_status() // BANDASTATION EDIT - PERMA-DEATH else organ_flags &= ~ORGAN_FAILING diff --git a/config/bandastation/bandastation_config.txt b/config/bandastation/bandastation_config.txt index ac8597da67126..a608f55740502 100644 --- a/config/bandastation/bandastation_config.txt +++ b/config/bandastation/bandastation_config.txt @@ -38,3 +38,5 @@ ROUNDSTART_RACES vulpkanin ## Time in deciseconds the mob must be clientless for to be despawned by cryopod. 30 minutes by default #CRYO_MIN_SSD_TIME 18000 + +BRAIN_PERMANENT_DEATH false diff --git a/config/game_options.txt b/config/game_options.txt index e60d1b4be030b..689c0328a2ee4 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -9,7 +9,7 @@ DAMAGE_MULTIPLIER 1 REVIVAL_POD_PLANTS ## amount of time (in hundredths of seconds) for which a brain retains the "spark of life" after the person's death (set to -1 for infinite) -REVIVAL_BRAIN_LIFE 420 +REVIVAL_BRAIN_LIFE -1 ## OOC DURING ROUND ### ## Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results. diff --git a/modular_bandastation/balance/_balance.dme b/modular_bandastation/balance/_balance.dme index f8848504db72a..dd50217a328db 100644 --- a/modular_bandastation/balance/_balance.dme +++ b/modular_bandastation/balance/_balance.dme @@ -9,5 +9,6 @@ #include "code/station_traits.dm" #include "code/supply_packs.dm" #include "code/crew_manifest.dm" +#include "code/_brain.dm" #include "code/~undefs.dm" diff --git a/modular_bandastation/medical/code/organs/_brain.dm b/modular_bandastation/balance/code/_brain.dm similarity index 74% rename from modular_bandastation/medical/code/organs/_brain.dm rename to modular_bandastation/balance/code/_brain.dm index 59411fbcb374d..a8b30a3ca98ed 100644 --- a/modular_bandastation/medical/code/organs/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -1,11 +1,12 @@ /obj/item/organ/brain/Initialize(mapload) . = ..() var/new_death_time = CONFIG_GET(number/revival_brain_life) - if(new_death_time > 0) - perma_death = TRUE - if(perma_death) + var/perma_death = CONFIG_GET(flag/brain_permanent_death) + if(new_death_time) var/standart_death_time = 30 MINUTES // DА => SDT ; NDR => NDT => DF/SDT = NDT/NDR => NDR = (SDT*NDT)DF var/relative_data = standart_death_time / new_death_time var/new_decay_rate = relative_data * decay_factor decay_factor = new_decay_rate + +/datum/config_entry/flag/brain_permanent_death diff --git a/modular_bandastation/medical/_medical.dme b/modular_bandastation/medical/_medical.dme index c7fda6cf486ca..3783e0393c8c7 100644 --- a/modular_bandastation/medical/_medical.dme +++ b/modular_bandastation/medical/_medical.dme @@ -1,4 +1,3 @@ #include "_medical.dm" -#include "code/organs/_brain.dm" #include "code/surgery/vocal_cords.dm" From ec53ceae9ba0a19b5ececf6adbb05f22c6ce1cef Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 16:33:01 +0300 Subject: [PATCH 08/24] =?UTF-8?q?=D0=9F=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D1=8C=D0=B1=D0=B0=20=D0=93=D0=B0=D1=85=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/game/data_huds.dm | 2 +- code/modules/mob/living/brain/brain_item.dm | 4 ---- code/modules/mob/living/carbon/carbon.dm | 2 +- .../chemistry/reagents/medicine_reagents.dm | 2 +- code/modules/surgery/brain_surgery.dm | 8 +------- code/modules/surgery/organs/_organ.dm | 2 +- modular_bandastation/balance/code/_brain.dm | 16 ++++++++-------- 7 files changed, 13 insertions(+), 23 deletions(-) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 2386578b9a603..06a046e285f19 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -185,7 +185,7 @@ Medical HUD! Basic mode needs suit sensors on. // BANDASTATION EDIT START - PERMA-DEATH var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) - brain_dead = current_brain.perma_death && (current_brain.organ_flags & ORGAN_FAILING) + brain_dead = CONFIG_GET(flag/brain_permanent_death) && (current_brain.organ_flags & ORGAN_FAILING) if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) if((HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) && !brain_dead) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 751c7ceb1d8be..7086298c19f3b 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -44,10 +44,6 @@ var/can_smoothen_out = TRUE /// We got smooth from being washed var/smooth_brain = FALSE - // BANDASTATION ADDITION START - PERMADEATH - /// Is client brain can't be revived - var/perma_death = FALSE - // BANDASTATION ADDITION END - PERMADEATH /obj/item/organ/brain/Initialize(mapload) . = ..() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index aef1dfe694e87..646c40ac2625a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -983,7 +983,7 @@ return DEFIB_FAIL_NO_BRAIN if (current_brain.organ_flags & ORGAN_FAILING) - return current_brain.perma_death ?DEFIB_FAIL_PERMANENTLY_DEAD : DEFIB_FAIL_FAILING_BRAIN + return CONFIG_GET(flag/brain_permanent_death) ? DEFIB_FAIL_PERMANENTLY_DEAD : DEFIB_FAIL_FAILING_BRAIN // BANDASTATION EDIT END - PERMA-DEATH if ((getBruteLoss() >= MAX_REVIVE_BRUTE_DAMAGE) || (getFireLoss() >= MAX_REVIVE_FIRE_DAMAGE)) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 68b70920dcf55..c796b76106adc 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1005,7 +1005,7 @@ // BANDASTATION EDIT START - PERMADEATH if(ishuman(exposed_mob)) var/obj/item/organ/brain/brain = exposed_mob.get_organ_slot(ORGAN_SLOT_BRAIN) - if(!(brain?.organ_flags & ORGAN_FAILING) && !brain?.perma_death) + if(!(brain?.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death)) exposed_mob.visible_message(span_warning("[exposed_mob] have a criticaly damaged brain, and not react...")) return // BANDASTATION EDIT END - PERMADEATH diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm index 67b26a192f121..c3a9baafde10f 100644 --- a/code/modules/surgery/brain_surgery.dm +++ b/code/modules/surgery/brain_surgery.dm @@ -46,13 +46,7 @@ success_sound = 'sound/items/taperecorder/taperecorder_close.ogg' /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) - // BANDASTATION EDIT START - PERMADEATH - var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) - var/not_dead = TRUE - if(brain) - not_dead = !(brain.organ_flags & ORGAN_FAILING) && !brain.perma_death - return brain && not_dead && ..() - // BANDASTATION EDIT END - PERMADEATH + return target.get_organ_slot(ORGAN_SLOT_BRAIN) && ..() /datum/surgery_step/fix_brain/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results( diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index ac21a18fa8d23..251b0936fa76a 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -227,9 +227,9 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) if(damage >= maxHealth) organ_flags |= ORGAN_FAILING - owner?.med_hud_set_status() // BANDASTATION EDIT - PERMA-DEATH else organ_flags &= ~ORGAN_FAILING + owner?.med_hud_set_status() // BANDASTATION EDIT - PERMA-DEATH if(message && owner && owner.stat <= SOFT_CRIT) to_chat(owner, message) diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index a8b30a3ca98ed..4980a53d04146 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -1,12 +1,12 @@ /obj/item/organ/brain/Initialize(mapload) . = ..() - var/new_death_time = CONFIG_GET(number/revival_brain_life) - var/perma_death = CONFIG_GET(flag/brain_permanent_death) - if(new_death_time) - var/standart_death_time = 30 MINUTES - // DА => SDT ; NDR => NDT => DF/SDT = NDT/NDR => NDR = (SDT*NDT)DF - var/relative_data = standart_death_time / new_death_time - var/new_decay_rate = relative_data * decay_factor - decay_factor = new_decay_rate + if(CONFIG_GET(flag/brain_permanent_death)) + decay_factor = STANDARD_ORGAN_DECAY * 2 + +/datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) + . = ..() + if(.) + var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + return !(brain.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death) /datum/config_entry/flag/brain_permanent_death From b51f5e4fd86e95debc7e68af23e988b33b6ae6c5 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 18:01:45 +0300 Subject: [PATCH 09/24] =?UTF-8?q?=D0=92=D0=B2=D0=BE=D0=B4=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D1=8B=D0=B9=20-=20=D1=81=D1=82=D0=B0=D0=B7=D0=B8?= =?UTF-8?q?=D1=81=20=D0=BC=D0=B5=D1=88=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/game/data_huds.dm | 4 +- modular_bandastation/balance/code/_brain.dm | 51 ++++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 06a046e285f19..cbc4a20f7e635 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -185,7 +185,9 @@ Medical HUD! Basic mode needs suit sensors on. // BANDASTATION EDIT START - PERMA-DEATH var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) - brain_dead = CONFIG_GET(flag/brain_permanent_death) && (current_brain.organ_flags & ORGAN_FAILING) + var/brain_dead = FALSE + if(current_brain) + brain_dead = CONFIG_GET(flag/brain_permanent_death) && (current_brain.organ_flags & ORGAN_FAILING) if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) if((HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) && !brain_dead) diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 4980a53d04146..c49686239657e 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -1,7 +1,7 @@ /obj/item/organ/brain/Initialize(mapload) . = ..() if(CONFIG_GET(flag/brain_permanent_death)) - decay_factor = STANDARD_ORGAN_DECAY * 2 + decay_factor = STANDARD_ORGAN_DECAY * 2 /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) . = ..() @@ -10,3 +10,52 @@ return !(brain.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death) /datum/config_entry/flag/brain_permanent_death + +/obj/item/bodybag/stasis + name = "Stasis body bag" + desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." + icon = 'icons/obj/medical/bodybag.dmi' + icon_state = "bodybag_folded" + w_class = WEIGHT_CLASS_SMALL + ///Stored path we use for spawning a new body bag entity when unfolded. + unfoldedbag_path = /obj/structure/closet/body_bag/stasis + +/datum/design/stasisbodybag + name = "Stasis Body Bag" + desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." + id = "stasisbodybag" + build_type = PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma =SHEET_MATERIAL_AMOUNT, /datum/material/diamond =SMALL_MATERIAL_AMOUNT*5) + build_path = /obj/item/bodybag/stasis + category = list( + RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_TOOLS_MEDICAL + ) + departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE + +/obj/structure/closet/body_bag/stasis + name = "Stasis body bag" + desc = "A plastic bag designed for the storage and transportation of cadavers with portable stasis module and little space." + icon = 'icons/obj/medical/bodybag.dmi' + icon_state = "bodybag" + density = FALSE + mob_storage_capacity = 1 + open_sound = 'sound/items/zip/zip.ogg' + close_sound = 'sound/items/zip/zip.ogg' + foldedbag_path = /obj/item/bodybag/stasis + +/obj/structure/closet/body_bag/stasis/close(mob/living/user) + . = ..() + for(var/mob/living/mob in contents) + mob.apply_status_effect(/datum/status_effect/grouped/stasis, STASIS_MACHINE_EFFECT) + ADD_TRAIT(mob, TRAIT_TUMOR_SUPPRESSED, TRAIT_GENERIC) + mob.extinguish_mob() + +/obj/structure/closet/body_bag/stasis/open(mob/living/user, force = FALSE, special_effects = TRUE) + . = ..() + for(var/mob/living/mob in contents) + mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_MACHINE_EFFECT) + REMOVE_TRAIT(mob, TRAIT_TUMOR_SUPPRESSED, TRAIT_GENERIC) + +/datum/techweb_node/applied_bluespace/Initialize() + . = ..() + design_ids += list("stasisbodybag") From a2842895a0f71ac2b5aac01810870287f5e0d1b0 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Tue, 21 Jan 2025 22:38:23 +0300 Subject: [PATCH 10/24] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/__DEFINES/mobs.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 5 ++++- .../reagents/reagent_containers/hypospray.dm | 2 +- config/bandastation/bandastation_config.txt | 1 + modular_bandastation/balance/code/_brain.dm | 20 +++++++++---------- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index c8ce17f300258..f6ca1d22d45ce 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -536,7 +536,7 @@ #define DEFIB_FAIL_NO_INTELLIGENCE (1<<8) #define DEFIB_FAIL_BLACKLISTED (1<<9) #define DEFIB_NOGRAB_AGHOST (1<<10) -#define DEFIB_FAIL_PERMANENTLY_DEAD (1<<11) // BANDASTATION EDIT - PERMA-DEATH +#define DEFIB_FAIL_PERMANENTLY_DEAD (1<<11) // BANDASTATION ADDITION - PERMA-DEATH // Bit mask of possible return values by can_defib that would result in a revivable patient #define DEFIB_REVIVABLE_STATES (DEFIB_FAIL_NO_HEART | DEFIB_FAIL_FAILING_HEART | DEFIB_FAIL_HUSK | DEFIB_FAIL_TISSUE_DAMAGE | DEFIB_FAIL_FAILING_BRAIN | DEFIB_POSSIBLE) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 646c40ac2625a..202076aa71625 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -982,6 +982,9 @@ if (QDELETED(current_brain)) return DEFIB_FAIL_NO_BRAIN + if (current_brain.suicided || (current_brain.brainmob && HAS_TRAIT(current_brain.brainmob, TRAIT_SUICIDED))) + return DEFIB_FAIL_NO_INTELLIGENCE + if (current_brain.organ_flags & ORGAN_FAILING) return CONFIG_GET(flag/brain_permanent_death) ? DEFIB_FAIL_PERMANENTLY_DEAD : DEFIB_FAIL_FAILING_BRAIN // BANDASTATION EDIT END - PERMA-DEATH @@ -1007,10 +1010,10 @@ if (current_brain.organ_flags & ORGAN_FAILING) return DEFIB_FAIL_FAILING_BRAIN - */ // BANDASTATION EDIT END - PERMA-DEATH if (current_brain.suicided || (current_brain.brainmob && HAS_TRAIT(current_brain.brainmob, TRAIT_SUICIDED))) return DEFIB_FAIL_NO_INTELLIGENCE + */ // BANDASTATION EDIT END - PERMA-DEATH if(key && key[1] == "@") // Adminghosts return DEFIB_NOGRAB_AGHOST diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 6558d591535a7..c4cd57b15680e 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -124,7 +124,7 @@ ignore_flags = 1 //so you can medipen through spacesuits reagent_flags = NONE flags_1 = null - list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/coagulant = 2) // BANDASTATION EDIT - PERMADEATH (/datum/reagent/toxin/formaldehyde = 3,) + list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/toxin/formaldehyde = 3, /datum/reagent/medicine/coagulant = 2) custom_price = PAYCHECK_CREW custom_premium_price = PAYCHECK_COMMAND var/label_examine = TRUE diff --git a/config/bandastation/bandastation_config.txt b/config/bandastation/bandastation_config.txt index a608f55740502..a0a8b123fb4df 100644 --- a/config/bandastation/bandastation_config.txt +++ b/config/bandastation/bandastation_config.txt @@ -39,4 +39,5 @@ ROUNDSTART_RACES vulpkanin ## Time in deciseconds the mob must be clientless for to be despawned by cryopod. 30 minutes by default #CRYO_MIN_SSD_TIME 18000 +## Boolean value to derminate is it posible to die permanently due death of brain or not (value true means it's enabled) BRAIN_PERMANENT_DEATH false diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index c49686239657e..2449bf13dbab2 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -1,7 +1,7 @@ /obj/item/organ/brain/Initialize(mapload) . = ..() if(CONFIG_GET(flag/brain_permanent_death)) - decay_factor = STANDARD_ORGAN_DECAY * 2 + decay_factor = STANDARD_ORGAN_DECAY * 2 //7 минут до полной смерти (в 4 раза быстрее чем по умолчанию (30 минут)) /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) . = ..() @@ -14,10 +14,9 @@ /obj/item/bodybag/stasis name = "Stasis body bag" desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." - icon = 'icons/obj/medical/bodybag.dmi' - icon_state = "bodybag_folded" - w_class = WEIGHT_CLASS_SMALL - ///Stored path we use for spawning a new body bag entity when unfolded. + icon = 'icons/obj/medical/bodybag.dmi' //на замену + icon_state = "bodybag_folded" //на замену + // Stored path we use for spawning a new body bag entity when unfolded. unfoldedbag_path = /obj/structure/closet/body_bag/stasis /datum/design/stasisbodybag @@ -33,14 +32,13 @@ departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE /obj/structure/closet/body_bag/stasis - name = "Stasis body bag" + name = "stasis body bag" desc = "A plastic bag designed for the storage and transportation of cadavers with portable stasis module and little space." - icon = 'icons/obj/medical/bodybag.dmi' + icon = 'icons/obj/medical/bodybag.dmi' //на замену icon_state = "bodybag" - density = FALSE mob_storage_capacity = 1 - open_sound = 'sound/items/zip/zip.ogg' - close_sound = 'sound/items/zip/zip.ogg' + open_sound = 'sound/items/zip/zip.ogg' //на замену + close_sound = 'sound/items/zip/zip.ogg' //на замену foldedbag_path = /obj/item/bodybag/stasis /obj/structure/closet/body_bag/stasis/close(mob/living/user) @@ -59,3 +57,5 @@ /datum/techweb_node/applied_bluespace/Initialize() . = ..() design_ids += list("stasisbodybag") + +/obj/item/reagent_containers/hypospray/medipen/Initialize() From 0601a13798c46bf59185f2589b9944138ba2a93a Mon Sep 17 00:00:00 2001 From: KageIIte Date: Wed, 22 Jan 2025 18:44:56 +0300 Subject: [PATCH 11/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/game/data_huds.dm | 8 +------- code/modules/mob/living/carbon/carbon.dm | 7 +++++++ .../reagents/chemistry/reagents/medicine_reagents.dm | 8 -------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index cbc4a20f7e635..1dc72869ecdd5 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -183,14 +183,8 @@ Medical HUD! Basic mode needs suit sensors on. set_hud_image_state(STATUS_HUD, "hudxeno") return FALSE - // BANDASTATION EDIT START - PERMA-DEATH - var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) - var/brain_dead = FALSE - if(current_brain) - brain_dead = CONFIG_GET(flag/brain_permanent_death) && (current_brain.organ_flags & ORGAN_FAILING) - if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) - if((HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) && !brain_dead) + if(HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) // BANDASTATION EDIT END - PERMA-DEATH set_hud_image_state(STATUS_HUD, "huddefib") else if(HAS_TRAIT(src, TRAIT_GHOSTROLE_ON_REVIVE)) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 202076aa71625..5606a8a0e9a10 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -964,6 +964,13 @@ /mob/living/carbon/can_be_revived() if(!get_organ_by_type(/obj/item/organ/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK)) return FALSE + + // BANDASTATION EDIT START - PERMADEATH + if(ishuman(src)) + var/obj/item/organ/brain/brain = exposed_mob.get_organ_slot(ORGAN_SLOT_BRAIN) + if(!(brain?.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death)) + return FALSE + // BANDASTATION EDIT END - PERMADEATH return ..() /mob/living/carbon/proc/can_defib() diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index c796b76106adc..180d9dbb7e8d3 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1002,14 +1002,6 @@ if(exposed_mob.stat != DEAD || !(exposed_mob.mob_biotypes & MOB_ORGANIC)) return ..() - // BANDASTATION EDIT START - PERMADEATH - if(ishuman(exposed_mob)) - var/obj/item/organ/brain/brain = exposed_mob.get_organ_slot(ORGAN_SLOT_BRAIN) - if(!(brain?.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death)) - exposed_mob.visible_message(span_warning("[exposed_mob] have a criticaly damaged brain, and not react...")) - return - // BANDASTATION EDIT END - PERMADEATH - if(HAS_TRAIT(exposed_mob, TRAIT_SUICIDED)) //they are never coming back exposed_mob.visible_message(span_warning("[exposed_mob]'s body does not react...")) return From 25bde5e4471b1a1d3cc768b1ada13dd3aafe5c37 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Wed, 22 Jan 2025 18:55:07 +0300 Subject: [PATCH 12/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_bandastation/balance/code/_brain.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 2449bf13dbab2..842e7be49d5a7 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -6,8 +6,10 @@ /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) . = ..() if(.) - var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) - return !(brain.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death) + return + + var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) + return !(brain.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death) /datum/config_entry/flag/brain_permanent_death From 39ca3cb5e6df41211e302ce4441b84f45464861b Mon Sep 17 00:00:00 2001 From: KageIIte Date: Wed, 22 Jan 2025 23:27:44 +0300 Subject: [PATCH 13/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/mob/living/carbon/carbon.dm | 5 +++-- modular_bandastation/balance/code/_brain.dm | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 5606a8a0e9a10..2655177e8f873 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -967,8 +967,9 @@ // BANDASTATION EDIT START - PERMADEATH if(ishuman(src)) - var/obj/item/organ/brain/brain = exposed_mob.get_organ_slot(ORGAN_SLOT_BRAIN) - if(!(brain?.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death)) + var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain) + var/brain_non_functional = isnull(brain) || (CONFIG_GET(flag/brain_permanent_death) && brain.organ_flags & ORGAN_FAILING) + if(brain_non_functional && !IS_CHANGELING(src) || HAS_TRAIT(src, TRAIT_HUSK)) return FALSE // BANDASTATION EDIT END - PERMADEATH return ..() diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 842e7be49d5a7..e6d59e8793d95 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -61,3 +61,5 @@ design_ids += list("stasisbodybag") /obj/item/reagent_containers/hypospray/medipen/Initialize() + . = ..() + list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/coagulant = 2) From 675c09c5c1dc6806fb7108034ede90b87e16399e Mon Sep 17 00:00:00 2001 From: KageIIte Date: Thu, 23 Jan 2025 02:26:13 +0300 Subject: [PATCH 14/24] =?UTF-8?q?=D0=9F=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/game/data_huds.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 1dc72869ecdd5..e32d09309c193 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -185,7 +185,6 @@ Medical HUD! Basic mode needs suit sensors on. if(stat == DEAD || (HAS_TRAIT(src, TRAIT_FAKEDEATH))) if(HAS_TRAIT(src, TRAIT_MIND_TEMPORARILY_GONE) || can_defib_client()) - // BANDASTATION EDIT END - PERMA-DEATH set_hud_image_state(STATUS_HUD, "huddefib") else if(HAS_TRAIT(src, TRAIT_GHOSTROLE_ON_REVIVE)) set_hud_image_state(STATUS_HUD, "hudghost") From 08ab4aef8f2c28b8cd058a2cf026900f7a287209 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Thu, 23 Jan 2025 13:32:21 +0300 Subject: [PATCH 15/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D1=83,=20=D0=BF=D1=80=D0=B2=D0=BE=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=9B=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/mob/living/carbon/carbon.dm | 12 ++++-------- config/bandastation/bandastation_config.txt | 2 +- modular_bandastation/balance/code/_brain.dm | 3 +-- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 2655177e8f873..eddf76b564fff 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -962,15 +962,11 @@ return ..() /mob/living/carbon/can_be_revived() - if(!get_organ_by_type(/obj/item/organ/brain) && (!IS_CHANGELING(src)) || HAS_TRAIT(src, TRAIT_HUSK)) - return FALSE - // BANDASTATION EDIT START - PERMADEATH - if(ishuman(src)) - var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain) - var/brain_non_functional = isnull(brain) || (CONFIG_GET(flag/brain_permanent_death) && brain.organ_flags & ORGAN_FAILING) - if(brain_non_functional && !IS_CHANGELING(src) || HAS_TRAIT(src, TRAIT_HUSK)) - return FALSE + var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain) + var/brain_non_functional = isnull(brain) || (CONFIG_GET(flag/brain_permanent_death) && brain.organ_flags & ORGAN_FAILING) + if(brain_non_functional && !IS_CHANGELING(src) || HAS_TRAIT(src, TRAIT_HUSK)) + return FALSE // BANDASTATION EDIT END - PERMADEATH return ..() diff --git a/config/bandastation/bandastation_config.txt b/config/bandastation/bandastation_config.txt index a0a8b123fb4df..f4362e335f290 100644 --- a/config/bandastation/bandastation_config.txt +++ b/config/bandastation/bandastation_config.txt @@ -40,4 +40,4 @@ ROUNDSTART_RACES vulpkanin #CRYO_MIN_SSD_TIME 18000 ## Boolean value to derminate is it posible to die permanently due death of brain or not (value true means it's enabled) -BRAIN_PERMANENT_DEATH false +BRAIN_PERMANENT_DEATH diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index e6d59e8793d95..02b43f2f3782a 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -60,6 +60,5 @@ . = ..() design_ids += list("stasisbodybag") -/obj/item/reagent_containers/hypospray/medipen/Initialize() - . = ..() +/obj/item/reagent_containers/hypospray/medipen list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/coagulant = 2) From 6211cfefb569c031f093dea65047bead79615444 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Thu, 23 Jan 2025 14:10:51 +0300 Subject: [PATCH 16/24] =?UTF-8?q?=D0=A0=D0=B5=D0=B2=D1=8C=D1=8E,=20=D0=9B?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/game/objects/items/defib.dm | 3 ++- code/modules/mob/living/carbon/carbon.dm | 4 ++-- modular_bandastation/balance/code/_brain.dm | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 994079ea9c566..5c3d8665ab5bd 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -614,7 +614,8 @@ if (DEFIB_FAIL_TISSUE_DAMAGE) fail_reason = "Tissue damage too severe, repair and try again." if (DEFIB_FAIL_HUSK) - // BANDASTATION EDIT START - PERMA-DEATH fail_reason = "Patient's body is a mere husk, repair and try again." + fail_reason = "Patient's body is a mere husk, repair and try again." + // BANDASTATION EDIT START - PERMA-DEATH if (DEFIB_FAIL_PERMANENTLY_DEAD) fail_reason = "Patient's brain electomagnetic activity gone. It's too late for them..." // BANDASTATION EDIT END - PERMA-DEATH diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index eddf76b564fff..48578092efbc9 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -962,12 +962,12 @@ return ..() /mob/living/carbon/can_be_revived() - // BANDASTATION EDIT START - PERMADEATH + // BANDASTATION EDIT START - PERMA-DEATH var/obj/item/organ/brain/brain = get_organ_by_type(/obj/item/organ/brain) var/brain_non_functional = isnull(brain) || (CONFIG_GET(flag/brain_permanent_death) && brain.organ_flags & ORGAN_FAILING) if(brain_non_functional && !IS_CHANGELING(src) || HAS_TRAIT(src, TRAIT_HUSK)) return FALSE - // BANDASTATION EDIT END - PERMADEATH + // BANDASTATION EDIT END - PERMA-DEATH return ..() /mob/living/carbon/proc/can_defib() diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 02b43f2f3782a..250ca74b58717 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -5,11 +5,11 @@ /datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target) . = ..() - if(.) + if(!.) return var/obj/item/organ/brain/brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) - return !(brain.organ_flags & ORGAN_FAILING) && !CONFIG_GET(flag/brain_permanent_death) + return !(brain.organ_flags & ORGAN_FAILING) || !CONFIG_GET(flag/brain_permanent_death) /datum/config_entry/flag/brain_permanent_death From 3911b6e728b72bf17160dded236c33fb9e0de254 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Thu, 23 Jan 2025 14:27:53 +0300 Subject: [PATCH 17/24] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=20=D1=81=D1=82=D0=B0=D0=B7=D0=B8=D1=81-=D0=BC=D0=B5?= =?UTF-8?q?=D1=88=D0=BA=D0=BE=20=D0=B2=20=D0=BA=D1=80=D0=B8=D0=BE-=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B7=D0=B8=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_bandastation/balance/code/_brain.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 250ca74b58717..35da6e9301bb2 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -56,7 +56,7 @@ mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_MACHINE_EFFECT) REMOVE_TRAIT(mob, TRAIT_TUMOR_SUPPRESSED, TRAIT_GENERIC) -/datum/techweb_node/applied_bluespace/Initialize() +/datum/techweb_node/cryostasis/Initialize() . = ..() design_ids += list("stasisbodybag") From aaf5c7b11a213c41d6dd534ebe9948e3df6d5243 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Thu, 23 Jan 2025 16:39:20 +0300 Subject: [PATCH 18/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D0=B0=D0=BC,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BF=D1=80=D0=B0=D0=B9?= =?UTF-8?q?=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../research/techweb/nodes/medbay_nodes.dm | 1 + modular_bandastation/balance/_balance.dme | 9 +++++++ modular_bandastation/balance/code/_brain.dm | 22 ++++++++++-------- .../balance/icons/bodybag.dmi | Bin 0 -> 1444 bytes 4 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 modular_bandastation/balance/icons/bodybag.dmi diff --git a/code/modules/research/techweb/nodes/medbay_nodes.dm b/code/modules/research/techweb/nodes/medbay_nodes.dm index 897a2edf18e43..cfb79966b395e 100644 --- a/code/modules/research/techweb/nodes/medbay_nodes.dm +++ b/code/modules/research/techweb/nodes/medbay_nodes.dm @@ -93,6 +93,7 @@ "stasis", "cryo_grenade", "splitbeaker", + "stasisbodybag", // BANDASTATION ADDITION - PERMA-DEATH ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) discount_experiments = list(/datum/experiment/scanning/reagent/cryostylane = TECHWEB_TIER_4_POINTS) diff --git a/modular_bandastation/balance/_balance.dme b/modular_bandastation/balance/_balance.dme index 478b8f7a1a575..c97f394814159 100644 --- a/modular_bandastation/balance/_balance.dme +++ b/modular_bandastation/balance/_balance.dme @@ -22,3 +22,12 @@ #include "code/_brain.dm" #include "code/~undefs.dm" +// BEGIN_INTERNALS +// END_INTERNALS +// BEGIN_FILE_DIR +#define FILE_DIR . +// END_FILE_DIR +// BEGIN_PREFERENCES +// END_PREFERENCES +// BEGIN_INCLUDE +// END_INCLUDE diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 35da6e9301bb2..1cf4c219c74f5 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -16,8 +16,8 @@ /obj/item/bodybag/stasis name = "Stasis body bag" desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." - icon = 'icons/obj/medical/bodybag.dmi' //на замену - icon_state = "bodybag_folded" //на замену + icon = 'modular_bandastation/balance/icons/bodybag.dmi' //на замену + icon_state = "cryobag_folded" //на замену // Stored path we use for spawning a new body bag entity when unfolded. unfoldedbag_path = /obj/structure/closet/body_bag/stasis @@ -36,11 +36,11 @@ /obj/structure/closet/body_bag/stasis name = "stasis body bag" desc = "A plastic bag designed for the storage and transportation of cadavers with portable stasis module and little space." - icon = 'icons/obj/medical/bodybag.dmi' //на замену - icon_state = "bodybag" + icon = 'modular_bandastation/balance/icons/bodybag.dmi' //на замену + icon_state = "cryobag" mob_storage_capacity = 1 - open_sound = 'sound/items/zip/zip.ogg' //на замену - close_sound = 'sound/items/zip/zip.ogg' //на замену + open_sound = 'sound/effects/spray.ogg' + close_sound = 'sound/effects/spray.ogg' foldedbag_path = /obj/item/bodybag/stasis /obj/structure/closet/body_bag/stasis/close(mob/living/user) @@ -51,14 +51,16 @@ mob.extinguish_mob() /obj/structure/closet/body_bag/stasis/open(mob/living/user, force = FALSE, special_effects = TRUE) - . = ..() for(var/mob/living/mob in contents) mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_MACHINE_EFFECT) REMOVE_TRAIT(mob, TRAIT_TUMOR_SUPPRESSED, TRAIT_GENERIC) - -/datum/techweb_node/cryostasis/Initialize() . = ..() - design_ids += list("stasisbodybag") /obj/item/reagent_containers/hypospray/medipen list_reagents = list(/datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/coagulant = 2) + +/obj/item/reagent_containers/hypospray/medipen/survival + list_reagents = list( /datum/reagent/medicine/epinephrine = 7, /datum/reagent/medicine/c2/aiuri = 7, /datum/reagent/medicine/c2/libital = 7, /datum/reagent/medicine/leporazine = 6, /datum/reagent/toxin/formaldehyde = 3) + +/obj/item/reagent_containers/hypospray/medipen/survival/luxury + list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/c2/penthrite = 10, /datum/reagent/medicine/oxandrolone = 10, /datum/reagent/medicine/sal_acid = 10 ,/datum/reagent/medicine/omnizine = 10 ,/datum/reagent/medicine/leporazine = 5, /datum/reagent/toxin/formaldehyde = 5) diff --git a/modular_bandastation/balance/icons/bodybag.dmi b/modular_bandastation/balance/icons/bodybag.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f029ce494954b2a31f375f4cad588969f3d07f2b GIT binary patch literal 1444 zcmV;V1zY-wP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5DY>XJKPfRiJ}o~dB{fBfi!&v&s2C_=$i=j?y{vX|^7yJuF;`N1-~vvX#@??2znIcL8q3=a>ha;D0*0k)|KVA}xO zR0ObXfNd%Q*fzj6)o~i{-GAUkly=|tT`MFrr}RXQ061U2ZL`{V@C$u>b?u5dScm&; zo0-KaQ}$D!>;;Im21EtZ0n;F@wIJz~it_wS1ON*aK{}1TK+EdYx;(dUpX&T{k7?Vy zu2FS&cdPCjH}v($__(K!AUiS<;J349&3RlAXf&M$!S}Om0B3TmZ-tOL34l5slybINC6lDcm|$D5n@jP8ixhx z(QNtg&YdRYI6Ve__^wzwhD8BkO6O@P;SVe~7y#fm4FQE?AGBTeooEekj}Yt0qNXNY z!l}650yJ7W?e{!M*nPmMThyA9P!4Y8IHX%e708T~uO`ggeKI}G z)bxdm7fn`{<)Sy=R?}}3Geb?St#jV_<%K{2{POcmKNBQDo7Y{|=l|V*pv!0Xr%XAs ze3?F%&gV@8j{tu8c^S%ZtZH$sK1T*veNe2Yvwr-3_wMTv0Wv=?o!)Z1SC?{!259a% zV%pUG^RK6KhCj%w2u1)p|K!J?^g*Yi;@38PBIIQu)B?Z|Y#xB)t3LYBlT%|f z42im1Utcel&h?pHyFHyt5g`Ud$ZZ5v)z+!{wl9F*7DKP@bDG-J`7ax?Rm5$1NKZt<;M@Mzk*~a`EgfV{3rEc6k(clXb0Q!rN%QlJ2)RecHlaU-v&zpS;%t8f0wVzS&!wH8=RG%ahlXvm0CMxg zq;rE#gl#;~p9yHgd+aZdc=iXRnV)xWc95bZ*+`WIo;4s%qbMe~qaeES773ZY6LgCS yK`6pRPS${uZ;=Vwwr-1(Z;{E1 Date: Thu, 23 Jan 2025 17:38:19 +0300 Subject: [PATCH 19/24] =?UTF-8?q?=D0=9F=D0=B5=D1=81=D0=BD=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=20=D0=B0=D1=81=D0=B5=D0=BD=D0=B8=D0=B7=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_bandastation/balance/_balance.dme | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modular_bandastation/balance/_balance.dme b/modular_bandastation/balance/_balance.dme index c97f394814159..478b8f7a1a575 100644 --- a/modular_bandastation/balance/_balance.dme +++ b/modular_bandastation/balance/_balance.dme @@ -22,12 +22,3 @@ #include "code/_brain.dm" #include "code/~undefs.dm" -// BEGIN_INTERNALS -// END_INTERNALS -// BEGIN_FILE_DIR -#define FILE_DIR . -// END_FILE_DIR -// BEGIN_PREFERENCES -// END_PREFERENCES -// BEGIN_INCLUDE -// END_INCLUDE From e27ff35f17e3a4b19e430b75aa2da4edef5fccf9 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Thu, 23 Jan 2025 19:35:03 +0300 Subject: [PATCH 20/24] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=85=D1=83=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/surgery/organs/_organ.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index 251b0936fa76a..9b455448d5822 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -225,11 +225,16 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) var/message = check_damage_thresholds(owner) prev_damage = damage + var/old_organ_flags = organ_flags // BANDASTATION ADD - PERMA-DEATH if(damage >= maxHealth) organ_flags |= ORGAN_FAILING else organ_flags &= ~ORGAN_FAILING - owner?.med_hud_set_status() // BANDASTATION EDIT - PERMA-DEATH + + // BANDASTATION ADDITION START - PERMA-DEATH + if(old_organ_flags != organ_flags) + owner?.med_hud_set_status() + // BANDASTATION ADDITION END - PERMA-DEATH if(message && owner && owner.stat <= SOFT_CRIT) to_chat(owner, message) From 04990c56156e08a22e039952ea5c198bf2f1b699 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Fri, 24 Jan 2025 01:50:04 +0300 Subject: [PATCH 21/24] =?UTF-8?q?=D0=9B=D0=B8=D0=BD=D1=82=D0=B5=D1=80=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B1=D0=B5=D0=BB=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/surgery/organs/_organ.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/_organ.dm b/code/modules/surgery/organs/_organ.dm index 9b455448d5822..ad9c6c1e10d91 100644 --- a/code/modules/surgery/organs/_organ.dm +++ b/code/modules/surgery/organs/_organ.dm @@ -234,7 +234,7 @@ INITIALIZE_IMMEDIATE(/obj/item/organ) // BANDASTATION ADDITION START - PERMA-DEATH if(old_organ_flags != organ_flags) owner?.med_hud_set_status() - // BANDASTATION ADDITION END - PERMA-DEATH + // BANDASTATION ADDITION END - PERMA-DEATH if(message && owner && owner.stat <= SOFT_CRIT) to_chat(owner, message) From 0dc2bd4ff90bd249e77c435f01d8bb5b5e5b0907 Mon Sep 17 00:00:00 2001 From: Gaxeer <44334376+Gaxeer@users.noreply.github.com> Date: Fri, 24 Jan 2025 13:18:19 +0200 Subject: [PATCH 22/24] Update modular_bandastation/balance/code/_brain.dm --- modular_bandastation/balance/code/_brain.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 1cf4c219c74f5..2fb890b16b5d7 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -12,6 +12,7 @@ return !(brain.organ_flags & ORGAN_FAILING) || !CONFIG_GET(flag/brain_permanent_death) /datum/config_entry/flag/brain_permanent_death + default = TRUE /obj/item/bodybag/stasis name = "Stasis body bag" From a45d6daa7cc50051b6a97c4162a30db296f9cd87 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Fri, 24 Jan 2025 18:27:58 +0300 Subject: [PATCH 23/24] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=89=D1=8C=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modular_bandastation/balance/code/_brain.dm | 49 ++++++++++++++---- .../balance/icons/bodybag.dmi | Bin 1444 -> 1380 bytes 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/modular_bandastation/balance/code/_brain.dm b/modular_bandastation/balance/code/_brain.dm index 2fb890b16b5d7..00e56900f74ed 100644 --- a/modular_bandastation/balance/code/_brain.dm +++ b/modular_bandastation/balance/code/_brain.dm @@ -14,14 +14,6 @@ /datum/config_entry/flag/brain_permanent_death default = TRUE -/obj/item/bodybag/stasis - name = "Stasis body bag" - desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." - icon = 'modular_bandastation/balance/icons/bodybag.dmi' //на замену - icon_state = "cryobag_folded" //на замену - // Stored path we use for spawning a new body bag entity when unfolded. - unfoldedbag_path = /obj/structure/closet/body_bag/stasis - /datum/design/stasisbodybag name = "Stasis Body Bag" desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." @@ -34,16 +26,55 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE +/obj/item/bodybag/stasis + name = "Stasis body bag" + desc = "A folded bag designed for the storage and transportation of cadavers with portable stasis module and little space." + icon = 'modular_bandastation/balance/icons/bodybag.dmi' //на замену + icon_state = "stasisbag_folded" //на замену + // Stored path we use for spawning a new body bag entity when unfolded. + unfoldedbag_path = /obj/structure/closet/body_bag/stasis + color = "#11978c" + +/obj/item/bodybag/stasis/deploy_bodybag(mob/user, atom/location) + . = ..() + var/obj/structure/closet/body_bag/item_bag = . + item_bag.color = color + return item_bag + /obj/structure/closet/body_bag/stasis name = "stasis body bag" desc = "A plastic bag designed for the storage and transportation of cadavers with portable stasis module and little space." icon = 'modular_bandastation/balance/icons/bodybag.dmi' //на замену - icon_state = "cryobag" + icon_state = "stasisbag" mob_storage_capacity = 1 + color = "#11978c" open_sound = 'sound/effects/spray.ogg' close_sound = 'sound/effects/spray.ogg' foldedbag_path = /obj/item/bodybag/stasis +//Добавить механизм добавления оверлея на предмет +/obj/structure/closet/body_bag/stasis/closet_update_overlays(list/new_overlays) + . = ..() + . = new_overlays + var/overlay_state = isnull(base_icon_state) ? initial(icon_state) : base_icon_state + if(opened && has_opened_overlay) + var/mutable_appearance/door_underlay = mutable_appearance(icon, "[overlay_state]_open_over", alpha = src.alpha) + . += door_underlay + door_underlay.color = "#6bd5ff" + door_underlay.overlays += emissive_blocker(door_underlay.icon, door_underlay.icon_state, src, alpha = door_underlay.alpha) // If we don't do this the door doesn't block emissives and it looks weird. + if(!opened && length(contents)) + var/mutable_appearance/door_underlay = mutable_appearance(icon, "[overlay_state]_over", alpha = src.alpha) + . += door_underlay + door_underlay.color = "#059900" + door_underlay.overlays += emissive_blocker(door_underlay.icon, door_underlay.icon_state, src, alpha = door_underlay.alpha) + return . + +/obj/structure/closet/body_bag/stasis/undeploy_bodybag(atom/fold_loc) + . = ..() + var/obj/item/bodybag/folding_bodybag = . + folding_bodybag.color = color + return folding_bodybag + /obj/structure/closet/body_bag/stasis/close(mob/living/user) . = ..() for(var/mob/living/mob in contents) diff --git a/modular_bandastation/balance/icons/bodybag.dmi b/modular_bandastation/balance/icons/bodybag.dmi index f029ce494954b2a31f375f4cad588969f3d07f2b..8a4c60af35cc64cea5b3d9fddfa939585c7826ef 100644 GIT binary patch delta 1327 zcmV+~1o1yCjnpiCA(nJj=ZSpa2Tha5bae4jNPGa8Ks zCnq0=?Yp#J41E`3Fg}dyOBTV8AP*RiKNRI?^u8#Mj@}L)9{#Q!cXM+S-?Kd-e<%l7 zYl`yz{Ml=77cBgg{?JmCENYw@05L98`%f$j%qXJ@m=$3Hm?H4q$vtTp9(z;HzP z`Lj1fi!h!3YE1lfyhI*iZp5HtS;yt&m$m)`2|!~@qo1Ch)*g?~=8c9lv1ahOCk1_9 zGS5XT=SnRI`YIK*$s{6#N((3&Pg5CG(B7rmR=$cc-pya>w6pzGp*7=5*G3oj260LHM^ ztkh8m!XL-a=Ch#2^U~lk#`a|?Y_&(r(VoiKRkZQ|YfWjarqwPMX?9QueuhL0vYb= z!bMX(zV9aUHmrKZau!6|2+=wO$+C_%Q#=}68Z~ASMi?qn&Ej0IAfX}zdjLj3)BS*$ zdjZy(qLfKJ#Z^@)BF=|)QhCL4@pw_x`HFxr*2)8_u4SaaT2mTIe@;nx?MasMJ3jTy z4{jSNz+i(2i*tvG&?*OXgw5_KOz)aYsz+9+;+D@0N``OKNVf& zGI{9&a8ND6-&JM1e_JEKzLNI^DU$_ICJUfU7C@OSfHGMCWwHRuWC4`P0w|LOP$mnY zOcp?yEPygu0A;cO%523g$&|=#yx3P8itNOOa(#mR$%Hdm&=6iFDyhdaxSwJ=(pVSRDWu^7P@QG0-%cP9@iqO~Tbi|P~t z;K#%o+ZVKxe=0Xn3~No0N4&(NP`>nj8VW+T#4n!xGM)7$lwMCmC33%h9US@F^sjU( zJ>c;0-Hfj;>brvBs88(V-cULHT|OIpwUz(PYbSDmi#togi}hN4s$*wzKo!#9O;5#Z lv6CLqC$a#_WC4`<4|qxbGI0B#RR91007*qoM6N<$0fHOhU&H_a delta 1391 zcmV-#1(5pW3Zx4qiBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-T(jqevu_e ze<``BGCwIXJw7czCnYsSiHkEOv#1y-VaUaqR+N~V3SpxwCstj2enDy;F2%|Uu6{0H zM*{%sl{VVm5Z0pr00iMlL_t(|ob8%hXcb2o$LGY5XeezT3RRI?ONrR?hjsGP|>LX20)0-^@8@zbOn4536#f%C-TvsR&@(0NYdqux)^CDgxLx zz&6!!8t>hI;6;>n-}YTABr~Vil$%Y1_Q6QFV8BtL_^& z^!3R2xTlXGJ2DaAx3g!>d0Y`_G@S;+m#(U+hL!5h=%}h*yVlf?eRfZ+`F?}BK7Zg# z-R}A0KXoblV83o#Vhiy2;X_j%f7`KDo%-drrwvC3Bhz#Ac;vqMP1CS`y>S}Om(5b@|kVpX-0eA+UMG<080UCz|>CtTY@y?wl zv7N!WeBspS?k(GMZ%f2`j%i0izZ0zo5AI#(^#N6@t&?3Yu(JU6O=VA2Wou=`0y zo>Rb0l+g{s@3VLYo<(9$0XVs0cK(mJ#0V273^^)c3_STummGCo$9Wb-Nc2Mp&d%p> zntzA=rkBAHVBR(%L>2%}Mfpvh)Okb|qYF@AS??}Czx+*T8`%&0f5rKP69I+1Bt|GM zr-Iw~Aje3U^KyLx9H`s~K(cgeKI}G)bxdm z7fn`{<)Sy=R?}}3Geb?St#jV_<%K{2{POcmKNBQDo7Y{|=l|V*pv!0Xr%XAse3?F% z&gV@8j{tu8c^S%ZtZH$sK1T*veNe2Yvwr-3_wMTv0Wv=?f1TcPyjPcUhX!cwIbzz> z{qwJ~*4hC3G@l%~0QS$NouB7DH*$xDZL|P#^TVWb zgHD8PJkXyBXv2H#FOPWk2c(&wcW-u(q9oZ!l?9$PK_E?|C?>a~AiDAv37NhVbc+c= xD8fWe)_{_4kqO$iZi|v{k;#kWr0nwoF98(~)wh$6%?khk002ovPDHLkV1kQWk4pdm From ae55954da370e406babeb9cba58368f55901d3a9 Mon Sep 17 00:00:00 2001 From: KageIIte Date: Sat, 25 Jan 2025 00:42:31 +0300 Subject: [PATCH 24/24] =?UTF-8?q?=D0=9E=D1=82=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/modules/mob/living/carbon/carbon.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 48578092efbc9..bf9d50c80ac83 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -974,12 +974,6 @@ if (HAS_TRAIT(src, TRAIT_SUICIDED)) return DEFIB_FAIL_SUICIDE - if (HAS_TRAIT(src, TRAIT_HUSK)) - return DEFIB_FAIL_HUSK - - if (HAS_TRAIT(src, TRAIT_DEFIB_BLACKLISTED)) - return DEFIB_FAIL_BLACKLISTED - // BANDASTATION EDIT START - PERMA-DEATH var/obj/item/organ/brain/current_brain = get_organ_by_type(/obj/item/organ/brain) @@ -993,6 +987,12 @@ return CONFIG_GET(flag/brain_permanent_death) ? DEFIB_FAIL_PERMANENTLY_DEAD : DEFIB_FAIL_FAILING_BRAIN // BANDASTATION EDIT END - PERMA-DEATH + if (HAS_TRAIT(src, TRAIT_HUSK)) + return DEFIB_FAIL_HUSK + + if (HAS_TRAIT(src, TRAIT_DEFIB_BLACKLISTED)) + return DEFIB_FAIL_BLACKLISTED + if ((getBruteLoss() >= MAX_REVIVE_BRUTE_DAMAGE) || (getFireLoss() >= MAX_REVIVE_FIRE_DAMAGE)) return DEFIB_FAIL_TISSUE_DAMAGE